Stage 2 Loader Stack Size Failed

Technical questions regarding the XTC tools and programming with XMOS.
bearcat
Respected Member
Posts: 283
Joined: Fri Mar 19, 2010 4:49 am

Stage 2 Loader Stack Size Failed

Post by bearcat »

I plugged in tile 9 and 10 finally, and now I have a new problem. Looks like XFLASH is out of memory for the stage two loader.

Code: Select all

xmap: Warning: Node "AUDIO" does not have 100Mhz reference clock.
xmap: Warning: Node "IOAB" does not have 100Mhz reference clock.
xmap: Warning: Node "IOCD" does not have 100Mhz reference clock.
xmap: Warning: Node "IOEF" does not have 100Mhz reference clock.
xmap: Warning: Node "IOGH" does not have 100Mhz reference clock.
xmap: Warning: Node "IOIJ" does not have 100Mhz reference clock.
xmap: Warning: Node "IOKL" does not have 100Mhz reference clock.
xmap: Warning: Node "IOMN" does not have 100Mhz reference clock.
xmap: Warning: Node "IOOP" does not have 100Mhz reference clock.
Constraint check for "stdcore[0]" (node "USB", core 0):
  Stack available:   0x000000c4,   used: 0x000000d0 .  FAILED
  Threads available:          8,   used:          1+.  MAYBE
  Timers available:          10,   used:          0+.  MAYBE
  Chanends available:        32,   used:          0+.  MAYBE
Error: Constraints check FAILED for node 0, core 0.
Error: F03010 Failed to compile stage two loader.
Only about 12 words shy, so it says. I tried reducing the size of the application, but that had no effect. XDE 11.11.1. Suggestions?


bearcat
Respected Member
Posts: 283
Joined: Fri Mar 19, 2010 4:49 am

Post by bearcat »

If there is something I can change for this, let me know.

Architecturally, looks like I need to change. Quick recap:
L1-48 <-> L1-64 <-> L1-48 ... L1-48 (Tile 10)
Boot (all)_________Expansion Tiles (same code)->

I want to enable between 2 and 8 tiles (in pairs) expansion capabilities, with the same boot firmware.

Luckily, I had the insight to include a flash chip on each expansion tile, used for configuration data. So I can move to each expansion tile self boot with only one mode pin change. That should fix the Stage 2 loader problem, and allow for boot, at least, with 1-4 expansion cards. Update the XN file to reflect self boot and multiple flashes, and the application should work all the same. I have a loader I can use to do firmware updates for expansion tiles, but will have to code the write to flash. Quick work there, hopefully.

For Tile1, how do I determine how many expansion tiles are active, and not cause an exception error? Ok, I figured this one out. I have I/O I can signal between tile1 and each expansion tile at boot.

Will below work?

I would also prefer to have the firmware the same for each expansion tile, not depending on expansion slot. I can decode which tile is which at application start. The expansion tiles only talk to Tile1, and not each other. At boot set: NodeID, direction bits, link enables and directions? I am thinking the channel ends will stay the same, so the application is don't care. Anything else needed? Will this work?
richard
Respected Member
Posts: 318
Joined: Tue Dec 15, 2009 12:46 am

Post by richard »

Because of the way it relocates itself at runtime the size of the flash loader is limited to a fixed value. Increasing the number of links / nodes in the network increases the amount of network setup code required, and at some point you'll hit this limit.

This issue affects all tools versions (although slight differences between tools versions might mean you hit this limit at different points). This is something we would like to fix in future versions of the tools, but if you want to boot from a single flash another possible workaround might be to modify your .xn in a way that reduces the amount of setup required (e.g. remove the Oscillator attribute from the .xn and instead setup the PLL in the application, or remove all but one link between pairs of nodes in the .xn and setup these up in the application).
richard
Respected Member
Posts: 318
Joined: Tue Dec 15, 2009 12:46 am

Post by richard »

