Problem with Flash SST25VF016

Technical questions regarding the XTC tools and programming with XMOS.
tf19
New User
Posts: 2
Joined: Fri Apr 11, 2014 10:13 am

Problem with Flash SST25VF016

Post by tf19 »

Hello Forum,

for my current project, I want to replace the AT25DF041A which I used in an earlier project by the SST25VF016 flash device.
According to this page, the device is supported, but it is not included by default.
I am not sure, what exactly I have to do to add my device. I see that it is already listed in the SpecMacros.h and SpecEnum.h files.
Here is the .xn file with the device listed:

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>XS1-L8A-64-TQ128-C5 Device
  </Name>

  <Declarations>
    <Declaration>tileref tile[1]</Declaration>
  </Declarations>

  <Packages>
    <Package id="0" Type="XS1-LnA-64-TQ128">
      <Nodes>
        <Node Id="0" InPackageId="0" Type="XS1-L8A-64" SystemFrequency="500MHz" Oscillator="20MHz">
          <Tile Number="0" Reference="tile[0]">
	          <Port Location="XS1_PORT_1E" Name="PORT_CONSOLE_RX"/>
	          <Port Location="XS1_PORT_1F" Name="PORT_CONSOLE_TX"/>
	          <Port Location="XS1_PORT_1K" Name="PORT_LED1"/>
	          <Port Location="XS1_PORT_1L" Name="PORT_LED2"/>
	          <Port Location="XS1_PORT_1I" Name="PORT_SD_SCK"/>
	          <Port Location="XS1_PORT_1J" Name="PORT_SD_MOSI"/>
	          <Port Location="XS1_PORT_1H" Name="PORT_SD_MISO"/>          
	          <Port Location="XS1_PORT_1M" Name="PORT_SD_SELECT"/>
	          <Port Location="XS1_PORT_1N" Name="PORT_SD_SENSE"/>
	          <Port Location="XS1_PORT_1G" Name="PORT_SQI_SCK"/>
	          <Port Location="XS1_PORT_4E" Name="PORT_SQI_DATA"/>
	          <Port Location="XS1_PORT_4C" Name="PORT_RAM_SELECT"/>
	          <Port Location="XS1_PORT_4F"   Name="PORT_DISPLAY_CONTROL"/>
	          <Port Location="XS1_PORT_32A"  Name="PORT_DISPLAY_DATA"/>
	          <Port Location="XS1_PORT_8D"   Name="PORT_DISPLAY_SELECT"/>
	          <Port Location="XS1_PORT_1C" Name="PORT_SPI_CLK"/>
	          <Port Location="XS1_PORT_1B" Name="PORT_SPI_SS"/>
	          <Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSI"/>
	          <Port Location="XS1_PORT_1A" Name="PORT_SPI_MISO"/>
          </Tile>
        </Node>
      </Nodes>
    </Package>
  </Packages>
    <ExternalDevices>
      <Device NodeId="0" Tile="0" Class="SPIFlash" Name="bootFlash" Type="SST25VF016">
       <Attribute Name="PORT_SPI_CLK" Value="XS1_PORT_1C"/>
       <Attribute Name="PORT_SPI_SS" Value="XS1_PORT_1B"/>
       <Attribute Name="PORT_SPI_MOSI" Value="XS1_PORT_1D"/>
       <Attribute Name="PORT_SPI_MISO" Value="XS1_PORT_1A"/>
     </Device>
    </ExternalDevices>
  <JTAGChain>
     <JTAGDevice NodeId="0"/>
  </JTAGChain>
</Network>
When trying to flash the device, this is printed to the console: (with --verbose option)

Code: Select all

Loading archive "/Users/thierry/Documents/xmos/workspace/app_cube_pintest/bin/Debug/app_cube_pintest_Debug.xe".
Using architecture "xs1b".
Compile flash inquisitor:
  xcc -x c -Xmapper --dontenablesodlinks -Xmapper --wnoXN /var/tmp/fdc_MZbnH1 -x xc "/var/tmp/fdxc_JQnXgj" -lflash  -o "/var/tmp/fdxe_6LKPsi" -x xn "/var/tmp/pxn_lR6ZgD" -D xnSPI_MISO0=XS1_PORT_1A -D xnSPI_SS0=XS1_PORT_1B -D xnSPI_CLK0=XS1_PORT_1C -D xnSPI_MOSI0=XS1_PORT_1D
