Edit online

配置文件系统和分区

Read time: 6 minute(s)

文件系统默认采用 FATFS。

本节仅简单介绍 Bringup 相关的分区配置。Bringup 时建议只进行介质选择,不进行复杂的分区调整。关于分区的详细说明,可查看配置分区

SPI NOR 文件系统和分区

  1. 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
  2. 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 文件系统和分区

  1. 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
  2. 在工程配置文件 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 命令编译。
  3. 基于 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 文件系统和分区

  1. 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

  2. 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 的接口协议固定,因此不需要进行新器件型号的移植。调整分区大小时,也需要同时调整固件的大小来和分区匹配。

  3. 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"]
                },
            },