高手给解释一下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时才认为是重复写入,需要擦除整个扇区呢??
希望高手能给解释一下.