Linux下开发STM32板
目录
- Linux下开发STM32板
- 全流程
- 第一步:STM32Cube安装
- 第二步:依赖包安装
- 2.1 Oracle Java 8的安装与使用
- 2.2 libusb-1.0-0-dev安装
- 2.3 交叉编译器安装
- 2.x STM32CubeMX运行环境
- 2.End
- 第三步:stlink驱动安装
- 第四步:开始测试
- 4.1 STM32CubeMX生成代码
- 4.2 编译代码
- 4.3 烧写程序
- 4.3.1 ST-link固件升级
- 4.3.2 板子连接
- 4.3.3程序烧录
使用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就开始运行了
原文地址:https://www.cnblogs.com/zzzc18/p/12573262.html