RK3506 ARM-A7 32 位 Buildroot 系统编译配置教程(合众恒跃 HZ-RK3506-MiniEVM SDK 版)

摘要:本文详细介绍了基于合众恒跃原厂 HZ-EVM-RK3506_MINI_SDK_v1.1.0 为 RK3506 Cortex-A7 32 位 ARM 平台定制 Buildroot 根文件系统的完整流程。内容涵盖编译主机环境搭建、SDK 导入与配置、Buildroot 系统裁剪(包括目标架构选择、系统组件裁剪、业务依赖预装)、业务文件 overlay 打包、三种编译方式(整体/单独/清理)、固件烧录与板端验证,并总结了针对 32 位 A7 工控网关的专属踩坑点。本方案专为工业 PLC 采集网关场景设计,实现系统极致轻量化与业务程序一键预装,满足工控产品量产交付需求。

一、前言

本文基于合众恒跃原厂 HZ-EVM-RK3506_MINI_SDK_v1.1.0 完整 SDK,针对RK3506 Cortex-A7 32 位 armhf 架构,完整讲解 Buildroot 根文件系统编译、定制、固件打包全流程。本方案面向自研工业 PLC 采集网关场景,系统极致裁剪,预装 Python3、snap7、MQTT 相关依赖,适配 S7-200-Smart 数据采集 + 自研物联网平台上云业务。 开发板:合众恒跃 HZ-RK3506-MiniEVM(3×A7 32 位 + M0 实时核、双百兆以太网、Linux5.10 内核) SDK 版本:HZ-EVM-RK3506_MINI_SDK_v1.1.0 根文件系统:Buildroot(放弃 Yocto/Debian,轻量化、编译速度快、适合工控量产)

二、编译主机环境搭建

2.1 软硬件要求

  1. 宿主机系统:Ubuntu 22.04 x86_64(64 位,推荐,Ubuntu18.04 可兼容但需微调依赖)
  2. 硬件:硬盘空闲≥40G,CPU 多核(i5-12400 及以上编译效率更佳)
  3. 网络:全程联网,SDK 编译需在线拉取第三方源码包

2.2 一键安装全部编译依赖

复制整条命令执行,补齐 SDK 编译、设备树、Buildroot、交叉编译全套工具:

bash

运行

sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev libmpc-dev bc python-is-python3 python2

安装提示already the newest version直接忽略;若编译时报缺失库,根据报错补充对应包。

三、SDK 导入与目录结构说明

3.1 SDK 上传与解压

  1. 通过 SFTP 将 HZ-EVM-RK3506_MINI_SDK_v1.1.0.tar.gz 上传至 Ubuntu /home/HZHY 工作目录;
  2. 进入目录解压 SDK 压缩包:

bash

运行

cd /home/HZHY
tar -zxvf HZ-EVM-RK3506_MINI_SDK_v1.1.0.tar.gz
cd HZ-EVM-RK3506_MINI_SDK_v1.1.0

解压完成生成完整 SDK 工程目录,核心文件夹说明:

表格

目录功能说明
buildrootBuildroot 根文件系统源码,本次教程核心
kernelLinux5.10 内核源码、RK3506 设备树 dts
u-bootv2017.09 版本引导程序
device/rockchip板级配置、编译打包脚本
prebuilts官方预编译 armhf 交叉工具链,无需手动编译
rkbin瑞芯微固件二进制、ddr/loader 固件
rockdev固件软链接目录,映射 output/firmware
output编译输出:镜像、中间文件、固件包
toolsWindows/Linux 烧写、调试工具
app官方 Demo,可存放自研 PLC 采集 Python 程序
external第三方库:网络、安全、音视频驱动

四、SDK 全局配置(选择 Buildroot 根文件系统)

4.1 打开全局配置界面

在 SDK 根目录执行全局配置命令:

bash

运行

make menuconfig

界面提供全平台组件选择,核心配置项说明:

  1. Rootfs:必须选择 Buildroot(不要选 Yocto/Debian);
  2. Loader(u-boot):默认原厂配套 u-boot,无需修改;
  3. Kernel:使用 RK3506 原厂 Linux5.10 defconfig;
  4. AMP:32 位 A7 工控网关可按需开启多核异构,普通采集业务关闭;
  5. Boot/Firmware/Update:保持默认,用于完整 update.img 打包;
  6. Extra partitions:可自定义分区,存放业务配置文件、本地缓存。

操作快捷键:

  • Y:选中启用;N:取消;/:搜索配置项;
  • 配置完成选择Save保存,两次ESC退出配置界面;
  • 持久化保存配置:make savedefconfig,防止配置丢失。

4.2 内核单独配置(开启以太网、TCP/IP、网络工具)

如需自定义内核网络、外设驱动,执行内核配置命令:

bash

运行

./build.sh kernel-config

工控网关必开内核选项:

  • 完整 TCP/IP 协议栈、百兆以太网驱动;
  • tmpfs 内存文件系统;
  • 关闭声卡、MIPI 显示、摄像头等无关外设;
  • 放行 102 端口(S7-200-Smart PLC 通信端口)。

五、Buildroot 内部定制配置(32 位 ARM-A7 关键设置)

5.1 进入 Buildroot 配置界面

两种方式:

  1. 全局编译时自动调用;
  2. 单独进入 buildroot 目录配置:

bash

运行

cd buildroot
make menuconfig

5.2 Target Options 目标架构(重中之重,避免 64 位段错误)

