spinandinfo使用说明
1. 工具总体介绍¶
-
工具用途
a. 往
SPINANDINFO.sni
里添加新的spinand flash信息或修改flash信息b. 往
SPINORINFO.nri
里添加新的spi nor flash信息或修改flash信息c. 编辑
PARTINFO.pni
分区信息 -
界面说明
图1-1
1 → 加载
SPINANDINFO.sni
、SPINORINFO.nri
或PARTINFO.pni
文件2 → 保存编辑后的文件
3 → 将编辑后的文件重命名保存或是保存到其他路径
4 → 添加新的spinand、spinor flash信息或partinfo分区信息
5 → 删除选中的spinand、spinor flash信息或partinfo分区信息
6 → 退出工具
2. 编辑SPINANDINFO.sni
¶
-
加载
SPINANDINFO.sni
文件要添加新的spinand flash信息,首先得打开一个已存在的
SPINANDINFO.sni
文件步骤: load → Binary SpiNandInfo Files(*.sni),(此处根据不同选择可以打开.sni、nri或.pni文件)
打开文件界面如下:
图2-1
-
添加一个新的spinand flash 信息
步骤: add → 输入flash的part number名字,然后确定。 partnumber一般填写flash的型号名字
图2-2
-
填写flash内容信息
添加一颗flash之后,就会在左侧列表框中新增一颗flash型号,但是右侧列表中的数据都为0,这时需要参考flash的datasheet填写相关内容,以下选项为必须填写内容。
图2-3
1 → flash ID的长度
2 → flash ID号
3 → flash oob区的大小
4 → flash 一个page的大小
5 → flash中一个block有几个page
6 → flash总共有几个block,flash的总大小=page size * page cnt * blk cnt
7 → flash一个sector的大小
8 → flash由几个plane构成,此处要注意,如果是2plane的flash,此处没写读写会错误
9 → flash的最大速度频率
10 → flash厂商的名字缩写
11 → flash型号
注意: 在特殊情况下,有些平台需要根据
SPINANDINFO.sni
中的flash信息来确定从哪个位置加载IPL、IPL_CUST和UBOOT,要确认目前使用的平台是否存在这种特殊情况,请用flash编辑工具(SpiNandInfoEditor.exe)打开SPINANDINFO.sni
文件,查看目前正在使用的flash下面的栏位是否填值,如果是,在新添加flash信息时对应的栏位也要相应填上对应的值。图2-4
1 → UBOOT在flash中的位置,开始block号
2 → IPL在flash中的位置,开始block号
3 → IPL_CUST在flash中的位置,开始block号
-
调整flash在
SPINANDINFO.sni
中的位置新添加了flash后,为了让厂商的flash信息能够存放在一起以方便查看,可以选中对应flash,然后点击按钮
Move Up
或Move Down
调整flash的上下位置 -
SPINANDINFO.sni
的版本控制每个
SPINANDINFO.sni
的第一项用于版本控制,主要是为了区分SPINANDINFO.sni
是哪个版本的,此项的ID长度固定为5,ID的前两个byte固定为0xEE,后三个byte是版本号,这些信息在flash tool中会被用到图2-5
-
保存
SPINANDINFO.sni
文件新添加了flash信息或是修改了flash信息,一定要记得点击按钮
save
保存文件。
3. 编辑SPINORINFO.nri
信息¶
添加SpiNor信息和添加SpiNand 信息步骤基本相同,以下为两者的差异部分。
-
加载
SPINORINFO.nri
文件要添加新的spinor flash信息,首先得打开一个已存在的
SPINORINFO.nri
文件步骤: load --> Binary SpiNorInfo Files(*.nri),此处选择的后缀名和编辑spinand信息的不同
打开文件界面如下:
图3-1
-
填写flash信息
图3-2
1 → flash ID的长度
2 → flash ID号
3 → flash 容量总大小,此处不需要填,会自动根据block size和block cnt计算
4 → flash 一个block的大小,需填16进制值,前面不加0x
5 → flash总共有几个block,flash的总大小=page size * page cnt * blk cnt
6 → flash 一个page的大小
7 → flash一个sector的大小
8 → flash地址是否为4byte地址,只有flash容量大于16M的时候需要填1, 其他情况填0
9 → flash厂商的名字缩写
10 → flash型号
-
flash版本控制、保存等与添加spinand相同
4. 编辑PARTINFO.pni
信息¶
-
PARTINFO.pni
用途PARTINFO.pni
保存分区信息,在uboot启动的时候,根据PARTINFO.pni
信息创建mtdparts环境变量,找到环境变量分区的位置,在一般升级时会在脚本中重新设置mtdparts环境变量,但实际情况下希望PARTINFO.pni
中保存的分区信息与自己实际的分区相同,以免产生错误。 -
加载
PARTINFO.pni
文件首先打开一个已存在的
PARTINFO.pni
文件步骤: load --> Binary PartitionInfo Files (*.pni) ,选择文件时注意后缀,
图4-1
打开文件界面如下:
图4-2
-
PARTINFO.pni
界面信息介绍图4-3
1 → 打开的partinfo文件
2、3、4、5 → 是flash的相关信息,但此文件不涉及flash,所以按默认值即可
6 → 区的个数
7 → 某个分区的开始位置block号
8 → 区的大小,以kbytes和block数表示大小
9 → 区类型
10 → 备份分区数,一般用于防止出现坏块
-
增加一个或多个分区
要增加一个或多个分区,通过修改分区数来添加,如下图标记位置所示。
图4-4
增加的分区在原分区最后位置,注意修改原分区最后一个分区的的类型,0xC000表示分区结束,现在这个标志往后移,则原来最后一个分区的类型变为unknow。
图4-5
1 → 原来最后一个分区,分区类型变为unknow
2 → 新增加的分区,类型变为PART_END
3 → 区结束标志,类型码0xC000,PART_END
-
减少一个或多个分区
减少一个或多个分区也是通过修改分区数来实现,原分区将从后至前删除修改量。
-
移动分区的位置
当增加了新的分区,想调整这个分区的位置,或是改变原来分区的位置,可以先选定要调整的分区,然后点击按钮
Move Up
或Move Down
进行调整, 如下要调整"IPL_CUST"这个分区,先选中“Partition 3 Info”(IPL_CUST), 然后点击按钮Move Up
或Move Down
进行调整。图4-6
-
插入,删除某个分区
如果想要在某个分区前面插入一个分区,或是删除中间的一个分区,则在这个分区上点击右键,选中
insert part
插入一个新的分区,或delete part
删除这个分区。如在上图中的
IPL_CUST
分区前插入一个分区,则在”Partition 3 Info“上点击右键,选中”insert part“就会在IPL_CUST
前插入一个新的分区,选中delete part
则IPL_CUST
这个分区会被删掉。 -
修改分区信息
修改分区的信息直接修改下图中红色框中的数值即可
图4-7
1 → 区起始位置的block号,可直接修改 2 → 区大小,以kbytes或block表示,如果是修改kbytes,则数值必须是block大小的整数倍,否则修改无效
3 → 区的类型,可以从
PARTTYPE.ini
中查询,可直接修改4 → 区的备份block数,根据需要修改,如果不需要备份block,则填0
-
自动计算最后一个分区的大小
在最后一个分区的block cnt栏位输入-1按回车键,会自动的将剩下的空间计算出来作为最后一个分区的大小。
-
编辑分区时的提示信息
编辑分区时,如果有错误,会在底下的框中有红色字体提示:
Overlap:(p2-p3)
:说明第二和第三个分区有重复覆盖。PartGap:(p3-p4)
:说明第三和第四个分区之间有间隔。PartCnt Zero:(p3)
:说明第三个分区的数据都是0。total block size mismatch:(1024-2074)
:说明总的block大小和所有的分区的block大小加起来不匹配,一般通过自动算出最后一个分区的大小来解决。根据分区信息生成的mtdparts:
mtdparts=nand0:0x60000@0x140000(IPL0),0x60000(IPL1),0x60000(IPL_CUST), 0x0(UNKNOW),0x60000(IPL_CUST),0xc0000(UBOOT0),0xc0000(UBOOT1), 0x60000(ENV),0x340000(KERNEL),0x340000(RECOVERY),-(UBI)
分区信息:
0x00140000-0x001a0000 : "IPL0" 0x001a0000-0x00200000 : "IPL1" 0x00200000-0x00260000 : "IPL_CUST" 0x00000000-0x00000000 : "UNKNOW" 0x00260000-0x002c0000 : "IPL_CUST" 0x002c0000-0x00380000 : "UBOOT0" 0x00380000-0x00440000 : "UBOOT1" 0x00440000-0x004a0000 : "ENV" 0x004a0000-0x007e0000 : "KERNEL" 0x007e0000-0x00b20000 : "RECOVERY" 0x00b20000-0x10340000 : "UBI"
-
add
和delete
按钮“add”按钮用来添加一个新的partition文档,“delete”按钮用来删除一个partition按钮,但是现在一般都是打开一个已经存在的文档来修改,所以这两个按钮基本上不会用到。
-
save
和save as
按钮对partition文档进行修改后,一定要点击
save
或save as
按钮保存文件,否则文件不会被修改。 -
与
PARTINFO.pni
一起工作的文件PARTTYPE.ini
PARTTYPE.ini
里面保存了分区类型的信息,PARTINFO.pni
被加载时,如果同目录下PARTTYPE.ini
存在,则PARTTYPE.ini
也会被一起加载。主要用于显示分区的名字,不存在也不会出错,
PARTTYPE.ini
里面定义的分区类型为目前使用的类型,可以在里面自行添加分区类型。建议不做修改。