I am attempting to write a program update to the FLASH from my program. I have it successfully downloaded into a 1MB array, then when I attempt to copy it to FLASH using NAFlashWrite() it says that it worked, but when I reboot I just get the 9-1-1 error.
I am using NAAppOffsetInFlash to determine the start sector (7).
I am using NAFlashGetSectorSizes() to determine how much to write. (10 sectors)
I use NAFlashErase() before writing.
NAFlashWrite() is really slow (5 seconds a sector) - is this an indication of a problem?
Per the ARM - Architecture Reference Manual (pg. A2-26, 2001, Issue E) can be UNPREDICTABLE and should therefore be avoided.
*** From the aforementioned document:
The architecturally defined behavior of a load/store instruction which generates an unaligned access is one of the following:
It is UNPREDICTABLE
It ignores the low-order address bits that make the access unaligned. This means it effectively uses teh formula (address AND 0xFFFFFFFE) for a halfword access, and uses the formula (address AND 0xFFFFFFFC) for a word access.
It ignores the low-order address bits that make the access unaligned for the memory access itself, but then uses those low-order bits to control a rotation of the loaded data. (This behavior applies only to the LDR and SWP instructions).
Which of these three options applies to a load/store instruction depends on which instruction it is, and is documented on the instruction pages.
*** End
Essentially, avoid packing structures like the plague. The common reason for packing that I have come across is when implementing a protocol. In such a case it would be best to leave the structure unpacked and manually create the outgoing buffer in its packed form (the reverse would be necessary for incoming buffers).