spinandinfo编辑工具使用说明


1. 工具总体介绍

  1. 工具用途

    a.  往spinandinfo.sni里添加新的spinand flash信息或修改flash信息

    b.  往spinorinfo.nri里添加新的spi nor flash信息或修改flash信息

    c.  编辑partinfo.pni分区信息

  2. 界面说明

    图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

  1. 加载SPINANDINFO.sni文件

    要添加新的spinand flash信息,首先得打开一个已存在的SPINANDINFO.sni文件

    步骤: load  -->  Binary SpiNandInfo Files(*.sni),(此处根据不同选择可以打开.sni、nri或.pni文件)

    打开文件界面如下:

    图2-1

  2. 添加一个新的spinand flash 信息

    步骤: add --> 输入flash的part number名字,然后确定。 partnumber一般填写flash的型号名字  

    图2-2

  3. 填写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号

  4. 调整flash在SPINANDINFO.sni中的位置

    新添加了flash后,为了让某个厂商的flash信息能够存放在一起以方便查看,可以选中对应flash,然后点击按钮“Move Up”或“Move Down”调整flash的上下位置

  5. SPINANDINFO.sni的版本控制

    每个SPINANDINFO.sni的第一项用于版本控制,主要是为了区分SPINANDINFO.sni是哪个版本的,此项的ID长度固定为5,ID的前两个byte固定为0xEE,后三个byte是版本号,这些信息在flash tool中会被用到

    图2-5

  6. 保存SPINANDINFO.sni文件

    新添加了flash信息或是修改了flash信息,一定要记得点击按钮“save”保存文件。  


    3. 编辑SPINORINFO.nri信息

添加SpiNor信息和添加SpiNand 信息步骤基本相同,此处只介绍一些不同点

  1. 加载SPINORINFO.nri文件

    要添加新的spinor flash信息,首先得打开一个已存在的SPINORINFO.nri文件

    步骤: load  -->  Binary SpiNorInfo Files(*.nri),此处选择的后缀名和编辑spinand信息的不同

    打开文件界面如下:

    图3-1

  2. 填写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型号

  3. flash版本控制、保存等与添加spinand相同,此处不再介绍  


4. 编辑PARTINFO.pni信息

  1. PARTINFO.pni用途       PARTINFO.pni保存着分区信息,在uboot启动的时候,会根据PARTINFO.pni里的信息创建mtdparts环境变量,找到环境变量分区的位置,现在一般在升级的时候会在脚本中重新设置mtdparts环境变量,但是一般情况下还是希望PARTINFO.pni中保存的分区信息能够与自己实际的分区相同,以免有时候会导致一些奇怪错误

  2. 加载PARTINFO.pni文件

    首先打开一个已存在的PARTINFO.pni文件

    步骤: load  -->  Binary PartitionInfo Files (*.pni) ,选择文件时注意后缀,

    图4-1

    打开文件界面如下:

    图4-2

  3. PARTINFO.pni 界面信息介绍

    图4-3

    1)打开的partinfo文件

    2、3、4、5)此四项是flash的相关信息,但此文件不涉及flash,所以按默认值即可

    6)分区的个数

    7)某个分区的开始位置block号

    8)分区的大小,以kbytes和block数表示大小

    9)分区类型

    10)备份分区数,一般用于防止出现坏块

  4. 增加一个或多个分区

    要增加一个或多个分区,通过修改分区数来添加,如下图红框所示位置

    图4-4

    增加的分区会在原来最后一个分区的后面,此时要注意修改原来最后一个分区的类型,0xC000表示分区结束,现在这个标志往后移,则原来最后一个分区的类型变为unknow

    图4-5

    1)原来最后一个分区,分区类型变为unknow

    2)新增加的分区,类型变为PART_END

    3)分区结束标志,类型码0xC000,PART_END

  5. 减少一个或多个分区

    减少一个或多个分区也是通过修改分区数来实现,修改分区数后原来最后面的分区将被去掉

  6. 移动分区的位置

    当增加了新的分区,想调整这个分区的位置,或是改变原来分区的位置,可以先选定要调整的分区,然后点击按钮“Move Up”或“Move Down”进行调整, 如下要调整"IPL_CUST"这个分区,先选中“Partition 3 Info”这个分区(IPL_CUST),  然后点击按钮“Move Up”或“Move Down”进行调整

    图4-6

  7. 插入,删除某个分区

    如果想要在某个分区前面插入一个分区,或是删除中间的一个分区,则在这个分区上点击右键,选中“insert part” 插入一个新的分区,或“delete part”删除这个分区。

    如在上图中的“IPL_CUST"分区前插入一个分区,则在”Partition 3 Info“上点击右键,选中”insert part“就会在“IPL_CUST"前插入一个新的分区,选中“delete part”则“IPL_CUST"这个分区会被删掉。

  8. 修改分区信息

    修改分区的信息直接修改下图中红色框中的数值即可

    图4-7

    1. 分区起始位置的block号,可直接修改    
    2. 分区大小,以kbytes或block表示,如果是修改kbytes,则数值必须是block大小的整数倍,否则修改无效

    3. 分区的类型,可以从PARTTYPE.ini中查询,可直接修改

    4. 分区的备份block数,根据需要修改,如果不需要备份block,则填0

  9. 自动计算最后一个分区的大小

    在最后一个分区的block cnt栏位输入-1按回车键,会自动的将剩下的空间计算出来作为最后一个分区的大小

  10. 编辑分区时的提示信息

    编辑分区时,如果有错误,会在底下的框中有红色字体提示

    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)

    分区信息
    PartInfo:
    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" 

  11. ”add“和”delete“按钮

    “add”按钮用来添加一个新的partition文档,“delete”按钮用来删除一个partition按钮,但是现在一般都是打开一个已经存在的文档来修改,所以这两个按钮基本上不会用到

  12. “save”和“save as”按钮

    对partition文档进行修改后,一定要点击“save”或“save as”按钮保存文件,否则文件不会被修改

  13. 与PARTINFO.pni一起工作的文件PARTTYPE.ini

    PARTTYPE.ini里面保存了分区类型的信息,PARTINFO.pni被加载时,如果同目录下PARTTYPE.ini存在,则PARTTYPE.ini也会被一起加载。

    主要用于显示分区的名字,不存在也不会出错,PARTTYPE.ini里面定义的分区类型为目前使用的类型,可以在里面自行添加分区类型。

    建议不做修改。