We have a product based on XS1-SU01A-FB96 processor using flash ic M25P40.
Project was built with xTIMEcomposer Enterprise_13.2.3
In an application I need to read data from a data partition.
With a flash chip M25P40 everything works fine.
Unfortunately due to discontinuation of M25P40 I need to use another chip.
I use Winbond W25X40, with no change anywhere except of setting Type="W25X40" in xp_skc_su1.xn.
It works fine in other projects where there is no need to read data partition.
But in this project attempt to read data partition gives me an exception.
This is what I get at debugging:
tile[0] core[0] (Suspended: Signal 'ET_LOAD_STORE' received. Description: Memory access exception.)
=fl_getBootPartitionSize() 00017910
What could be a problem and is it possible to fix it?
Will appreciate any input.
Gennady
Problem reading data partition
Hi. So the above offending code runs fine with the older flash from Micron? Can you post the returned result from this library call on the working old flash?
Also you are interested in the boot partition size or rather the data partition size and base address?
Aside from using XMOS library calls, it is simple to perform standard SPI calls to fetch data from absolute addresses in the flash. Review the datasheet and locate the read flash SPI command. Post back if that is of interest and then can do some digging.
Update
Test the method of reading from the data partiton in the flash documented inside the attached appnote. Please post your results.
NB: there is a similar article for QSPI xcore-200 CPU devices
Also you are interested in the boot partition size or rather the data partition size and base address?
Aside from using XMOS library calls, it is simple to perform standard SPI calls to fetch data from absolute addresses in the flash. Review the datasheet and locate the read flash SPI command. Post back if that is of interest and then can do some digging.
Update
Test the method of reading from the data partiton in the flash documented inside the attached appnote. Please post your results.
NB: there is a similar article for QSPI xcore-200 CPU devices
Thank you for advice.
I am trying to avoid flash library related problems and just use spi to read data from a data partition.
I couldn't find anything related to it in either datasheet or xtime composer user manual, but I don't see any problem implementing it, since I've implemented reading data from a similar flash with a different spi port.
The one problem I can't resolve (and I tried various ways) is how to use a bootflash spi port.
SPI ports are used for both spi and audio:
Though I need to read data partition BEFORE any audio routines even start, a composer doesn't let me define spi ports.
I am trying to define spi port as};
The compiler shows the following errors
When I am trying to use
I get an error
What do I need to do to properly define and use SPI ports?
I am trying to avoid flash library related problems and just use spi to read data from a data partition.
I couldn't find anything related to it in either datasheet or xtime composer user manual, but I don't see any problem implementing it, since I've implemented reading data from a similar flash with a different spi port.
The one problem I can't resolve (and I tried various ways) is how to use a bootflash spi port.
SPI ports are used for both spi and audio:
Code: Select all
<Core Number="0" Reference="tile[0]">
<Port Location="XS1_PORT_1A" Name="PORT_SPI_MISO"/>
<Port Location="XS1_PORT_1B" Name="PORT_SPI_SS"/>
<Port Location="XS1_PORT_1C" Name="PORT_SPI_CLK"/>
<Port Location="XS1_PORT_1D" Name="PORT_SPI_MOSI"/>
<Port Location="XS1_PORT_1A" Name="PORT_I2S_ADC0"/>
<Port Location="XS1_PORT_1B" Name="PORT_I2S_BCLK"/>
<Port Location="XS1_PORT_1C" Name="PORT_I2S_LRCLK"/>
<Port Location="XS1_PORT_1D" Name="PORT_I2S_DAC0"/>
I am trying to define spi port as
Code: Select all
fl_SPIPorts mports = {
PORT_SPI_MISO,
PORT_SPI_SS,
PORT_SPI_CLK,
PORT_SPI_MOSI,
on tile[0]: XS1_CLKBLK_1
};
The compiler shows the following errors
Code: Select all
- previously declared as ports.spiCLK. (though I can't find a definition)
- previously declared as ports.spiMISO.
- previously declared as ports.spiMOSI.
- previously declared as ports.spiSS.
- Symbol p_bclk is a duplicate port declaration.
- Symbol p_i2s_adc[0] is a duplicate port declaration.
- Symbol p_i2s_dac[0] is a duplicate port declaration.
- Symbol p_lrclk is a duplicate port declaration.
Code: Select all
extern fl_SPIPorts ports;
Code: Select all
Undefined reference to 'ports'
Seems like I was able to define SPI ports.
It works fine now.
And by some mysterious reason access to the data partition by flashlib now also works
mon2, thanks a lot for oyur help.
It works fine now.
And by some mysterious reason access to the data partition by flashlib now also works
mon2, thanks a lot for oyur help.