全部博文(2005)
分类: 服务器与存储
2008-03-12 18:26:13
|
climber082008-10-22 22:11:59
1.现在板子上的情况是,CPU内部已经有256M NAND FLASH,又外扩一片1Gbytes的NAND FLASH,当然,只有一个NAND控制器。所以是通过CS来选择的。主要是因为目标用的这颗CPU快要停产了,替代CPU片内不再有NAND FLASH,所以的BOOT需要用扩展的NAND。 2.今天晚上刚刚搞定了那个重定向表。是在BLOB程序里完成的。现在的内核以及BLOB程序都是放在片内的NAND中,所以在程序搬到RAM后就可以停掉片内的NAND,再初始化片外的NAND,建立BBT等,然后再启动内核。已经正常了。 3.烧写FLASH的工具我们就是pro编程器,我不知道是否有什么工具能生成BBT?我想,我需要自己做一套工装,专门来初始化NAND FLASH,建立BBT。 4.问个问题,从仿真器的角度来说,BOOT是从0地址开始写入的,但是0块放了些table的东西,那么,BOOT程序在物理上被放到哪里了呢?我明天会通过测试程序确定这个问题。 5.感谢你的回复。
chinaunix网友2008-10-22 20:27:51
1. 我手里的都是1片足够大的nand,没有2个独立的nand,倒是nor扩展过2片,你的cpu有2个独立的nand控制器吗,还是通过硬件片选之类的对一个nand控制器进行了复用,我想2个独立的nand芯片,在yaffs文件系统mount时,可以指定为2个存储器,每个nand可以自由分区,然后每个nand都有一个自己的bbt,就像挂载了2个独立的硬盘. 2. nand是存在坏块率的,坏块率在百分之多少以下,就认为是合格的nand,正像你说的所有nand的第1块都做了特殊处理,保证不会坏,所以我们就可以存放我们的bbt,进行坏块重定向,对于你说的批量生产问题,从你的描述中来看,你的flash工具是不是不具备自动生成bbt的能力,如果这样的话,我想,你应该在你的flash软件中加入bbt重定向功能,然后将bbt回写到nand的第0块,然后在blob中加入bbt解析功能,这样就可以不用担心0~5M之间的坏块了,nand必须要有bbt的,这是nand生产工艺所决定的!
climber082008-10-21 22:35:48
请教两个问题: 1.我在片外扩展了一片NAND FLASH,文件系统第一次执行时,会说无法找到relocation table,但是当它自己去建立时,又无法建立起来(我在源码里跟了下)。CPU内部自带了一个NAND FLASH,第一次使用它的时候是通过仿真器初始化了一下,程序第一次执行也可以找到那个表。所以我想请教一下,对于片外扩展的新FLASH上的relocation table怎么建立呢?(我正在尝试从blob里做) 2.如果从片外扩展的NAND FLASH做boot,由于内核与RAMDISK会有1M多,厂家又只保证第一坏不是坏块,所以想请教在批量生产时,向FLASH中烧程序如果遇到坏块怎么解决?
chinaunix网友2008-09-18 13:23:51
文中: nand flash的第1个block,即:0索引号块,的后24个page用于slot,即:39~59索引号块,首先填充59号,之后依次向下,直到39块被使用,那么将 重新擦出block0,进入下一个循环. 请问slot是个什么概念呀?
chinaunix网友2008-06-07 16:32:31
2楼的信息没编辑好,不好意思阿。 请教博主几个问题: 1、 关于block的状态信息,nandwrite.c中定义了下面几个宏 #define BBT_BLOCK_BAD 0x03 #define BBT_BLOCK_GOOD 0x00 #define BBT_BLOCK_REV1 0x01 #define BBT_BLOCK_REV2 0x02 请问一下REV1和REV2表示什么意思? REV1 感觉从代码注释上说的是worn out,意思也就是用坏的 2、 >>>>nand中0x03表示该block是好的,但在info->bbt中0x03表示坏,0x00表示好,0x01和0x02分别对应坏块是由谁标记的 不知道写驱动人为什么要把坏块的标志信息写成反的?? 另外,博主你说到的“坏块由谁来标记” 是什么意思阿? ---rocky1972---