Raspberry pico 使用 zephyr 進行開發

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.圖一
  2. 以管理員身份打開cmd.exe
  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

注意 必須出現(.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

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

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

快速建構Blinky

Zephyr目錄結構

boards目前有支持的板子或是MCU 找到我們需要的板子 可以找到{rpi_pico}這個資料夾 今天的主角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)

此時可以插上pico

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

修改Blinky內容

找到Zephyr所附上的範例所存放的位置 .\zephyrproject\zephyr\samples\basic\blinky\src 可以找到main.c文件,沒錯,程式碼就只有簡簡單單的這份! 將秒數從1000->100

重新再跑一次

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

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

最後

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

Zephyr不只支持pico..常見各家uC都有 熱門的ST,Nordic,ESP32也是在其中的喔 今天如果要把blinky轉換到ESP32上運行呢? west build -b <改為ESP32或是Nordci的板子>

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

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

或是指定輸出的目錄即可.

簡簡單單的ESP32閃阿閃就完成拉,相同的代碼,直接可以在兩個不同平台上運行

補充Nordic DK52

相同代碼不做修改直接編看看 透過nRFConnect的Programmer燒寫hex

一樣順利OK!

換個方式 使用west flash進行

west flash --build-dir ../nrfbuild

../nrfbuild 為剛剛額外設定的輸出路徑 這下連nrfConnect都不用開起來了


本文最初發布於 HackMD @BASHCAT

留言

這個網誌中的熱門文章

Arduino 課本可能沒教的事(1)

SI4432 搭配Arduino

燒錄 Arduino mini Pro 燒錄