XEF232-1024-FB37 flash boot failure Topic is solved

If you have a simple question and just want an answer.
Guest

XEF232-1024-FB37 flash boot failure

Post by Guest »

Hello,

I made a custom Board with one XEF232-1024-FB374 device.

When I try to flash the board, I get a error:
Error on tile[2]: failed to connect to flash device. Please verify that SQI type is supported and that the correct SQI ports are defined within your xn file.

For the xn file, I used the orginal one from xTimeComposer.

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>Device</Type>
  <Name>XEF232-1024-FB374-C40 Device</Name>

  <Declarations>
    <Declaration>tileref tile[4]</Declaration>
    <Declaration>tileref usb_tile[2]</Declaration>
  </Declarations>

  <Packages>
    <Package id="0" Type="XS2-UEFnA-1024-FB374">
      <Nodes>
        <Node Id="0" InPackageId="0" Type="XS2-L16A-512" Oscillator="24MHz" SystemFrequency="500MHz" OscillatorSrc="2">
          <Boot>
            <Source Location="bootFlash0"/>
          </Boot>
          <Tile Number="0" Reference="tile[0]">
            <Port Location="XS1_PORT_1B" Name="PORT_SQI_CS_0"/>
            <Port Location="XS1_PORT_1C" Name="PORT_SQI_SCLK_0"/>
            <Port Location="XS1_PORT_4B" Name="PORT_SQI_SIO_0"/>
          </Tile>
          <Tile Number="1" Reference="tile[1]"/>
        </Node>
        <Node Id="1" InPackageId="1" Type="XS2-L16A-512" Oscillator="24MHz" SystemFrequency="500MHz" OscillatorSrc="3">
          <Boot>
            <Source Location="bootFlash1"/>
          </Boot>
          <Tile Number="0" Reference="tile[2]">
            <Port Location="XS1_PORT_1B" Name="PORT_SQI_CS_1"/>
            <Port Location="XS1_PORT_1C" Name="PORT_SQI_SCLK_1"/>
            <Port Location="XS1_PORT_4B" Name="PORT_SQI_SIO_1"/>
          </Tile>
          <Tile Number="1" Reference="tile[3]"/>
        </Node>
        <Node Id="2" InPackageId="2" Type="periph:XS1-SU" Reference="usb_tile[0]" Oscillator="24MHz">
        </Node>
        <Node Id="3" InPackageId="3" Type="periph:XS1-SU" Reference="usb_tile[1]" Oscillator="24MHz">
        </Node>
      </Nodes>
      <Links>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="7"/>
          <LinkEndpoint NodeId="1" Link="0"/>
        </Link>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="4"/>
          <LinkEndpoint NodeId="1" Link="3"/>
        </Link>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="6"/>
          <LinkEndpoint NodeId="1" Link="1"/>
        </Link>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="5"/>
          <LinkEndpoint NodeId="1" Link="2"/>
        </Link>
        <Link Encoding="5wire">
          <LinkEndpoint NodeId="0" Link="8" Delays="52clk,52clk"/>
          <LinkEndpoint NodeId="2" Link="XL0" Delays="1clk,1clk"/>
        </Link>
        <Link Encoding="5wire">
          <LinkEndpoint NodeId="1" Link="8" Delays="52clk,52clk"/>
          <LinkEndpoint NodeId="3" Link="XL0" Delays="1clk,1clk"/>
        </Link>
      </Links>
    </Package>
  </Packages>

  <ExternalDevices>
    <Device NodeId="0" Tile="0" Class="SQIFlash" Name="bootFlash0">
      <Attribute Name="PORT_SQI_CS" Value="PORT_SQI_CS_0"/>
      <Attribute Name="PORT_SQI_SCLK" Value="PORT_SQI_SCLK_0"/>
      <Attribute Name="PORT_SQI_SIO" Value="PORT_SQI_SIO_0"/>
    </Device>
    <Device NodeId="1" Tile="0" Class="SQIFlash" Name="bootFlash1">
      <Attribute Name="PORT_SQI_CS" Value="PORT_SQI_CS_1"/>
      <Attribute Name="PORT_SQI_SCLK" Value="PORT_SQI_SCLK_1"/>
      <Attribute Name="PORT_SQI_SIO" Value="PORT_SQI_SIO_1"/>
    </Device>
  </ExternalDevices>

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

</Network>

In run mode, I could execute an printf from all 4 tiles.

Thanks,
Sebastian
You do not have the required permissions to view the files attached to this post.


View Solution
User avatar
mon2
XCore Legend
Posts: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

Hello Sebastian. Unless we are mistaken, you are required to map your QSPI flash onto the:

X0D01 - SS
X0D04..X0D07 - SPIO
X0D10 - SCLK

Please see section 8.1 of the XEF232 datasheet for details on Boot from QSPI Master.

https://www.xmos.com/download/private/X ... 1.9%29.pdf

The bootloader inside the XEF232 is hard coded to support the above noted port pins.
Guest

Post by Guest »

Thank you for your fast answer.

I could not found the section in the XEF232 dataheet.
8.1 is Security register.