bearcat wrote:I would also prefer to have the firmware the same for each expansion tile, not depending on expansion slot. I can decode which tile is which at application start. The expansion tiles only talk to Tile1, and not each other. At boot set: NodeID, direction bits, link enables and directions? I am thinking the channel ends will stay the same, so the application is don't care. Anything else needed? Will this work?
Yes, I think it should work if you write a single tile program for each tile, flash each tile individually and then setup the network inside your application.
bearcat
Respected Member
Posts: 283
Joined: Fri Mar 19, 2010 4:49 am

Post by bearcat »

Thanks Richard. Good comments. I did see the note about that in the readme file. If I decide to go back to that architecture, disabling some code at boot, and changing in application, ok.

In order to allow for a factory image (used for DFU only) to not be expansion card dependant, each expansion tile will have to self boot. I got the product modified to boot that way (luckily just the mode2 pin, quite easy), and the XN's modified along with custom flash type. Loaded as the factory image, sure enough I can now boot all 10 tiles. Yeh.

Figuring out XFLASH, for all this, hum... That took a few trys. But I did infact get a 2 tile factory DFU firmware with a 10 tile upgrade image flashed, and it actually boots, both factory, and upgrade.

Issues yet:
1 - Did not try to do a factory and upgrade image on expansion tiles, yet. That could still be trouble.
2 - Can I specify a different custom boot selector for each tile? The input port is different for main board and expansion tiles (I could make it the same). Maybe compile to seperate bin files and flash manually? I am unsure if the --loader option works on all tile boot loaders, or what. Discover this later.

So now on to the second task. Trying to get a common code base for all the expansion tiles (not expansion slot dependant) by setting node id's etc.

Found this project:
https://www.xcore.com/wiki/index.php/Ru ... _of_Xlinks

That probably has most of it. If I must use static routing, that's going to kill this idea. But if the configuration is as specified in the XN, minus tiles not installed, seems possible.

Thanks for the input Richard.
User avatar
segher
XCore Expert
Posts: 844
Joined: Sun Jul 11, 2010 1:31 am

Post by segher »

You don't need to use static routing. It can be handy though;
you can turn it off when you don't need it anymore.

So you now have an XN for the base board, and one for
each expansion board? And each XN describes only the
network on that board?

What you do is first set up routing tables on the base board
for a full chain, with a node on the end that doesn't really
exist. Let's say that is node ffff.

If you now start the expansion nodes with node id ffff, you
can always talk to the first one not set up yet, from the ones
that are.

So talk to it, tell it its proper id, and let it program that and
the real routing table. Then iterate.

Getting the link init sequencing right is somewhat trickier.
But you know that ;-)
bearcat
Respected Member
Posts: 283
Joined: Fri Mar 19, 2010 4:49 am

Post by bearcat »

I have two XN files right now. One for factory DFU code that has only the base board with 2 tiles. It then can boot no matter how many expansion boards, if any, and allows updates to the base board software.

Here's my current thoughts:

The second XN is the complete board including all expansion cards, 10 tiles. This is the upgrade image. The boot is segregated by flash to base board, and each expansion tile. XFLASH has handled this configuration so far. The problem, is when less than 4 expansion cards are preset. I have I2S lines between the base board and each tile, in addition to the XLINK. Each I2S line is tied to a specific expansion slot and tile. I am going to initiate a protocol over the eight I2S lines at boot to each tile that exists. The expansion tiles, will receive the desired Node ID, directions, and link information, and return a success value. Each tile then starts the network with this information, and performs the hello's. The base board knows exactly what expansion tiles exist, and can limit channel traffic to those only. Since the XN file matches, the application needs no modications related to channels. Finally perform a ping over the XLINK to each tile for verification. The XLREG script XMOS provides show the link information (as compiled), that I can code for, and recompile. Then load each tile with the same code, like pick the slot1 .bin file.

Comment's are welcome here.
User avatar
segher
XCore Expert
Posts: 844
Joined: Sun Jul 11, 2010 1:31 am

Post by segher »

What happens now when you boot a system with fewer than
ten nodes with your ten-node XN file? Does it boot? What
does the established config look like?
bearcat
Respected Member
Posts: 283
Joined: Fri Mar 19, 2010 4:49 am

Post by bearcat »

