之前在做 RK35 系列方案选型时,最头疼的往往不是芯片本身的能力,而是从核心板选型、交叉编译环境搭建、系统烧录到外设调试这一整套流程太零散,网上资料各说各话,照着做还经常踩版本坑。这篇文章围绕 RK3572 开发板在智能工控场景下的完整落地流程展开,从环境准备、交叉编译、系统部署、Qt 界面开发到工业接口调试逐层拆解,既适合刚接触嵌入式 Linux 的开发者建立整体认知,也适合有经验的工程师直接参考排错。
1. RK3572 与智能工控方案概述
1.1 RK3572 开发板是什么
RK3572 是瑞芯微面向 AIoT、边缘计算和工业控制场景推出的一款高性能应用处理器,以 RK3572 为核心制作的开发板通常采用“核心板 + 底板”的形态。核心板集成 CPU、内存、存储和最小启动电路,底板则引出电源、网口、串口、USB、显示、音频以及各类工业总线接口,方便开发者快速评估芯片性能并研发量产产品。
在智能工控场景中,RK3572 开发板主要承担三类任务:
- 作为边缘计算节点,采集现场传感器数据,完成本地逻辑判断和轻量级 AI 推理。
- 作为人机交互终端,运行 Linux 系统并配合 Qt 等框架实现图形化监控界面。
- 作为协议转换网关,通过 UART、CAN、RS485、Ethernet 等接口连接不同工业设备,完成数据转发和协议解析。
这里需要说明一点:不同厂家基于 RK3572 设计的底板接口和默认系统可能存在差异,本文以通用开发流程为主线,具体引脚定义、设备树配置和烧录工具请以你所使用开发板厂商提供的资料为准。
1.2 智能工控场景需要什么
工业现场与消费电子最大的区别在于对稳定性、实时性和接口多样性的要求。以常见的产线设备监控为例,一台 RK3572 开发板可能需要同时完成:
- 通过 GPIO 读取光电传感器信号,控制继电器通断。
- 通过 RS485 总线轮询多台仪表数据。
- 通过 CAN 总线与 PLC 或伺服驱动器通信。
- 通过 HDMI 或 LVDS 接口连接工业显示屏,实时刷新设备状态。
- 通过以太网上报数据到 MES 或云平台。
这意味着 RK3572 开发板的价值不仅在于 CPU 算力,更在于它能否把 Linux 生态、工业接口和图形界面高效整合在一起。开发者在选型和开发时,需要关注核心板的引脚资源、系统 BSP 的完善程度、以及厂商提供的文档和示例代码是否齐全。
1.3 开发板和单片机的区别
很多刚开始接触 RK3572 的开发者会把它和 STM32、ESP32 这类单片机放在一起比较,实际上它们的定位有明显差异:
| 对比项 | 单片机开发板 | RK3572 开发板 |
|---|---|---|
| 操作系统 | 多为裸机或 RTOS | 可运行完整 Linux |
| 算力 | 较低,适合简单控制 | 较高,适合复杂逻辑和 AI 推理 |
| 内存 | 通常几百 KB 到几 MB | 通常 1GB 以上 |
| 开发方式 | Keil、STM32CubeMX、Arduino | 交叉编译、Linux 驱动、Qt |
| 典型场景 | 传感器采集、电机控制 | 人机交互、边缘计算、协议转换 |
简单概括:单片机负责“单点控制”,RK3572 这类 Linux 开发板负责“系统级处理”。在智能工控项目中,两者经常配合使用,RK3572 作为主控,单片机作为底层执行机构。
2. 开发环境准备与硬件连接
2.1 硬件与软件清单
在开始任何开发之前,先把需要准备的东西列清楚,避免中途发现缺少工具导致流程中断。
硬件部分:
- RK3572 开发板一套,包含核心板和底板。
- 12V 或 5V 直流电源,具体规格以底板丝印或官方手册为准。
- USB 转 TTL 串口模块,用于连接开发板调试串口。
- 网线一根,用于连接开发板和路由器或电脑。
- 16GB 以上 Micro SD 卡或已烧录系统的 eMMC,用于系统启动和固件备份。
- 显示器、HDMI 线或触摸屏,用于 GUI 开发调试。
软件部分:
- 一台安装 Ubuntu 20.04 或 22.04 的电脑,虚拟机也可以。
- 串口终端工具,推荐 minicom 或 picocom。
- SSH 客户端,推荐 MobaXterm 或直接用终端。
- FTP/SFTP 工具,用于传输文件,推荐 FileZilla。
- RK3572 开发板对应的 BSP 包或官方镜像。
2.2 串口连接与调试
开发板调试串口通常是 3.3V TTL 电平,连接时注意不要直接用 RS232 电平,否则可能损坏芯片。以常见的 USB 转 TTL 模块为例,接线方式如下:
| 开发板调试串口 | USB 转 TTL 模块 |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
注意:部分开发板的调试串口还包含 VCC 引脚,一般不需要连接,避免供电冲突。
连接后在 Ubuntu 中先确认串口设备名:
ls /dev/ttyUSB*正常情况下会输出/dev/ttyUSB0之类的设备节点。如果没有输出,可能是驱动未加载,执行dmesg | tail -20查看内核日志。接下来使用 picocom 打开串口:
sudo picocom -b 1500000 /dev/ttyUSB0波特率建议优先使用 1500000,如果输出乱码再尝试 115200。开发板通电后,串口终端应能看到 bootloader 和内核启动日志。如果完全没有输出,优先检查 TX/RX 是否接反、GND 是否共地、波特率是否正确。
2.3 网络连接与 SSH 登录
串口主要用于查看启动日志和紧急调试,日常开发推荐使用 SSH。将开发板通过网线连接到路由器,启动后串口登录系统,执行:
ip addr show eth0查看开发板 IP 地址,然后在电脑终端中登录:
ssh root@192.168.1.100默认密码以官方系统说明为准,拿到系统后第一件事建议修改 root 密码,并创建普通用户用于日常开发。
3. 交叉编译环境搭建与第一个程序
3.1 什么是交叉编译
开发板上的 Linux 系统运行在 ARM 架构上,而普通电脑是 x86 架构,两者指令集不同,因此不能在电脑上直接编译出开发板可运行的程序,需要使用交叉编译工具链。交叉编译就是在 x86 电脑上编译生成 ARM 架构的可执行文件,再通过网络或存储介质拷贝到开发板上运行。
对新手来说,最容易犯的错误是直接在开发板上执行 gcc。虽然开发板可能安装了编译器,但受限于 CPU 和内存,编译大型工程非常慢,而且很多 BSP 并不自带编译器,所以必须建立“电脑上交叉编译,开发板上运行”的工作习惯。
3.2 安装交叉编译工具链
RK3572 开发板的交叉编译工具链一般由芯片厂商或板卡厂商在 BSP 包中提供,拿到工具链压缩包后,解压到固定目录,例如/opt/arm-toolchain:
sudo mkdir -p /opt/arm-toolchain sudo tar -xvf rk3572-toolchain.tar.gz -C /opt/arm-toolchain解压后找到工具链中的bin目录,将路径加入环境变量。为了方便,可以编辑/etc/profile或~/.bashrc:
export PATH=/opt/arm-toolchain/bin:$PATH执行source ~/.bashrc后,验证工具链是否可用:
aarch64-linux-gnu-gcc --version如果输出版本信息,说明工具链安装成功。RK3572 是 64 位 ARM 处理器,工具链前缀通常是aarch64-linux-gnu-,但具体以 BSP 内实际文件名为准。
3.3 编写并编译第一个程序
先在电脑上创建一个简单工程:
mkdir -p ~/rk3572-demo/hello cd ~/rk3572-demo/hello编写hello.c:
// 文件路径:~/rk3572-demo/hello/hello.c #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello RK3572, Smart Industrial Control!\n"); return 0; }使用交叉编译器编译:
aarch64-linux-gnu-gcc hello.c -o hello编译完成后,使用file命令查看可执行文件格式:
file hello输出类似:
hello: ELF 64-bit LSB executable, ARM aarch64...3.4 将程序部署到开发板执行
把编译好的文件拷贝到开发板,常用两种方式。一是通过 scp:
scp hello root@192.168.1.100:/root/二是通过 U 盘拷贝。将程序放到 U 盘,插入开发板后挂载并复制:
mount /dev/sda1 /mnt cp /mnt/hello /root/ chmod +x /root/hello在开发板上执行:
./hello输出Hello RK3572, Smart Industrial Control!,说明交叉编译环境完全打通。这个流程是后续所有 C/C++ 应用开发的基础,建议反复操作几次直到熟练。
4. 系统烧录、启动与网络配置
4.1 固件烧录方法与注意事项
拿到开发板后的第一件事往往是烧录系统。RK 系列开发板常见烧录方式有两种:Windows 下使用 RKDevTool,Linux 下使用 upgrade_tool。无论哪种方式,都需要先将开发板切换到烧录模式,常见做法是按住烧录键(如 RECOVERY 键)再上电,或通过串口/ADB 命令进入 loader 模式。
烧录前务必注意以下几点:
- 确认固件镜像与开发板型号匹配,不同底板、不同屏幕模组可能对应不同 dtb。
- 烧录会清空系统数据,如果开发板上已有需要保留的数据,先备份。
- 尽量使用官方提供的烧录工具和驱动,不要混用其他型号的 loader。
以 Linux 下使用 upgrade_tool 为例,先解压工具并安装驱动:
sudo tar -xvf upgrade_tool.tar.gz -C /opt/ cd /opt/upgrade_tool将开发板切换到 loader 模式后,连接 USB,执行:
sudo ./upgrade_tool LD看到设备列表后,烧录整包镜像:
sudo ./upgrade_tool UF rk3572_industrial_image.img等待烧录完成,重新上电启动。
4.2 启动过程与常见开机异常
开发板通电后,启动流程大致为:BootROM → bootloader → 内核 → 根文件系统 → 用户应用。如果串口有日志,可以按这个顺序定位问题。
常见启动异常包括:
- 完全没有输出:检查电源、串口接线、波特率。
- 停留在 bootloader 阶段:可能烧录的 loader 与芯片不匹配。
- 内核启动时报错并重启:dtb 与硬件不匹配的可能性较大。
- 内核正常但无法进入系统:根文件系统损坏或 bootargs 配置错误。
遇到启动问题,按“先硬件后软件、先日志后猜测”的原则排查,不要急着反复烧录。保存好完整串口日志再去做对比分析。
4.3 网络配置与第二个网口开启
智能工控设备通常需要两个网口:一个连接内部工业网络,一个连接上层管理系统或外网。RK3572 开发板如果底板设计了双网口,默认可能只启用了一个,需要手动开启另一个。
先用 ifconfig 或 ip 命令查看当前网口状态:
ip link show输出中会列出 eth0、eth1 等接口。如果 eth1 没有 IP 地址,配置方法取决于系统使用 ifupdown 还是 NetworkManager。
使用 ifupdown 的系统,编辑/etc/network/interfaces,添加:
auto eth1 iface eth1 inet static address 192.168.2.100 netmask 255.255.255.0保存后重启网络服务:
systemctl restart networking如果使用 NetworkManager,推荐用 nmcli 配置:
nmcli con add con-name industrial ifname eth1 type ethernet ipv4.method manual ipv4.addresses 192.168.2.100/24 nmcli con up industrial配置完成后用ping验证连通性。两个网口分别配置不同网段,可以避免路由冲突。
4.4 开发板挂载 Ubuntu 根文件系统
在嵌入式 Linux 开发中,经常需要让开发板挂载 Ubuntu 根文件系统。这里的“挂载”通常有两种含义:一是把 Ubuntu rootfs 制作成镜像烧录到开发板,二是通过网络 NFS 挂载宿主机上的 Ubuntu 目录,方便调试时直接在电脑上修改文件系统内容。
NFS 方式更适合开发阶段使用。先在宿主机上安装并配置 NFS 服务:
sudo apt install nfs-kernel-server sudo mkdir -p /srv/nfs/rootfs将 Ubuntu rootfs 解压到该目录后,编辑/etc/exports:
/srv/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)重启 NFS 服务:
sudo systemctl restart nfs-kernel-server开发板内核启动参数中指定 NFS 根文件系统:
setenv bootargs "root=/dev/nfs nfsroot=192.168.1.100:/srv/nfs/rootfs,v3 ip=dhcp rw" saveenv这种方式非常适合调试系统初始化脚本和驱动模块,修改宿主机上的文件后开发板下次启动即可生效,不需要频繁烧录。
5. Qt 交叉编译与 GUI 应用部署
5.1 为什么工控场景常用 Qt
工业 HMI 界面需要面对低分辨率屏幕、频繁刷新、多种分辨率和触摸操作,Qt 的跨平台能力、稳定的 QWidget/QML 框架和丰富的工业控件库,使它成为嵌入式 Linux 界面开发的主流选择。配合 RK3572 的 GPU 能力,Qt 可以实现流畅的动画和流畅的触控体验。
在开始 Qt 交叉编译之前,先确认开发板系统里已经包含必要的图形运行库,比如 libEGL、libGLESv2 和 Mali GPU 用户态驱动。如果 BSP 默认系统不包含这些,需要先向板卡厂商确认 GPU 驱动版本。
5.2 搭建 Qt 交叉编译环境
Qt 交叉编译环境的核心是 qmake 工具,它需要一套针对 ARM 架构的配置。具体步骤因 Qt 版本和工具链不同而异,建议从开发板厂商提供的 Qt SDK 包开始,避免从零编译 Qt 源码带来的大量依赖问题。
如果使用通用工具链手动配置,典型的配置流程包括:
- 下载 Qt 源码,选择与目标系统匹配的分支。
- 安装交叉编译所需依赖库。
- 配置
-platform linux-aarch64-gnu-g++等参数。 - 编译并安装到指定目录。
以 qmake 方式构建一个 Qt 工程为例,先编写industrial.pro:
QT += core gui widgets TARGET = industrial_hmi TEMPLATE = app SOURCES += main.cpp mainwindow.cpp HEADERS += mainwindow.h配置环境变量并编译:
export PATH=/opt/arm-toolchain/bin:$PATH export QT_SYSROOT=/opt/rk3572-sysroot /opt/qt5/bin/qmake industrial.pro make -j4编译出的可执行文件是 ARM 架构,需要动态库配合才能运行。使用ldd查看依赖:
aarch64-linux-gnu-readelf -d industrial_hmi | grep NEEDED将 Qt 运行库和可执行文件一起传送到开发板,放到相同路径结构下,避免动态库找不到。
5.3 在开发板上运行 Qt 程序
在开发板上运行 Qt 程序前,需要设置显示后端。RK3572 通常使用 LinuxFB 或 EGLFS 后端。如果开发板连接了 HDMI 显示器,运行前设置:
export QT_QPA_PLATFORM=eglfs ./industrial_hmi如果使用触摸屏,还需要设置触摸设备节点和环境变量:
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event2 export QT_QPA_PLATFORM=eglfs ./industrial_hmi如果程序启动后黑屏,优先检查显示设备节点是否正常、GPU 驱动是否加载、以及程序是否缺少动态库。
5.4 触摸屏与屏幕方向适配
工控设备屏幕方向根据安装方式可能为横屏或竖屏,可以在 Qt 中通过设置环境变量或代码方式适配:
export QT_QPA_EGLFS_ROTATION=90或在代码中使用 QScreen 的setOrientationUpdateMask处理。不同底板可能使用不同触摸芯片,需要确认内核设备树中触摸节点的 GPIO 中断和 I2C 地址是否正确配置。
6. 智能工控外设与通信接口开发
6.1 GPIO 控制
GPIO 是工控开发最基础的需求。RK3572 开发板通常通过 sysfs 或 libgpiod 操作 GPIO。
使用 libgpiod 工具查询可用引脚:
gpiodetect gpioinfo gpiochip0使用命令行控制输出:
gpioset gpiochip0 12=1 gpioget gpiochip0 13在 C 语言中使用 libgpiod 读取输入状态:
#include <gpiod.h> #include <stdio.h> int main(void) { struct gpiod_chip *chip; struct gpiod_line *line; int value; chip = gpiod_chip_open_by_name("gpiochip0"); if (!chip) { perror("open chip failed"); return -1; } line = gpiod_chip_get_line(chip, 13); gpiod_line_request_input(line, "industrial-demo"); value = gpiod_line_get_value(line); printf("GPIO13 value = %d\n", value); gpiod_chip_close(chip); return 0; }编写驱动时务必确认 GPIO 编号对应的是芯片内部 GPIO bank 编号还是底板丝印编号,两者往往不同,查阅原理图是避免接错引脚的关键。
6.2 UART 串口与 RS485 通信
RK3572 开发板一般引出多路 UART,对应/dev/ttyS0、/dev/ttyS1等设备节点。RS485 通常是在 UART 基础上通过方向控制引脚实现半双工通信。
在 Linux 下使用串口,最直接的方式是配置 stty:
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb raw读取串口数据:
cat /dev/ttyS1发送数据:
echo "AT\r" > /dev/ttyS1实际工控项目中更多使用 C 语言编程,核心步骤包括打开串口、配置 termios、循环读写。需要注意 RS485 模式下收发切换的延时,通常需要在发送完成后等待一个字符时间再切换为接收方向。
6.3 CAN 总线通信
RK3572 开发板如果引出 CAN 接口,Linux 系统通常使用 SocketCAN 协议栈。先确认 CAN 设备是否存在:
ip link show can0配置 CAN 波特率和启用接口:
ip link set can0 type can bitrate 500000 ip link set can0 up使用 candump 监听总线数据:
candump can0发送一帧数据:
cansend can0 123#DEADBEEFCAN 通信调试时优先检查总线两端是否都有 120 欧姆终端电阻,以及波特率是否一致。RK3572 的 CAN 控制器设备树配置需要正确指定引脚复用,否则可能出现设备节点注册成功但无法通信的问题。
6.4 数据采集与上报
智能工控方案的核心是数据采集和上报。以采集串口数据并通过 MQTT 上报为例,整体流程为:串口读取传感器数据 → 本地解析和缓存 → MQTT 客户端连接 broker → 发布数据到主题。
MQTT 客户端可以使用 Eclipse Paho MQTT C 库,交叉编译时需要连同依赖库一起编译。以下代码展示核心发布逻辑:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "MQTTClient.h" int main(int argc, char *argv[]) { MQTTClient client; MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; MQTTClient_message pubmsg = MQTTClient_message_initializer; MQTTClient_deliveryToken token; int rc; MQTTClient_create(&client, "tcp://192.168.1.50:1883", "rk3572_gateway", MQTTCLIENT_PERSISTENCE_NONE, NULL); conn_opts.keepAliveInterval = 20; conn_opts.cleansession = 1; if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) { printf("Failed to connect, return code %d\n", rc); return -1; } pubmsg.payload = "temperature=25.6"; pubmsg.payloadlen = strlen(pubmsg.payload); pubmsg.qos = 1; pubmsg.retained = 0; MQTTClient_publishMessage(client, "factory/device001/temperature", &pubmsg, &token); MQTTClient_waitForCompletion(client, token, 1000); MQTTClient_disconnect(client, 1000); MQTTClient_destroy(&client); return 0; }实际项目中还应该加入断线重连、数据缓存、时间戳和异常上报机制,不能只追求“能发出去”。
7. 常见问题与排查思路
7.1 高频问题对照表
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 串口无输出 | TX/RX 接反、GND 未接、波特率错误 | 重新检查接线,降低波特率测试 |
| 烧录失败 | 驱动未安装、未进入 loader 模式 | 重装驱动,确认烧录模式 |
| 系统启动反复重启 | dtb 与硬件不匹配 | 更换正确 dtb,对比官方配置 |
| SSH 无法连接 | 网络未配置、防火墙阻断 | 用串口查看 IP,检查网段 |
| Qt 程序运行报缺少动态库 | 依赖库未拷贝 | 用 readelf 查看依赖并补齐 |
| GPIO 无响应 | 引脚复用冲突、编号错误 | 查看设备树,确认引脚复用 |
| CAN 无法通信 | 波特率不一致、终端电阻缺失 | 检查总线配置,确认硬件接线 |
7.2 排查问题的一般流程
嵌入式开发问题有一个通用的排查顺序,按这个顺序来可以少走很多弯路:
- 确认硬件连接:电源电压、地线、信号线是否正常。
- 查看系统日志:
dmesg、journalctl -xe和串口日志。 - 确认软件环境:开发板系统版本、内核版本、依赖库版本。
- 最小化复现:只保留问题相关的最小代码或配置,排除干扰因素。
- 对比官方示例:多数问题都能在官方 BSP 的示例中找到答案。
- 单步验证:先测硬件,再测驱动,最后测应用。
7.3 交叉编译常见错误
开发板相关的高频搜索中,“Qt 如何交叉编译生成能在开发板运行的文件”是经典问题。常见错误集中在几个方面:
- 使用了宿主机 gcc 而非交叉编译工具链,编译出的文件在开发板提示
Exec format error。 - 交叉编译时链接了宿主机上的库,导致运行时找不到兼容的动态库。
- 头文件路径指定错误,出现找不到系统头文件的报错。
- qt 版本与开发板系统 GLIBC 版本不兼容。
遇到这类问题,第一反应应该是查看编译命令中-I和-L参数指向的路径,确保都指向交叉编译工具链和 sysroot 目录,而不是/usr/include和/usr/lib。
8. 智能工控项目中的工程化建议
8.1 系统分区与备份策略
工控设备长期运行,系统分区设计直接影响可靠性和维护成本。建议将系统分为 bootloader、内核、根文件系统、用户数据区四个部分。bootloader 和内核一般只读或极少更新,根文件系统可以做成只读模式,用户数据区独立挂载到可写分区,避免日志和配置写入导致根文件系统损坏。
量产前必须做完整的系统备份。常用的备份方式是把开发板 eMMC 内容通过 dd 导出为镜像文件后保存到服务器。实验阶段也可以直接用 SD 卡启动系统,SD 卡镜像即为完整备份,出问题随时可以换卡恢复。
8.2 日志与看门狗
工业设备对异常自恢复能力要求很高。应用层要规范日志输出,建议按“模块 + 时间 + 级别 + 内容”的格式记录,默认只输出 INFO 和 ERROR 级别,DEBUG 级别通过配置文件动态开启。日志文件应带大小限制和轮转机制,避免长时间运行撑满磁盘。
看门狗是工控设备防止死机的重要机制。Linux 下可以使用硬件看门狗设备节点:
echo 1 > /dev/watchdog应用层定期喂狗,如果应用卡死或系统异常,看门狗触发硬件复位,设备自动恢复。看门狗只在调试阶段关闭,量产设备必须开启。
8.3 配置管理与远程升级
工控设备的 IP 地址、串口参数、设备编号等配置不应硬编码在代码里,建议统一放在/etc/industrial/config.ini或类似位置,应用启动时读取。配置修改要支持原子写入,先写临时文件再重命名,防止写入过程中断电导致配置损坏。
远程升级是工控项目绕不开的环节,OTA 升级前要校验固件完整性和版本号,升级过程中断电需要能回滚到上一个版本。建议升级流程为:下载固件到备用分区 → 校验校验和 → 切换启动标志 → 重启验证 → 失败自动回滚。
8.4 安全与权限管理
嵌入式 Linux 设备常被忽视的是安全性。实际生产环境中应做到:
- 禁止 root 远程登录,使用普通用户通过 SSH 登录,需要管理员权限时使用 sudo。
- 修改默认密码,禁止空密码账号。
- 关闭不需要的网络服务,尤其是 telnet、ftp 这类明文传输协议。
- 对外网开放的服务尽量使用 TLS 加密,使用 MQTT 时优先选用 TLS 端口。
- 定期更新系统安全补丁,关注芯片厂商和 BSP 发布的安全公告。
8.5 生产环境变更流程
最后强调一点,也是工控项目中最容易被忽视的:生产环境变更必须遵循最小权限原则和可回滚原则。无论是修改设备树、更新内核还是调整应用配置,都应该先在测试环境验证,再通过受控的升级流程下发到生产设备。禁止直接在产线设备上随意修改系统文件或执行未经验证的命令。所有变更都应有变更记录,包括变更时间、操作人、影响范围、回滚方案。
RK3572 开发板从评估到量产,跨过交叉编译、系统烧录、外设调试和界面开发这几道坎之后,剩下的更多是工程化打磨的工作。建议按“最小系统跑通 → 单个外设逐个调试 → 核心业务逻辑实现 → 可靠性加固”的顺序推进,每一步都做好记录和备份,后面遇到问题时会轻松很多。如果你正在做 RK3572 相关的工控项目,欢迎在评论区交流实际踩过的坑。