配置文件系统和分区
Read time: 6 minute(s)
文件系统默认采用 FATFS。
本节仅简单介绍 Bringup 相关的分区配置。Bringup 时建议只进行介质选择,不进行复杂的分区调整。关于分区的详细说明,可查看配置分区。
SPI NOR 文件系统和分区
-
SPI NOR 默认采用 FATFS。
Application options ---> [*] Using File System Image 1 ---> --- Using File System Image 1 Select File System Type (FATFS) ---> (data/) Data Directory (data.fatfs) Image Name
-
在 target/dxxx/xxx/pack/image_cfg.json 中,可以配置 SPI NOR 的分区信息:
以 d13x demo88_nor 工程为例, 编译出来的固件为 d13x_demo88-nor_v1.0.0.img。
"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" } }, },
SPI NAND 文件系统和分区
-
SPI NAND 默认采用 FATFS,配置如下:
Application options ---> [*] Using File System Image 1 ---> --- Using File System Image 1 Select File System Type (FATFS) ---> (data/) Data Directory (data.fatfs) Image Name
-
在工程配置文件 target/dxxx/xxx/pack/image_cfg.json 中,配置分区信息。
可以从其他 SPI NOR 方案中复制 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" }, "userid": { "size": "256k" }, // at least 16KB "env": { "size": "256k" }, "env_r": { "size": "256k" }, "os": { "size": "2m" }, "os_r": { "size": "2m" }, "rodata": { "size": "14m" }, "rodata_r": { "size": "14m" }, "data": { "size": "40m", "nftl": { // Volume in NFTL device "data": { "size": "-" }, }, }, "data_r": { "size": "40m", "nftl": { // Volume in NFTL device "data": { "size": "-" }, }, }, }, },
注: 调整分区后要跳到 BootLoader 配置编译,或者在 RT-Thread 配置下使用 mb 命令编译。 - 基于 SPI NOR 的 Image 信息,在 target/dxxx/xxx/pack/image_cfg.json
中设置 SPI NAND
的镜像信息:
"image": { "info": { // Header information about image "platform": "d21x", "version": "1.0.0", "media": { - "type": "spi-nor", + "type": "spi-nand", "device_id": 0, + "array_organization": [ + { "page": "2k", "block": "128k", "oob": "64" }, + // { "page": "4k", "block": "256k", "oob": "128" }, + ], } }, "updater": { // Image writer which is downloaded to RAM by USB @@ -56,8 +71,8 @@ "part": ["rodata"] }, "data": { - "file": "data.lfs", - "attr": ["mtd", "optional"], + "file": "data.fatfs", + "attr": ["block", "optional"], "part": ["data"] }, },
SDK 也支持 "page" 大小为 4K 的 SPI NAND,但使用场景较少。"media": { "type": "spi-nand", "device_id": 0, "array_organization": [ { "page": "2k", "block": "128k", "oob": "64" }, // { "page": "4k", "block": "256k", "oob": "128" }, ], } },
eMMC 文件系统和分区
-
eMMC 默认采用 FATFS。
Application options ---> [*] Using File System Image 0 ---> --- Using File System Image 0 Select File System Type (FATFS) ---> (rodata/) Data Directory (rodata.fatfs) Image Name [*] Using File System Image 1 ---> --- Using File System Image 1 Select File System Type (FATFS) ---> (data/) Data Directory (data.fatfs) Image Name
以 d21x demo88-mmc 工程为例, 编译出来的固件为 d21x_demo88_mmc_v1.0.0.img。
-
在 target/dxxx/xxx/pack/image_cfg.json 中,配置分区信息:
可以从其他 SPI NOR 方案中复制 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": "495k" }, "env": { "size": "256k" }, "env_r": { "size": "256k" }, "os": { "size": "8m" }, "os_r": { "size": "8m" }, "rodata": { "size": "12m" }, "rodata_r": { "size": "12m" }, "data": { "size": "35m" }, "data_r": { "size": "35m" }, }, },
eMMC 的接口协议固定,因此不需要进行新器件型号的移植。调整分区大小时,也需要同时调整固件的大小来和分区匹配。
- 在 target/dxxx/xxx/pack/image_cfg.json 中设置基于 eMMC 的 Image
信息:
"image": { "info": { // Header information about image "platform": "d21x", "version": "1.0.0", "media": { - "type": "spi-nor", + "type": "mmc", "device_id": 0, } }, "updater": { // Image writer which is downloaded to RAM by USB @@ -56,8 +71,8 @@ "part": ["rodata"] }, "data": { - "file": "data.lfs", - "attr": ["mtd", "optional"], + "file": "data.fatfs", + "attr": ["block", "optional"], "part": ["data"] }, },