最近给电脑装了双系统(Windows+Ubuntu),接触到Ubuntu,现在需要在Ubuntu上配置STM32的软件开发环境,弄了两天,有两种方法,可以用VScode,也可以用keil;
一 ,VScode
进入ubuntu系统后软件换源这种最基本的操作我就不浪费大家时间看了,应该看到这种文章的朋友都知道。下面讲开发STM32的环境配置
一、安装gcc-arm-none-eabi,arm-linux-gcc交叉编译器
(考过计算机三级嵌入式开发的都知道这玩意)
很多朋友会喜欢用下面的命令
sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabi
但是我的运行了这个命令后没有在文件中找到arm-none-eabi-gdb这个文件,所有大家先运行这段代码之后,再到ARM官网下载Arm GNU Toolchain,这是官网地址,大家下载对应的版本
之后直接解压(我解压到这里,随便解压到哪儿都可以,但是记得把文件夹的名字改简单一点,方便后面查找)
下面我们将此路径添加到环境变量中
打开~/.bashrc(用什么方式打开都可以,视窗打开也可以,这里我用nano编辑器)
sudo nano ~/.bashrc
找到最后一行,将gcc-arm-none-eabi的bin目录添加进去,添加完成格式
export PATH=$PATH:这里填刚刚解压得到bin文件夹的路径
保存退出,并执行:source ~/.bashrc
source ~/.bashrc
二 安装openocd,gcc ,make , java(java是为了完成CubeMX的安装),均可以直接在apt完成。
sudo apt install default-jre
sudo apt-get install gcc
sudo apt-get install make
sudo apt-get install openocd
三 安装STM32CubeMX,安装方法基本与Windows上一致,只是这里选择Linux版本
将这个文件解压得到
双击第三个文件,进行安装
打开安装得到的文件夹,鼠标所指的文件就是Linux版本的CubeMX
四,安装VScode
这个安装非常简单,可以去官网下载deb包使用下面命令安装
sudo dpkg -i 下载的文件名称.deb
我用的版本的ubuntu自带应用中心
可以用应用中心进行图视化安装
五 st-flash(stlink的驱动)安装
首先安装依赖包
sudo apt-get install libusb-1.0
sudo apt-get install cmake
sudo apt-get install libgtk-3-dev
下载源码(没有安装git自行用sudo apt install git 安装)
git clone https://github.com/texane/stlink.git
因为是github上下载,如果多次安装不成功直接去github上下载源码
下载网址
GitHub - stlink-org/stlink: Open source STM32 MCU programming toolset
下载之后 进入安装目录(如果是直接视窗操作下载的,这里就进入解压后的文件夹)
cd stlink.git
编译源码
$ git branch -a
$ git checkout v1.4.0-patch
$ make release
$ make debug
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
$ cd Release; sudo make install;sudo ldconfig
之后进入stlink目录(cd进入或者在终端中打开)然后执行以下命令
sudo cp stlink.git/config/udev/rules.d/49-stlinkv2.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo cp src/st-flash/\* /usr/bin
安装成功后出现图标
六 安装gdb server
打开gdb官网 选择最新版本的.tar.gz文件,在这里是gdb-11.2.tar.gz,点击下载
当然也可以使用命令
wget https://ftp.gnu.org/gnu/gdb/gdb-11.2.tar.gz
执行如下命令
cd /home/user //cd进入下载目录
tar -xzvf gdb-11.2.tar.gz //解压
生成makefile
cd gdb-11.2/
mkdir build
cd build
../configure
防止make编译时出现tex相关错误,安装 textinfo
sudo apt-get install texinfo
编译安装
make
sudo make //防止权限不够导致编译不完全
sudo make install
输入gdb --version查看是否安装成功,成功则输出版本号如下图所示
七 配置软件
1 vs中安装插件
然后在CubeMX里面把SW调试勾选上
注意生成makefile工具链
八 在编译器中配置项目(这一步已经可以编译下载了)
我们在终端中输入make ,编译成功
编译就是这样编译, 如何下载呢?我们使用st-flash,在终端中输入
st-flash --format=ihex write ./build/项目名称.hex
这样我们就把文件下载进入了,但是每次在终端中输入太麻烦,我们打开Makefile文件,在如下图所示位置(clean:后面)添加可制作目标
load:
make
st-flash --format=ihex write ./build/$(TARGET).hex
这样的话在终端中输入make load ,就可以直接编译下载了,同样可以添加(只完成下载任务)的可制作目标
但是这样还是麻烦,每次都要在终端中输入命令,所以我们选择配置任务
选择使用模板创建tasks.json文件
选择others
得到下面json文件
把lable里“echo”改为“build”,把command里“echo Hello”改为“make”,同时,按照这个方法,编写其他对象,比如把下载download和编译下载load编写进去,并加入group对象;
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "load",
"type": "shell",
"command": "make load",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "download",
"type": "shell",
"command": "make download",
"problemMatcher": []
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
保存tasks.json文件,这时就可以按住shift+ctrl+B(或者在终端里选择运行生成任务),可以一键编译下载了
如果还觉得麻烦,想用一个键,可以
- 按下 Ctrl+Shift+p 输入 key
- 首选项:打开键盘快捷方式
- 这里就可以更改运行生成任务的快捷键,我把它改成了F7,以后直接按F7就好了
九 加入调试功能
在运行里选择添加配置
这里不要选择STLINK,会报错,可能是因为没有安装stlink-server;可以参考ubuntu系统下VSCode调试出现 STLINK Failed to launch ST-LINK GDB Server错误的解决办法_please check terminal tab (gdb-server) for output -CSDN博客
第5行填入当前工程的.elf文件的路径,之前已经生成过了,可以直接在资源管理器里面复制路径
第10行填入配置文件
这行代码查看接口配置文件
ls /usr/local/share/openocd/scripts/interface/
这行代码查看芯片配置文件
ls /usr/local/share/openocd/scripts/target/
选择你需要的调试器配置文件和芯片配置文件,填写相应路径,如图所示
按F5 ,终于可以调试啦
可能有些朋友这一步调试不成功,可能是因为没有添加gdb的路径
选择扩展设置
把gdb的路径添加进去
注意,dgb的路径在文章开头一栏:“ 一、安装gcc-arm-none-eabi,arm-linux-gcc交叉编译器“下载c出来的bin文件夹里,上文有讲过,没调试成功的宝子手动把路径加进去
按照上文 “一、安装gcc-arm-none-eabi,arm-linux-gcc交叉编译器“的路径,应该在
/home/suke/下载/armnone/arm11/bin/arm-none-eabi-gdbt
添加进去就能进行调试啦
二 ,keil+st-flash
想要在Linux坏境下运行windows程序,可以借助工具软件wine,
sudo apt install wine
安装完成后,就可以运行exe程序了
首先下载安装KeilMDK的exe安装程序,把他放入合适位置
在终端中打开
输入 wine 软件包名称.exe
这样就可以进行安装了
安装成功,
后面配置相应的芯片支持包和Windows上的操作一致,都是从官网下载;
但是下载很慢,如果你有一台装过keil的Windows电脑,可以直接复制./keil/arm/这个文件夹
然后把他替换/home/suke/.wine/drive_c/Keil_v5/ARM/这个文件夹
注意:./wine是隐藏文件夹,需要设置显示隐藏文件
这样支持包也装好了
打开keil
把生成.hex文件勾选上
可以正常编译了,编译生成的hex文件可以放入st-GUI下载了
打开
导入hex文件进行下载,当然,也可以通过OPENOCD进行调试
openOCD连接目标芯片的命令格式为:
openocd -f <接口配置文件> -f <目标芯片配置文件>
我们按照下面三个步骤即可下载程序:
- 目标芯片挂起:-c init -c halt
- 烧写:-c “flash write_image erase xxx.hex”
- 复位: -c reset -c halt -c shutdown