整理一下这几年搭嵌入式开发环境积累的东西,都是踩坑换来的。
工具链不要追新
交叉编译工具链是那种”能用就别动”的东西。升级一次可能带来一堆莫名其妙的链接错误,而收益往往只是某个你根本用不到的优化。SDK 装好之后,把版本号记在项目的 README 里,锁死。
SDK 和工程要分离
Zephyr SDK 动辄十几个 G,绝对不该塞进 git 仓库。正确的做法是工程里只放源码和配置,SDK 路径通过环境变量或 ZEPHYR_SDK_INSTALL_DIR 指定。换机器时重新装 SDK,而不是拷。
串口调试要留后路
设备一旦刷了有问题的固件,可能连不上、起不来。所以:
- 保留一个能进 bootloader 的物理方式
- 关键日志写到 flash,重启后还能读
- OTA 一定要做双分区,A 区刷坏了还能回滚到 B 区
这些不是”以后再说”的事,等真出事的时候现场是没法补救的。
日志比断点有用
嵌入式上单步调试经常不可行——时序会乱、外设会超时。与其花时间搭调试环境,不如把日志做扎实:分级、带时间戳、能重定向到串口或 flash。很多问题看日志比断点快。