Wiki
Linux環境搭建(舊)
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
(本教程为2024年1月创建的,可能与以后的版本有些出入)
1.需要準備的軟件
-
CubeMX最新版
-
VScode最新版
-
vcpkg包管理工具
-
pyOcd(如何安裝下方有教程)
-
ST-Link驅動(如何安裝下方有教程)
2.vcpkg安裝與環境配置
- 下載依賴包
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential tar curl zip unzip
sudo apt-get install default-jre
- 克隆vcpkg倉庫
https://github.com/microsoft/vcpkg/tree/master
git clone https://github.com/microsoft/vcpkg.git
- 生成vcpkg程序
cd vcpkg
sudo chmod a+x ./bootstrap-vcpkg.sh
sudo ./bootstrap-vcpkg.sh
- 配置環境
vim ~/.bashrc

這個 VCPKG_HOME是vcpkg的目錄
#配置vcpkg环境
export VCPKG_HOME=/home/tungchiahui/user/applications/vcpkg #目录需要改为你的vcpkg的目录
export PATH=$VCPKG_HOME:$PATH

source ~/.bashrc
vcpkg --version
出現如圖提示則安裝成功!

3.MDK5工程生成與ARMCLANG(AC6)編譯器配置
3.1.工程生成與編譯器配置
-
方式一 :配置編譯器教程需要在Windows進行,在Linux上目前很難修改編譯器選項,可以參考下方Windows教程裏的生成工程並配置默認編譯器。(實質就是把編譯器從默認的AC5改成AC6)
-
方式二 :克隆已經生成好的模板(模板目前只有幾個常用型號的)
倉庫鏈接:
https://github.com/TungChiahuiMCURepos/CubeMX_CMake_Template
git clone https://github.com/TungChiahuiMCURepos/CubeMX_CMake_Template.git


3.2.工程配置(比如初始化一個GPIO口並創建任務使其電平翻轉)
先複製一份工程模板

重命名工程

打開CubeMX(並點擊最上方File->Load Project 或者 直接點擊下方圖中的圖標)

找到工程並Load,並配置好工程



在文件夾MDK-ARM下打開終端
cd MDK-ARM
code .
4.安裝並激活MDK6插件
下載好ARM Keil Studio Pack

激活MDK6插件


5.初次轉化MDK5工程並下載依賴包

右下角把這些要安裝的pack都安裝一下,有什麼提示要允許的都允許一下
在安裝Packs的時候,需要保證一個良好的網絡環境(需要一個有魔法的網絡環境),
這個階段會持續5-20分鐘,請慢慢等待。(看你的機場速度而決定)
(只有第一次運行需要這些操作)

這個調查可以不查

如圖即是安裝成功

如果下方環境已經配置好了,請右鍵點擊uvprojx選擇Convert


如果環境沒配置好,右鍵這個文件,選擇active environment(圖中因為我的環境配置好了,所以是deactive失能)
然後再執行上一步的Convert

如圖已經初始化成功了

6.編譯
點擊build按鈕發現文件大小一樣就是編譯成功了。
若編譯失敗,則看一下是否是工程文件列表被多配置了一個點。(看下方進階教程裏的添加源文件解決)


7.Linux如何配置ST-Link等調試器?
7.1.安裝pyOCD(Linux)
https://github.com/pyocd/pyOCD
先打開終端輸入(如果你是debian系的系統,如Ubuntu,請看下方的教程)
sudo apt install python3-pip
python3 -mpip install -U pyocd
# 如果上面的不行,则输入下方的
pip3 install -U pyocd
如果還不行,且提示
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
則使用(debian系的系統)
sudo apt install python3-pyocd
或者 説直接克隆倉庫
git clone https://github.com/pyocd/pyOCD.git
cd pyOCD
pip3 install .
這樣也可以安裝pyOCD
接下來,我們需要安裝ST-Link等調試器的驅動。
pyOCD安裝調試器驅動官方教程:
https://github.com/pyocd/pyOCD/tree/main/udev
還是需要用到pyOCD倉庫裏的文件。
如果你沒clone倉庫請儘快克隆。
在倉庫目錄下,輸入以下命令
cd udev
sudo cp *.rules /etc/udev/rules.d
#重启udev
sudo udevadm control --reload
sudo udevadm trigger
這樣ST-Link就可以正常被檢測出來了

如果沒被檢測出來,請插拔一下ST-Link,然後點擊Add Device添加一下設備。

7.2.測試連接設備
隨便插上一個debugger,比如我這裏插上一個連着stm32f103c8t6的ST-link:
pyocd --version
pyocd list
像下圖這樣正常識別出來了,就説明成功了。

進一步,可以繼續測試
pyocd list --targets | grep -i stm32f103
pyocd list --targets --name stm32f103

發現是stm32f103rc,然後嘗試連接該設備:
pyocd commander -t stm32f103rc
如果成功,通常會進入 pyOCD commander:
然後你可以輸入: status 再退出: exit

status 能返回 Running,説明不是“只枚舉到了 USB”,而是真的已經連進目標 MCU 了。
成功了。
但是你會發現,咱們明明插的是stm32f103c8,為何識別出stm32f103rc呢?
pyOCD 當前內置目標裏確實有 stm32f103rc,但沒有內置 stm32f103c8;
pyOCD 官方也説明 target 類型決定 Flash 算法、內存映射等信息,所以正式下載程序時最好不要長期拿 RC 冒充 C8。
更規範的做法是給 pyOCD 安裝 STM32F103C8 對應的 CMSIS-Pack:
先查找是否有:
pyocd pack find stm32f103c8
第一次跑這個會先下載索引,等一會兒吧(需要特殊網絡環境)

找到後,顯示沒安裝:

再安裝:
pyocd pack install stm32f103c8

再查:
pyocd list --targets --name stm32f103
可以看到已經可以支持一堆設備了。

pyocd commander -t stm32f103c8
如果成功,通常會進入 pyOCD commander:
然後你可以輸入: status 再退出: exit

7.3.更新ST-Link最新驅動(Linux)
https://www.st.com/en/development-tools/stsw-link007.html#get-software
暫時無法在飛書文檔外展示此內容

下載後的文件解壓出來。

sudo apt install ./st-stlink-udev-rules-1.0.3-2-linux-all.deb
重啓VScode即可
(下方還有其他有關的教程操作,請往下滑)