spinandinfo使用说明


1. 工具总体介绍

  1. 工具用途

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

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

    c.  编辑PARTINFO.pni分区信息

  2. 界面说明

    图1-1

    1 → 加载SPINANDINFO.sniSPINORINFO.nriPARTINFO.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 UpMove 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 UpMove Down进行调整, 如下要调整"IPL_CUST"这个分区,先选中“Partition 3 Info”(IPL_CUST),  然后点击按钮Move UpMove Down进行调整。

    图4-6

  7. 插入,删除某个分区

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

    如在上图中的IPL_CUST分区前插入一个分区,则在”Partition 3 Info“上点击右键,选中”insert part“就会在IPL_CUST前插入一个新的分区,选中delete partIPL_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)
    

    分区信息:

    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. adddelete按钮

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

  12. savesave as按钮

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

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

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

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

    建议不做修改。