固件编译
18 Dec 2024
Read time: 2 minute(s)
本节介绍了编译固件的常规流程。在开始编译固件之前,确保编译环境已经搭建完成。关于操作系统和依赖的详细安装说明,可查看Ubuntu 和 VMWare 安装。
项目配置与编译
选择以下任意一种编译和配置命令方式,对项目进行配置和编译:
-
常规 make 命令,例如:
make list make d211_demo128_nand_defconfig make
-
OneStep 快捷命令,例如:
source tools/onestep.sh --> 一步直达命令 lunch d211_demo128_nand_defconfig --> 选择 d211_demo128_nand_defconfig m --> 编译打包
生成固件
对于不同的存储介质,生成的固件名称和路径会有所不同:
-
EMMC 采用 squashfs 文件系统。如果开发板使用的存储介质为 eMMC (eNand),以 demo 工程为例,则编译后的固件名称为 d211_demo_v1.0.0.img。
系统输出示例如下:Image file is generated: /xxx/d211/luban/output/d211_demo/images/d211_demo_v1.0.0.img
-
SPI NAND 采用 UBIFS 文件系统。 如果开发板使用的存储介质为 SPINAND,以 demo128_nand 工程为例,则编译后会生成固件的名称 d211_demo128_nand_page_2k_block_128k_v1.0.0。
如果 SPI NAND 的 page 尺寸为 4K 大小,可在 target/d211/xxx/image_cfg.json 文件中配置 page 尺寸,编译后的文件为 d211_xxx_page_4k_block_256k_v1.0.0.img:"info": { // Header information about image "platform": "d211", "product": "demo128_nand", "version": "1.0.0", "media": { "type": "spi-nand", "device_id": 0, "array_organization": [ { "page": "2k", "block": "128k", "oob": "64" }, // { "page": "4k", "block": "256k", "oob": "128" }, ], } },
-
SPI NOR 采用 squashfs 文件系统。如果开发板使用的存储介质为 SPI NOR,以 demo88_nor 工程为例,则编译后会生成固件的名称为 d211_demo88_nor_v1.0.0.img。
系统输出示例如下:Image file is generated: /xxx/d211/develop/output/d211_demo88_nor/images/d211_demo88_nor_v1.0.0.img
SPINOR 的分区信息在 target/d211/per2_spinor/image_cfg.json 中:"spi-nor": { // Media type "size": "16m", // Size of NOR "partitions": { "spl": { "size": "256k" }, "uboot": { "size": "640k" }, "userid": { "size": "64k" }, "env": { "size": "64k" }, "env_r": { "size": "64k" }, "falcon": { "size": "64k" }, "logo": { "size": "512k" }, "kernel": { "size": "5m" }, "rootfs": { "size": "9m" }, // "user": { "size": "-" }, } }