存储配置
- 根据项目需求,选择合适的存储介质型号,例如 SPINAND、SPI NOR 或 eMMC。
SDK 默认支持多种 SPINAND,编译之前需要确认开发板的型号被选中支持,如果不在支持列表中, 则需要参考 SPINAND 移植指南 进行移植。
- 配置 BootLoader,以 SPINAND 的配置为例,其他存储介质类型的配置步骤与 SPINAND 类似。
通过 lunch 命令启动配置选项,选择 中的 SPINAND 驱动选项。
注: BootLoader 和 SPL 分区一般都比较小,如开启过多的 SPINAND 型号,会导致存储容易越界,建议仅打开需要用到的型号。SPINAND Driver library 中会列示不同品牌的存储芯片,如 Dosilicon 和 Macronix,确保选中相应的驱动支持:
-*- SPINAND Driver library [*] Support Dosilicon SPI NAND [*] Support Etron SPI NAND [*] Support Micron SPI NAND [*] Support Macronix SPI NAND [*] Support Winbond SPI NAND [*] Support GigaDevice SPI NAND [*] Support Toshiba SPI NAND [*] Support Foresee SPI NAND [*] Support Xtx SPI NAND [*] Support Zetta SPI NAND [ ] Support Zbit SPI NAND [ ] Support ESMT SPI NAND [ ] Support UMTEK SPI NAND [ ] Support QUANXING SPI NAND
- 选择 RT-Thread 配置:类似于 BootLoader,通过 launch 命令启动配置选项,选择 中的 SPINAND 驱动选项。
- 配置文件系统:默认采用 FATFS 文件系统。
关于 “page” 参数以及文件系统的详细配置说明,可查看配置文件系统和分区。
- 配置分区信息
关于不同存储类型的分区配置,可查看配置文件系统和分区。
- 编译固件:调整分区后,跳到 BootLoader 配置编译,或者在 RT-Thread 配置下使用 mb
命令编译。
以 d21x_demo128_nand 工程为例,编译后生成的固件名称为 d21x_demo128_nand_page_2k_block_128k_v1.0.0.img。
- 烧录编译好的固件到开发板上,检查设备是否能够正常启动并从存储介质读取数据。
如遇到问题,可根据错误信息进行调整,并重新编译。
配置文件系统和分区
- SPINAND 文件系统:默认采用 FATFS。
-
在工程配置文件 target/d21x/demo128_nand/image_cfg.json 中,配置 "page" 大小。
SDK 也支持 "page" 大小为 4K 的 SPINAND,但使用场景较少。"media": { "type": "spi-nand", "device_id": 0, "array_organization": [ { "page": "2k", "block": "128k", "oob": "64" }, // { "page": "4k", "block": "256k", "oob": "128" }, ], } },
-
在工程配置文件 target/d21x/demo128_nand/pack/image_cfg.json 中,配置分区信息。
"spi-nand": { // Device, The name should be the same with string in image:info:media:type "size": "128m", // Size of SPI NAND "partitions": { "spl": { "size": "1m" }, "env": { "size": "256k" }, "env_r": { "size": "256k" }, "os": { "size": "8m" }, "rodata": { "size": "12m" }, "data": { "size": "50m", "nftl": { // Volume in NFTL device "data": { "size": "-" }, }, }, }, },
注: 调整分区后要跳到 BootLoader 配置编译,或者在 RT-Thread 配置下使用 mb 命令编译。
-
-
SPINOR 文件系统:默认采用 FATFS。
以 d13x demo88_nor 工程为例, 编译出来的固件为 d13x_demo88-nor_v1.0.0.img
在 target/d13x/demo88_nor/pack/image_cfg.json 中,可以配置 SPINOR 的分区信息:"spi-nor": { // Device, The name should be the same with string in image:info:media:type "size": "16m", // Size of SPI NOR "partitions": { "spl": { "size": "256k" }, "env": { "size": "128k" }, "env_r": { "size": "128k" }, "os": { "size": "1m" }, "os_r": { "size": "1m" }, "rodata": { "size": "3m" }, "rodata_r": { "size": "3m" }, "data": { "size": "7m" } }, },
- EMMC 文件系统:默认采用 FATFS。
以 d21x demo88-mmc 工程为例, 编译出来的固件为 d21x_demo88_mmc_v1.0.0.img。
eMMC 的接口协议固定,因此不需要进行新器件型号的移植。调整分区大小时,也需要同时调整固件的大小来和分区匹配。
在 target/d21x/demo88-mmc/pack/image_cfg.json 中,可以配置分区信息:
"mmc": { // Device, The name should be the same with string in image:info:media:type "size": "8G", // Size of SD/eMMC "partitions": { // Partition table apply to device "spl": { "offset": "0x4400", "size": "256k" }, "os": { "size": "8m" }, "rodata": { "size": "12m" }, "data": { "size": "35m" }, }, },