博客專欄

EEPW首頁 > 博客 > 如何在Linux環(huán)境下進行STM32開發(fā)?

如何在Linux環(huán)境下進行STM32開發(fā)?

發(fā)布人:美男子玩編程 時間:2025-02-14 來源:工程師 發(fā)布文章

來源于小伙伴提問。


圖片

以下是我的一些看法。


圖片


下面我詳細聊一下常見的開發(fā)流程,以及如何優(yōu)化你的現(xiàn)有流程。


工具鏈和開發(fā)環(huán)境

STM32CubeIDE 是 ST 官方提供的跨平臺 IDE,支持 Linux,可以直接安裝。

它整合了 Eclipse 和 GCC ARM 工具鏈,你可以在一個環(huán)境里完成開發(fā)、編譯和燒錄,非常適合 STM32 系列 MCU。

使用 ARM GCC 編譯器和 OpenOCD 燒錄工具也是不錯的選擇。

很多人選擇這種方式進行純命令行開發(fā),尤其適合 Linux 用戶。

你可以通過以下步驟設置環(huán)境,安裝 ARM GCC 工具鏈:


sudo apt install gcc-arm-none-eabi

安裝 OpenOCD 用于調(diào)試和燒錄:


sudo apt install openocd

VSCode + PlatformIO,這也是一套流行的開發(fā)環(huán)境,PlatformIO 可以輕松配置編譯工具鏈和調(diào)試器,支持豐富的 STM32 系列開發(fā)板。


STM32flash vs OpenOCD

STM32flash 是一個輕量級工具,用于通過串口(UART)燒錄程序,適合一些基礎的燒錄需求。

然而它的局限性在于并非所有 STM32 型號都能用 UART 模式燒錄。

某些 STM32 型號可能需要通過 SWD 或 JTAG 接口進行燒錄,特別是高性能的 STM32F4、STM32H7 系列。

這里有幾種解決方案:

  • 檢查是否支持串口燒錄: 確保你嘗試燒錄的 STM32 型號支持通過 UART 進行燒錄。如果你使用的芯片不支持 UART 燒錄,STM32flash 就無法工作。

  • 轉(zhuǎn)用 OpenOCD: 如果你的開發(fā)板或者芯片支持 SWD 接口,你可以使用 OpenOCD 進行燒錄。它支持的接口更豐富,兼容的芯片也更廣泛。配置 OpenOCD 需要一個硬件調(diào)試器(如 ST-Link),使用 SWD 或 JTAG 燒錄。

配置示例:

連接 ST-Link 調(diào)試器,運行以下命令:


openocd -f interface/stlink.cfg -f target/stm32f1x.cfg

在另一個終端中,使用 GDB 進行調(diào)試和燒錄:


arm-none-eabi-gdb main.elf target remote localhost:3333 load

如果你的 STM32 芯片支持 DFU(USB 設備固件升級),你可以嘗試使用 dfu-util 工具。

進入 DFU 模式:按住 BOOT0 引腳,并復位 MCU。

燒錄命令:


dfu-util -a 0 -s 0x08000000 -D firmware.bin


程序燒錄問題分析

針對你遇到的 STM32flash 無法燒錄某些單片機的問題,可能的原因有以下幾種:

  • 電平問題: 某些 STM32 芯片對 UART 電平要求比較嚴格,特別是 3.3V 和 5V 電平不匹配可能導致無法正常通信。你可以嘗試使用 USB 轉(zhuǎn) TTL 工具,確保電平匹配。

  • 啟動模式: 確保你的芯片在啟動時進入 Bootloader 模式(BOOT0 引腳需要拉高)。如果 MCU 直接啟動應用程序而非 Bootloader,STM32flash 可能無法正常通信。

  • 芯片鎖定問題: 某些芯片可能啟用了讀保護(RDP),你可以通過 STM32CubeProgrammer 或 OpenOCD 來解鎖該芯片,再嘗試重新燒錄。


優(yōu)化開發(fā)流程的建議

如果你已經(jīng)適應了 MDK 和 STM32flash 的方式,繼續(xù)用 Wine 也可以,但不如嘗試 STM32CubeIDE 或者 VSCode + PlatformIO,它們在 Linux 環(huán)境下會更順暢,調(diào)試和開發(fā)體驗也更好。

對于燒錄問題,考慮使用 SWD 或 JTAG 接口的工具(如 ST-Link),通過 OpenOCD 解決 STM32flash 不能支持的芯片。

這么做不僅提高了開發(fā)效率,還能幫你解決一些硬件上的燒錄局限問題。


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: Linux STM32

相關推薦

技術專區(qū)

關閉