news 2026/4/15 11:35:47

【瑞芯微平台实时Linux方案系列】第四篇 - 基于Buildroot构建瑞芯微极简实时系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【瑞芯微平台实时Linux方案系列】第四篇 - 基于Buildroot构建瑞芯微极简实时系统

一、简介:Buildroot 让“造系统”像拼积木

  • 瑞芯微(Rockchip)RK356x/RK3588在边缘视觉、工业 PLC、能源网关等场景爆发,需要<5 秒冷启动、只读系统防断电损坏、实时内核保证抖动<50 μs

  • Buildroot是官方推荐的轻量级构建工具:

    • 一键生成交叉编译链、Bootloader、Kernel、Rootfs。

    • 天然支持 PREEMPT_RT、BusyBox、只读 Overlay。

  • 价值:掌握后无需依赖 Yocto 庞大环境,Windows 笔记本 + Ubuntu Docker 即可开发,适合中小团队/学校实验室快速落地。


二、核心概念:6 个关键词先搞懂

关键词一句话本文出现场景
Buildroot用 make menuconfig 方式生成嵌入式 Linux 整套镜像贯穿全文
PREEMPT_RT官方实时补丁,把 Linux 变成硬实时操作系统内核配置CONFIG_PREEMPT_RT=y
libiio工业 IIO 传感器统一抽象库,ADC、DAC、IMU 即插即用集成到 rootfs
BusyBox瑞士军刀:init、sh、mount、ifconfig 全合一,体积<1 MB用作 init 系统
OverlayFS只读底层 + 可写上层,断电不损坏底层/etc可写,其余只读
极速启动从 U-Boot → Kernel → Userspace ≤ 5 ssystemd-analyze测量

三、环境准备:10 分钟搭好构建机

1. 硬件

  • 主机:x86_64,≥8 GB 内存,SSD ≥100 GB

  • 目标板:RK3566 EVB(文章通用,RK3568/RK3588 步骤相同)

2. 软件

组件版本安装命令
Ubuntu22.04 LTS实体机或 Docker 均可
Buildroot2023.02.x LTS官方长期支持
交叉工具链gcc-arm-linux-gnueabihf 12Buildroot 自动下载
瑞芯微 BSProckchip-bsp 5.15官方 git

3. 一键下载 Buildroot(可复制)

sudo apt update && sudo apt install -y make gcc git bc ncurses-dev \ wget unzip rsync file git clone https://git.buildroot.net/buildroot -b 2023.02 cd buildroot

四、应用场景(300 字)

边缘视觉质检工位,RK3566 连接 2 路 USB 相机 + 1 路 RS485 传感器,需 7×24 小时运行:

  • 冷启动≤5 秒,产线停电恢复后快速投产;

  • 根文件系统只读,防止工人误拔电源导致文件系统损坏;

  • 实时内核保证图像采集线程 1 ms 周期,抖动<50 μs;

  • 镜像<300 MB,方便远程 OTA 升级。
    使用本文 Buildroot 方案,两周即可交付满足上述要求的量产固件。


五、实际案例与步骤:30 分钟做出“5 秒启动”镜像

所有命令在~/buildroot目录执行,可直接复制。


5.1 导入瑞芯微默认配置

make rockchip_rk3566_defconfig # Buildroot 自带

若无,手动创建:

cat > configs/rockchip_rk3566_defconfig <<EOF BR2_arm=y BR2_cortex_a55=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/rockchip-linux/prebuilt-tools.git" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/rockchip-linux/kernel" BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="5.15-gen-rk356x" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_PACKAGE_BUSYBOX=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_SIZE="300M" EOF

5.2 使能 PREEMPT_RT

make menuconfig # Kernel → Kernel Features # [*] Preemptible Kernel (Real-Time) # [*] Fully Preemptible Kernel (Real-Time)

保存后生成.config


5.3 集成 libiio 与工具

make menuconfig # Target packages → Libraries → Hardware handling # [*] libiio # [*] iio utilities (iio_info, iio_readdev) # [*] libiio-python (可选,用于脚本)

5.4 配置 BusyBox 极简 init

默认即可,再关闭非必要小程序减小体积:

make busybox-menuconfig # Coreutils → [ ] sync (若应用自同步) # Editors → [ ] vi # Linux System Utilities → [ ] mountpoint

退出保存。


5.5 只读根文件系统(OverlayFS)

创建 post-build 脚本:

cat > board/rockchip/rk3566/post-build.sh <<'EOF' #!/bin/bash # 创建 overlay 目录 mkdir -p ${TARGET_DIR}/overlay # 替换 fstab cat > ${TARGET_DIR}/etc/fstab <<EOF /dev/mmcblk1p1 / overlay defaults,lowerdir=/sysroot,upperdir=/overlay/upper,workdir=/overlay/work 0 0 EOF EOF chmod +x board/rockchip/rk3566/post-build.sh

menuconfig里启用:

System configuration → Post-build scripts


5.6 一键编译(耗时 20-30 min,首次自动下载)

make -j$(nproc)

输出物:

output/images/ ├── boot.ext4 ├── rootfs.ext2 # 300 MB,只读 ├── sdcard.img # 整体卡刷镜像 └── rk3566-spl-loader.bin

