Spinand母片制作
1. Spinand母片制作方法¶
首次下载母片制作工具
1.1. 基本工具文件¶
-
可执行程序 SstarMakeBin(SstarMakeBin_dual_env)
-
初始化文件SPINAND.INI(spinand)
SPINAND.INI中的nandid需要根据实际flash的datasheet来填写,
image_directory
为对应需要打包的image路径: -
烧录器的配置文件
leap.def & snchk.def
(leap烧录器用leap.def
,其他烧录器一般用snchk.def
)用来制作母片的image文件以及对应的烧录脚本,统一放在images文件夹下:images文件夹是从
project\image\output\images
下面的images拷贝过来的 -
配置分区和image路径的脚本
auto_update_spinand.txt
auto_update_spinand.txt
下dynpart这行的分区信息必须跟uboot下的mtdparts保持一致: -
针对ubi文件格式需要额外的空间来存ubi的信息,所以ubi分区不能全部用完,需要预留如下大小的空间用来存放ubi信息:
常见的1G bit,2G bit,4G bit NAND的预留量算出来为9MB,17MB,34MB
否则在制作母片的时候会报如下peb不够的error:
Eg: 公版spinand 128M的flash,ubi分区总的大小903个block,需要预留的大小为>= 903*2*4k + 4*4k
所以在
project\image\configs\p3\spinand.ubifs.partition.dispcam.config
中,ubi分区总的大小不能超过0X070E0000 - 903*2*4k + 4*4k
-
在制作母片前需要将
SpinandPackBinTool\images\boot
下的sni与pni文件更名,原名为flash_list.sni
更名为SPINANDINFO.sni
;原名为partinfo.pni
更名为PARTINFO.pni
,如下:此处的文件名与
SpinandPackBinTool\SPINAND.INI
中的配置一致即可。不然会报如下错误:
1.2. 执行SstarMakeBin_dual_env (SstarMakeBin)生成nand.bin¶
SstarMakeBin 跟 SstarMakeBin_dual_env是相同作用的bin,但是版本不一样,请注意使用版本,使用错误,可能会出现烧录后再uboot提示ENV CRC ERROR。
在执行打包命令前,需要将SpinandPackBinTool\images\scripts_bin\[[set_partition.es
下这行屏蔽掉:
然后在linux执行
-
执行
./SstarMakeBin_dual_env -n SPINAND.INI
(TAKOYAKI_DLS00V008之后(不包含)使用) -
或者
./SstarMakeBin -n SPINAND.INI
(TAKOYAKI_DLS00V008以前(包含)使用)
这样会生成一个nand.bin
这个bin就是烧录程序,然后使用烧录器烧录即可。
1.3. 制作母片出错检查¶
-
如果是执行生成bin时有报错,先检查一下是否所执行的命令不支持,比如sd的升级脚本需要改为tftp的脚本形式
-
是否执行了一些save命令,重新保存了分区信息,导致分区信息与在auto_update_spinand.txt中指定的分区不一致
-
如果是烧录到板子上跑不起来,首先根据分区信息,检查生成的bin文件对应偏移地址处的文件信息是否正确,比如IPL的分区偏移为0x140000,则检查生成的bin文件地址0x140000位置处的文件内容是否为IPL文件的内容
-
检查烧录器烧录时oob区是否disable
-
用flash tool工具分别dump出板子上flash开始处、IPL分区偏移处、IPL_CUST分区偏移处、UBOOT分区偏移处、kernel分区偏移处的部分文件对比是否与烧录的bin文件一致
2. 已经支持的FLASH 列表¶
目前已经支持的flash列表参考flash_list.xlsx
3. 烧录器参考配置¶
3.1. snchk.def分区配置文件说明(常用于非leap烧录器)¶
如下图:(def格式是大端存储的)
-
使用二进制打开文件,每一行代表一个分区的描述
-
图中分区描述
-
4个字节描述分区的起始block,如第一行00 00 00 00,代表的是起始位置为第0个block
-
4个字节描述分区的结束block,如第一行09 00 00 00,代表的是结束位置为第9个block(包含第9block)
-
4个字节描述分区的实际有效数据占用的block数,如第一行0A 00 00 00,代表的是占用了10个block
*结束block – 起始block >= 有效数据block
-
3.2. leap.def分区配置文件说明(针对leap烧录器)¶
如下图:def格式是大端存储的
-
除去第一行跟最后一行,每一行就是代表一个分区的描述
-
第一行是leap的头信息,烧录器厂商可以自行判断是否需要,不需要可去掉(因烧录器而异)
-
每行的前4个字节为特有标记,各烧录器厂家自行判断是否需要,不需要可去掉(因烧录器而异)
-
图中分区描述
-
4个字节描述分区的起始block,如第一行00 00 00 00,代表的是起始位置为第0个block
-
4个字节描述分区的结束block,如第一行09 00 00 00,代表的是结束位置为第9个block(包含第9block)
-
4个字节描述分区的实际有效数据占用的block数,如第一行0A 00 00 00,代表的是占用了10个block
*结束block – 起始block >= 有效数据block
-
3.3. 烧录器配置信息¶
表 3-1 应用产品信息
CPU品牌/型号 | 软件系统 |
---|---|
Sigmastar | Linux |
表 3-2 烧录数据文件(镜像文件)
NO | 文件名 | 文件大小bytes | 对应芯片地址/或块编号 |
---|---|---|---|
1 | |||
2 | |||
3 | |||
… | |||
-
镜像文件中是否包含Spare(OOB)数据:
☐ 有Spare(OOB)数据: ________字节
√ 无Spare(OOB)数据
-
坏块管理模式(是否有分区)
☐ 跳过方式: Skip IB
√ 分区方式: Multiple Partitions (with skip IB)
*** 需要提供分区表文件
-
是否使用On-chip ECC(仅带有片内ECC功能的Flash)
☐ 不使用On-chip ECC
最大允许错误位参数: _____(bits) / (bytes)
*** 镜像文件中必须包含Spare(OOB)数据
√ 使用On-chip ECC
-
坏块标记
标记位置(地址): 800h
坏块标记数据: 00h
烧录器配置参考(仅供参考,不同烧录器配置可能不同)¶
使用针对GD5F1GQ4UBYIG的flash配置,参考如下: