Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2929117
  • 博文数量: 401
  • 博客积分: 12926
  • 博客等级: 上将
  • 技术积分: 4588
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-22 14:51
文章分类

全部博文(401)

文章存档

2015年(16)

2014年(4)

2013年(12)

2012年(82)

2011年(98)

2010年(112)

2009年(77)

分类:

2009-03-26 18:21:40

1,NAND Flash 读erase过的block会返回一个error值,但是要是烧一个全ff的文件在那个block上,就会没事。

SWDownloader和JTAG erase过的block都会返回-10的错误。但是blob erase就没事。

返回-10是因为Nand flashe driver读到一个page后,会用ecc算法去算这个page的值,然后与这个page的spare area的值进行比较,如果不一样,则NDSR寄存器的DFC_SR_DBERR位会被set 1。spare area的ECC值是写flash的时候算出来然后写到spare area里的。可能是JTAG和SWD erase的时候,并没有算ECC的值写入spare area,可能是直接给擦掉了。但是如果忽略这个错误的话,blob运行无异常,也就是说load blob在的区域是没问题的,但是读blob后的空白部分就会有这个错误。

而且NandFlash对于坏块表的处理没有用Flash硬件 design的方法,Flash硬件design是把坏块表存在每个page的spare area里,但是软件目前design是将坏块表存在Block 0里,从block 0的最后一个page里开始存,从后向前存。每次读写的时候都首先查找坏块表,然后看访问的block是否被映射,如果被映射,则取映射后的地址去访问。 这样的话,在每次configure flash的时候,首先要check怀快表,看是否合法,非法则重建快怀表。

2,OneNand DMA问题,load image,如果开cache会影响DMA模式,导致读出的东西不对。而且开cache的话,会影响security 硬件算hash值也会错误。关cache会没问题。

阅读(1783) | 评论(0) | 转发(0) |
0

上一篇:vim替换字符串指令

下一篇:Linux mount udisk

给主人留下些什么吧!~~