The link you post is for the XE232 (without internal flash).

So need I some config, xn file for example, where I could map the internal flash to this pins?
User avatar
mon2
XCore Legend
Posts: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

My apologies for missing the XEF232 in your post.

Just created a fresh project with the same target CPU and saw a similar XN file auto-generated by the toolchain (except no keyword for the oscillator as shown in your post).

Since the compiler is complaining about the Tile[2] QSPI, would you try the XN file without the reference to Tile[2] ?

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>Device</Type>
  <Name>XEF232-1024-FB374-C40 Device</Name>

  <Declarations>
    <Declaration>tileref tile[4]</Declaration>
    <Declaration>tileref usb_tile[2]</Declaration>
  </Declarations>

  <Packages>
    <Package id="0" Type="XS2-UEFnA-1024-FB374">
      <Nodes>
        <Node Id="0" InPackageId="0" Type="XS2-L16A-512" SystemFrequency="500MHz" OscillatorSrc="2">
          <Boot>
            <Source Location="bootFlash0"/>
          </Boot>
          <Tile Number="0" Reference="tile[0]">
            <Port Location="XS1_PORT_1B" Name="PORT_SQI_CS_0"/>
            <Port Location="XS1_PORT_1C" Name="PORT_SQI_SCLK_0"/>
            <Port Location="XS1_PORT_4B" Name="PORT_SQI_SIO_0"/>
          </Tile>
          <Tile Number="1" Reference="tile[1]"/>
        </Node>
        <Node Id="1" InPackageId="1" Type="XS2-L16A-512" SystemFrequency="500MHz" OscillatorSrc="3">
          <Tile Number="1" Reference="tile[3]"/>
        </Node>
        <Node Id="2" InPackageId="2" Type="periph:XS1-SU" Reference="usb_tile[0]">
        </Node>
        <Node Id="3" InPackageId="3" Type="periph:XS1-SU" Reference="usb_tile[1]">
        </Node>
      </Nodes>
      <Links>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="7"/>
          <LinkEndpoint NodeId="1" Link="0"/>
        </Link>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="4"/>
          <LinkEndpoint NodeId="1" Link="3"/>
        </Link>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="6"/>
          <LinkEndpoint NodeId="1" Link="1"/>
        </Link>
        <Link Encoding="5wire" Delays="1,1">
          <LinkEndpoint NodeId="0" Link="5"/>
          <LinkEndpoint NodeId="1" Link="2"/>
        </Link>
        <Link Encoding="5wire">
          <LinkEndpoint NodeId="0" Link="8" Delays="52clk,52clk"/>
          <LinkEndpoint NodeId="2" Link="XL0" Delays="1clk,1clk"/>
        </Link>
        <Link Encoding="5wire">
          <LinkEndpoint NodeId="1" Link="8" Delays="52clk,52clk"/>
          <LinkEndpoint NodeId="3" Link="XL0" Delays="1clk,1clk"/>
        </Link>
      </Links>
    </Package>
  </Packages>

  <ExternalDevices>
    <Device NodeId="0" Tile="0" Class="SQIFlash" Name="bootFlash0">
      <Attribute Name="PORT_SQI_CS" Value="PORT_SQI_CS_0"/>
      <Attribute Name="PORT_SQI_SCLK" Value="PORT_SQI_SCLK_0"/>
      <Attribute Name="PORT_SQI_SIO" Value="PORT_SQI_SIO_0"/>
    </Device>
  </ExternalDevices>

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

</Network>
Openly not clear on why there is a reference to the Tile[2] QSPI but perhaps we missed some reading. Yet, the toolchain auto-generated the reference to this external device...weird.

Also see a level shifter (Texas Instruments) in your schematic. Do you plan to interface / debug with an external 5V tool ? Total Phase Beagle / Aardvark ? If yes, you will need to watch the cable lengths as we have had poor experience in using the same component with shielded but long cables (6ft, 10ft). This component is not capable of capacitive loads like long cables. Short cables and/or PCB traces should be fine.
Guest

Post by Guest »

My apologies for missing the XEF232 in your post.
Absolutely no problem.


I tried your xn file. Now xTIMEcomposer give me the error, that Node "1" need a boot device.
Is it possible, that the second node must boot over an xlink from the first node?

Were you able to run your target CPU on your new project?


I use the levelshifter to communicate with an external device. The length of the cabel is max. 10cm (1/3 ft), so I hope it will work.
User avatar
mon2
XCore Legend
Posts: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

Is it possible, that the second node must boot over an xlink from the first node?
That is our thought since the keyword QSPI is only referencing the internal flash device which you have strapped correctly to boot from according to the datasheet.
Were you able to run your target CPU on your new project?
Unfortunately no, not yet. We have more ideas than time to execute each thought so often I will task the PCB designers to keep on moving so we can get back to the widget after a break. As usual, our OEM clients really drive most of our work so these projects will be on the back burner. Hope to get back to the SODIMM soon as the DDR4 memory socket vendor (Taiwan) is emailing often to secure the business.

Hoping that XMOS will chime in to assist you but you could raise a ticket to ask about this detail.

