阅读:3011回复:1
高手给解释一下nord flash驱动里关于写flash函数的参数FLBoolean overwrite
vxworks下nord flash驱动里需要编写对flash写的函数,tffs提供了接口函数如下,内容由我们自己根据flash芯片型号完成相应的写操作.
static FLStatus myMTDWrite ( FLFlash vol, CardAddress address, const void FAR1 *buffer, int length, FLBoolean overwrite ) { /* Write routine */ return flOK; } 其中最后一个参数表示是否对已写过的地址再次进行操作, 而flash如果写过的地方不擦除就再次写入会导致超时失败, 可是我看了tornado目录下的几个样本程序,都没有对这个overwrite参数进行判断,不知为何? 仅有一个amd29LvMtd.c的程序(是对32bit的flash编写的驱动)其中有这样的判断: if (overwrite && length == 2) { 擦除该扇区,再写入. } else { if ((length & 0x03) != 0) return ERROR; 进行一般的写入操作. } 对此,很是不解,为何只当要写2字节并且是overwrite时才认为是重复写入,需要擦除整个扇区呢?? 希望高手能给解释一下. |
|
沙发#
发布于:2012-05-14 18:37
我也想知道,我正在做vxworks
|
|