Zephyr实时操作系统入门
开发环境¶
- 硬件
- 笔记本电脑
- 用盗版STLink V2.1改的Black Magic Probe
- WeAct BluePill Plus
- 软件
- Manjaro Linux
- VSCodium
- PlatformIO IDE 插件
- Zephyr
配置¶
按照官方文档配置, 或是用PlatformIO IDE都可以
为了适配新的开发板, 有两种选择:
- 修改内核源码, 在boards内参考其它源码添加板子的定义
- 添加设备树overlay, 根据其它基础的板子进行调整
我自己实验时先用了前者, 后来才读到后者, ~没来得及实验~坑人
PlatformIO IDE下面的开发¶
刚刚开始
自定义板子¶
法1. 手动添加新设备¶
直接改的难度应该不大, 可以直接参考bluepill, 不再详叙
可以参考https://piolabs.com/blog/engineering/platformio-zephyr-custom-hardware.html
法2. Device Tree Overlay¶
这个东西…可能是我对于cmake不熟练/不了解, 踩了好多坑
对于PlatformIO IDE, 出于某种原因, Zephyr的构建系统在PlatformIO IDE下有点问题, 在命令行添加DTC_OVERLAY_FILE
这个变量没效果. 解决方法有二:
- 在
项目目录/zephyr/boards
文件夹下面放板子对应名称.overlay
来使用overlay. - 在
项目目录/zephyr/CMakeLists.txt
的最前面(第一行)设置DTC_OVERLAY_FILE
变量, 指向需要使用的overlay
源代码看下来…这个环境变量必须尽早设定的样子…直接传参进去的参数顺序不太对, 正常设定这个变量后至少会报错(未找到)
Zephyr使用的overlay就是设备树源码的一部分, 会直接拿来追加到原设备树的后面. 我暂时不想折腾这破玩意儿了, 凑合用吧.
折腾的反思¶
- 没有尽早采用控制变量法与多种方法同时尝试
- 静不下心来, 看不下源代码