hellohello008
驱动牛犊
驱动牛犊
  • 注册日期2007-09-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:3011回复:1

高手给解释一下nord flash驱动里关于写flash函数的参数FLBoolean overwrite

楼主#
更多 发布于:2007-10-11 09:59
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时才认为是重复写入,需要擦除整个扇区呢??
希望高手能给解释一下.
richy_huang
驱动牛犊
驱动牛犊
  • 注册日期2005-03-13
  • 最后登录2014-06-27
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望89点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2012-05-14 18:37
我也想知道,我正在做vxworks
游客

返回顶部