RK3506 为纯 32 位 Cortex-A7,禁止选择 AArch64

  1. Target Architecture:ARM
  2. Target Architecture Variant:armv7-a
  3. Floating point strategy:Hardware (NEON) 硬件浮点
  4. ARM EABI version:EABIhf
  5. Target CPU:cortex-a7
  6. C 库推荐:musl(体积小、内存占用低,适配低内存工控网关)

5.3 System 系统裁剪(工控极简方案)

  1. Hostname:rk3506-gateway
  2. Init system:BusyBox init(舍弃 systemd,节省内存)
  3. /dev 管理:devtmpfs + mdev
  4. 开启 dropbear 轻量 SSH,用于远程调试网关;
  5. 关闭 X11/Wayland 图形桌面、蓝牙、音频等无用组件。

5.4 Target packages 预装业务依赖(PLC 采集网关必备)

  1. Python3 环境
    • 开启 python3、python3-threading、python3-json、python3-struct;
    • 关闭 Python 多余编译模块,缩减固件体积;
    • 仅编译主机保留 pip,开发板运行环境删除 pip(无编译器,禁止板端 pip 安装)。
  2. 网络与加密
    • openssl、ca-certificates(MQTT TLS 加密上云必备);
    • iproute2、ping、telnet 网络调试工具。
  3. 第三方底层库 snap7 将 snap7 源码添加为 Buildroot 本地 package,交叉编译输出 armhf 架构libsnap7.so,自动部署至/usr/lib

5.5 业务文件 overlay 打包(一键预装采集程序)

buildroot目录新建overlay文件夹,所有文件编译时自动合并到 rootfs:

plaintext

buildroot/overlay/
├── usr/bin/main.py        # PLC采集+MQTT上报主程序
├── etc/config/.env        # 自研云平台MQTT密钥
├── etc/config/config.json # PLC全局配置
├── etc/config/points.json # PLC点位映射表
└── etc/init.d/S99gateway  # 网关开机自启脚本

开机自启脚本S99gateway示例:

bash

运行

#!/bin/sh
case "$1" in
start)
    echo "Start RK3506 Industrial Gateway Service"
    python3 /usr/bin/main.py &
    ;;
stop)
    killall -9 python3
    ;;
restart)
    $0 stop
    $0 start
    ;;
esac

添加可执行权限:

bash

运行

chmod 755 overlay/etc/init.d/S99gateway

六、SDK 三种编译方式(整体编译 / 单独编译 / 清理)

6.1 一键整体编译(推荐,自动打包完整 update.img)

SDK 根目录直接执行,自动编译 u-boot、kernel、buildroot 根文件系统、打包固件:

bash

运行

./build.sh

编译耗时参考:i5-12400 6 核 12 线程完整编译约 2 小时;首次编译会在线下载源码包,保证网络稳定。 编译完成固件输出路径:output/firmware/update.img(整机烧录完整镜像)。

6.2 单独分项编译

  1. 仅编译 U-Boot

bash

运行

./build.sh uboot

输出镜像:u-boot/uboot.img 2. 仅编译 Kernel 内核

bash

运行

./build.sh kernel

输出镜像:kernel/boot.img 3. 仅编译 Buildroot 根文件系统

bash

运行

./build.sh rootfs

输出 rootfs 镜像:output/buildroot/images/rootfs.ext4

6.3 清理编译缓存(慎用,全部重编译耗时久)

bash

运行

./build.sh cleanall

该命令删除所有中间文件、固件镜像,非必要不要执行;仅修改架构、工具链时清理。

七、固件烧录与板端环境验证

  1. 烧写工具:SDK tools/windows 目录提供瑞芯微烧写工具,将update.img完整烧入 RK3506 开发板;
  2. 上电 SSH 登录网关,验证 32 位环境与依赖库:

bash

运行

# 校验Python+snap7库
python3 -c "import snap7;print(snap7.__version__)"
# 网口连通PLC测试
ping 192.168.2.1
# 查看网关自启进程
ps aux | grep python3
  1. 运行采集程序,验证 S7-200-Smart 数据读取、MQTT 上报自研物联网平台功能。

八、RK3506 32 位 A7 平台专属踩坑总结

  1. 架构选错直接段错误 SDK 全局配置 + Buildroot 双处必须选择 ARM32 armv7-a,误选 AArch64 会生成 64 位库,Python、libsnap7 运行闪退 segment fault。
  2. 开发板无法在线 pip 安装第三方库 Buildroot 固件无 gcc、cmake 编译工具链,所有底层库(snap7、paho-mqtt)必须在 Ubuntu 宿主机交叉编译,提前放入 overlay 打包进固件。
  3. musl libc 编译兼容问题 若使用 musl 轻量 C 库,编译 snap7 需添加适配 patch,否则出现链接未定义符号报错。
  4. ARM32 内存资源限制 Buildroot 裁剪 Python 无用组件,业务代码 MQTT 消息队列设置最大缓存上限,长时间断网避免内存溢出。
  5. SDK 完整编译耗时巨大 调试阶段优先使用./build.sh rootfs单独编译根文件系统,无需每次全量编译 u-boot、kernel,大幅节省调试时间。

九、总结

本文基于合众恒跃原厂 RK3506 完整 SDK,完整覆盖环境搭建、SDK 全局配置、Buildroot 32 位系统裁剪、业务程序预装、固件编译烧录全流程。整套系统面向工业 PLC 采集网关定制,轻量化、无冗余组件,完全满足工控产品量产交付标准;上层 Python 业务代码与硬件架构解耦,后续更换其他 ARM32 工控硬件仅替换内核与设备树配置即可复用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值