With the 10 tile XN, it doesn't boot (nor application start) if I remove an expansion card. You raise a great question. If the application doesn't start, I can't perform any routing. The way I have it now isn't right. There must be some code in the boot that at least talks to the expansion nodes, even with the different boot images on seperate flashes.

Hmmm.....

I will attach and see if I can make any heads or tails during boot.

Seperate applications? But how do I debug that? If I would need two XTAGS and two seperate JTAG interfaces, that's not going to happen for now.

As a backup, I can force a main board software update by expansion card, and have different expansion cards for each slot. Not preferable. I actually already have different XN's for each expansion slot used for testing.

(Edit:)

As a second thought, it looks like going back to a single flash boot is the only way to do this, and force a firmware update on expansion changes. That way the expansion cards are all the same. I will have to figure out how to get 10 tiles to boot via a single flash...

Here's the current 10 Node XN:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<Network xmlns="http://www.xmos.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xmos.com http://www.xmos.com">
  <Type>XDSP</Type>
  		<Name>XDSP</Name>

	<Declarations>
    	<Declaration>core stdcore[10]</Declaration>
	</Declarations>
  
	<Packages>
    	<Package id="USB" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="USB" Type="XS1-L1A" InPackageId="0" oscillator="13Mhz" systemfrequency="500MHz" referencefrequency="100MHz">
					<Boot>
						<Source Location="SPI:bootFlashUSB"/>
						<Bootee NodeId="AUDIO" Core="0"/>
					</Boot>
					<Core Number="0" Reference="stdcore[0]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOUSB"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSUSB"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKUSB"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIUSB"/>
					</Core>
				</Node>
			</Nodes>
		</Package>
    	<Package id="AUDIO" Type="XS1-L1A-LQ64">
			<Nodes>
				<Node id="AUDIO" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
      				<Boot>
        				<Source Location="XMOSLINK"/>
      				</Boot>
      				<Core Number="0" Reference="stdcore[1]"/>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOAB" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOAB" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOAB"/>
					</Boot>
					<Core Number="0" Reference="stdcore[2]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOAB"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOAB"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOAB"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOAB"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOCD" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOCD" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOCD"/>
					</Boot>
					<Core Number="0" Reference="stdcore[3]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOCD"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOCD"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOCD"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOCD"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOEF" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOEF" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOEF"/>
					</Boot>
					<Core Number="0" Reference="stdcore[4]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOEF"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOEF"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOEF"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOEF"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOGH" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOGH" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOGH"/>
					</Boot>
					<Core Number="0" Reference="stdcore[5]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOGH"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOGH"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOGH"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOGH"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOIJ" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOIJ" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOIJ"/>
					</Boot>
					<Core Number="0" Reference="stdcore[6]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOIJ"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOIJ"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOIJ"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOIJ"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOKL" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOKL" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOKL"/>
					</Boot>
					<Core Number="0" Reference="stdcore[7]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOKL"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOKL"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOKL"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOKL"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOMN" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOMN" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOMN"/>
					</Boot>
					<Core Number="0" Reference="stdcore[8]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOMN"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOMN"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOMN"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOMN"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
    	<Package id="IOOP" Type="XS1-L1A-TQ48">
			<Nodes>
				<Node id="IOOP" Type="XS1-L1A" InPackageId="0" oscillator="12288KHz" systemfrequency="499712000Hz" referencefrequency="99942400Hz">
					<Boot>
						<Source Location="SPI:bootFlashIOOP"/>
					</Boot>
					<Core Number="0" Reference="stdcore[9]">
						<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISOIOOP"/>
						<Port Location="XS1_PORT_1B" Name="PORT_SPI_SSIOOP"/>
						<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLKIOOP"/> 
						<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSIIOOP"/>
					</Core>
				</Node>
			</Nodes>
    	</Package>
	</Packages>
  
	<Links>
    	<Link Encoding="2wire" Delays="8,8">
      	<LinkEndpoint NodeId="USB" Link="X0LC"/>
      	<LinkEndpoint NodeId="AUDIO" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
      	<LinkEndpoint NodeId="AUDIO" Link="X0LA"/>
      	<LinkEndpoint NodeId="IOAB" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
    	<LinkEndpoint NodeId="IOAB" Link="X0LC"/>
	    <LinkEndpoint NodeId="IOCD" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
    	<LinkEndpoint NodeId="IOCD" Link="X0LC"/>
	    <LinkEndpoint NodeId="IOEF" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
    	<LinkEndpoint NodeId="IOEF" Link="X0LC"/>
	    <LinkEndpoint NodeId="IOGH" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
    	<LinkEndpoint NodeId="IOGH" Link="X0LC"/>
	    <LinkEndpoint NodeId="IOIJ" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
    	<LinkEndpoint NodeId="IOIJ" Link="X0LC"/>
	    <LinkEndpoint NodeId="IOKL" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
    	<LinkEndpoint NodeId="IOKL" Link="X0LC"/>
	    <LinkEndpoint NodeId="IOMN" Link="X0LB"/>
    </Link>
    	<Link Encoding="2wire" Delays="14,14">
    	<LinkEndpoint NodeId="IOMN" Link="X0LC"/>
	    <LinkEndpoint NodeId="IOOP" Link="X0LB"/>
    </Link>
  </Links>

	<ExternalDevices>
		<Device Nodeid="USB" Core="0" Name="bootFlashUSB" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOUSB"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSUSB"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKUSB"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIUSB"/>
		</Device>
		<Device Nodeid="IOAB" Core="0" Name="bootFlashIOAB" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOAB"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOAB"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOAB"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOAB"/>
		</Device>
		<Device Nodeid="IOCD" Core="0" Name="bootFlashIOCD" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOCD"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOCD"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOCD"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOCD"/>
		</Device>
		<Device Nodeid="IOEF" Core="0" Name="bootFlashIOEF" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOEF"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOEF"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOEF"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOEF"/>
		</Device>
		<Device Nodeid="IOGH" Core="0" Name="bootFlashIOGH" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOGH"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOGH"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOGH"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOGH"/>
		</Device>
		<Device Nodeid="IOIJ" Core="0" Name="bootFlashIOIJ" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOIJ"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOIJ"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOIJ"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOIJ"/>
		</Device>
		<Device Nodeid="IOKL" Core="0" Name="bootFlashIOKL" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOKL"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOKL"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOKL"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOKL"/>
		</Device>
		<Device Nodeid="IOMN" Core="0" Name="bootFlashIOMN" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOMN"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOMN"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOMN"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOMN"/>
		</Device>
		<Device Nodeid="IOOP" Core="0" Name="bootFlashIOOP" Class="SPIFlash" Type="SPANSION_S25FL216K">
			<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISOIOOP"/>
			<Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SSIOOP"/>
			<Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLKIOOP"/>
			<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSIIOOP"/>
		</Device>
	</ExternalDevices>

	<JTAGChain>
     <JTAGDevice Nodeid="USB"   Position="0"/>
     <JTAGDevice Nodeid="AUDIO" Position="1"/>
     <JTAGDevice Nodeid="IOAB"  Position="2"/>
     <JTAGDevice Nodeid="IOCD"  Position="3"/>
     <JTAGDevice Nodeid="IOEF"  Position="4"/>
     <JTAGDevice Nodeid="IOGH"  Position="5"/>
     <JTAGDevice Nodeid="IOIJ"  Position="6"/>
     <JTAGDevice Nodeid="IOKL"  Position="7"/>
     <JTAGDevice Nodeid="IOMN"  Position="8"/>
     <JTAGDevice Nodeid="IOOP"  Position="9"/>
	</JTAGChain>

</Network>
bearcat
Respected Member
Posts: 283
Joined: Fri Mar 19, 2010 4:49 am

Post by bearcat »

So, the first question is back on. How to solve the second stage loader. Measly 20 words!

If I am going to do the PLL in application:
1 - Read the PLL value (on all tiles), and if not correct write the correct value. This will cause a reboot and the system then restarts at the correct speed? If I do this on all tiles, then all should reboot the first time.

Just a couple lines of code there, if that's whats needed. Setting up the network is not something I would prefer to do. Much more work.

Ok, time to solder mode2 back to the PCB.