Ubuntu系统下STM32编译、调试环境搭建
最近正在学习怎么在Ubuntu下开发stm32的程序,参考了一些资料,写下这篇博客。
本方案采用以下开发环境配置:
OS:Ubuntu
STM32库:libopencm3
编译器:gcc-arm-none-eabi
调试工具:gdb-arm-none-eabi
调试器:J-Link
编辑器:VSCODE
一、需要的工具下载
Ubuntu系统下可以使用apt安装编译器和调试工具。
sudo apt install arm-none-eabi-gcc arm-none-eabi-gdb
可能需要更新更新源。安装arm-none-eabi-gdb时似乎会出现和系统原有gdb冲突的问题,看参考链接。
调试器的驱动或者工具可以去J-Link的官网下载,选择合适的版本安装即可。
https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
安装完成J-Link的工具后,可以尝试连接一下单片机,看看
libopencm3可在Github上下载。推荐下载提供的模板。
git clone https://github.com/libopencm3/libopencm3-template.git your-project
cd your-project
make -C libopencm3 #(编译libopencm3)
libopencm3有一些例子,可参考项目libopencm3-examples。
二、配置Makefile文件和VSCODE
模板中有一个放置源文件的目录,my-project,需要修改里面的makefile中的device参数。OOCD是OpenOCD,一种和调试器连接的软件,这里使用Segger官网的软件,因此不用修改。
CFILES、AFILES表示需要编译的C文件和汇编文件,删掉,改成自己的就好。比如,建立一个main.c文件,里面有一个空的main函数(感觉有种仪式感,可以开始复制粘贴examples里的代码了)。顺便,修改PROJECT为自己的项目名称,更有仪式感了。
编译命令:
# 在my-project目录下执行
make #生成全部
make clean #清除文件
VSCODE下建议安装插件C/C++(代码提示)和Cortex-Debug(辅助调试插件)。
在调试菜单下,选择添加配置,选择Cortex-debug,修改配置信息。主要修改:servertype(jlink),interface(接口,swd),devece(设备,具体型号),以及executable(提供给gdb识别的含有调试信息的elf文件)。preLaunchTask表示调试前需要进行的任务,这里使用生成任务build。在终端菜单下,选择配置默认生成任务,运行外部程序(实际上就是让VSCODE帮我们输入make -C ...)。
调试配置文件launch.json如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Cortex Debug",
"cwd": "${workspaceRoot}",
"executable": "./my-project/stm32prj.elf",
"request": "launch",
"type": "cortex-debug",
"servertype": "jlink",
"device": "stm32f103vb",
"interface": "swd",
"preLaunchTask": "build"
}
]
}
生成任务文件tasks.json如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make -C my-project"
}
]
}