关于WinCE NAND flash坏块处理的问题

码农老王(JN) 2013-06-07 04:03:03
在对NAND Flash进行Erase和Write操作时,如果失败,那么就将此块标记为坏块,通常是将spare区的第一字节设为非0xFF。那么在将坏块标记出来后,怎么使用它的?在向某块写入东西的时候都要先判断它是不是坏块么?在NAND Flash的手册中,提到如果出现Erase Failure 或者Program Failure时,除了将本块标记为坏块之外,还要进行block replace。 如果我要把NK写到Block7 ~ Block n, 而Block 9 是坏块,我用一个reseved block(假设为Block i)来保存本应该写到block 9 中的内容,那么系统运行时,怎么实现自动忽略坏块block 9 而去执行block i中的内容呢?

对着现有的BSP包研究了一段时间了,可关于这个部分的实现还是不太懂,希望有知道的高手能稍微介绍一下,谢谢!
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你看看bootloader里面读写nk的代码不就清楚了吗,代码很好看的啊。
码农老王(JN) 2013-06-09
  • 打赏
  • 举报
回复
引用 5 楼 w0801101117 的回复:
[quote=引用 3 楼 thenbingo 的回复:] 系统对坏块的管理是在文件系统的FTL层来实现的,WinCE保持有一个逻辑块与物理块的对应表,系统初始化时建立这个表,上层文件操作通过这个表将逻辑扇区转换为对应的物理扇区然后进行访问,使用中出现坏块时就将表中逻辑扇区对应的物理扇区更新为新的地址(Reserve块中的扇区)。 Boot里面写NK应该是平坦映射,一种方式是如果Block9为坏块,直接跳过去,在Block10里面接着Block8的内容往里写,另一种方式是在开始区域建立一个逻辑-物理块映射表。
WinCE的逻辑块与物理块的对应表是在哪一部分完成的呢,OAL层?在源码里面能够找到相关实现么?因为我不太理解这种逻辑块到物理块的对应是怎么完成的,所以想参考一下。 对于NK,如果选择第一种方式,那么在读取NK的时候是不是对每一块都要判断是否是坏块呢? [/quote] 不好意思,没有自习看你的答案就回复了。 我回去看看FTL层的代码找找逻辑块与物理块的对应表的。 关于NK的第一种方式,读写NK的时候如果要对每一块都判断是否为坏块会不会造成速度很慢?
码农老王(JN) 2013-06-09
  • 打赏
  • 举报
回复
引用 3 楼 thenbingo 的回复:
系统对坏块的管理是在文件系统的FTL层来实现的,WinCE保持有一个逻辑块与物理块的对应表,系统初始化时建立这个表,上层文件操作通过这个表将逻辑扇区转换为对应的物理扇区然后进行访问,使用中出现坏块时就将表中逻辑扇区对应的物理扇区更新为新的地址(Reserve块中的扇区)。 Boot里面写NK应该是平坦映射,一种方式是如果Block9为坏块,直接跳过去,在Block10里面接着Block8的内容往里写,另一种方式是在开始区域建立一个逻辑-物理块映射表。
WinCE的逻辑块与物理块的对应表是在哪一部分完成的呢,OAL层?在源码里面能够找到相关实现么?因为我不太理解这种逻辑块到物理块的对应是怎么完成的,所以想参考一下。 对于NK,如果选择第一种方式,那么在读取NK的时候是不是对每一块都要判断是否是坏块呢?
码农老王(JN) 2013-06-09
  • 打赏
  • 举报
回复
引用 2 楼 accessysq 的回复:
错误跳过,查找以下个正常的block,写入。。。。然后写到你的nk内容全部写完位置。 n并没有规定一个具体值的。
那么我读取NK到RAM的时候是不是对每一块都需要判断是否为坏块,如果是坏块就自动跳过呢?
thenbingo 2013-06-08
  • 打赏
  • 举报
回复
系统对坏块的管理是在文件系统的FTL层来实现的,WinCE保持有一个逻辑块与物理块的对应表,系统初始化时建立这个表,上层文件操作通过这个表将逻辑扇区转换为对应的物理扇区然后进行访问,使用中出现坏块时就将表中逻辑扇区对应的物理扇区更新为新的地址(Reserve块中的扇区)。 Boot里面写NK应该是平坦映射,一种方式是如果Block9为坏块,直接跳过去,在Block10里面接着Block8的内容往里写,另一种方式是在开始区域建立一个逻辑-物理块映射表。
  • 打赏
  • 举报
回复
错误跳过,查找以下个正常的block,写入。。。。然后写到你的nk内容全部写完位置。 n并没有规定一个具体值的。
码农老王(JN) 2013-06-07
  • 打赏
  • 举报
回复
自己顶一下先

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