背景介绍:
Sugar 出的很多视频都基于 project-generator 开源项目来支持三平台。
通过反馈发现:这个方法引起了很多读者的兴趣。
参与了 Sugar 的《软件架构训练计划》的群友已经成功驾驭了这个方法。
本文从软件安装开始,系统介绍一下 project-generator 的使用。
首先说一说为什么我选 project-generator
与 CubeMX 和 RT-Thread 的 env 做个对比。
下面将 project-generator 简称为 progen
。
对比项目 | progen | CubeMX | env |
---|---|---|---|
体积 | 小 | 大 | 大 |
三平台支持 | OK | OK | OK |
支持个人已有代码 | OK | 要设置工程 | 没用过不清楚 |
是否必要维护工程 | 完全不用 | 加入个人配置就要 | 没用过不清楚 |
开源情况 | 全开源 | 不开源 | 不清楚 |
- 使用 CubeMX 如果通过配置工程加入了个人代码,万一不小心弄坏了工程,那么就需要生成后重新配置。如果加入了很多个人代码,就比较麻烦了。
- progen 通过 yaml 配置文件生成工程,完全不用维护工程。需要什么平台(MDK5、IAR、GCC),一条命令生成工程即可。对于三平台,只维护一份 yaml 配置文件就行了。
视频展示安装配置过程
bilibili 视频演示 腾讯视频 youtube 视频演示
视频勘误
如果 windows 下的 cmd 如下图所示找不到 progen
把 C:\Python27\Scripts
加入环境变量,并重启 cmd。解决问题后如下图所示:
加入自定义开发板配置
- 修改 targets.py
- 加入自己开发板的 yaml
多工程支持
下面以我精简的 RT-Thread 内核使用 demo 为例,看一看不同工程的配置差异。
如何给自己的工程加入 progen 支持
- 用 progen 初始化工程,命令示例如下:
progen init -p stm32f4discovery -tar disco-f407vg
- 自动扫描代码路径后生成 yaml 配置文件
- 手动修改配置
- 生成目标工程,命令示例如下:
progen generate -f projects.yaml -t uvision5
Sugar 通过 project-generator 涨了哪些见识
- 不同平台(MDK5、IAR、GCC)最大的区别是:“汇编源文件”和“链接文件”。对于 CubeMX 生成的工程而言,就是“启动文件”和“链接文件”。
- 对源码工程的掌握更清晰了,明确知道哪些文件参与了编译。
看过我视频的读者会发现:我用 CubeMX 生成工程时选的是“生成必要文件”(如下图所示),在使用 progen 之前我一直忽略这个设置,因为不知道有什么用。其实 CubeMX 在生成工程时如果不选这项也没关系,会在工程中自动屏蔽掉不相干的文件。这就造成:我虽然能编译,但其实并没有真正掌握生成的源码。直到我用了 progen 方才有了进步。
- GCC 编译器最严格。
看下 yaml 配置文件,MDK5、IAR 的配置只有几行,而 GCC 就很多(各种 flag,配置错一个都不行)。
我了解 GCC 也是从写 yaml 配置文件开始的。
PS
- 会用 progen 是参与《软件架构训练计划》的必备技能,因为 Sugar 开源的示例项目都使用 progen。
- 参与计划的群友在 github 上提了第一个 issue,开了个好头。
- 在 github 上提 issue 开放交流的好处: (1) 问题自然分类汇总; (2) 参与交流的人多,一人问多人答; (3) 问题易回溯,不用像微信群一样往回翻聊天记录。
- 很多读者通过微信、微信群、公众号给 Sugar 留言,内容包括:给出建议、指出错误(比如上面提到的视频勘误)等。
目前这些还都是只对 Sugar 个人有益,如果能上 github 将会对更多人有益。
- 望更多人来参与《软件架构训练计划》,大家一起提升,让这个学习成长活动越来越有活力,共同维护一个好的技能成长环境。
关注作者
欢迎扫码关注我的公众号MultiMCU EDU
。
提示:在公众号“关于我”页面可加作者微信好友。
请我喝杯咖啡如何?
微信 支付宝