[SOLVED] XN-file for two linked XK-1A XCARDs

Technical discussions related to any XMOS development kit or reference design. Eg XK-1A, sliceKIT, etc.
schmiedl
Junior Member
Posts: 7
Joined: Wed Jul 13, 2011 3:38 pm

[SOLVED] XN-file for two linked XK-1A XCARDs

Post by schmiedl »

Hi,

I'm trying to connect two XK-1A boards using the 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">
  <Type>Board</Type>
  <Name>Two XK-1 Development Boards</Name>

  <Declarations>
    <Declaration>core stdcore[2]</Declaration>
  </Declarations>

  <Packages>
    <Package id="0" Type="XS1-L1A-TQ128">
      <Nodes>
        <Node Id="0" InPackageId="0" Type="XS1-L1A" Oscillator="20MHz" SystemFrequency="400MHz">
          <Boot>
            <Source Location="SPI:bootFlash"/>
            <Bootee NodeId="1"/>
          </Boot>
          <Core Number="0" Reference="stdcore[0]">
            <Port Location="XS1_PORT_1I" Name="PORT_UART_RX"/>
            <Port Location="XS1_PORT_1J" Name="PORT_UART_TX"/>
    
            <Port Location="XS1_PORT_1K" Name="PORT_BUT_1"/>
            <Port Location="XS1_PORT_1L" Name="PORT_BUT_2"/>
    
            <Port Location="XS1_PORT_1M" Name="PORT_SPI_MISO"/>
            <Port Location="XS1_PORT_1N" Name="PORT_SPI_SS"/>
            <Port Location="XS1_PORT_1O" Name="PORT_SPI_CLK"/>
            <Port Location="XS1_PORT_1P" Name="PORT_SPI_MOSI"/>

            <Port Location="XS1_PORT_4F" Name="PORT_LED_1"/>
          </Core>
        </Node>
        <Node Id="1" InPackageId="1" Type="XS1-L1A" Oscillator="20MHz" SystemFrequency="400MHz">
          	<Boot>
        		<Source Location="XMOSLINK"/>
      		</Boot>
          <Core Number="0" Reference="stdcore[1]">
            <Port Location="XS1_PORT_1I" Name="PORT_UART_RX"/>
            <Port Location="XS1_PORT_1J" Name="PORT_UART_TX"/>
    
            <Port Location="XS1_PORT_1K" Name="PORT_BUT_1"/>
            <Port Location="XS1_PORT_1L" Name="PORT_BUT_2"/>
    
            <Port Location="XS1_PORT_1M" Name="PORT_SPI_MISO"/>
            <Port Location="XS1_PORT_1N" Name="PORT_SPI_SS"/>
            <Port Location="XS1_PORT_1O" Name="PORT_SPI_CLK"/>
            <Port Location="XS1_PORT_1P" Name="PORT_SPI_MOSI"/>

            <Port Location="XS1_PORT_4F" Name="PORT_LED_1"/>
          </Core>
        </Node>
      </Nodes>
    </Package>
  </Packages>

  <Links>
  <Link Encoding="5wire" Delays="0,1">
      <LinkEndpoint NodeId="0" Link="4"/>
      <LinkEndpoint NodeId="1" Link="7"/>
    </Link>
    <Link Encoding="5wire" Delays="0,1">
      <LinkEndpoint NodeId="0" Link="5"/>
      <LinkEndpoint NodeId="1" Link="6"/>
    </Link>
    <Link Encoding="5wire" Delays="0,1">
      <LinkEndpoint NodeId="0" Link="6"/>
      <LinkEndpoint NodeId="1" Link="5"/>
    </Link>
    <Link Encoding="5wire" Delays="0,1">
      <LinkEndpoint NodeId="0" Link="7"/>
      <LinkEndpoint NodeId="1" Link="4"/>
    </Link>
  </Links>

  <ExternalDevices>
    <Device NodeId="0" Core="0" Class="SPIFlash" Name="bootFlash" Type="AT25FS010">
      <Attribute Name="PORT_SPI_MISO" Value="PORT_SPI_MISO"/>
      <Attribute Name="PORT_SPI_SS"   Value="PORT_SPI_SS"/>
      <Attribute Name="PORT_SPI_CLK"  Value="PORT_SPI_CLK"/>
      <Attribute Name="PORT_SPI_MOSI" Value="PORT_SPI_MOSI"/>
    </Device>
  </ExternalDevices>

  <JTAGChain>
     <JTAGDevice NodeId="0"/>
     <JTAGDevice NodeId="1"/>
  </JTAGChain>

</Network>
Flashing the code

Code: Select all

/*
 * multicore.xc
 *
 *  Created on: Sep 30, 2011
 *      Author: schmiedl
 */

#include <xs1.h>
#include <platform.h>
#include "utils.h"


on stdcore[0] : out port leds0 = PORT_LED_0;
on stdcore[1] : out port leds1 = PORT_LED_1;

void led_loop0(out port leds) {
	timer t;
	unsigned time, state = 0;
	while (1) {
		t :> time;
		leds <: state;
		state = (state + 1) % 0x0F;
		t when timerafter (time + DELAY_0_5_s) :> void;
	}
}
void led_loop1(out port leds) {
	timer t;
	unsigned time, state = 0;
	while (1) {
		t :> time;
		leds <: state;
		state = (state + 1) % 0x0F;
		t when timerafter (time + DELAY_0_5_s) :> void;
	}
}

int main(void) {
	par {
		on stdcore[0] : led_loop0(leds0);
		on stdcore[1] : led_loop1(leds1);
	}
	return 0;
}
fails with the error

Code: Select all

All call records have not exited in Multi-node boot
What am I doing wrong? Has someone a XN-file for multiple XK-1As in stock?

Thanks in advance!
Greetings,
Chris

[SOLVED]
found one here: http://www.xmos.com/discuss/viewtopic.php?f=6&t=576