I'm confused about the XN file for a configuration of two L2's connected via X1LA and X0LB. But I'm even more confused about the syntax of the XN file for L2's. In particular, the links between the two processors in an L2 are defined as:
Code: Select all
<Links>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LC"/>
<LinkEndpoint NodeId="1" Link="X1LB"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LD"/>
<LinkEndpoint NodeId="1" Link="X1LA"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LA"/>
<LinkEndpoint NodeId="1" Link="X1LD"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LB"/>
<LinkEndpoint NodeId="1" Link="X1LC"/>
</Link>
</Links>
But as I understand it, an L2 is just two L1's, with links E, F, G, and H connected. Shouldn't the be:
Code: Select all
<Links>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X0LE"/>
<LinkEndpoint NodeId="1" Link="X0LH"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X0LF"/>
<LinkEndpoint NodeId="1" Link="X0LG"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X0LG"/>
<LinkEndpoint NodeId="1" Link="X0LF"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X0LH"/>
<LinkEndpoint NodeId="1" Link="X0LE"/>
</Link>
</Links>
But this results in parse errors...
Reverting to the (un)documented magic values for the link definitions, given a board with two L2's connected between each other X1LA to X0LB, booting separately via two flash devices, I try using the following XN file:
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">
<Declarations>
<Declaration>core stdcore[4]</Declaration>
</Declarations>
<Packages>
<Package ID="0" Type="XS1-L2A-QF124">
<Nodes>
<Node Id="0" Type="XS1-L1A" InPackageId="0" Oscillator="20MHz" SystemFrequency="400MHz" ReferenceFrequency="100MHz">
<Core Number="0" Reference="stdcore[0]">
<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISO0"/>
<Port Location="XS1_PORT_1B" Name="PORT_SPI_SS0"/>
<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLK0"/>
<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSI0"/>
<Port Location="XS1_PORT_1E" Name="ENABLE_XLINK"></Port>
<Port Location="XS1_PORT_1H" Name="SERNUM"></Port>
<Port Location="XS1_PORT_1J" Name="PARAM_RST"></Port>
</Core>
<Boot>
<Source Location="SPI:bootFlash0"></Source>
<Bootee NodeID="1"></Bootee>
</Boot>
</Node>
<Node Id="1" Type="XS1-L1A" InPackageID="1" Oscillator="20MHz" SystemFrequency="400MHz" ReferenceFrequency="100MHz">
<Core Number="0" Reference="stdcore[1]">
<Port Location="XS1_PORT_1H" Name="POWER_LED"></Port>
</Core>
<Boot>
<Source Location="XMOSLINK"></Source>
</Boot>
</Node>
</Nodes>
</Package>
<Package ID="1" Type="XS1-L2A-QF124">
<Nodes>
<Node Id="2" Type="XS1-L1A" InPackageID="0" Oscillator="20MHz" SystemFrequency="400MHz" ReferenceFrequency="100MHz">
<Core Number="0" Reference="stdcore[2]">
<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISO1"/>
<Port Location="XS1_PORT_1B" Name="PORT_SPI_SS1"/>
<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLK1"/>
<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSI1"/>
<Port Location="XS1_PORT_1K" Name="PORT_ETH_TXCLK"/>
<Port Location="XS1_PORT_1L" Name="PORT_ETH_TXEN"/>
<Port Location="XS1_PORT_1M" Name="PORT_ETH_RXCLK"/>
<Port Location="XS1_PORT_1N" Name="PORT_ETH_RXDV"/>
<Port Location="XS1_PORT_1O" Name="PORT_ETH_RXER"/>
<Port Location="XS1_PORT_1P" Name="PORT_ETH_MDC"/>
<Port Location="XS1_PORT_4E" Name="PORT_ETH_RXD"/>
<Port Location="XS1_PORT_4F" Name="PORT_ETH_TXD"/>
<Port Location="XS1_PORT_8D" Name="PORT_ETH_RST_N_MDIO"/>
<Port Location="XS1_PORT_1E" Name="HB0_LED"></Port>
</Core>
<Boot>
<Source Location="SPI:bootFlash1"></Source>
<Bootee NodeID="3"></Bootee>
</Boot>
</Node>
<Node Id="3" Type="XS1-L1A" InPackageID="1" Oscillator="20MHz" SystemFrequency="400MHz" ReferenceFrequency="100MHz">
<Core Number="0" Reference="stdcore[3]">
</Core>
<Boot>
<Source Location="XMOSLINK"></Source>
</Boot>
</Node>
</Nodes>
</Package>
</Packages>
<Links>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LC"/>
<LinkEndpoint NodeId="1" Link="X1LB"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LD"/>
<LinkEndpoint NodeId="1" Link="X1LA"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LA"/>
<LinkEndpoint NodeId="1" Link="X1LD"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="0" Link="X1LB"/>
<LinkEndpoint NodeId="1" Link="X1LC"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="1" Link="X1LA"/>
<LinkEndpoint NodeId="2" Link="X0LB"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="2" Link="X1LC"/>
<LinkEndpoint NodeId="3" Link="X1LB"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="2" Link="X1LD"/>
<LinkEndpoint NodeId="3" Link="X1LA"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="2" Link="X1LA"/>
<LinkEndpoint NodeId="3" Link="X1LD"/>
</Link>
<Link Encoding="5wire" Delays="0,1">
<LinkEndpoint NodeId="2" Link="X1LB"/>
<LinkEndpoint NodeId="3" Link="X1LC"/>
</Link>
</Links>
<ExternalDevices>
<Device NodeId="0" Core="0" Class="SPIFlash" Name="bootFlash0" Type="10">
<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISO0" />
<Attribute Name="PORT_SPI_SS" Value="PORT_SPI_SS0" />
<Attribute Name="PORT_SPI_CLK" Value="PORT_SPI_CLK0" />
<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSI0" />
</Device>
<Device NodeId="2" Core="0" Class="SPIFlash" Name="bootFlash1" Type="10">
<Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISO1" />
<Attribute Name="PORT_SPI_SS" Value="PORT_SPI_SS1" />
<Attribute Name="PORT_SPI_CLK" Value="PORT_SPI_CLK1" />
<Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSI1" />
</Device>
</ExternalDevices>
<JTAGChain>
<JTAGDevice NodeId="0"/>
<JTAGDevice NodeId="1"/>
<JTAGDevice NodeId="2"/>
<JTAGDevice NodeId="3"/>
</JTAGChain>
</Network>
From this, I get the not-terribly-helpful xmap error message:
Code: Select all
C:\DOCUME~1\Admin\LOCALS~1\Temp\gs_4:102: Error: A00045 Duplicate defined label 'treeLinkProgVal6'
C:\DOCUME~1\Admin\LOCALS~1\Temp\gs_4:238: Error: A00045 Duplicate defined label 'sayHello6'
C:\DOCUME~1\Admin\LOCALS~1\Temp\gs_4:254: Error: A00045 Duplicate defined label 'waitForHello6'
C:\DOCUME~1\Admin\LOCALS~1\Temp\gs_4:259: Error: A00045 Duplicate defined label 'sayHelloAgain6'
xmap: Error: Failed to assemble goblin startup for core 1.
What am I doing wrong, and what's a "goblin startup" anyway?