【作業系統實驗】Zephyr 開發環境建置 & Hello World
前言
為什麼會寫這篇文章呢?首先是這學期(114-2)修習了蔡智強教授的【作業系統實驗】,第一堂課安裝環境似乎就有不少同學遇到問題,想說把我的安裝過程記錄一下。
再者,我上課的時候 Zephyr 的官方 Getting Started Guide 寫的 Python 版本要求是 3.10 以上,所以我當時就建了 3.10 的 virtual environment,結果過個幾天再上去看,文檔就變成 3.12 了…想說既然要重弄環境,就正好寫成部落格文章。
我其實也在思考所謂教學文要怎麼寫比較好,以往我的做法比較偏向是手把手教,但這樣會使文章過於冗長。而且毫無限度地往文章加入細節,也會增加我寫作的難度,到最後我也會懶得更新。
這篇文章會採用比較類似筆記的方式,把重點點出。如果其中某個步驟不太明白,可以把文章貼給 AI,通常應該可以得到解答。如果實際是無法解決,也歡迎在文章底下留言。
我們會安裝哪些工具?做什麼用的
- uv:Python 環境/套件管理工具,他有很多功能,今天主要是用它來創立 Python 虛擬環境(今天會根據文檔,創一個 3.12 版的虛擬環境)(詳細介紹請見地表最快的 Python 管理工具 uv!PDM、pipx 的功能一手包辦)
- winget:Windows 的套件管理工具,應該不少 Windows 11 的電腦有內置,沒內建的話可以上網搜尋一下怎麼在你的電腦中安裝 winget。
- git:版本控制工具,專案開發幾乎不可或缺的工具。不過今天我們不會手動使用 git 本身,而是會交由 west 來自動操作。
- west:Zephyr 官方的 Meta-tool(Meta tool 就是「元工具」的意思,也就是「用來管理其他工具」的工具),是作為一個 Python 套件發佈的,我們稍後會需要在 Python 環境中安裝它。它主要的功能是自動呼叫電腦中的 git,抓取數十甚至上百個 Zephyr 各個部件的程式碼、驅動,並且切換到正確的版本。
- Zephyr SDK:Zephyr 的開發套件,稍後
west sdk install會自動安裝。 - STM32CubeProgrammer:STMicroelectronics 提供的程式燒錄工具,用來將程式燒錄到 STM32 微控制器上。雖然我們不會手動使用,但
west flash指令會在背後用到它。所以還是要安裝。 - VS Code 及套件
- C/C++:VS Code 的 C/C++ 套件,用來提供 IntelliSense、Debug 等功能。
- Zephyr IDE (作者 mylonics)
- Serial Monitor (作者 Microsoft):要注意的是這插件是微軟獨佔的,所以如果你用的是 Cursor 或是 Antigravity 等用 VS Code 去分支修改的編譯器,可能裝不到這插件。
1. Windows Update
根據官方文檔,最好先去「設定」→「更新與安全性」→ Windows Update 檢查一下有沒有更新,把系統安裝到最新可以避免一些奇怪的驅動問題。
2. winget 相關
- 首先確保你的系統裡有 winget,你可以打開終端機輸入
winget --version來確認。如果正常輸出版本號,沒有報錯的話,代表你已經有裝 winget 了。 - 輸入以下指令以安裝包含 CMake、Ninja、gperf、Git、wget、7zip 這些重要的軟體。
winget install Kitware.CMake Ninja-build.Ninja oss-winget.gperf Git.Git oss-winget.dtc wget 7zip.7zip3. 安裝 STM32CubeProgrammer
建議直接到 ST 官網下載:連結。似乎需要登入才能下載,就註冊一下吧!下載安裝完放著就行。
4. uv/Python 相關
安裝 uv 工具,可以上網搜尋 uv 的安裝方法,或者參考地表最快的 Python 管理工具 uv!PDM、pipx 的功能一手包辦。
5. 重開機
重開機一下,我們剛剛安裝了很多軟體還有 uv 工具,重開機可以確保環境變數有正常被讀取到。
6. 敲指令時間!
以下假設 <PROJECT_PATH> 是你的專案資料夾路徑。比如講你在 D 槽創建了一個空白資料夾叫 my_project,則 <PROJECT_PATH> 就是 D:\my_project。
打開一個終端機(我這邊用的是 Powershell):
cd <PROJECT_PATH> # cd 到專案的空白資料夾內uv init --python 3.12 # 初始化 Python 環境uv add west # 安裝 west 套件
# 將 west 要用的環境準備好uv run west inituv run west updateuv run west zephyr-exportuv add -r zephyr/scripts/requirements.txt
# 安裝 Zephyr SDK## cd 到專案資料夾底下的 zephyr 資料夾cd <PROJECT_PATH>\zephyruv run west sdk install
# 試跑 hello-world 程式,一樣是在 zephyr 資料夾內輸入## 編譯,記得要把板子插上電腦### 指令:uv run west build -p always -b <版子的型號> <要編譯的程式路徑>### 這堂課的板子用的是 b_l4s5i_iot01auv run west build -p always -b b_l4s5i_iot01a samples\hello_world
## 刷機uv run west flash7. 打開 VS Code,按下 Ctrl + `
你應該會看到一個終端機的視窗出現在下方,像這樣:

切換到「連接埠」(或者你是英文介面的話,叫 Serial Monitor),就可以設定為板子連接的 COM 接口,看看板子的輸出了!