Flash List新增Flash SOP¶
REVISION HISTORY¶
| Revision No. | Description |
Date |
|---|---|---|
| 1.0 | 04/18/2023 | |
| 1.1 | 04/11/2025 | |
| 1.2 | 04/28/2026 |
1. 总体思路¶
找一已添加的相近型号,先按相近型号的参数配置新增的flash,然后再根据新flash的datasheet做相应的修改。各参数的含义详见下文。
使用SDK包中提供的NandInfoEditor软件打开flash_list配置文件。
路径:
nor flash:project/board/mehra/boot/nor/partition/flash_list.nri
spinand flash:project/board/mehra/boot/spinand/partition/flash_list.sni
修改并保存后,再重新编译打包image,之后使用烧录工具进行空片烧录。
注意:nor flash列表中的都是已支持的型号,spinand flash需要判断其flags和maxWaitTime两个参数是否有值,只有有值(非0)才表示是已支持的spinand flash的型号。
2. sni / nri yaml 文本化¶
2.1. 文本化目的¶
为了更方便、直观修改flash sni文件,引入了yaml文件,可通过文本编辑直接修改flash信息,同时也方便4k page、2 plane flash的rom sni信息修改。
flash driver最终使用的仍然是打包到cis.bin里的flash_list.sni / flash_list.nri ,编辑flash信息的方式由flash editor变成了文本yaml编辑。
当新增flash时,可以找一款接近型号的flash yaml进行复制,然后修改有差异部分的参数。
目前这套流程支持的chip有pcupid、ifackel、ifliegen、ihalo、mhera。
2.2. 结构说明¶
2.2.1 路径:¶
spinand flash:
`project/board/mehra/boot/spinand/partition/sni_yaml/common/*` (非快启单颗flash信息的集合)
`project/board/mehra/boot/spinand/partition/flash_list.txt` (生成flash_list.sni, 配合common目录使用,决定使用哪些flash)
`project/board/mehra/boot/spinand/partition/sni_yaml/fb/*` (快启单颗flash信息的集合)
`project/board/mehra/boot/spinand/partition/flash_list-fb.txt` (生成flash_list-fb.sni,配合fb目录使用,决定使用哪些flash)
nor flash:
`project/board/mehra/boot/nor/partition/nri_yaml/common/*` (非快启单颗flash信息的集合)
`project/board/mehra/boot/nor/partition/flash_list.txt` (生成flash_list.nri, 配合common目录使用,决定使用哪些flash)
`project/board/mehra/boot/nor/partition/nri_yaml/fb/*` (快启单颗flash信息的集合)
`project/board/mehra/boot/nor/partition/flash_list-fb.txt` (生成flash_list-fb.nri,配合fb目录使用,决定使用哪些flash)
2.2.2 yaml内容说明:¶
rom sni:
具体为yaml文件开头部分的 spinor_basic_info 和 spinand_basic_info,在之前的editor为透明状态。
主要针对一些特殊要求的flash,比如4k page, 2 plane flash的参数配置,供rom使用,一般情况下无需适配 & 修改。
sni / nri:
具体的数据结构为 spinor_info 和 spinand_sni ,各个字段的含义与之前editor的描述一致,未发生改动。
2.2.3 生成原理:¶
在project目录下make image时,调用对应的tool去解析 flash_list.txt 里的内容,
按顺序取出对应的yaml文件内容并生成对应flash信息,最终拼接成完整的 flash_list.sni。
spinor flash同理。
3. nor flash¶
3.1. 新增flash¶

3.2. 基础参数(flags)¶

Figure 3-2: Flash_2
参数含义:
-
PageByteCnt:flash 一个page的大小
-
SectorByteCnt:flash一个sector的大小
-
BlkByteCnt:flash一个block的大小
-
Capacity:flash的容量 = BlkByteCnt * block的个数
3.3. 保护状态参数¶

Figure 3-3: Flash_3
3.4. 读/写状态寄存器¶

Figure 3-4: Flash_4
3.5. quad mode 寄存器¶

Figure 3-5: Flash_5
3.6. 读/写命令¶

Figure 3-6: Flash_6
4. nand flash¶
4.1. 新增flash¶

Figure 4-1: Flash_7
4.2. 基础参数¶

Figure 4-2: Flash_8
参数含义:
-
Spare Size
- flash oob区的大小
-
Page Size
- flash 一个page的大小
-
Page Cnt
- flash中一个block有几个page
-
Blk Cnt
- flash总共有几个block,flash的总大小=page size * page cnt * blk cnt
-
Sector Size
- flash一个sector的大小
4.3. flags¶

Figure 4-3: Flash_9
4.4. 状态寄存器¶

Figure 4-4: Flash_10
4.5. 读/写参数¶

Figure 4-5: Flash_11
4.6. CR MODE (continue read)——none buffer mode¶
除特殊要求外,一般不需要点cr mode, 较复杂,只用于IPL。

Figure 4-6: Flash_12
4.7. CR MODE (continue read)——buffer mode¶
除特殊要求外,一般不需要点cr mode, 较复杂,只用于IPL。

Figure 4-7: Flash_13