# Hi3519DV500_Firmware_Building **Repository Path**: sunsonzh/Hi3519DV500_Firmware_Building ## Basic Information - **Project Name**: Hi3519DV500_Firmware_Building - **Description**: 固件构建仓库。独立打包脚本解耦SDK编译链路,无需重复编译,直接提取uboot、kernel及文件系统即可快速生成固件,提升开发效率。 - **Primary Language**: Shell - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-09-15 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hi3519DV500/Hi3516DV500 固件打包工具使用说明 ## 版本规格 | 项目 | 内容 | | :---------------- | :--------------------------- | | **适配 SDK 版本** | Hi3519DV500_SDK_V2.0.2.0 | | **内核版本** | Linux 5.10 | | **支持系统** | Linux | | **工具链** | aarch64-v01c01-linux-gnu-gcc | ## 1. 简介 ​ 本工具 (`Generate_Image_Hi3519DV500.sh`) 用于自动化构建海思 Hi3519DV500 及 Hi3516DV500 系列板卡的系统固件。它支持根据板卡配置自动处理 **EMMC (ext4)** 和 **SPINAND (ubifs)** 两种存储介质,并能自动融合 U-Boot、Kernel、Rootfs、Overlay 及 Opt 分区资源。 ## 2. 功能特性 - **多芯片支持**:兼容 Hi3519DV500 与 Hi3516DV500。 - **自动化配置**:通过板卡名称自动识别芯片型号、启动介质(EMMC/SPINAND)及分区大小。 - **单分区融合**:自动将 `opt`、`boardtools` 及 `overlay` 资源合并至根文件系统,生成单一的可读写系统镜像。 ## 3. 环境依赖 - **操作系统**: Linux (Ubuntu 20.04/22.04 推荐) - **权限**: 制作 EMMC 镜像时需要 `sudo` 权限(用于挂载 loop 设备)。 - **系统工具**: - `mke2fs`, `mkfs.ext4` (e2fsprogs) - `rsync` - `fakeroot` (可选,推荐安装) - `u-boot-tools` (提供 `mkenvimage` 命令) - **本地工具** (位于项目 `bin/` 目录下): - `mkubiimg.sh` (用于制作 UBIFS) ## 4. 目录结构要求 项目必须遵循以下目录结构,脚本才能正确索引文件。建议使用 `init_project_tree.sh` 快速初始化。 ``` Project_Root/ ├── bin/ # 存放 mkubiimg.sh 等工具 ├── rootfs/ # 存放基础文件系统压缩包 │ └── rootfs_glibc_arm64.tgz # 必须存在 ├── boardtools/ # 通用板级工具 (会被拷贝到 /usr/bin) ├── uboot/ # U-Boot 相关文件 │ └── [板卡名称]/ # 按板卡名称区分 │ ├── boot_image.bin # u-boot 镜像 │ ├── env.txt # 环境变量文本 │ └── burn_table.xml # 烧录分区表 ├── kernel/ # 内核相关文件 │ └── [板卡名称]/ │ └── uImage # 内核镜像 ├── opt/ # 应用/资源文件 │ └── [板卡名称]/ # 按板卡名称区分,内容会被合入 /opt └── overlay/ # 覆盖层 (用于替换 rootfs 中的特定配置) └── [板卡名称]/ # 按板卡名称区分,内容直接覆盖到 / ``` ## 5. 使用方法 ### 5.1 查看支持的板卡列表 运行脚本带 `-l` 参数或不带参数,查看当前配置支持的板卡型号。 ``` ./Generate_Image_Hi3519DV500.sh -l ``` **输出示例:** ``` Supported Boards List: Board Name | Chip | Media | Size(MB) ---------------------------------------------------------------------- HongouPI_38C_19DV500 | Hi3519DV500 | EMMC | 8192 Board_38E_16DV500 | Hi3516DV500 | SPINAND | 512 ... ``` ### 5.2 生成固件 使用 `-g` 参数生成固件,必须配合 `-b` 指定板卡名称。 **生成 SPINAND 固件:** ``` ./Generate_Image_Hi3519DV500.sh -b Board_38E_16DV500 -g ``` **生成 EMMC 固件 **: ``` ./Generate_Image_Hi3519DV500.sh -b HongouPI_38C_19DV500 -g ``` ### 5.3 清理环境 - **清理临时文件**: `./Generate_Image_Hi3519DV500.sh -c` - **彻底清理 (包括输出目录)**: `./Generate_Image_Hi3519DV500.sh -r` ## 6. 输出产物 生成的固件位于 `out/` 目录下,以 `板卡_芯片_介质_时间` 命名的文件夹中。 **EMMC 版本产物:** - `boot_image.bin`: U-Boot - `uImage`: Kernel - `rootfs_emmc.ext4`: 根文件系统 (含 opt/usr) - `uboot_env.bin`: 环境变量二进制 - `burn_table.xml`: 烧录表 **SPINAND 版本产物:** - `rootfs_nand.ubifs`: UBIFS 格式根文件系统 - (其他同上) ## 7. 添加新板卡支持 若需支持新板子,请在脚本开头的 `BOARD_CONFIGS` 数组中添加配置: Bash ``` declare -A BOARD_CONFIGS=( # 格式: ["板卡名称"]="芯片型号:介质类型:存储大小(MB)" ["MyNewBoard_Name"]="Hi3519DV500:EMMC:8192" ) ``` 并在 `uboot/`, `kernel/`, `opt/` 等目录下建立对应的 `MyNewBoard_Name` 文件夹。