From: David Kelly <address@hidden>
>4 million bytes or bits? Most FLASH devices are sized by the bit.
It is 4M Bytes.
>No matter what you do you won't be able to say *MyUInt16Ptr = 0x1234;
>you will have to write a routine and use it something like this:
>u16_value = 0x1234;
>result = Write4MBFlash( (uint32_t)MyUint16Ptr, sizeof(uint16_t), &u16_value );
One advantage I found, using name spaces (sections) is, generating a hex file for initialised data, which can be downloaded through serial port.
>All the external SPI FLASH devices I have used are paged. One
>read/writes to a RAM buffer in the device then flush that buffer to a
>page in FLASH. IIRC
the Atmel device I last used had 264 byte pages
>which served to complicate addressing if one insisted on using all 264
>bytes. Believe the designer's intent was that one use 256 bytes as a
>"sector" and the other 8 bytes for tracking usage, even linking to
>previous sector and next sector for a form of filesystem.
Never thought of this (using the extra 8 bytes for tracking/linking to other sectors)
>Atmel had a very useful appnote containing C routines for access to
>their DataFlash parts which helped a lot. I felt the need to heavily
>edit it for style and naming convention. Rearranged a bit, and deleted a
>lot that I didn't use. But it was a very good start.
Will check Atmel's site . Thank you.