Linux下开发STM32板

Posted zzzc18

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下开发STM32板相关的知识,希望对你有一定的参考价值。

Linux下开发STM32板


使用CubeMX+SW4STM32
使用Ubuntu18,配套最新版的ROS


我改主意了,IDE不够香
用cubemx生成makefile然后直接make,用vscode编辑

要安装交叉编译器gcc-arm-none-eabi,然后直接make就行

关于烧写,用https://github.com/texane/stlink.git似乎是不行的。。。

现在打算用STM32CubeProCgrammer

tm终于搞成了。。。

全流程

第一步:STM32Cube安装

去st官网下载STM32CubeMX,STM32CubeProCgrammer,解压后整个包(含exe)给整到linux下(我是win下载好挪到ubuntu虚拟机里了),直接运行.linux即可安装,一路next

第二步:依赖包安装

2.1 Oracle Java 8的安装与使用

鉴于STM32CubeProCgrammer用的是oracle的jdk,我们要去官网上下载并安装对应的linuxx64最新版,此时是jdk-8u202-linux-x64.tar.gz
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

下载后

$ sudo tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/lib/jvm
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_202/bin/java 300
$ sudo update-alternatives --config java
#随后根据提示进行,选择刚装那个

对java一窍不通的我:这部分来源于https://blog.csdn.net/lu_embedded/article/details/103032083

2.2 libusb-1.0-0-dev安装

这个是安装stlink的前置要求

$ sudo apt install libusb-1.0-0-dev

2.3 交叉编译器安装

交叉编译器大概就是在A平台的主机下编译出可以在B平台主机下运行的可执行文件。B平台本身可能根本不具备操作系统,更不用说编译器了,所以这个很有必要。现在就是要在linux下生成cortex-M3的bin

ubuntu18下很简单

$ sudo apt install gcc-arm-none-eabi

2.x STM32CubeMX运行环境

我忘了。。。如果跑不起来现搜吧

2.End

此时STM32CubeMX,STM32CubeProCgrammer应当可以正常运行

第三步:stlink驱动安装

我使用的是stlink-v2烧录器,github有开源项目https://github.com/texane/stlink.git
clone下来之后直接make,sudo make install就好

第四步:开始测试

中间我不采用IDE,是因为实在是不太会用。。。
我尝试过SW4STM32,感觉不友好,功能方面可以保障,就是我用不惯。如果想用IDE也直接去官网下SW4STM32,是Eclipse。
目前采用VSCode编辑代码,确实比较好用,这部分的配置见https://www.zybuluo.com/zzzc18/note/1645112

4.1 STM32CubeMX生成代码

其他地方都一样,这里不做演示,只不过最后不用生成对应IDE的,直接生成makefile版

4.2 编译代码

随便写个点灯啥的,然后直接在目录下make,会生成build文件夹,里面有example.bin,example.elf和example.hex,bin和hex可以用于烧写,elf可以用于调试。

4.3 烧写程序

到了最坑的地方
打开STM32CubeProCgrammer
图我不好加,参照官方文档https://www.st.com/content/ccc/resource/technical/document/user_manual/group0/76/3e/bd/0d/cf/4d/45/25/DM00403500/files/DM00403500.pdf/jcr:content/translations/zh.DM00403500.pdf
实际上你能看出来大概咋用

4.3.1 ST-link固件升级

如果前面装的驱动没问题,右侧应该能检测出来。
升级固件么,点Fireware upgrade,之后应该能显示出对应的烧录器信息,点update,如果报错说不行(not in dfu),要插拔一下,并且不能连stm32板子。再点下面的upgrade,进度条走完就好了

4.3.2 板子连接

我折腾了不知道多久,一直以为是没有板子驱动,或者干脆不支持我这块小板子,导致连不上,显不出板子信息,后来发现不是。。。绝望地漫无目的的搜索后,在官方论坛上看见一个说法,push and hold reset,click connect,wait for a second,and release reset。照着做了一遍居然真成了。。。
中间停的时间不能太短,不然不行
这操作为啥手册上不写??这咋推敲得出来???
不过里面似乎是有一定原理的,估计事后证明是我naive

4.3.3程序烧录

软件内打开之前生成的example.bin或example.hex,点Download就行了,点板子上的reset就开始运行了

以上是关于Linux下开发STM32板的主要内容,如果未能解决你的问题,请参考以下文章

我的stm32开发板 串口和jlink都下不进去程序

野火STM32开发板中的UCGUI LIB是怎么生成的

STM32MP157开发板Linux+Qt项目实战:音乐播放器

正点原子探索者STM32F407开发板/战舰STm32开发板/miniSTM32开发板资料下载

stm32开发板的USB作何用途?

构建一个适合stm32mp157系列开发板的嵌入式Linux系统