Raspberry pico 使用 zephyr 進行開發

介紹

Zephyr是一個小型的即時作業系統,用於資源受限的嵌入式互聯裝置,支援多種體系並在Apache許可證 2.0下發行。它有一個BSD許可證的仿品出現在來自Intel的Arduino 101軟體資源包中。

來自:https://zh.wikipedia.org/zh-tw/Zephyr_(%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F)

可以專注在軟體開發,且在為來移植只需要在zephyr支持的清單中,可以快速進行開發平台的轉換,不用關注在HAL重新建構

當然ST,Nordic,ESP,Ti許多單片機都有支持.

環境安裝

  • 注意 如遭遇版本與本文內容有所差異,請參考Zephyr使用文檔.
  • Windows環境建置
  1. 安裝choco,主要用於安裝相依套件管理,類似ubuntu apt或是mac brew.Raspberry pico 使用 zephyr 進行開發(圖 1)圖一
  2. 以管理員身份打開cmd.exeRaspberry pico 使用 zephyr 進行開發(圖 2)
  3. 將圖一第二點命令貼上並運行安裝choco
  4. 使用choco安裝相依套件
choco feature enable -n allowGlobalConfirmation
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
choco install ninja gperf python git dtc-msys2 wget unzip
  1. 重新開啟cmd.exe不需要使用管理員身分
  2. 安裝python與python相依包(此處建議使用虛擬環境venv進行)
cd %HOMEPATH%
python -m venv zephyrproject\.venv
zephyrproject\.venv\Scripts\activate.bat

Raspberry pico 使用 zephyr 進行開發(圖 3) 注意 必須出現(.venv)才是在python的venv下面,才繼續進行後面步驟

  1. 安裝west
pip install west
  1. 使用west初始化Zephyr,並進行更新
west init zephyrproject
cd zephyrproject
west update
  1. 導出Cmake
west zephyr-export
  1. 使用pip安裝Zephry的requirements
pip install -r %HOMEPATH%\zephyrproject\zephyr\scripts\requirements.txt
  1. 安裝Zephyr SDK 於Home目錄下下載SDK(zephyr-sdk-0.15.2_windows-x86_64.zip)
cd %HOMEPATH%
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/zephyr-sdk-0.15.2_windows-x86_64.zip

解壓縮

unzip zephyr-sdk-0.15.2_windows-x86_64.zip

Raspberry pico 使用 zephyr 進行開發(圖 4)

  1. 配置Zephyr SDK的環境
cd zephyr-sdk-0.15.2
setup.cmd

到這步已經完成環境的安裝了,接下來建置Raspberry pico的Blinky的代碼

快速建構Blinky

Zephyr目錄結構

boards目前有支持的板子或是MCU Raspberry pico 使用 zephyr 進行開發(圖 5) 找到我們需要的板子 Raspberry pico 使用 zephyr 進行開發(圖 6) 可以找到{rpi_pico}這個資料夾 Raspberry pico 使用 zephyr 進行開發(圖 7) 今天的主角pico將

官方文件

https://docs.zephyrproject.org/latest/boards/arm/rpi_pico/doc/index.html

建構方式

cd %HOMEPATH%\zephyrproject\zephyr
west build -b rpi_pico samples/basic/blinky

沒錯,只要一行就可以完成編譯,並也貼心的建置zephyr.uf2檔案,uf2檔的路徑為(./zephyrproject\zephyr\build\zephyr) Raspberry pico 使用 zephyr 進行開發(圖 8)

此時可以插上pico

  1. 如果是第一次燒錄的pico插上會自動掛載一個磁碟出來 Raspberry pico 使用 zephyr 進行開發(圖 9) 將zephyr.uf2拖曳到pico裡面,板子自已就開始閃阿閃 Raspberry pico 使用 zephyr 進行開發(圖 10)
  2. 如果是之前有燒寫過的需要按著板子上BOOTSEL按鈕並且插上電,磁碟就會出現,在將zephyr.uf2放入即可.

修改Blinky內容

找到Zephyr所附上的範例所存放的位置 .\zephyrproject\zephyr\samples\basic\blinky\src Raspberry pico 使用 zephyr 進行開發(圖 11) 可以找到main.c文件,沒錯,程式碼就只有簡簡單單的這份! Raspberry pico 使用 zephyr 進行開發(圖 12) 將秒數從1000->100 Raspberry pico 使用 zephyr 進行開發(圖 13)

重新再跑一次

cd %HOMEPATH%\zephyrproject\zephyr
west build -b rpi_pico samples/basic/blinky

產出uf2檔後,老方法快速地把檔案拖曳進磁碟,即可完成

最後

針對Zephyr使用pico快速導入,如何從入門快速入土.

Zephyr不只支持pico..常見各家uC都有 Raspberry pico 使用 zephyr 進行開發(圖 14) 熱門的ST,Nordic,ESP32也是在其中的喔 Raspberry pico 使用 zephyr 進行開發(圖 15) Raspberry pico 使用 zephyr 進行開發(圖 16) Raspberry pico 使用 zephyr 進行開發(圖 17) 今天如果要把blinky轉換到ESP32上運行呢? west build -b <改為ESP32或是Nordci的板子>

因為之前有先編pico,可以添加-pristine參數避免報錯

cd %HOMEPATH%\zephyrproject\zephyr
west build -b esp32 samples/basic/blinky -pristine

Raspberry pico 使用 zephyr 進行開發(圖 18) 或是指定輸出的目錄即可.

簡簡單單的ESP32閃阿閃就完成拉,相同的代碼,直接可以在兩個不同平台上運行 Raspberry pico 使用 zephyr 進行開發(圖 19) Raspberry pico 使用 zephyr 進行開發(圖 20)

補充Nordic DK52

相同代碼不做修改直接編看看 Raspberry pico 使用 zephyr 進行開發(圖 21) 透過nRFConnect的Programmer燒寫hex Raspberry pico 使用 zephyr 進行開發(圖 22) Raspberry pico 使用 zephyr 進行開發(圖 23)

一樣順利OK!

換個方式 使用west flash進行

west flash --build-dir ../nrfbuild

../nrfbuild 為剛剛額外設定的輸出路徑 Raspberry pico 使用 zephyr 進行開發(圖 24) 這下連nrfConnect都不用開起來了


本文最初發布於 HackMD @BASHCAT。

沒有留言:

張貼留言

8GB 的 RK3588 能跑多聰明的 LLM?ROCK 5C 用 NPU 實測 5 個模型

先講結論,省得你滑到最後: 在一片 8GB 的 RK3588 板子上,用 NPU 跑得最聰明的是 Qwen3-4B-Instruct-2507,我出的 7 題全對,但每秒只吐 3.7 個 token。 想要順一點的對話體驗,Qwen3.5-2B 的 8.4 tok/s 是比...