跳到正文

Wiki

Linux環境搭建(舊)

約 11 分鐘閱讀

本文由簡體中文內容確定性轉換,並受版本化術語表保護。

(本教程为2024年1月创建的,可能与以后的版本有些出入)

1.需要準備的軟件

  1. CubeMX最新版

  2. VScode最新版

  3. vcpkg包管理工具

  4. pyOcd(如何安裝下方有教程)

  5. ST-Link驅動(如何安裝下方有教程)

2.vcpkg安裝與環境配置

  1. 下載依賴包
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential tar curl zip unzip
sudo apt-get install default-jre
  1. 克隆vcpkg倉庫

https://github.com/microsoft/vcpkg/tree/master

git clone https://github.com/microsoft/vcpkg.git
  1. 生成vcpkg程序
cd vcpkg
sudo chmod a+x ./bootstrap-vcpkg.sh
sudo ./bootstrap-vcpkg.sh
  1. 配置環境
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.工程生成與編譯器配置

  1. 方式一 :配置編譯器教程需要在Windows進行,在Linux上目前很難修改編譯器選項,可以參考下方Windows教程裏的生成工程並配置默認編譯器。(實質就是把編譯器從默認的AC5改成AC6)

  2. 方式二 :克隆已經生成好的模板(模板目前只有幾個常用型號的)

倉庫鏈接:

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即可

(下方還有其他有關的教程操作,請往下滑)