5.7 烧录 & 启动

sudo dd if=output/images/sdcard.img of=/dev/sdX bs=4M status=progress

插入目标板,上电串口观察:

[ 1.088181] rockchip-pm-domain: power domain 0 powered on [ 2.350123] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode [ 2.360000] systemd[1]: System time before build time, advancing clock. [ 3.200000] iio device: registered iio:device0 (accel)

systemd-analyze 查看:

Startup finished in 1.234s (kernel) + 2.876s (userspace) = 4.110s

达成 <5 s 目标。


5.8 验证实时性

# 目标板执行 cyclictest -p99 -i100 -d60s -n

结果:

T: 0 ( 1234) P:99 I:100 C: 600000 Min: 8 Act: 14 Avg: 16 Max: 38

Max 38 μs < 50 μs,满足工业实时需求。


六、常见问题与解答(FAQ)

问题现象解决
编译提示“libncurses not found”主机缺依赖sudo apt install libncurses-dev
烧录后卡 U-Boot无 SPL检查 defconfig 是否启用BR2_PACKAGE_HOST_UBOOT_TOOLS
libiio 找不到设备/dev/iio:device0不存在内核需启用CONFIG_IIO=y并匹配 device tree
根文件系统仍然可写overlay 未挂载核对 fstab 路径与 kernel cmdlinerootflags=
systemd-analyze > 5 s服务拖慢关闭非必要 service:systemctl disable avahi-daemon

七、实践建议与最佳实践

  1. 分层构建
    先让defconfig能跑,再逐步裁剪,每周发一版,回滚成本低。

  2. 镜像大小控制
    make graph-size生成饼图,一眼看出谁最胖。

  3. 软件包外置
    大体积应用放/opt/app.squashfs,系统升级与业务解耦。

  4. 远程 OTA
    使用 SWUpdate + hawkBit,支持 A/B 双区回滚。

  5. 实时线程绑定
    taskset -c 2,3 你的程序隔离核,减少 cyclictest 抖动。

  6. 电源掉电保护
    启用 ext4 journal + overlay,只读层永不损坏;上层损坏可 fsck 后自动重建。


八、总结:一张脑图带走全部要点

Buildroot 极简实时系统 ├─ 配置:defconfig + menuconfig ├─ 实时:PREEMPT_RT + cyclictest ├─ 工业:libiio + RS485 ├─ 只读:OverlayFS + ext4 └─ 启动:<5 s + OTA

掌握 Buildroot,你就能在国产化瑞芯微芯片上,快速交付“体积小、启动快、不腐败”的工业实时系统。
把本文脚本 push 到你的 GitLab,下次硬件改版,只需改一行 DTS,10 分钟出新镜像,让边缘视觉、工业控制项目真正落地!祝你玩得开心,实时性<50 μs 稳稳达成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 6:34:53

汽车行业如何突围?天淳AI+GEO精准获客新策略

汽车行业如何突围&#xff1f;天淳AIGEO精准获客新策略 引言 汽车行业正面临前所未有的挑战。新能源与传统燃油车用户需求分化&#xff0c;客群涵盖年轻上班族、家庭用户、高端商务人士等&#xff0c;偏好差异显著&#xff0c;精准触达难度大。线上线索转化为到店试驾率低&am…

作者头像 李华
网站建设 2026/4/6 0:16:45

SGMICRO圣邦微 SGM58031XMS10G/TR MSOP10 模数转换芯片ADC

特性 单电源电压范围:3V至5.5V.PC总线电压范围:3V至5.5V 低静态电流: 连续模式:255pA(典型值) 掉电模式:0.8pA(典型值) 可选数据速率:6.25SPS至960SPS 输入多路复用器 4个单端输入或2个差分输入 内部可编程增益放大器(PGA) 内部电压参考与振荡器 可选数字比较器 2C兼容串行接口…

作者头像 李华
网站建设 2026/3/29 15:16:46

多路温度采集(有完整资料)

资料查找方式&#xff1a; 特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可 编号&#xff1a; CP-51-2021-018 设计简介&#xff1a; 本设计是基于单片机的多路温度采集系统&#xff0c;主要实现以下功能&#xff1a; 可通过LCD1602显示温度和状…

作者头像 李华
网站建设 2026/4/12 8:25:37

AI短剧制作小程序源码系统,全智能创作系统源码全览

温馨提示&#xff1a;文末有资源获取方式当AI技术能将短剧制作成本压缩至传统方式的10%以下&#xff0c;当几个人几天内就能无拍摄完成一部剧集&#xff0c;“AI短剧”已从概念走进现实&#xff0c;成为普通人内容创业的黄金赛道。面对广阔前景与激烈竞争&#xff0c;一套功能强…

作者头像 李华
网站建设 2026/4/12 1:09:36

JS防爬虫3板斧

一、核心概念 1.1 JS防爬虫的基本原理 JS防爬虫是指通过JavaScript代码实现的反爬虫措施&#xff0c;其核心思想是&#xff1a; 浏览器执行验证&#xff1a;向客户端返回一段JavaScript代码&#xff0c;只有真实浏览器才能执行动态参数生成&#xff1a;通过JS计算生成动态token…

作者头像 李华