Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ZephyrRTOSざっくり入門

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for soburi soburi
December 14, 2024

 ZephyrRTOSざっくり入門

ざっくりと入門します。

Avatar for soburi

soburi

December 14, 2024
Tweet

More Decks by soburi

Other Decks in Technology

Transcript

  1. 自己紹介  常田 裕士  1978年生まれ  2001年日本大学理工学部物理学科卒業、 同年、株式会社富士通プログラム技研入社、現在富士通に所属 携帯電話、車載機開発を経て現在は組み込みLinuxサポートを担当

     2018年よりZephyrRTOSへのコミットを始める。 現在Renesas RA、RaspberryPi Pico, GD32, LED Stripのメンテナ/副メンテナを担当  掲載記事等  トランジスタ技術 2024年 9月号 (今月号!) オリジナルArduino互換! KiCadプリント基板作り入門  インターフェース 2021年 6月号 第2特集 C/C++でPython拡張 第1部 ハードウェア効率化…C/C++で拡張モジュール作り  https://www.slideshare.net/slideshow/kicad-53622272/53622272 これ見てくれた方も居られるかも? © 2024 Fujitsu Limited 2
  2. Zephyrの特徴  オープンソースのリアルタイムOS  ArduinoとかESP32など主に「Linux が動かない」領域  軽量 (メモリ/フットプリントが小さい) 

    BluetoothやMatterなど、IoTの分野に強 い  メカの制御にも使える  対応しているSoC、開発ボードが非常に多 い  POSIX対応をはじめとして多機能  OSとしてHALを定義している © 2024 Fujitsu Limited 4
  3. 誰がどこでZephyrを使ってる? #1  Google Chromebook の電源・ボタン制御  電源回りのハードウェアの インターフェースを統一して 汎用的に使えるようにしている。

     メインのCPUでは動いていない。  システムのスキマを埋めている © 2024 Fujitsu Limited 6 メインのCPU Zephyrでデバイ スを制御してい る
  4. 誰がどこでZephyr を使ってる? #4  電子工作  Mbed OSがEOLとなるため、 Zephyrへ移行する。 The

    end of Mbed marks a new beginning for Arduino | Arduino Blog  実はZephyr向けのArduino API実装は元コンセプトと 現実装の半分くらいを私が 作成している。(その後、 Google Summer of codeで 進めてもらっている) © 2024 Fujitsu Limited 9
  5. ネットワーク(Connectivity)が強い  Bluetooth  Bluetoothの「盟主」のNordic Semiconductorが精力的にコミット  TCP/IP  OSにインテグレートされて「第1級」のサポートとなっている点がLWIPよりも優位

     Matter/OpenThread  スマートホームもBluetooth同様手厚い  ModBus  FA系も通信規格もスコープに入っている。  CANBUS  もちろん車載も © 2024 Fujitsu Limited 10
  6. 個人的に注目しているトピック  XenのDOM-0/DOM-Dへの Zephyrの適用  Xenでドライバ機能を提供す るOSをLinuxからZephyrに差 し替える。  機能安全では、レビューに

    よる検証が必要で、Linuxの 規模だと対応が難しいが Zephyrだと実現が視野に入 る。  RPi5のサポートに合わせて Xenの開発者が動きだしてい る。 © 2024 Fujitsu Limited 11
  7. westコマンド © 2024 Fujitsu Limited 12  Zephyrの総合的なフロントエンドを提供するコマンド  Zephyrの操作はほぼすべてこのコマンド経由で実行する

     以前はcmake & ninjaを直接使っていたが、全部west経由に。  いまではZephyrの特徴の一つと言えるほどプロセスの中核に居 座っている  GitHubのghコマンドやVueやflutterのコマンドなど、 Web系の文脈から見ると自然な導入に見える  Zephyrは組み込みの文脈だけがルーツとなっていない!
  8. DeviceTree  DeviceTreeはZephyrを特徴づける最大の要素  「汎用RTOS」であるため、カーネルの基本機能で強い「色」はついていな い。  Linuxと違って、DeviceTreeを静的にコンパイルして組み込む。  組み込み用途で必要なフットプリント最小化と、

    実装と構成の分離を同時に実現している。  このトレードとして、 大変煩雑なC言語のマクロの記述が必要になる  このpros/consのトレードの判断こそが Zephyrを特徴づけている © 2024 Fujitsu Limited 13
  9. Version 4.0.0  デバイスのAPI追加  コンパレーターAPIの追加。つまりコレ→ のAPI。  地味ながら、STM32とか持っているマイコンは 多い

     ステッピングモーターAPI  メカ回りに。  ハプティクス  体感系の諸々のデバイス向けの統合API  マルチメディアサポート  ESP32でのカメラのサポートなど + -
  10. Raspberry Pi Picoも安くておすすめ。  私がメンテナなので手前味噌ながら。  Pico2は現在レビュー進行中  Raspberry Pi

    Debug Probeも用意する。  対応ボード一覧 https://docs.zephyrproject.org/latest/boards/index.html 17
  11. 環境設定(Windows) #2  WSL USB Manager  https://gitlab.com/alelec/wsl-usb-gui  USBデバイスのWSL環境への

    接続・切断を行う。  コマンドラインで行ってもいいが、 これがあると敷居がかなり低くなる
  12. 環境のセットアップ  素直にGetting Started Guideに乗っかってaptの更新 sudo apt update sudo apt

    upgrade sudo apt install --no-install-recommends git cmake ninja-build gperf ¥ ccache dfu-util device-tree-compiler wget ¥ python3-dev python3-pip python3-setuptools python3-tk ¥ python3-wheel xz-utils file ¥ make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 python3-venv
  13. Python仮想環境のセットアップ  これも指示通りに python3 –m venv ~/zephyrproject/.venv # venvを作成 source

    ~/zephyrproject/.venv/bin/activate # アクティベート pip install west # Zephyrの万能ナイフのwestコマンドをインストール west init ~/zephyrproject # zephyrのリポジトリをcloneする cd ~/zephyrproject west update # DL量を減らす場合はmanifestファイルを用意する west zephyr-export # Cmakeの設定 # pythonのモジュールのインストール pip install -r ~/zephyrproject/zephyr/scripts/requirements.txt
  14. 書き込みのための設定  デバッガをつかえるようにudevのルールを追加  wget https://raw.githubusercontent.com/openocd- org/openocd/refs/heads/master/contrib/60-openocd.rules  sudo cp

    60-openocd.rules /etc/udev/rules.d/  sudo udevadm control --reload-rules  つなぎ直す。  pyocdのプラグインを追加  boards/[使用しているボード]/board.cmake の board_runner_args(pyocd –target=”…”) で指定されているターゲットを確認  pyocd pack install [ターゲット] を実行
  15. サンプルをビルドして書き込む  ここで、WSL USB Managerを使って、WSL側に デバイスを接続する  焼き込み & 実行は以下のコマンド

     コンソールで出力を確認 west flash –-runner=pyocd screen /dev/ttyACM0 115200 ST-Link Debugを右ク リック、「Attach to WSL」で接続する
  16. デバッグする  デバッグもwestコマンドを叩くとコンソールのgdb が立ち上がる  gdbの簡単なコマンド  b: breakpoint を設定、b

    mainのようにしてみる。  c: プログラムの実行を継続  s: ステップ実行  n: 次の行まで実行 west debug
  17. まとめ  ZephyrはオープンソースのRTOSで、NucleoやArduino, RaspberryPi Picoのよう なマイコンで使える。対応ボードはとても多い。  IoT向けの通信機能が充実しているが、メカの制御などの従来的な組み込み、 制御の用途にも使える。 

    westというコマンドで統一的な操作が行える。  ビルド、書き込み、デバッグなどの操作はwestコマンドで行える。 他のマイコンでも同じノウハウで扱える。  Arduinoの代替のようなイージーな用途でも十分にメリットがある。