Other Parts Discussed in Thread: CC2538, CC2538-SW
Hi TI,
We are currently developing a small filesystem using the available flash in the CC2538, but there seems to be an issue with the ROM function used by the DriverLib to write multiple 32-bit words in flash.
When using the provided API interface:
int32_t FlashMainPageProgram(uint32_t *pui32Data, uint32_t ui32Address, uint32_t ui32Count)
With a ui32Count > 4 (more than 1 word), the data fails to be written in its entirety. (Address and Count are both multiples of four).
I've tried to write 32 bytes (8 words) of data sequentially, but when debugging, it shown that sometimes one word get properly written, sometimes it's two... But it never get to more than that. It was not possible to write the whole 8 words. However, the function did return a Success value.
As a workaround, I wrapped the call into a function that feed the data one word at a time. This worked without any issues. But, performance is most likely to take a hit using this method.
I've tried using different cache mode, but this doesn't change anything. (On that note, is there other information available about the flash cache modes other than what's written in the User Guide?)
So, is there any special considerations regarding the ROM functions (that are called by the flash utility in the driverlib) that could cause this issue?
Is there another requirements to be able to write an array of word in flash? (data was in SRAM)
Actions are performed using the CPU. Would the same issue arise using the uDMA?
Thanks!
Simon