linux下stm32开发环境配置
原因:
- keil或cubeide非常难用,补全功能太差
工具链安装
软件工具清单:
- vscode
- make
- gcc-arm-none-eabi工具链
- openocd
- stm32cubeMX
下载
1.make
有些linux发行版本自带 我用的是ubuntusudo apt install make
2.openocd
sudo apt install openocd
apt上的openocd版本可能落后,可以上openocd官网上下载最新版本,但还是推荐包管理器下载,因为其会自动下载依赖。
3.gcc-arm-none-eabi工具链
sudo apt install gcc-arm-none-eabi
也可以上arm官网上下载工具链
gcc-arm-none-eabi一些问题汇总
- 使用arm-none-eabi-gdb
- 出现
error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
缺少库
sudo apt install libncurses5
如果还是不行,就之间安装
sudo apt install gdb-multiarch
- arm-none-eabi-gcc
- 当你make的时候,arm-none-eabi-gcc会报错,缺少liblto_plugin.so 解决方法: 查找liblto_plugin.so.0.0.0 然后将其复制为liblto_plugin.so 一般在/home/ubuntu/gcc-arm-none-eabi-10.3-2021.10/lib/gcc/arm-none-eabi/10.3.1目录下。
- 权限问题
- 从arm官网下载下来的工具链可能会有执行不了的问题,需要修改其具有执行权限(sudo chmod u+x)
4.vscode
官网下载需要安装c/c++插件,和Remote-SSH 两个插件
5.stm32cubeMX
官网下载 安装在虚拟机ubuntu上还是Windows上无所谓工程配置
一,用stm32cubeMX创建工程
1.在配置配置好时钟和引脚功能后 2.然后在Project Manager中修改一些东西 第一是选择代码构建工具为makefile
第二是代码生成的一些选项然后将项目目录拷贝到Ubuntu中
二,vscode连接虚拟机ubuntu
安装好Remote-SSH插件后,在最左侧 点击如果一个连接目标都没有会出现
#基本就是ssh命令 #ssh 主机名@ip -p端口号 ssh ubuntu@127.0.0.1 -p1234 #然后输入密码即可
连接成功后打开项目目录
如下
然后make一下查看你的gcc工具链是否有上述的问题
如果没有问题,继续下一步。三,开启openocd服务器
第一步,先将你的mcu根据jtag\swd协议连接到stlink适配器上,然后再将适配器连接到PC上。如果你是虚拟机ubuntu 不要忘了设置虚拟机识别usb
使用stlink适配器会有些问题,引用openocd文档:
关于信息,原始的ST-LINK使用了大容量存储USB类进行枚举;然而,它的实现存在严重问题。 这导致在Linux下出现了一些问题。最简单的解决方案是使用以下方法之一让Linux忽略 ST-LINK:
modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
- 添加 "options usb-storage quirks=483:3744:i" 到 /etc/modprobe.conf
第二步,编辑配置文件
openocd.cfg 为自定义创建
#openocd 采用TCL 语言作为配置文件脚本,内置jim-tcl解释器 #如果你只是单纯的开发mcu应用,不是研发适配器和mcu的不需要太过学习tcl语言 #只要记住导入文件语法即可 #导入适配器驱动脚本 source [find interface/stlink-v2.cfg] #导入目标mcu同系列布局脚本 source [find target/stm32f1x.cfg] #如果有商业化的板子可以导入板子的配置脚本 #source [find board/xxx.cfg] #以上就够stm32系列开发,如果想要更多信息查看openocd文档
第三步,启动openocd服务器
openocd -f openocd.cfg
出现
那么你成功了!
三,烧录
首先,编写完程序后,make以下,构建程序 然后 输入arm-none-eabi-gcc -q build/xxx.elf #或 gdb-multiarch -q build/xxx.elf
进入gdb,输入以下命令
(gdb) target remote :3333 //连接openoc服务器 (gdb) load //烧录程序
gdb不仅可以用来烧录,还可以进行调试,更多请查询gdb文档
之后就是在vscode中配置 c/c++插件的配置了
参考
- vscode c/c++配置:https://code.visualstudio.com/docs/cpp/config-linux
- tcl语法:https://www.tcl-lang.org/man/tcl8.5/tutorial/tcltutorial.html
- gdb文档:https://sourceware.org/gdb/download/onlinedocs/