采用这种烧录方法,要关注提示2的设置,以便对NAND的存储区域进行更灵活的访问。 其中UBA start blk(hex): 指定文件从那个块开始烧录,Size of UBA blks(hex): 的内容表示烧录的文件占用多少个好块,例如:烧录芯片K9F1208U0B,烧录的文件包含spare区的内容。烧录文件的大小为19M整,烧录的起始块为第0块。K9F1208U0B为小页模式的NAND,每个块包含spare区的大小为0x4200Bytes = 16896(dec)Bytes。那么要烧写的block = 19*1024*1024/16896 = 1179.15,取整为1180(dec) = 0x49C.所以UBA start blk(hex): 0000, Size of UBA blks(hex): 0x49C。 注:如果小页模式不包含spare区的内容,则每个块的大小为0x4000Bytes. 大页模式包含spare区的内容,每个块的大小为0x21000Bytes,大页模式不包含spare区的内容,每个块的大小为0x20000. 采用这种烧录方法的话,坏块标志位是不允许写成非“0xFF”或者“0xFFFF”(16bit),所以在缓冲区(buffer)中的数据,在烧录过程中,坏块标志为都被强制改写0xFF或者0xFFFF。 具有OEM Reserved值的情况下,如果坏块标志的处的值满足其判断要求,将不作强制修改。 B) 硬拷贝 (Hard Copy)。 Hard Copy的方法在读写过程中,没有判断坏块,而是把它当成一般的Flash进行处理的。但在烧写过程,由于坏块的存在,导致对应的数据无法烧写进去,所以在一般情况下,我们不推荐使用这种方式烧写NANDFLASH。 不过在读取芯片(母片)的时候,有时候我们并不清楚该芯片的坏块标志位是不是被改变,不清楚该芯片用的是什么坏块处理方法,我们还是推荐采用这种方法读芯片内容。这种方法可以读出芯片的完全内容,以便进行下一步分析,或者直接拷贝。在读取芯片完全内容时,例如读取芯片K9F1208U0B,该芯片共有4096(0x1000)个block。那么在器件配置字中要设置Size of UBA blks(hex) : 1000 。这样读取的时候就把所有块的内容读出来。 用这种方法之间拷贝芯片的时候,要尽量确保目标的芯片是没有坏块的芯片,才能保证拷贝的成功率。 C)分区烧录(patition) 分区模式是由一张分区表对NAND进行定位烧写的。在烧录准备前,先要装载或编辑一张分区表 在分区表中,每16个字节代表一个分区,16个字节中的第1~4个字节表示该分区的起始块地址,第5~8个字节表示该分区的结束块地址,第9~12个字节表示该分区实际使用到的块大小,第13~16个字节为保留字节。当遍历到分区的起始块地址为FF FF FF FF时,遍历结束。当在烧录过程中遇到坏块时,按Skip Bad Block处理。 一般建议使用分区的烧录方式。 NAND FLASH编程器烧录详解_nand flash编程器烧写-CSDN博客 编程器烧写NAND flash的一些说明_大容量 nand flash 如何进行烧写-CSDN博客 5.烧录问题分享 问题一:烧录后kernel无法启动 将烧录后的kernel分区通过dd if=/dev/mtd5 of=kernel.bin分区获取kernel分区的数据,与原始烧录包对比,发现从nand flash dump出的数据前1个blcok全为0xff,经分析,问题原因为使用skip bad block的方式烧录,kernel分区前的某个位置出现坏块导致烧录出现偏移,才出现kernel分区的第一个block为0xff,如下图解释: 该问题可以通过patition的方式进行烧录解决。 问题二:烧录后ubi文件系统无法正常挂载(分区方式烧录)
- 首先确认制作的ubi文件系统是否正确
- 确认原始ubi文件系统无误
通过nand erase offset size;nand write addr offset size命令将原始镜像升级到nand中,看是否能正常挂载使用
- 确认原始ubi文件系统添加了oob后生成镜像无误
通过nand erase offset size;nand write.raw addr offset size命令将原始镜像升级到nand中,看是否能正常挂载使用
- 确认nand flash中的数据状况,可通过dd命令将ubi分区数据dump出来与原始镜像对比,注意dump时需要保证没有进行过操作过,例如:ubiattach等命令。
- 确认分区表的制作是否正确
本次问题就是分区表制作有误,ubi文件分区的起始与偏移都是对的,但是ubi分区实际的size制作有误,比实际的镜像size小,导致没有将ubi文件系统镜像完全烧录,才出现挂载不上的问题。 |