RK3588 debian11的SDK代码新增一个分区怎么修改

具体要解决的问题:

RK3588 debian11的SDK代码新增一个分区,涉及哪些文件的修改以及怎么修改,比如新增加一个share数据分区,文件系统格式为ext4, 具体怎么修改?

我这里以在RK3588 Debian 11 SDK中新增一个名为 share 的ext4数据分区为例,详细步骤如下。

整个过程的核心逻辑是:在 parameter.txt 中定义分区,在 package-file 中声明其镜像,然后生成一个空的ext4镜像供打包,最后(可选)在文件系统中设置自动挂载。

修改步骤详解

1. 修改分区表:parameter.txt

这是最关键的一步,直接定义了分区的起始地址和大小。文件路径通常在 device/rockchip/rk3588/parameter-xxx.txt。

  • 核心语法 :分区在 CMDLINE 字段的 mtdparts= 参数中定义,格式为 size@offset(partition_name)。

    • size 和 offset 的单位都是扇区(1扇区 = 512字节)。
    • 所有数值均为十六进制。
  • 示例 :假设我们要在 rootfs 分区后、userdata 分区前,新增一个大小为 256MB 的 share 分区。

    1. 计算大小 :256MB = 256 * 1024 * 1024 = 268,435,456 字节。转换为扇区:268,435,456 / 512 = 524,288 个扇区,十六进制为 0x80000。
    2. 计算起始地址 :假设 rootfs 分区的起始地址是 0x00078000,大小是 0x01c00000。那么 share 分区的起始地址 offset 就是 0x00078000 + 0x01c00000 = 0x01c78000。
    3. 修改文件 :打开 parameter.txt,在 CMDLINE 中找到合适位置插入新分区。修改后,其后的 userdata 分区起始地址也需要相应更新。

    修改前:

    复制代码
    CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),0x01c00000@0x00078000(rootfs),0x00040000@0x01c78000(oem),-@0x01cb8000(userdata:grow)

    修改后:

    复制代码
    CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00020000@0x00008000(boot),0x00040000@0x00028000(recovery),0x00010000@0x00068000(backup),0x01c00000@0x00078000(rootfs),0x00040000@0x01c78000(oem),0x00080000@0x01cb8000(share),-@0x01d38000(userdata:grow)

    注意 :这里将 userdata 的起始地址更新为了 0x01d38000(0x01cb8000 + 0x80000)。

2. 修改打包清单:package-file

这个文件告诉打包工具哪些镜像需要被打包进最终的固件。文件路径通常在 tools/linux/Linux_Pack_Firmware/rockdev/package-file。

  • 示例 :在文件中添加一行,指定分区名和对应的镜像文件路径。

    复制代码
    share Image/share.img
3. 创建并打包分区镜像

你需要为这个新分区创建一个空的、已格式化的镜像文件,供打包脚本使用。

  • 创建空镜像 :在SDK的 Image/ 目录下(如果不存在则创建),执行以下命令生成一个空的ext4格式镜像。

    bash 复制代码
    # 进入SDK根目录
    cd your_rk3588_sdk_root
    # 创建Image目录(如果不存在)
    mkdir -p Image
    # 生成一个256MB的空ext4镜像
    dd if=/dev/zero of=Image/share.img bs=1M count=256
    mkfs.ext4 Image/share.img
4. (可选)配置开机自动挂载:修改根文件系统的 /etc/fstab

如果你希望系统启动后,这个 share 分区能自动挂载到某个目录(如 /mnt/share),则需要修改根文件系统内的 etc/fstab 文件。

  1. 解包根文件系统 :SDK中的根文件系统通常是一个镜像文件(如 rootfs.img)。你需要先将其挂载或解包到一个临时目录。

    bash 复制代码
    # 创建一个临时目录
    mkdir rootfs_mount
    # 挂载rootfs镜像(假设镜像文件为 ubuntu_rootfs/rootfs.img)
    sudo mount -o loop ubuntu_rootfs/rootfs.img rootfs_mount
  2. 修改 fstab :编辑 rootfs_mount/etc/fstab 文件,在末尾添加一行。

    复制代码
    /dev/block/by-name/share /mnt/share ext4 defaults,noatime 0 2

    这里使用 by-name/share 这种更稳定的方式引用分区。

  3. 创建挂载点:在根文件系统中创建对应的挂载目录。

    bash 复制代码
    sudo mkdir -p rootfs_mount/mnt/share
  4. 重新打包:修改完成后,卸载镜像。

    bash 复制代码
    sudo umount rootfs_mount

    如果SDK的打包流程需要特定的 rootfs.img,确保这个修改后的镜像会被使用。

关键注意事项

  • 地址计算 :新增或调整分区时,必须精确计算每个分区的起始地址,确保它们首尾相连、互不重叠。任何计算错误都可能导致系统无法启动。
  • 备份:在修改任何配置文件前,强烈建议先进行备份。
  • 编译与打包 :完成上述修改后,通常需要重新执行SDK的编译和打包脚本(如 ./build.sh 和 ./mkfirmware.sh),以生成包含新分区的最终固件 update.img。
  • userdata:grow 分区 :注意 parameter.txt 中最后一个分区通常带有 :grow 标志,它会自动占用所有剩余空间。如果你在其前插入新分区,记得要调整它的起始地址。

总结

整个流程可以概括为:定义分区 (parameter.txt) -> 声明打包 (package-file) -> 准备镜像 (share.img) -> (可选) 配置挂载 (fstab)。

其中,修改 parameter.txt 并精确计算分区地址是最核心也最容易出错的环节,务必仔细核对。

相关推荐
嵌入式分享3 天前
RK3588/RK3576 为什么取消原生 LVDS?显示接口选型与外部转换方案
rk3588·lvds·mipi
程序猿编码7 天前
不用 GPU!RK3588 跑视觉大模型,Qwen3.5-2B VLM 端侧落地
大模型·llm·rk3588·qwen·推理·vlm
深圳市爱派派智能科技有限公司7 天前
告别部署繁琐:LlamaPi 一键搭建本地 Agent 推理底座
rk3588·agent·openai api·本地部署·边缘ai·端侧大模型·llamapi
星野云联AIoT技术洞察8 天前
RK3588 边缘 AI 盒子适合什么工业视觉场景
计算机视觉·边缘计算·rk3588·语音识别·图像识别·边缘网关·边缘计算盒子
企鹅的蚂蚁8 天前
LubanCat RK3588 实时 Linux 开发实战(十四):EtherCAT 主站方案选择与 Full SDK 准备
rk3588·lubancat·嵌入式linux·ethercat·full sdk
企鹅的蚂蚁9 天前
LubanCat RK3588 实时 Linux 开发(七):YT6801 PCIe 网卡驱动移植与 vermagic 排查
linux·rk3588·linux驱动·yt6801·pcie网卡·vermagic
程序猿编码9 天前
扔掉 Python!纯 C++ 本地跑扩散 TTS,GGML 加持,支持 RK3588 NPU 加速
c++·计算机视觉·大模型·transformer·rk3588·推理·ggml
企鹅的蚂蚁10 天前
LubanCat RK3588 实时 Linux 开发(九):从 U-Boot 到 initramfs 的串口启动故障分析
linux·rk3588·u-boot·串口调试·initramfs·linux启动
企鹅的蚂蚁14 天前
LubanCat RK3588 实时 Linux 开发(六):启用 gs_usb 驱动并完成 USB-CAN 收发
linux·rk3588·linux驱动·socketcan·gs_usb·usb-can
柔情的菜刀16 天前
RK3588 DDR初始化bin修改
rk3588