Mic Array Failing Flash Topic is solved

Technical questions regarding the XTC tools and programming with XMOS.
rgilio
Active Member
Posts: 36
Joined: Wed Jul 03, 2019 1:01 am

Mic Array Failing Flash

Post by rgilio »

Hi,

I have this board here https://www.xmos.com/products/voice/micarray and I'm trying to reprogram it but can't seem to get it to work.
I'm new to XMOS products and xTime in general so apologies if I'm missing a simple step here.

- I've loaded up QuadSPI example here https://www.xmos.com/download/AN00188:- ... .2rc1).pdf
- I've then adjusted the Makefile "Target" to be "XU216-256-TQ128-C20"
- I needed to import the "XU216-256-TQ128-C20.xn" file and adjust it to be the following (this fixed all of my build issues):

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>XU216-256-TQ128-C20 Device</Name>
  <Declarations>
    <Declaration>tileref tile[2]</Declaration>
    <Declaration>tileref usb_tile</Declaration>
  </Declarations>
  <Packages>
    <Package id="0" Type="XS2-UnA-512-TQ128">
      <Nodes>
        <Node Id="0" InPackageId="0" Type="XS2-L16A-256" SystemFrequency="500MHz" OscillatorSrc="1">
          <Boot>
            <Source Location="bootFlash"/>
          </Boot>
          <Tile Number="0" Reference="tile[0]">
            <Port Location="XS1_PORT_1B" Name="PORT_SQI_CS"/>
            <Port Location="XS1_PORT_1C" Name="PORT_SQI_SCLK"/>
            <Port Location="XS1_PORT_4B" Name="PORT_SQI_SIO"/>
          </Tile>
          <Tile Number="1" Reference="tile[1]"/>
        </Node>
        <Node Id="1" InPackageId="1" Type="periph:XS1-SU" Reference="usb_tile" Oscillator="24MHz">
        </Node>
      </Nodes>
      <Links>
        <Link Encoding="5wire">
          <LinkEndpoint NodeId="0" Link="8" Delays="52clk,52clk"/>
          <LinkEndpoint NodeId="1" Link="XL0" Delays="1clk,1clk"/>
        </Link>
      </Links>
    </Package>
  </Packages>
  <Nodes>
    <Node Id="2" Type="device:" RoutingId="0x8000">
      <Service Id="0" Proto="xscope_host_data(chanend c);">
        <Chanend Identifier="c" end="3"/>
      </Service>
    </Node>
  </Nodes>
  <Links>
    <Link Encoding="2wire" Delays="5clk" Flags="XSCOPE">
      <LinkEndpoint NodeId="0" Link="XL0"/>
      <LinkEndpoint NodeId="2" Chanend="1"/>
    </Link>
  </Links>
  <ExternalDevices>
    <Device NodeId="0" Tile="0" Class="SQIFlash" Name="bootFlash" Type="IS25LQ016B">
      <Attribute Name="PORT_SQI_CS" Value="PORT_SQI_CS"/>
      <Attribute Name="PORT_SQI_SCLK"   Value="PORT_SQI_SCLK"/>
      <Attribute Name="PORT_SQI_SIO"  Value="PORT_SQI_SIO"/>
      <Attribute Name="QE_REGISTER" Value="quad_spi_qe_location_status_reg_0"/>
      <Attribute Name="QE_BIT" Value="quad_spi_qe_bit_6"/>
    </Device>
  </ExternalDevices>
  <JTAGChain>
    <JTAGDevice NodeId="0"/>
  </JTAGChain>
</Network>
- I can Run the example code on the Mic Array and get the LEDs to start blinking so I know the code is compatible.
- From here, I stopped the running code and reconnected the device to get back to a fresh state.
- I adjusted my Flash Configuration to mirror the example shown in the PDF (Partition Size = 0x80000 && otherOptions = "--data src/data.bin")
- From here, when I run "Flash" I get the following output:

Code: Select all

Warning: F03098 Factory image and boot loader cannot be write-protected on flash device on node 0
xflash: Warning: F03148 --quad-spi-clock not given, using default 15.62MHz

Site 0 has started.         
Site 0 has type 005.        
Site Verify failed for page 0x00000000, offset 0x0000 (read 0x79, expected 0x7d).
Site Verify failed for page 0x00000001, offset 0x0000 (read 0x10, expected 0x30).
...
...
Error: F03013 Failed to run : 0x7ffe98ac11a0.
I checked the datasheet for the MicArray and it looks like the flashing unit is a "IS25LQ016B" which is by default supported by "libquadflash" as listed in xTIMEcomposer User Guide

I've dug around a bit on the forums and came across this post but it quite cover the issue I'm facing.
I also tried running the command line version to flash the device but still ran into the same issue:

Code: Select all

xflash --factory bin/qspi_persistent_storage.xe --boot-partition-size 0x80000 --data src/data.bin
Any help would be appreciated.


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

Post by mon2 »

Hi. Do not own this kit but the referenced landing page notes that the silicon onboard is:

XUF216-512-TQ128-C20


The XUF denotes that the flash memory is internal to the CPU. XMOS did use the same flash memory from ISSI that you have referenced.

Would you try again but use the XUF p/n of the CPU and post your results?

Also review this thread:

https://www.xcore.com/viewtopic.php?t=6448

and compare the specifics of the XN file which is required to define the QSPI mode of the flash device. Follow the XN file details shown in this thread and test again.

Are there no complete projects for this kit inside the tool chain or available from the xmos website? That would be a great start as the XN file will already be defined correctly for this CPU and kit. You can also review some similar kits from SEEED (China) who I believe used the same CPU to compare notes on the XN file.

Moving forward, you should be able to store your custom project - or hello world LED blinky, etc. to this flash memory so it is non-volatile. Suspecting the root issue is between the xn file and the definition of this QSPI format flash memory.

Please post your updates.
rgilio
Active Member
Posts: 36
Joined: Wed Jul 03, 2019 1:01 am

Post by rgilio »

So it turns out the board was bad all along.

I downloaded the online example specifically for the board and it still didn't work.

I figured after trying so many different potential solutions it could possibly be the board itself. Swapped it out with a couple of other boards we have, and they both worked just fine.
It looks like there's some boards with some bad hardware.

For anyone in the future running into Site Verify problems on the Mic Array, please try swapping out your board and see if it works.
User avatar
mon2
XCore Legend
Posts: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

I would suggest to open a support ticket (on xmos.com) to get an official answer on how to get this specific kit working as it should. Vaguely recall that there was an issue with v1.0 of the PCB but just going from memory here.

Once you receive a response, please do update this thread for future readers on the resolution.
rgilio
Active Member
Posts: 36
Joined: Wed Jul 03, 2019 1:01 am

Post by rgilio »

Also for some extra clarification, our board is labeled as a V2.0 not V1

So I tried to 'Contact' --> 'Raise a Ticket' on xmos.com but it just brings me to the 'Account Login Page' but I'm already logged in. When I click the account button, I can see in the drop down a 'Tickets' option. When I click that, it still brings me back to the same login page.

I figured to get around this issue I opened up a ticket under 'Contact' --> 'Got a question?' and selected 'Other Enquiry' (selecting 'Raise a Ticket' just brings me back to login loop). Got the confirmation email, but afterwards got a response saying permission denied. I'm unsure if the question went through and I seem to be unable to use the ticketing system at all. How do I go about doing this properly? Thank you.

Sorry for not responding earlier, I didn't get a notification that there was another post after I set status to 'Resolved'