RK3588S 升级镜像包介绍

很好的问题 👍。你在 RK3588S 平台上执行 ./build.sh firmware 之后会生成一堆 .img 文件,这些就是最终烧录到 eMMC/NAND/SD 的固件组成部分。下面我逐个帮你详细解读一下:


📂 生成的固件文件说明

1. boot.img

  • 内容

    • Linux 内核 (Image / zImage)
    • ramdisk (initrd/initramfs,包含 init 脚本、驱动加载、挂载根文件系统所需的基础工具)
    • 内核启动参数(由 cmdlineparameter.txt 提供)
  • 作用:设备上电后,uboot 会加载 boot.img → 内核启动 → 挂载 rootfs。


2. oem.img

  • 内容

    • 厂商自定义分区,通常包含定制的应用、配置文件、驱动固件、第三方库等。
    • 在 Android 系统里常见 oem 分区,在 Linux SDK 里也可能用于放客户定制功能。
  • 作用:给厂商/客户留的可扩展分区,不影响系统更新。


3. parameter.txt

  • 内容

    • 固件分区表描述文件(类似 partedfdisk 的分区信息)。

    • 描述了每个分区的 偏移、大小、名字、属性

    • 例如你之前贴的:

      mtdparts=:0x00004000@0x00004000(uboot),0x00040000@0x00008000(boot:bootable),-@0x00048000(rootfs:grow)
      

      就是分区布局说明。

  • 作用:烧录工具、bootloader 根据它来解析镜像写入位置。


4. rootfs.img

  • 内容

    • 根文件系统 (Root File System),通常是一个 ext4/squashfs 镜像。
    • 里面有 /bin /etc /lib /usr 等 Linux 用户空间内容。
  • 作用:Linux 内核启动后会挂载 rootfs.img 作为 /,提供完整系统环境。


5. update.img

  • 内容

    • Rockchip 升级包,是一个 封装镜像(所有分区打包在一起)。
    • 内部包含:boot.imgrootfs.imgparameter.txtuboot.imgMiniLoaderAll.binrecovery.img 等。
  • 作用:用于 整体升级,通过 Rockchip 工具 (upgrade_tool / rkdeveloptool) 一次性烧写。


6. userdata.img

  • 内容

    • 用户数据分区,通常是一个空的 ext4 镜像。
    • 运行时挂载为 /userdata/data
  • 作用:用户配置、应用安装、临时数据存放区,不影响系统区。


7. MiniLoaderAll.bin

  • 内容

    • Rockchip 的第一阶段 Bootloader (闭源的 BL1 + DDR 初始化代码)。
    • 包含 SoC 启动所需的 DDR 初始化、时钟配置、基本外设初始化。
  • 作用:上电后,BootROM 先加载它 → 初始化内存 → 再加载 uboot。


8. package-file

  • 内容

    • Rockchip 打包脚本生成的 文件清单
    • 列出了 update.img 内部包含哪些文件和对应分区。
  • 作用:打包工具和升级工具依据它来解析、写入。


9. recovery.img

  • 内容

    • 一个小型的 Linux 系统(kernel + rootfs),类似 boot.img,但 rootfs 是专门用于升级/恢复的。
    • 包含升级程序、烧录脚本等。
  • 作用:进入恢复模式时加载,用来刷机/升级/修复系统。


10. uboot.img

  • 内容

    • 第二阶段 Bootloader(U-Boot)。
    • 包含设备树 (dtb)、环境变量支持。
  • 作用:MiniLoader 初始化内存后加载它,它负责加载内核、传递参数、支持 fastboot 等功能。


11. update.raw.img

  • 内容

    • 类似 update.img,但属于 裸分区镜像,内部没有再封装。
    • 可能是 PC 工具 (rkdeveloptool) 直接写盘用的格式。
  • 作用:另一种升级方式,有时比 update.img 更直接。


🔑 总结分层关系(启动链路)

BootROM (SoC 内部ROM)
   ↓
MiniLoaderAll.bin (初始化DDR/PMU)
   ↓
uboot.img (引导器, 读参数, 加载内核)
   ↓
boot.img (内核 + ramdisk)
   ↓
rootfs.img (Linux 根文件系统)
   ↓
userdata.img (用户数据, 可变)

update.img / update.raw.img打包好的整体升级镜像parameter.txt / package-file 则是 描述文件


要不要我帮你画一个 RK3588 固件组成 + 启动流程图?这样比一堆文字更直观。




在 RK3588(S) 的编译/打包系统里,设备树 DTB 文件的位置和生成路径要分两个阶段来看:


1. 内核设备树(kernel DTB)

  • 源文件:
    kernel 源码里,存放路径一般是:

    kernel/arch/arm64/boot/dts/rockchip/
    

    里面会有很多 RK3588 系列的 DTS 文件,例如:

    rk3588s.dtsi
    rk3588s-evb1-v10.dts
    rk3588s-myboard.dts
    

    其中 .dtsi 是片上通用的描述文件,.dts 是具体板子的设备树。

  • 编译后生成的 dtb 文件

    kernel/arch/arm64/boot/dts/rockchip/*.dtb
    

    常见的名字:

    rk3588s-evb1-v10.dtb
    rk3588s-myboard.dtb
    
  • 最终打包时,这些 dtb 会被打包进 boot.img 或者直接放在 resource.img(不同 SDK 可能不同)。


2. U-Boot 设备树(uboot DTB)

  • 源文件:

    u-boot/arch/arm/dts/
    

    里面同样有一堆 rk3588s 的 dts,例如:

    rk3588s-u-boot.dtsi
    rk3588s-evb.dts
    
  • 编译后生成:

    u-boot/arch/arm/dts/*.dtb
    

    这些 dtb 文件被打包到 uboot.img 里,供 U-Boot 自己使用。


3. 最终打包位置

执行 ./build.sh firmware 后:

  • 内核 dtb 最终一般会被打到:

    rockdev/Image/boot.img (内核+dtb+ramdisk)
    

    或者单独放在:

    rockdev/Image/resource.img
    

    (具体要看 buildroot/debian 配置)

  • U-Boot dtb 在:

    rockdev/Image/uboot.img
    

🔑 总结

  • 内核 dtb:kernel/arch/arm64/boot/dts/rockchip/*.dtb,进 boot.img / resource.img
  • U-Boot dtb:u-boot/arch/arm/dts/*.dtb,进 uboot.img
  • 打包后位置:rockdev/Image/ 目录下的 img 里

要不要我帮你画一个 RK3588 打包文件和 DTB 的关系图(像一张总览结构图),这样你一眼就能看懂每个 dtb 归属和去向?




在 RK3588(S) 的固件镜像体系里,设备树 DTB 文件(xxx.dtb)主要存放在 boot.imgrecovery.img。具体如下:


🔹 1. boot.img

  • 组成内容(Android/Linux 通用的 boot.img 格式):

    • kernel(内核 ImagezImage
    • ramdisk(初始根文件系统 initramfs,Android 下通常包含 initfstab 等)
    • dtb/dtbo(设备树 blob,RK 平台通常会直接打包到 boot.img 中,或者通过 dtb.img/dtbo.img 附加)
  • 在 Rockchip 的 Buildroot / Debian 系统里:

    • boot.img 里通常就是 内核 + dtb,直接由 mkbootimgboot_merger 工具打包。

🔹 2. recovery.img

  • 组成内容

    • boot.img 类似,也包含 kernel + ramdisk + dtb
    • 主要用于恢复模式(系统升级、刷机时进入 recovery)。

🔹 3. 独立 dtb.img / resource.img(可选)

  • 在部分 Android 固件中,Rockchip 会把多个 DTB 打包成一个 dtb.img 或者 resource.img,再由 bootloader 按硬件型号选择加载。
  • Linux Buildroot 固件中,通常没有单独的 dtb.img,而是直接放在 boot.img 里。

📌 总结

在你说的 RK3588S 固件打包 (./build.sh firmware) 产物里:

  • 主要的 DTB 文件在 boot.img 里(kernel + dtb)
  • recovery.img 里也会有 dtb(和 boot 分区用法类似,用于 recovery 模式)
  • parameter.txt 里不会存 dtb,只是分区表
  • update.img / update.raw.img 是整体打包镜像,会包含 boot.img 里的 dtb

要验证的话,你可以直接解开 boot.img,看里面的 dtb:

# 解包 boot.img
rkdeveloptool di -p boot.img boot_unpack_dir
# 或者
unpackbootimg -i boot.img -o boot_unpack_dir

解包后会看到:

  • kernel (Image)
  • ramdisk (cpio.gz)
  • dtb (rk3588-xxx.dtb)

要不要我帮你写一段 脚本,能从 RK3588S 的 boot.img 里自动提取出 dtb 文件?




这个问题问得非常好 👍,我给你详细拆解一下 RK3588S 平台里的 recovery.img 存在的原因和作用。


1. 为什么有 recovery.img

Android/Linux 嵌入式设备 里,系统通常会准备一个 恢复模式(Recovery Mode),用来在设备无法正常启动时,依然可以进入一个“急救系统”,进行刷机、升级或修复。
所以打包时会单独生成一个 recovery.img 镜像。


2. recovery.img 里面是什么

它本质上是一个小型 Linux 系统镜像,通常包含:

  • 内核 (kernel)
    一份独立于正常系统的内核,用来启动 recovery。
  • 设备树 (dtb)
    供 recovery 内核使用,保证能驱动存储、USB、显示、按键等基本外设。
  • initramfs / ramdisk
    一个精简的根文件系统,内置 recovery 程序,用于执行升级、擦除分区、格式化、拷贝镜像等操作。

boot.img 类似,但 启动目标不同

  • boot.img → 正常启动进入 Android/Linux 主系统
  • recovery.img → 启动到恢复模式

3. 什么时候会用到 recovery.img

  • 用户手动进入 recovery 模式
    通过按键组合(比如电源 + 音量键)进入。
  • 系统升级/恢复
    如果主系统损坏或 OTA 升级失败,会 fallback 到 recovery 来完成升级。
  • PC 工具刷机
    update.img 在刷机时,可能会先解压出 recovery.img 并用它来执行升级脚本。

4. RK3588S 的特殊点

Rockchip 的 upgrade_tool / rkdeveloptool 通常会用 recovery.img 来:

  • 加载基本驱动(USB、eMMC/NAND、屏幕)
  • 识别和烧写新的 boot.img / rootfs.img / system.img / userdata.img
  • 提供 recovery 模式下的升级逻辑

所以 recovery.img 是 Rockchip 升级机制的关键镜像之一,不是可选的。


✅ 总结:
recovery.img 就是一个“备用小系统”,主要用于 升级 / 修复 / 应急启动。它包含内核+设备树+ramdisk,和 boot.img 类似但功能不同。烧录和量产时必备。


要不要我帮你画一个 RK3588 启动分区流程图,把 boot.imgrecovery.imgupdate.img 之间的关系直观展示出来?




很好问题 👍
你提到的 update.img 是 Rockchip 平台特有的一种整体固件打包格式,主要用于量产烧录工具(如 RKDevTool、upgrade_tool、rkflash)进行整机刷机。

它不是单一分区镜像,而是一个大集合包,里面包含了设备运行所需的各种分区镜像和元信息。


🔎 update.img 里一般包含的内容:

  1. Loader(MiniLoaderAll.bin / idbloader.img)

    • 负责最底层的初始化,运行在 SRAM/DDR 上,用来加载 u-boot。
    • 一般包含 DDR 初始化、PMIC 初始化、存储控制器初始化。
  2. U-Boot / Trust.img

    • Bootloader(u-boot.img),负责启动 Linux。
    • Trust OS(二进制小系统,管理安全世界,比如 TEE)。
  3. Parameter.txt

    • 存储分区表(GPT/MBR)信息。
    • 定义哪些分区、每个分区的大小、标志位。
    • 烧录工具会根据它来写分区。
  4. Boot.img

    • 内核 (zImage / Image)
    • 设备树 (dtb)
    • ramdisk(init 脚本、驱动加载脚本等)。
  5. Recovery.img

    • 一个独立的小系统(Linux 内核 + recovery ramdisk)。
    • 用于 OTA 升级、恢复出厂设置、清除数据。
  6. Rootfs.img / System.img

    • 根文件系统(rootfs 或 system 分区)。
    • 包含完整的 Linux 运行环境、库、驱动、应用程序。
  7. OEM.img / Vendor.img(可选)

    • 设备厂商自定义的分区,放置配置文件、应用、驱动等。
    • 类似于 Android 的 vendor 分区。
  8. Userdata.img

    • 用户数据分区(通常是 ext4 格式,出厂时可能是空的)。
  9. Package-file

    • 一个清单文件,列出了 update.img 中包含哪些子镜像,烧录工具按这个来解析。

📦 update.img 的作用

  • 一体化固件包 → 把所有必要的分区镜像打包在一起,方便一次性升级/刷机。
  • 供 Rockchip 工具识别 → RKDevTool、upgrade_tool 会先解包再烧录到 eMMC/NAND。
  • OTA 升级基础 → 有些系统 OTA 升级时也会基于 update.img。

👉 所以,简单理解:
update.img = { boot.img + recovery.img + rootfs.img + oem.img + userdata.img + parameter.txt + loader + trust + package-file } 的集合体


要不要我帮你画一个 update.img 的分层结构图(像树状图一样),这样你一眼就能看懂每个部分的层级关系?

### 升级 Rockchip RK3588 的 NPU 驱动至版本 0.9.8 为了将 Rockchip RK3588 的 NPU 驱动升级到版本 0.9.8,可以按照以下方法操作: #### 检查当前驱动版本 在执行任何升级之前,建议先确认当前安装的 NPU 驱动版本。可以通过以下命令完成此操作: ```bash dmesg | grep -i rknpu cat /sys/kernel/debug/rknpu/version cat /sys/kernel/debug/rknpu/driver_version cat /proc/debug/rknpu/driver_version ``` 这些命令可以帮助验证当前系统的 NPU 驱动状态[^1]。 #### 下载并编译最新版驱动 访问官方 GitHub 存储库获取最新的工具链和支持文件: ```plaintext https://github.com/rockchip-linux/rknn-toolkit https://github.com/rockchip-linux/rknn-toolkit2 ``` 下载完成后,解压源码包,并根据文档中的说明配置环境变量以及必要的依赖项。通常情况下,这一步涉及安装特定的开发工具和库文件[^3]。 #### 安装更新后的驱动程序 对于香橙派 5 (RK3588S),其支持的 NPU 驱动已知可被升级到版本 `0.9.8`。具体步骤可能因设备型号略有不同,但一般流程如下所示: 1. **准备镜像文件**:如果现有固件不包含目标版本,则需重新烧录带有新版驱动的支持镜像; 2. **手动替换模块**:通过交叉编译生成适配于硬件平台的新内核模块 (`rknpu.ko`) 并加载它; 3. **测试功能正常性**:重启系统之后再运行前述指令来核实最终结果是否达到预期标准[^2]。 #### 示例脚本 下面提供一段简单的 Bash 脚本来简化部分过程: ```bash #!/bin/bash # 更新软件包索引 sudo apt update && sudo apt upgrade -y # 获取rknn toolkit资源 git clone https://github.com/rockchip-linux/rknn-toolkit.git cd rknn-toolkit/ # 构建项目前设置好交叉编译器路径等参数... make clean all # 替换旧有ko文件为新构建出来的那个 cp output/lib/modules/*/*.ko /lib/modules/$(uname -r)/kernel/drivers/ depmod $(uname -r) echo "Reboot now..." sleep 3 reboot ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值