
最近一直在调 RK3576 平台的东西从拿到开发板到跑通第一版应用中间走了一条很典型的嵌入式开发路线。说实话RK3576 这颗平台的性能在 AIoT 里算是相当能打的了8 核 CPU 加 NPU跑 Linux 桌面、跑视觉推理、跑边缘网关都扛得住。但真正决定项目进度的往往不是芯片算力而是开发链路是否顺畅。我见过太多新手拿到板子之后第一件事就是找 HDMI 线、找显示器想把它当成一台普通电脑来用。这个思路不是不行只是效率太低了。尤其当你手上只有一块裸板、没有屏幕没有键盘鼠标的时候串口才是那个能把你从“开不了机”里救出来的通道。这篇指南想分享的就是我从串口盲操到 VS Code 远程开发丝滑工作流这条完整路线。内容覆盖硬件接线、终端会话建立、U-Boot 和内核的启动日志分析、网络打通、SSH 配置、VS Code Remote-SSH 搭建以及大量踩坑记录。不管你是刚拿到 RK3576 开发板的新手还是已经写了不少代码但一直用不惯命令行环境的同学沿着这条路线走完至少能省掉一周的摸索时间。1. 为什么 RK3576 开发要从串口开始1.1 串口盲操到底在操什么很多人第一次听说“串口盲操”这四个字脑子里浮现的画面是一块黑乎乎的板子和一根线工程师像按摩斯密码一样噼里啪啦敲键盘。虽然画面有点夸张但方向是对的。所谓盲操就是在没有任何显示设备的情况下仅通过板子上的调试串口和电脑上的终端工具完成从系统启动到应用部署的全过程。RK3576 这类平台和单片机开发有一个很大的区别它跑的是完整 Linux 系统启动链路很长涉及 BootROM、DDR 初始化、U-Boot、Kernel、rootfs 逐级接力。每一级都有可能出问题而串口恰恰是把这条链路上每一级的日志都吐出来的唯一通道。就算你手上有 HDMI 屏幕屏幕驱动没起来之前你也看不到任何画面。但串口不一样只要芯片上电、时钟正常BootROM 的第一行日志就会从串口冒出来这相当于给你一双能穿透黑盒子的眼睛。串口盲操的核心价值有三点。第一它是系统能不能启动的唯一客观依据屏幕黑不黑不重要串口日志有没有滚动才是关键。第二它是 bootloader 阶段唯一的交互入口改启动参数、选启动设备、刷分区、救砖全得靠它。第三它是后续一切远程开发的前提你要把 SSH、网络、文件服务配起来第一步必须通过串口进入系统去操作。所以不管你是玩核心板还是整板串口永远是第一条命。1.2 这套流程适合谁能解决什么问题如果说你是那种拿到开发板就准备直接开干的应用层工程师这条路线能帮你把“环境搭建”这个步骤压缩到半小时以内。串口通了你就能看到系统到底有没有正常启动网络通了你就能把代码弄上去跑起来。这两件事的顺畅程度直接决定了后面写代码、调 bug 的体验。如果你是要做定制化系统移植的底层工程师串口盲操更是基本功。你改完设备树、调完内核 config、动过 U-Boot 之后总得找一个最能反映真实状态的手段。图形界面是经过层层封装的结果串口日志才是原汁原味的现场。这套流程解决的问题非常具体拿到一块没有任何资料的裸板怎么确定串口参数怎么进入 U-Boot怎么把网络搞通怎么让 VS Code 像开发本地项目一样开发板卡项目这几件事理清楚之后RK3576 这辆车的油门才算真正踩到了你脚下。2. 串口会话建立从硬件接线到终端跑通2.1 串口硬件准备与接线先把手头的东西列出来。RK3576 开发板一块USB 转 TTL 串口模块一个杜邦线至少三根外加一个能给板子供电的电源适配器。串口模块我实际用过 CH340、CP2102、FT232 这几个主流方案稳定性差异不大新手优先选 CP2102 或者 CH340驱动支持最省心价格也便宜。FT232 在抗干扰上略好一点适合长期调试但贵不少没必要一上来就买。接线是整个串口环节里翻车率最高的地方没有之一。大部分 RK3576 载板会在板边引出 3 到 4 个针脚的调试串口座通常印有 TX、RX、GND有的还会多一个 VCC。接线的规则只有一条串口模块的 TX 接板子的 RX串口模块的 RX 接板子的 TXGND 接 GND。很多人一上来就犯迷糊觉得 TX 对 TX、RX 对 RX 才是顺的结果怎么接都没输出。记住串口是交叉线一方的发送要接到另一方的接收这和打电话是一个道理你说出去的话得对方用耳朵接。GND 这条线千万别省。串口通信的电压参考必须共地不接 GND信号电平就没有参照出来的全是一堆乱码甚至完全没反应。我调试的时候习惯把三根线按颜色固定下来黑线做 GND、红线做 TX、绿线做 RX形成一个固定习惯之后每次接线又快又不容易出错。2.2 接线里的电气细节RK3576 这颗片子的调试串口电平一般是 3.3V但不同的载板设计可能不一样有的核心板转接出来是 1.8V 的电平。如果你的串口模块是 5V 的 TTL 电平直接怼上去轻则通信失败重则烧坏芯片的调试串口引脚。所以在接线之前先确认板卡的原理图或者丝印标注如果写着 3.3V 或 VCC_3V3就用 3.3V 电平的模块如果不确定宁可先用万用表量一下对应引脚的电压也别贸然上电。还有一个细节容易被人忽略调试串口最好不要用那种特别长的杜邦线飞线。串口虽然不算高速但导线拉长之后干扰和压降都会上来尤其是板子在跑高负载时电源纹波一大串口就容易出现丢字节和乱码。我自己的经验是总长控制在 20 厘米以内如果板子和电脑离得远宁可把电脑挪过来也不要拿一米长的杜邦线硬接。另外串口模块建议插在电脑的 USB 口上直接连接转接 Hub 虽然能用但如果是那种质量很差的 Hub可能出现枚举不稳定导致的断连排查起来非常烦。2.3 终端工具选择与会话参数配置硬件接好之后接下来要在电脑上开一个串口终端。Windows 下我用得最多的是 MobaXterm它的串口会话界面干净支持日志自动保存还能配色比 PuTTY 顺手不少。新建会话时选 Serial端口号选设备管理器里看到的 COM 口波特率先按板卡文档填一般 RK3576 系列的调试串口可能是 115200也可能是 1500000这个后面单独说。数据位 8、停止位 1、无校验、无流控这就是大家常说的 8N1嵌入式平台的标准配置直接照填就行。Linux 下我更推荐 picocom轻量、参数少、退出快捷键直观。命令行一行就能开picocom -b 115200 /dev/ttyUSB0如果提示权限不足说明当前用户不在 dialout 组里执行sudo usermod -a -G dialout $USER重新登录用户后即可。退出 picocom 的快捷键是 CtrlA 再按 CtrlX记不住的话看它启动时的帮助提示就行。minicom 是另一个老牌工具功能全但菜单模式交互繁琐新手没必要一上来就和它的配置界面较劲。2.4 串口波特率怎么判断和切换这是 RK3576 上电后遇到的第一个经典问题终端开了屏幕却不出字或者出一堆乱码。原因就两句话接线不对或者波特率不对。如果确认接线没问题那唯一的嫌疑就是波特率。RK3576 平台的调试串口波特率在不同 SDK、不同载板上并不统一。我见过默认 115200 的镜像也见过把 console 波特率改成 1500000 的板子。怎么判断很简单先用 1500000 接一下再切回 115200 接一下。波特率错的时候输出全是乱码或者干脆没反应对了就是满屏整齐的启动日志。这个试错过程不会对板子造成任何损伤放心试。如果你已经能看到 U-Boot 日志想修改内核的 console 波特率可以改设备树里chosen节点的stdout-path例如改成chosen { stdout-path serial2:1500000n8; };U-Boot 侧的环境变量baudrate也要保持一致在 U-Boot 命令行里用setenv baudrate 1500000修改后saveenv保存。两边同步改重启之后才能稳定工作。有一个小经验如果你只是临时调试别急着改波特率先沿用板子出厂默认值减少变量干扰。等系统能正常启动了再考虑要不要统一成 115200。3. 串口下的完整开箱流程3.1 第一次上电看懂 RK3576 的启动日志接线正确、终端参数正确之后给板子上电你会看到日志像流水一样滚出来。第一次看到这些日志别急着晕试着按启动阶段分块阅读。第一块是 BootROM 阶段会输出芯片型号、启动设备选择之类的早期信息。紧跟着是 DDR 初始化能看到内存容量识别和频率参数。然后 U-Boot 接手打印编译时间、版本号、revision接着是一大段板级外设初始化信息比如 MMC、网络、显示相关。最后才是 Linux 内核的启动横幅有 CPU 型号、设备树信息、内存布局再到根文件系统挂载。这些日志里最值得养成习惯去看的是等级。Kernel 日志从[ 0.000000]开始打时间戳你扫一眼时间戳能大概判断系统在哪里耗时最长。比如从 0 秒到 0.3 秒就完成 DDR 初始化然后 U-Boot 里停留了 2 秒内核到 rootfs 挂载又花了 3 秒这些信息对后续做启动优化非常有用。串口盲操的第一层修炼就是练出这种“扫一眼日志就能定位问题阶段”的本能。3.2 U-Boot 命令行的常用操作日志滚完之后U-Boot 会给你一个短暂的交互窗口。多数官方镜像默认不等待输入直接引导启动你需要在板子上电后的 1 到 2 秒内连续按几次空格键或者任意键才能中断自动启动流程进入 U-Boot 命令行提示符一般长这样Hit any key to stop autoboot: 0进入命令行后常用的命令就几条。help可以列全帮助printenv看当前所有环境变量setenv改环境变量saveenv保存boot手动启动内核。如果你要临时指定从某个设备启动比如从网络拿内核可以设置setenv ipaddr 192.168.1.100 setenv serverip 192.168.1.10 setenv bootcmd dhcp; bootm saveenv这条思路在很多调试场景里极其有用。比如你要频繁修改内核和设备树不用每次都烧写进存储介质直接通过 TFTP 从电脑加载镜像重启即拉新版本调试效率直接翻倍。我第一次配置 TFTP 启动时踩过一个坑只改了 serverip没注意板子和电脑是否在同一网段结果一直超时。后来养成习惯每次 DHCP 失败先看一眼ping是否通再查网关和网段。还有一个操作务必做进入 U-Boot 后先printenv把输出完整存一份到电脑上。这一步看似多余实际上是在给自己上保险。后面你改了环境变量把板子弄到起不来至少有一份出厂参考可以恢复。我见过把 bootargs 改错导致系统反复重启的板子最后就是靠这份备份救回来的。3.3 进入 Linux 后的基础巡检U-Boot 引导完Linux 内核起来串口会弹出登录提示。RK3576 官方 SDK 的镜像一般默认 root 用户要么无密码要么有一个初始密码具体看 SDK 文档。登录之后第一轮巡检建议固定执行这几条命令cat /proc/cpuinfo free -h df -h dmesg | grep -i error/proc/cpuinfo确认 CPU 核心数量和型号是否正确free -h看内存识别有没有异常df -h看根文件系统容量和挂载情况dmesg里过滤 error排查有没有驱动加载失败。这一步做得越早后面开发过程中被隐藏问题背刺的概率就越低。巡检过程中如果发现某个外设驱动的 error 日志反复出现别急着换硬件先在板级设备树上确认对应节点有没有使能、复用引脚有没有和其他设备冲突。RK3576 的引脚复用非常密集一个 GPIO 可能同时被调试串口、PWM、I2C 三个功能占用设备树里稍微配置错位驱动就会报错或者完全不工作。这些记录在 dmesg 里的蛛丝马迹串口日志都能给你端上来。4. 打通网络从串口过渡到 SSH4.1 网络配置的两种方案串口终究是低带宽、单板的操作通道写代码、传文件、跑编译都太受限。所以用好串口后第二步就是把它丢掉或者说把它降级成应急备用通道。要接入 VS Code 远程开发首先得让板子和你的电脑在同一个网络里互通。RK3576 载板一般都会带千兆以太网口这是最靠谱的方案。一根网线把板子插到路由器上然后回到串口终端里查 IPip addr show eth0如果处于 DHCP 网络过一会儿就能看到分配到的地址。如果你们是直连电脑的静态网络就得手动配置。用 NetworkManager 的话一行命令就能搞定nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual nmcli con up eth0第二套方案是 USB 网络共享也就是把板子和电脑用 USB 线连起来通过 USB RNDIS 或者 ADB 网络功能互通。这套方案适合手边没有路由器的场景但配置繁琐一些速度也受限。我在现场调试的时候会用它做临时备胎正式开发还是优先走有线网络稳定性和带宽都更好。无论用哪种方案配置完第一件事是互 ping。在电脑上ping 板子IP在板子上ping 电脑IP两边都通再进行下一步。网络不通就继续 SSH那是给自己找麻烦。4.2 启用 SSH 服务RK3576 的官方 Linux SDK 一般在文件系统里预装了 dropbear 或 openssh但未必默认启动。登录之后先检查ps aux | grep ssh没有输出的话直接启动服务。如果是 dropbearservice dropbear start如果是 opensshservice ssh start或者干脆systemctl start sshd顺手设置开机自启不然每次重启板子都要回到串口手动开服务这个体验非常割裂systemctl enable sshd这里有个细节值得提部分裁剪过的 rootfs 是极简系统可能没有 systemd那就用update-rc.d来管理开机项。确定服务能用后先在板子本地用ssh localhost测一下能登录再换电脑端连接。先本地验证这是排查问题的好习惯能让你把“服务本身问题”和“网络问题”干净利落地切开。4.3 固定 IP 与 SSH 免密登录开发环境里最怕 IP 漂移。板子今天 DHCP 拿到 192.168.1.105明天变成 192.168.1.107VS Code 的远程配置就要跟着改烦死人。所以建议把板子设为固定 IP。如果你不想动 NetworkManager 配置也可以在路由器管理页面给你的板子做 DHCP MAC 绑定效果一样还能避免板载配置错误导致无法上网。接下来配置免密登录。电脑端生成密钥ssh-keygen -t ed25519然后把公钥拷到板子上ssh-copy-id root192.168.1.100如果你所在的环境里ssh-copy-id不可用也可以手动把~/.ssh/id_ed25519.pub的内容追加到板子/root/.ssh/authorized_keys文件里注意权限要 600。配置成功后ssh root192.168.1.100直达不再要密码。这样 VS Code 连接时就不会因为交互式输密码被卡住远程工作流才走得通。安全提醒也插一句开启 SSH 后如果板子暴露在不可信网络里赶紧改掉默认密码或者直接禁止密码登录、仅保留密钥登录。嵌入式设备被人扫到弱口令是家常便饭这个坑我不希望你再踩一次。5. VS Code Remote-SSH 丝滑开发环境搭建5.1 为什么是 Remote-SSH 而不是 Samba 挂载板子的网络通了、SSH 能登了接下来的问题是怎么写代码。这步的决策直接影响未来几个月的开发体验。常见方案有三种在板子上直接装 Vim 写代码、用 Samba 把板子目录挂载到本地再编辑、用 VS Code Remote-SSH。第一种对纯底层调试够用但涉及工程级多文件开发时Vim 的补全和重构能力明显不够用。第二种看起来很美本地编辑挂载盘但实际用起来每次保存都有网络写盘延时而且 IntelliSense 索引的是本地文件列表和板子上的文件系统一旦不同步就会出现改了的代码不生效这种玄学问题。第三种 Remote-SSH 的本质是VS Code 客户端在你的电脑上真正的语言服务、终端、编译进程全部跑在板子上。你编辑的就是板子上的真实文件终端就是板子上的 Shell没有同步这一层概念自然没有同步不一致的问题。用生活类比来说Samba 挂载像是你隔着一层玻璃去拿柜子里的工具手伸过去了但总有隔阂Remote-SSH 则是直接把你的办公桌搬到了工具房里面工具就在手边。所以从长期开发效率来看Remote-SSH 是最值得投入时间的那条路。5.2 Remote-SSH 配置的具体步骤先装插件。VS Code 的扩展市场搜“Remote - SSH”这是微软官方的远程开发套件之一装完它会自动带上一系列远程相关的依赖。接着编辑 SSH config路径在电脑端~/.ssh/config追加一段Host rk3576-dev HostName 192.168.1.100 User root Port 22 StrictHostKeyChecking no保存之后在 VS Code 里按 F1输入Remote-SSH: Connect to Host选择rk3576-dev。首次连接会提示安装 VS Code Server这个过程是自动的但取决于网络环境。如果板子能正常访问外网就让它自动下载如果是离线环境需要在板子上手动放一个适配版本的 VS Code Server这个操作稍麻烦但也能走通。连接成功之后VS Code 左下角会显示一个绿色的连接状态条像是SSH: rk3576-dev到这个状态说明你已经进入了板子的开发环境。下一步通过“打开文件夹”打开板子上的代码目录比如/home/dev/app。打开后注意观察 VS Code 是否自动推荐安装远程插件比如 C/C、Python、shell 格式化这一组按需装上即可。5.3 插件组合与完整开发工作流Remote 环境搭好后把开发工具链补齐。最常用的组合是这几个C/C 扩展提供代码补全和调试支持Python 扩展如果板子上跑 Python 应用则必装GitLens 或内置 Git 面板做版本管理偶尔还需要一个远程端口转发插件用来访问板子上跑的 Web 服务。然后是 tasks.json。以 C/C 项目为例在.vscode/tasks.json里定义一个远程编译任务把 find 到所有源文件并执行交叉编译或者板端本地编译的命令放进去。这样在 VS Code 里按 CtrlShiftB 就能直接编译错误信息点一下就能跳到源码行比来回切终端强太多{ version: 2.0.0, tasks: [ { label: build, type: shell, command: make, options: { cwd: ${workspaceFolder} }, group: build } ] }如果要做单步调试用gdbserver配合 VS Code 的 launch.json。板子上先运行gdbserver :2345 ./app电脑端 VS Code 配置{ type: cppdbg, request: launch, program: /home/dev/app/app, miDebuggerServerAddress: 192.168.1.100:2345, cwd: /home/dev/app }这种远程调试体验和本地调试几乎一样可以打断点、看变量、看调用栈。我在项目里靠这套流程把“改代码—编译—跑起来—看崩溃栈—再改”这个循环压缩到了分钟级整个研发节奏比最开始快了不止一倍。5.4 让串口和 VS Code 在同一个画面里工作开发过程里经常要一边看串口日志一边改代码很多人会额外开一个串口终端窗口来盯日志来回切换窗口很消耗注意力。其实 VS Code 里可以直接开串口会话——在 VS Code 内置终端里敲picocom -b 1500000 /dev/ttyUSB0这样串口日志和代码编辑就在同一个窗口内上下分屏即可。日志滚动的时候你余光扫一眼就能看到有没有新的 backtrace 或者 error 出现不用切走写代码的上下文。如果你更想要图形化的串口监视器VS Code 里也有串口监视类插件界面上可以直接选串口和波特率我在快速看二进制协议数据时会用一下平时还是 picocom 更顺手。这里有一个使用细节VS Code 终端里跑 picocom 退出后终端回不到正常的 shell 提示符很多人以为卡死了。其实不是只是 picocom 把终端切到了原始模式退出后按个回车刷新一下即可或者直接新开一个终端标签页。这属于小坑但第一次碰到确实容易让人误解成系统死机。6. 常见问题排查与避坑笔记6.1 串口无输出、乱码、按键无效串口这块的问题千奇百怪但归根结底就那么几个原因。我用表格把高频问题和处理思路整理出来你对着查就行。现象可能原因排查方向完全无输出接线错误重新核对 TX/RX/GND确认是否交叉连接完全无输出未正确上电确认电源适配器带载能力有的板子串口仅供调试主电源要单供完全无输出波特率错误尝试 115200 与 1500000 切换输出乱码波特率不匹配同上逐档切换确认输出乱码电平不匹配确认串口模块是 3.3V TTL避免 5V 电平模块硬怼能收不能发串口模块 TX 接线或损坏换个串口模块交叉验证U-Boot 按不进命令行按键时机太晚重启板子在上电瞬间连续敲空格敲键无显示终端回显未开检查串口终端本地回显设置乱码这件事除了波特率不对之外还有一个容易被无视的因素劣质串口模块在高波特率下的信号质量不稳定。我自己遇到过 1500000 波特率下一直随机丢字节换了一个模块就完全正常。所以当你确认所有配置无误、接线无误仍然乱码时直接换一个串口模块试成本低、见效快。6.2 网络与 SSH 相关排查网络和 SSH 的问题通常集中在这几个层面。先看一眼板子 IP 到底有没有拿到ip addr都为空那就先查网线和路由。SSH 连不上先用串口登进板子本地是否能连ssh localhost能连就是网络安全组或者电脑侧的问题不能连就是 SSH 服务没起来或配置有问题。按从底向上的顺序排查比盲改配置高效得多。还有一个很隐蔽的问题部分板子的 rootfs 精简过缺少/etc/ssh/下的 host key 文件。这种情况下 SSH 服务会反复启动失败但日志又不显眼。解决办法是执行ssh-keygen -A systemctl restart sshd生成默认 host key 后就能正常连接。遇到“Permission denied (publickey)”这类报错优先检查authorized_keys文件权限是不是 600以及~/.ssh目录权限是不是 700。权限过宽高版本的 sshd 会直接忽略密钥文件这个规则几乎坑了每一个手动拷贝公钥的人。6.3 VS Code 远程连接问题VS Code Remote-SSH 最常见的问题集中在首次连接的 Server 安装阶段。如果板子网络访问不了外网VS Code 就会一直转圈或者提示安装失败。离线解决办法是先在一台能上网的机器上下载对应版本的 VS Code Server 压缩包然后手动放到板子上的~/.vscode-server/bin/commit-id/目录并解压再重新连接。这个 commit-id 可以在连接失败的日志里找到或者本地 VS Code 的关于页拿到。第二个高频问题是连接后在板子上打开文件夹时C/C 插件提示找不到头文件。这通常是因为远程工具链的默认包含路径没有配置。需要在 C/C 扩展的配置里把板子工具链的 include 路径加进去或者用compile_commands.json来喂给插件。我倾向于后者让 CMake 生成 compile_commands然后把C_Cpp.default.compileCommands指向这个文件这样补全和跳转的准确率会高很多。第三个常见问题是远程终端和本地终端的中文字体渲染不一致导致日志里的中文全是方块。这个纯属视觉问题在 VS Code 设置里把终端字体调成等宽中文字体即可例如Noto Sans Mono CJK SC。虽然是小问题但满屏方块很容易让你误判日志内容能顺手解决就别忍着。6.4 从实践里沉淀的几个开发习惯刷机变砖、环境变量改坏、代码改崩这些事几乎每个做 RK3576 开发的人都遇到过。我这里分享几条自己撞过墙之后才养成的习惯。任何对 U-Boot 环境变量的修改先printenv备份到本地文件再动手改。改完验证通过后再saveenv如果不确定就先别保存重启后会自动回到之前的设置。对根文件系统做任何大改装库、装服务、改启动项之前先确认存储介质还有多少剩余空间df -h看一眼。嵌入式板子的 eMMC 容量看起来不小但部分 SDK 的分区规划比较紧你随手apt install一个包可能就把根分区塞满了然后系统进入各种诡异状态。多看看串口启动日志不要只盯着应用层的报错。有时候你觉得是程序逻辑问题实际是内核某驱动在启动阶段就没挂上资源根本没申请到。串口日志里的每一个 timeout、每一个 fail都可能是应用层 bug 的根源。把日志按时间戳切成段对照启动阶段的硬件初始化顺序去看定位效率会高很多。最后一条我强烈建议在板子上创建一个专门的开发用户日常开发不要直接在 root 下操作。虽然嵌入式开发图方便常用 root但 root 权限下误删文件、改错配置的代价太高了。用一个普通用户做日常编辑和编译需要特权时再sudo这个习惯能帮你挡掉相当一部分自己造成的灾难。结尾这一路走下来之后的体会我从最开始拿着 RK3576 板子面对一片空白的终端到现在 VS Code 连着板子写代码、看日志、跑调试最大的体会是嵌入式开发的流畅度不取决于你用什么芯片而取决于你把底层这条链路维护得多顺。串口是地基网络是桥梁VS Code Remote-SSH 是上层建筑。这三层每打通一层开发体验都会迎来一次质的提升。串口盲操的阶段确实辛苦但那是你必须付出的试错成本一旦 SSH 通了、VS Code 连上了你会发现 RK3576 的开发其实完全可以做到和写普通服务端程序一样丝滑。最后再分享一个小技巧把你在搭建这套环境过程中用到的所有命令、参数、踩坑记录整理成一个 markdown 笔记放到板子的/home目录下随代码一起纳入版本管理。后续无论是换一台电脑、换一块板子还是团队里来了新人你都能照着这份笔记快速复现这套环境。我自己的这份笔记已经迭代了好几版每次踩到新坑就补一条它现在是我 RK3576 开发最值钱的资产之一。希望这篇文章也能成为你开发流程里的那份“资产”让你少走几条弯路。