dillonhua
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望401点
  • 贡献值0点
  • 好评度128点
  • 原创分0分
  • 专家分0分
阅读:1636回复:4

关于BinFS分区的创建时间问题

楼主#
更多 发布于:2007-08-24 16:53
PXA270的平台,三星的1G NandFlash ,在做分区表的时候,也就是BP_LowLevelFormat这个过程竟然需要20多分钟才能建立好,不知道大家的这个时间是多少,无法忍受,驱动已经是用汇编来读写2048和spare区域了,没法再提高了?
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-24 21:01
是不是每次读写的数据太少了?
让这个函数每次多读写一些PAGE,还有,是不是一个BLOCK被ERASE了好多次啊?
要不应该不会这么慢.
学海无涯
dillonhua
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望401点
  • 贡献值0点
  • 好评度128点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-24 22:34
谢谢,我看了下这个函数的实现,它主要完成标记坏块和创建一个空的MBR分区出来,时间主要花在标记坏块上,它首先会读取每个block的spare区域,如果是坏块则读下一个block的spare,如果这个block的spare的badblock标志显示不是坏块,则会将这个block擦除,然后读取这个block的每个sector,直到读回的不是0XFF,那么标记为坏块,再读下个block,如果读回的都是0xff,那么再向每个sector写入0(2K大小),再读回来,如果还是0,并且这个block的每个sector都是擦除后为0xff,写入0后读回还是0,那么就擦除这个block,认为是好的block。

所以,这样就要 操作8912个block,等于是读写整个NAND FLASH一次,擦除两次,时间主要耗在这上面,但是驱动里面好象就没有一个占用时间多的函数了,大家的建立binfs需要多少时间呢?
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-30 22:27
那就没办法了:)
学海无涯
tianwailk
驱动牛犊
驱动牛犊
  • 注册日期2005-11-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-10 18:03
lowformat中除了擦除外,还对某个块进行读写试验了。去掉这段代码只要几十秒搞定。
游客

返回顶部