非常感谢晕哥的优惠活动,很便宜的价格就能拿到开发板。我工作、生活上都用实体的Linux系统Manjaro Linux,只在极少情况下才会开虚拟机跑下Windows. 那么MCU开发也必然要在Linux下进行。Linux环境下的开发工具都是开源的,成熟的工具链是:eclipse + GCC + OpenOCD/pyOCD,而且系统的官方软件仓库都收录有这些工具,所以只要求输入一条命令就可以将其安装下来,非常便利。
这里我选的工具链是:eclipse-embedcpp + arm-none-eabi-gcc + pyOCD。之所以选pyOCD而非openOCD是因为它支持keil的pack包,pack包包含flash烧录算法和外设寄存器信息。这样,只要MCU支持keil,pyOCD就都能跑起来,烧录、调试都没问题。
先在eclipse里新建一个模板工程:
然后进行移植,移植的工作量不大,主要分为:
* 外设驱动库添加GCC支持(只有__weak宏需要修改)、
* 中断向量表适配、
* 静态库的适配、
* pyOCD的配置。
把外设驱动源码的inc及src文件夹都复制到工程内,修改文件 ACM32Fxx_HAL.h内的宏__weak添加对GCC的支持:
中断向量表适配:
静态库的适配:有些外设的驱动没有源码只静态库,因为其所使用的编译是armcc v6,其实就是clang编译器;而clang是跟gcc兼容的,所以这些库文件可以直接使用。如果用file命令查看从库文件解压出来的.o文件,可以看出其ABI跟arm-none-eabi-gcc的是相同的:
那么我们把这些库文件放到lib文件夹进行统一管理,并按照gcc的惯例将库文件改名为libxxx.a的形式:
然后添加链接器选项:(目前做点灯测试,只用到这两个库)
然后写些测试代码,实现main函数:
就可以编译了:
eclipse编译还是一如既往地快,编译整个工程耗时半秒都不到!linux的IO快应该是一大助力。这就是生产力呀!
另外,吐槽下,外设驱动源码里的警告(unused variable)太多了。我只打开的-Wall选项而已呀就多到把用户代码的警告淹没了。像ST的源码基本怎么开警告选项都不会输出警告的,这就是差距呀。
最后就是调试配置了。首先复制一份keil的pack文件,将其后缀改为zip然后解压出来找得ACM32F4.svd文件保存好以备用:(还可以将svd文件压缩成zip文件)
然后进行pyOCD配置:
将之前得到的svd文件的路径填到“SVD Path”内:
保存好配置后,将开发板上的"Link CN"USB接到电脑上就可以调试了:
之前的SVD文件就是用来在调试时查看外设的寄存器用的:
好了,开发板的上USER LED成功地闪烁起来了。
我已经将本工程上传到gitee了,有兴趣同学可以直接clone: https://gitee.com/ufbycd/acm32f4test
离线
楼主优秀啊, 都像你这样, MDK还能收到版权费吗?
离线
牛叉, 第一次看到搞单片机的朋友只用Linux的。
离线
楼主你好,方便做个视频吗?我一直想搞Linux单片机开发,领导催了我好几次了,我一直不知道从哪里入手,文字教程又看不下去,总是感觉断片了一样,视频直观一些。用了楼主这一套,再也不担心律师函了。
离线
我猜楼主画板肯定也是kicad!
离线
楼主你好,方便做个视频吗?我一直想搞Linux单片机开发,领导催了我好几次了,我一直不知道从哪里入手,文字教程又看不下去,总是感觉断片了一样,视频直观一些。用了楼主这一套,再也不担心律师函了。
要想在Linux上做开发,首先得熟悉Linux系统,只在虚拟机里捣鼓几下是不够的,要能应付日常使用才算基本熟悉。
熟悉了以后就能很容易打造开发环境了。
另外,本贴是假设大家对eclipse已有所了解,知道如何编译、调试。如果对ecipse尚不了解就可能看得不太明白,可以在网上找些教程多了解了解eclipse。
最近编辑记录 海石生风 (2022-07-03 08:46:25)
离线
是不是也可以用stm32cubeide?也是gcc,换下启动汇编,链接文件.
离线
很不错的教程,我还是windows下开发,没想到linux编译这么快
离线
同道中人!
本人使用linux作为主力系统,重要的原因就是不使用盗版系统,硬件开发用kicad,编译用gcc,绝大部分的情况下都是够用的
离线
哇塞,大佬! 能建个群交流交流吗?
我2000年以后就没有怎么用过windows了,一开始的工作就是Linux相关。
后来自学的电子, 转成了EE。。。。
z80、AVR、fpga、STM32 都是在linux上开发,不过是emacs和vscode, 我比较不喜欢eclipse....
电路图一开始是用 eagle 6, 后来改成订阅制, 而且风格也大概, 就改成了kicad,从 4.x一直用到现在。
最近编辑记录 chopin1998@gmail.com (2022-08-12 15:52:56)
离线
@海石生风
eclipse 这个无所谓。。。
建个群交流一下呗
离线