Are you able to at least flash a LED or similar with your new custom board ? That is, if you are not yet using the extra tiles, the compiler will not allow you to proceed till you have the correct XN definition ?

One idea is to inspect their XCORE-200 Audio board which is based on the XE216 (mind you without the internal flash if I read correctly) but perhaps you can compare the XN files to see the structure of these definitions.

You appear to be at the cutting edge in using this new 32 core CPU which is always exciting :)
Guest

Post by Guest »

You appear to be at the cutting edge in using this new 32 core CPU which is always exciting :)
definitely :)


I could use all four tiles with [RUN], so my board works until I switch of the power supply.

So I will try some configs. Maybe I will find some one wich will work.


Thanks for your answers. I will keep you up to date.
User avatar
Ross
XCore Expert
Posts: 968
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

Presumably you want to boot note 0 from flash and node 1 from node 0? E.g:

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>Device</Type>
  <Name>XEF224-1024-FB374-I40 Device</Name>

  <Declarations>
    <Declaration>tileref tile[4]</Declaration>
    <Declaration>tileref usb_tile[2]</Declaration>
  </Declarations>

  <Packages>
    <Package id="0" Type="XS2-UEFnA-1024-FB374">
      <Nodes>
        <Node Id="0" InPackageId="0" Type="XS2-L12A-512" SystemFrequency="500MHz" OscillatorSrc="2">
          <Boot>
            <Source Location="bootFlash0"/>
            <Bootee NodeId="1"/>
          </Boot>
          <Tile Number="0" Reference="tile[0]">
            <Port Location="XS1_PORT_1B" Name="PORT_SQI_CS_0"/>
            <Port Location="XS1_PORT_1C" Name="PORT_SQI_SCLK_0"/>
            <Port Location="XS1_PORT_4B" Name="PORT_SQI_SIO_0"/>
          </Tile>
          <Tile Number="1" Reference="tile[1]"/>
        </Node>
        <Node Id="1" InPackageId="1" Type="XS2-L12A-512" SystemFrequency="500MHz" OscillatorSrc="3">
          <Boot>
            <Source Location="LINK" BootMode="4"/>
          </Boot>
          <Tile Number="0" Reference="tile[2]"/>
          <Tile Number="1" Reference="tile[3]"/>
        </Node>
        <Node Id="2" InPackageId="2" Type="periph:XS1-SU" Reference="usb_tile[0]">
        </Node>
        <Node Id="3" InPackageId="3" Type="periph:XS1-SU" Reference="usb_tile[1]">
        </Node>
      </Nodes>
      <Links>
        <Link Encoding="5wire" Delays="3clk">
          <LinkEndpoint NodeId="0" Link="7"/>
          <LinkEndpoint NodeId="1" Link="0"/>
        </Link>
        <Link Encoding="5wire" Delays="3clk">
          <LinkEndpoint NodeId="0" Link="4"/>
          <LinkEndpoint NodeId="1" Link="3"/>
        </Link>
        <Link Encoding="5wire" Delays="3clk">
          <LinkEndpoint NodeId="0" Link="6"/>
          <LinkEndpoint NodeId="1" Link="1"/>
        </Link>
        <Link Encoding="5wire" Delays="3clk">
          <LinkEndpoint NodeId="0" Link="5"/>
          <LinkEndpoint NodeId="1" Link="2"/>
        </Link>
        <Link Encoding="5wire">
          <LinkEndpoint NodeId="0" Link="8" Delays="52clk,52clk"/>
          <LinkEndpoint NodeId="2" Link="XL0" Delays="1clk,1clk"/>
        </Link>
        <Link Encoding="5wire">
          <LinkEndpoint NodeId="1" Link="8" Delays="52clk,52clk"/>
          <LinkEndpoint NodeId="3" Link="XL0" Delays="1clk,1clk"/>
        </Link>
      </Links>
    </Package>
  </Packages>

  <ExternalDevices>
    <Device NodeId="0" Tile="0" Class="SQIFlash" Name="bootFlash0">
      <Attribute Name="PORT_SQI_CS" Value="PORT_SQI_CS_0"/>
      <Attribute Name="PORT_SQI_SCLK" Value="PORT_SQI_SCLK_0"/>
      <Attribute Name="PORT_SQI_SIO" Value="PORT_SQI_SIO_0"/>
    </Device>
  </ExternalDevices>

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

</Network>

The XN files should be updated for the next tools release..

Be sure to check your boot mode pins on tile number 0 on all nodes (that'll be tiles [0] and [2] in your case)
User avatar
Ross
XCore Expert
Posts: 968
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

Just had a look at the schematic, you have X2D06 pulled high, which is good. This means node 1 is in boot mode 4 (boot from link) which matches the XN I posted, so hopefully that should get you going..
Guest

Post by Guest »

Ross,
thank you very much, I could flash the device :)

But the CPU does not boot. Could it be that on a fresh device the OTP Security bit[5] is set => boot from OTP?

When I use [RUN] Mode with JTAG xTag3 the device will run and execute my simple "Hello World!" code.