/var/tmp/pxn_lR6ZgD:40: Warning: F03099 Port associated with attribute "PORT_SPI_CLK" may not have been placed on a specific core.
/var/tmp/pxn_lR6ZgD:41: Warning: F03099 Port associated with attribute "PORT_SPI_SS" may not have been placed on a specific core.
/var/tmp/pxn_lR6ZgD:42: Warning: F03099 Port associated with attribute "PORT_SPI_MOSI" may not have been placed on a specific core.
/var/tmp/pxn_lR6ZgD:43: Warning: F03099 Port associated with attribute "PORT_SPI_MISO" may not have been placed on a specific core.
Will run flash inquisitor.
  xrun --io --adapter-id TknzxbYd "/var/tmp/fdxe_6LKPsi"

Warning: according to mode pins, system is not set to boot from JTAG
Boot site 0 has size 2097152 bytes, SPI clock divider 3:
xflash: Warning: F03092 Will compile stage 2 loader.
  xcc -Xmapper --dontenablesodlinks -Xmapper --wno110 -Xmapper --wnoXN -O2 -x xn "/var/tmp/pxn_lR6ZgD" -Xmapper --image-size -Xmapper 0x1000 -Xmapper --nochaninit -std=c99 -Xmapper --noinitialtidy -Xmapper --image-base -Xmapper 0x10020 -x assembler-with-cpp /var/tmp/s2s_GYaGNu -x c /var/tmp/s2c_t0Hboh -x xc /var/tmp/s2xc_HM3h3l -o /var/tmp/s2xe_Ep6e57 -Xmapper --wno226
Node "0" does not specify a boot device; using default. This behavior will be removed in a future release.
Stage 2 loader occupies 0x000008e8 bytes.
ImageBuilder::buildImage master node 0(0) might have images for...
  Node: 0(0);
from /Users/thierry/Documents/xmos/workspace/app_cube_pintest/bin/Debug/app_cube_pintest_Debug.xe.
ImageBuilder::calculateRequiredImageSize Starting calculation required_image_size=0
ImageBuilder::calculateRequiredImageSize Add Image Header required_image_size=44
ImageBuilder::calculateRequiredImageSize Add Per Core header required_image_size=56
ImageBuilder::calculateRequiredImageSize Add Per Core CMAC required_image_size=56
ImageBuilder::calculateRequiredImageSize Add Image CMAC required_image_size=56
ImageBuilder::calculateRequiredImageSize Add Application/Decrypter required_image_size=1748
ImageBuilder::buildImage allocating 1748bytes for the Image Table
ImageBuilder::initialiseImageHeader : constructing TOOLS13 ImageHeader
ImageBuilder::buildImage core_entry_index = 11
ImageBuilder::buildImage application_entry_index = 56
Located application sector for node 0, core 0, offset in block is 0x00000038
ImageBuilder::buildImage overlay_entry_index = 1748
ImageBuilder::setImageCRCs : constructing TOOLS13 CRC's'
Compile flash application.
  xcc -Xmapper --dontenablesodlinks -Xmapper --fulltypes -Xmapper --wnoXN -Wno-unused -march=xs1b -x xn "/var/tmp/pxn_lR6ZgD" -O2 -lflash -x c "/var/tmp/opf_89032Y" -x xc "/var/tmp/fxc_zRf4tg" -D VERBOSE=1 -D MONITOR=1 -D ERASE_ALL_FIRST=1 -o "/var/tmp/fxe_L08MSv"
Warning: F03098 Factory image and boot loader cannot be write-protected on flash device on node "0".
Will run flash programmer.
  xrun --io --adapter-id TknzxbYd "/var/tmp/fxe_L08MSv"

Warning: according to mode pins, system is not set to boot from JTAG
I don't think that the mode pins cause the problem, since flashing succeeds on another board which also has its mode pins hardwired to "boot from spi".

Does somebody know what to do here?
Thanks in advance,

tf19


colin
Experienced Member
Posts: 74
Joined: Mon Dec 16, 2013 12:14 pm

Post by colin »

Hi,

The majority of the warnings you are seeing can be cleaned up by adding the boot attribute to your node in your xn file.

i.e.

<Node Id="0" InPackageId="0" Type="XS1-L8A-64" SystemFrequency="500MHz" Oscillator="20MHz">
<Boot>
<Source Location="SPI:bootFlash"/>
</Boot>
<Tile Number="0" Reference="tile[0]">
...
</Tile>
</Node>

There do not appear to be any errors in your verbose output which suggests that xflash programmed the device successfully. Is this not the case with your device?

Best Regards,

Colin