在一開始學習韌體開發 arm Cortex MCU 時,可能會遇到要選擇哪一個 IDE 來開發的問題,STM32 官網列出了許多可以搭配的 IDE。其中 KEIL ARM MDK(µVision) 可以免費用來開發 STM32 F0 series,但是開發其他廠牌就要有另外的付費 License,且沒有 MacOSX 版本。當之後更換 MCU 廠牌時,就要面臨重新學習其他 IDE 的問題,例如切換到 Microchip SAMD 系列就要使用 Atmel Studio IDE 開發。
有沒有一個開發 ARM MCU 通用的跨平台 IDE?這篇文章將教導如何安裝 Eclipse 來開發,以及如何搭配 STM32CubeMX、Atmel Start、Arduino library 使開發流程更為簡便。
Eclipse IDE 是 open source 的,有許多社群將它應用至許多程式語言的開發,包含開發各廠牌的 ARM MCU,也是跨作業系統的 IDE,所以很適合跨平台使用。
(註:另外也有人使用 VScode 或 Sublime Text 2,但是配合 ARM 的開發插件沒 Eclipse 那麼齊全,設定起來較為麻煩,有興趣的可以上網找找相關資源。)
安裝 Eclipse IDE for C/C++ Developers
目前有幾種 Eclipse IDE for ARM 開發:(一)原生 Eclipse(二)GNU MCU Eclipse(三)System Workbench for STM32 (Ac6 SW4STM32)。
第一種安裝流程比較複雜,但是也能安裝到較新的插件;第二種是有包含 MCU plugins 和 GNU ARM Toolchain,但是 Toolchain 版本還要再更新,所以比較不推薦;第三種使用的 Toolchain (Ac6 STM32 MCU GCC) 可以直接配合 ST 官方配置器 STM32CubeMX 來開發 STM32 MCU,使用上較方便,但是若要開發其他 ARM MCU 也是需要安裝 GNU ARM Toolchain。
(ㄧ)原生 Eclipse
到 Eclipse 選擇 IDE for C/C++ 版本下載並安裝,再手動安裝 GNU ARM plugins。
安裝好要啟動 Eclipse 可能會要求安裝 Java Development Kit (JDK) 1.8 以上版本,必須是安裝 JDK 而不是 JRE (Java Runtime Enviromnet)。
(註:網路上有人說安裝 JRE 就可以,但是命令列打 java -v
卻沒有變更至 1.8 以上版本,開啟 Eclipse 時會出現版本過舊的錯誤訊息)
接下來安裝開發ARM所需要的plugin,第一種是開發 STM32 的 Toolchain,可以搭配 STM32CubeMX 設置 MCU。第二種是泛ARM都可以使用的,開啟 Eclipse》Help》Install New Software
,Work with 新增
a. Ac6 SW4STM32 plugin
System Workbench for STM32 - Bare Machine edition - http://ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.update-site-v2
,勾選下方全部 Tools 按 Install。
b. GNU ARM Eclipse plugin
GNU MCU Eclipse Plug-ins - http://gnu-mcu-eclipse.netlify.com/v4-neon-updates
,勾選下方全部 Tools 按 Install。
(二)GNU MCU Eclipse
到 GNU MCU Eclipse 安裝包含 GNU ARM plugins 版本的 Eclipse IDE。(不推薦,因為 pluging/toolchain 還要更新至新版)
(三)System Workbench for STM32 (Ac6 SW4STM32)
到Ac6 SW4STM32下載對應作業系統的安裝檔,參考安裝流程。MacOSX 在終端機輸入 sudo bash ./install_sw4stm32_macos_64bits-v2.4.run -f
下載 Toolchain
安裝好 plugins 後,需要 toolchain(裡面包含 GCC for ARM) 才能 compile,以及需要 OpenOCD 作為 IDE 與 debug tool 的連接工具。到 arm GNU Arm Embedded Toolchain 以及 OpenOCD 下載對應檔案,安裝/解壓縮至任一資料夾。在Eclipse》Preferences
搜尋 Tool
及OpenOCD
分頁,在 Global Tools Paths 欄位
設定為各自解壓縮資料夾\bin
路徑。
安裝 MCU packs
MCU Packs 是用來告訴 Compiler 使用的 Device 記憶體資訊,之後在 Project Properties》C/C++ Build》Settings》Devices
選擇 MCU 型號,就可以得知記憶體區塊大小、位置資訊。
安裝方式:打開 Eclipse》Windows》Perspective》Open Perspective》Other》Pack
,點選右上方 Update the packages definition from all repo
,需等待一段時間才能安裝完成。
到此安裝已經完成,接下來可以新增專案,測試能否燒錄及偵錯。
新增 Hello ARM 專案
設定 OpenOCD
設定 Debugger
(可選)設定 Eclipse IDE 為 Arduino 開發環境
Eclipse 也可以新增插件作為 Arduino 的開發環境,在 Eclipse》Help》Eclipse Marketplace
搜尋 Sloeber
,安裝此插件。工具列就會多出 Arduino 的功能。
接下來需要像 Arduino IDE 裡面一樣新增開發板資源,在菜單 Arduino》Preferences》Arduino》Platforms and Boards
清單中勾選手上的開發板,按下 Apply 下載。
安裝好之後,透過 Arduino》New Sketch
就可以新增 Arduino 專案,選擇對應的開發板型號,以及 usb port 就完成專案設定。
接下來在 project name.ino
撰寫程式碼即可。
接下來這部分只適用於開發 STM32 系列使用
(可選)使用 STM32CubeMX 開發
(可選)安裝 STM32CubeProgrammer
ST 推出了視覺化燒錄工具 STM32CubeProgrammer,可以簡易地燒錄/讀取 MCU 韌體,但並不一定需要此工具才能燒錄,有需要再安裝即可。
這裡記錄一下 MacOSX 安裝過程中有一些技巧:將下載的檔案 en.stm32cubeprog.zip 解壓縮後,在 SetupSTM32CubeProgrammer-1.0.0.app 資料夾下執行以下命令,才能正常安裝
sudo JAVA_HOME=$(/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8") ./SetupSTM32CubeProgrammer-1.0.0.app/Contents/MacOs/SetupSTM32CubeProgrammer-1_0_0_macos
《參考資源》
STM32
[STM32] 使用 Eclipse + GCC ARM 在 WIN7 建立 STM32 開發環境
Build STM32 applications with Eclipse, GCC and STM32Cube
Setting up a GCC/Eclipse toolchain for STM32Nucleo
Importing a STCubeMX generated projectAtmel SAMD
Advanced Software Framework (ASF)
Arduino
Program Your Arduino Like a Pro with the Eclipse C/C++ IDE
Microcontroller programming 101: Eclipse
APP-ESS17-2開發版試用 (執行 Arduion )