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"
}
]
}