This is the mail archive of the
mailing list for the eCos project.
On Tue, Feb 15, 2011 at 12:18:14PM -0500, Tom Schouten wrote:
> On 02/15/2011 11:45 AM, Andrew Lunn wrote:
> >>If I understand correctly, the cyg_flash_program() operation erases
> >>before program such that the resulting bit pattern in the Flash always
> >>represents the input bit pattern exactly, instead of being the result
> >>of an "and-mask" operation.
> >I think you are wrong. Take a look at the code. cyg_flash_program()
> >does not call any erase functions.
> >I've done exactly what you want to do in the past. I implemented an
> >log of panic messages which just appended to the end of the current
> >log. No API change was needed.
> I found the other behaviour in the atmel dataflash implementation
> (current CVS tree).
> In packages/devs/flash/atmel/dataflash/current/src/devs_flash_atmel_dataflash_flash_dev_funs.c:
> In function df_flash_program()
> cyg_dataflash_program_buf(&priv->dev, 1, page, true)
> In packages/devs/flash/atmel/dataflash/current/src/devs_flash_atmel_dataflash.c:
> cyg_dataflash_program_buf(cyg_dataflash_device_t *dev,
> cyg_uint8 buf_num,
> cyg_uint32 page_num,
> cyg_bool erase)
> Hence for atmel dataflash the "erase" is always true.
All the NAND flash drivers i know don't erase when programming. So i
would say the data flash does not follow the normal convention.
I would say adding a new API call just for dataflash is wrong.
However, changing the behaviour could also cause problems for some
people. So i would suggest adding a CDL option to control if data
flash should erase or not when programming.
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss