当前位置: 首页 > news >正文

告别官方工具:手把手教你用Linux命令行打包和烧写Firefly RK3588固件

告别官方工具:手把手教你用Linux命令行打包和烧写Firefly RK3588固件

在嵌入式开发领域,掌握底层固件打包与烧写技术是进阶开发者的必修课。Firefly RK3588作为一款高性能ARM开发板,官方提供的图形化工具虽然便捷,却隐藏了技术实现的精髓。本文将带你深入Linux命令行环境,从零构建完整的固件打包流水线,并实现底层烧写控制。

1. 构建RK3588固件的技术准备

1.1 开发环境配置

开始前需要准备以下基础环境:

  • 运行Linux的主机(推荐Ubuntu 20.04 LTS)
  • Type-C数据线(支持USB 3.0以上)
  • 网络连接良好的RK3588开发板

安装必要的软件依赖包:

sudo apt update sudo apt install -y rsync e2fsprogs dosfstools lib32stdc++6

1.2 文件系统获取与处理

获取开发板当前文件系统的完整副本:

mkdir -p ~/rk3588_work/rootfs rsync -avx --delete root@<板子IP>:/ ~/rk3588_work/rootfs/

注意:需先在开发板执行sudo passwd root设置root密码,并修改/etc/ssh/sshd_configPermitRootLogin参数

创建空白镜像容器(示例为7GB):

dd if=/dev/zero of=~/rk3588_work/rk3588_rootfs.img bs=1M count=7000 mkfs.ext4 -F -L linuxroot ~/rk3588_work/rk3588_rootfs.img

2. 固件打包全流程解析

2.1 镜像文件系统组装

挂载并填充镜像文件:

mkdir -p ~/rk3588_work/mount_point sudo mount ~/rk3588_work/rk3588_rootfs.img ~/rk3588_work/mount_point sudo cp -a ~/rk3588_work/rootfs/* ~/rk3588_work/mount_point/ sudo umount ~/rk3588_work/mount_point

优化镜像体积:

sudo e2fsck -pf ~/rk3588_work/rk3588_rootfs.img sudo resize2fs -M ~/rk3588_work/rk3588_rootfs.img

2.2 使用官方打包工具链

解包原始固件(以官方Ubuntu镜像为例):

./unpack.sh update.img

目录结构解析:

output/ ├── Image/ │ ├── boot.img │ ├── rootfs.img # 将被替换 ├── package-file # 分区配置文件 └── ...其他分区文件

替换并重新打包:

mv ~/rk3588_work/rk3588_rootfs.img output/Image/rootfs.img ./pack.sh

生成的新固件output/new_update.img即为完整系统镜像。

3. 底层烧写技术详解

3.1 烧写工具配置

安装升级工具:

sudo cp upgrade_tool /usr/local/bin/ sudo chmod a+x /usr/local/bin/upgrade_tool

关键配置文件部署:

mkdir -p ~/.config/upgrade_tool sudo cp config.ini ~/.config/upgrade_tool/

3.2 Loader模式进入方案对比

三种进入Loader模式的方法:

方法类型操作步骤成功率适用场景
硬件按键按住Recovery→上电→释放中等首次烧写
软件命令开发板执行sudo reboot loader已启动系统
短接触点特定引脚短接后上电最高救砖场景

3.3 烧写命令实战

基础烧写操作:

sudo upgrade_tool uf new_update.img

高级操作流程:

  1. 擦除Flash:
    sudo upgrade_tool ef new_update.img
  2. 写入分区表:
    sudo upgrade_tool di -p parameter.txt
  3. 分步烧写:
    sudo upgrade_tool ul bootloader.bin sudo upgrade_tool di -b boot.img sudo upgrade_tool di -r rootfs.img

4. 故障排查与性能优化

4.1 常见错误解决方案

  • 设备未识别

    lsusb | grep 2207 # 检查Rockchip VID sudo modprobe usbserial vendor=0x2207 product=0x350a
  • 烧写中断

    sudo upgrade_tool ef # 全片擦除 sudo upgrade_tool rd # 重置设备
  • 镜像校验失败

    sha1sum new_update.img # 对比官方校验值

4.2 固件定制技巧

修改分区布局:

vim output/package-file

典型分区配置示例:

# NAME SIZE TYPE boot 100M EXT4 rootfs 4096M EXT4 userdata 剩余空间 EXT4

内核参数调整:

mkdir boot_mount sudo mount output/Image/boot.img boot_mount vim boot_mount/extlinux/extlinux.conf

5. 自动化脚本开发

创建一键打包脚本build_fw.sh

#!/bin/bash # 参数检查 [ $# -ne 2 ] && echo "Usage: $0 <source_img> <output_img>" && exit 1 # 解包阶段 echo "[1/3] Unpacking original image..." ./unpack.sh "$1" || exit $? # 文件系统处理 echo "[2/3] Processing rootfs..." sudo cp "$2" output/Image/rootfs.img # 重新打包 echo "[3/3] Generating new image..." ./pack.sh

制作系统烧写SD卡:

sudo dd if=rk3588_loader.bin of=/dev/sdX bs=512 seek=64 sudo dd if=new_update.img of=/dev/sdX bs=1M seek=32

6. 安全加固与版本管理

固件签名验证配置:

openssl genrsa -out private.key 2048 openssl rsa -in private.key -pubout -out public.key ./pack.sh -s private.key

版本信息嵌入:

echo "BUILD_DATE=$(date)" >> output/Image/version.info echo "GIT_HASH=$(git rev-parse HEAD)" >> output/Image/version.info

在实际项目中,我发现最稳定的烧写方式是在设备完全断电状态下,先执行upgrade_tool rd重置命令,再通过硬件按键组合进入Loader模式。这种方法在批量生产环境中成功率可达99%以上。

http://www.jsqmd.com/news/718937/

相关文章:

  • GPT-image-2 强势出圈!MCN 机构增收利器,AI 短剧带货系统实现矩阵号批量运营
  • 如何永久保存番茄小说:一个简单高效的离线阅读解决方案
  • Struts2-Scan性能优化:提升扫描效率的10个技巧
  • 2026年4月梳理:适合饮料厂采购的吹塑机厂家参考 - 速递信息
  • 智能散热引擎:开源动态温控系统如何提升ThinkPad 40%散热效能
  • 5步部署CosyVoice-300M Lite:打造你的专属语音合成服务
  • 免费离线语音识别!Fun-ASR-MLT-Nano-2512本地部署全流程解析
  • 掌握MDAnalysis:分子动力学模拟分析的高效Python工具
  • 打破AI编程工具限制:Cursor Free VIP解锁专业版功能的完整指南
  • 工业级人脸检测实战指南:YOLOv8 Face技术架构与多场景落地方案
  • Midscene.js视觉驱动自动化:如何用AI视觉技术将测试维护成本降低80%
  • 微信聊天记录完整导出终极指南:WxMsgDump实战解析
  • 2026西安最新人力资源公司:涵盖境外劳务派遣、西安劳务外包 - 深度智识库
  • 如何快速上手PyMARL:10分钟搭建你的第一个多智能体AI
  • 终极指南:如何使用Fan Control完全掌控Windows电脑风扇
  • 蓝桥杯国赛程序复盘:NE555测频、PWM电机控制与PCF8591采集的联调避坑指南
  • 脑机接口十大推荐品牌榜单:创新科技引领脑健康未来 - 速递信息
  • YOLOv5模型剪枝实战:从稀疏训练到8倍通道剪枝,我的完整踩坑笔记
  • 免费GPU内存检测神器:MemtestCL完整使用教程与实战技巧
  • 别再傻傻分不清了!LM358和LM324到底怎么选?从单电源到双电源,一次讲透
  • 从Landsat到你的研究:拆解GISA数据集背后的遥感技术栈与避坑指南
  • 3步解锁你的加密音乐:告别平台限制,让音乐真正属于你
  • 《赛博朋克2077》DLSS优化档案
  • 双主轴数控车床哪家精度高、刚性好、稳定性好? - 品牌推荐大师
  • 日日升华(深圳)影视传媒有限公司与八佰里影业达成战略合作
  • 别再死记硬背公式了!用Python代码实战拆解Diffusion中的两种引导技术(附避坑指南)
  • X File Storage 脱离 SpringBoot 独立使用教程:轻量级文件存储解决方案
  • 如何快速掌握二维码修复:QrazyBox的完整使用指南
  • 密盒星云AIGC平台发布会圆满落幕 双维度赋能内容产业高质量发展
  • 大模型微调不再依赖A100!单卡RTX 4090上跑通Qwen2-7B全参数微调(附完整Docker镜像+LoRA配置模板)