scifi wrote:
Regarding incremental programming of flash, here is the answer of Freescale Support:
Yes, ColdFire CFM module supports incremental programming.
You can do ERASE -> PROGRAM value -> PROGRAM 0x00000000 with ColdFire CFM.
In fact that's all flash's basic principle ...
Basically, incremental programming works, but how it affects flash durability and data retention is unknown.
But not possibly the way you may expect without further clarification.
Quoting from another forum pointed to in this thread:
Mark Butcher wrote:
The following shows that such discussions are not restricted to the Freescale parts: http://www.luminarymicro.com/component/option,com_joomlaboard/Itemid,92/func,view/id,7594/catid,5/
That forum contains the following that Mark might have being referring to:
Re:LM3S9BXX FLASH use in comparison to LM3S6965Hi Mark,
From the LM3S9B96 data sheet:
Important: To ensure proper operation, two writes to the same word must be separated by an
ERASE. The following two sequences are allowed:
■ ERASE -> PROGRAM value -> PROGRAM 0x0000.0000
■ ERASE -> PROGRAM value -> ERASE
The following sequence is NOT allowed:
■ ERASE -> PROGRAM value -> PROGRAM value
Have you been following this process?
Sue
In the above description, FOR THOSE PARTS (and not necessarily the Freescale ones), one reading of the above is that you only get to program a value ONCE. You can't go "0xFF, 0xFE, 0xFC, 0xF0, 0xF0, but can only go "0xFF, 0xnn, 0x00".
The above description fom "TI Sue" almost EXACTLY MATCHES the one forwarded from "scifi" on the Coldfire chip (are they the same person?).
Another possible explanation is that "ERASE -> PROGRAM value -> PROGRAM value" is wrong and an oversimplification, and is really saying that the second "value" can't be one that has bits set in it that aren't set in the first "value", but that the support person really doesn't want to try to explain binary arithmetic fundamentals to the supportee.
I went to read the exact wording of the LM3S9B96 Data Sheet to see if it had been misquoted, but they want registration-before-downloading and I can't be bothered. Could someone with this data sheet (on the other forum) please check the exact wording.
Luminary does have an App Note on FLASH programming. Has Freescale got any? They seem to have plenty on the HC11, S12, 68HC and Coldfire V1, but nothing from this millennium.
Concerning one of Mark's question on the other forum:
Can you say anything about benefits of the technology? I suppose that the FLASH becomes more reliable over time since maybe a single bad bit is correctable(?)
Maybe it makes it more reliable. But it also lets them use smaller transistors that are less reliable, but cheaper. How about multiple voltage levels per cell and correcting up to FIVE bits at a time? This is block-mode NAND FLASH and not what we use in the small embedded stuff...
http://en.wikipedia.org/wiki/NAND_flash
http://en.wikipedia.org/wiki/Multi-level_cell