Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ZephyrRTOSざっくり入門
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
soburi
December 14, 2024
Technology
1.3k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ZephyrRTOSざっくり入門
ざっくりと入門します。
soburi
December 14, 2024
More Decks by soburi
See All by soburi
Community Activities In Japan
tokitahiroshi
0
96
ZephyrでWASMを動かして起きる色々なこと
tokitahiroshi
0
220
OSSJ CFP提出反省会
tokitahiroshi
0
170
Zephyr RTOS Tutorial & MeetUp @ OSC2025Tokyo/Spring 駒澤大学種月館
tokitahiroshi
1
1.1k
ZephyrRTOSざっくり入門#2
tokitahiroshi
3
300
The_Features_of_ZephyrRTOS_and_the_project_operations.pdf
tokitahiroshi
1
120
KiCad 8.0 出ました。
tokitahiroshi
0
450
小江戸らぐ2024/2
tokitahiroshi
0
190
ZephyrRTOSで遊ぼう!
tokitahiroshi
0
820
Other Decks in Technology
See All in Technology
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
130
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
140
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
430
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
4
2.4k
脆弱性対応、どこで線を引くか
rymiyamoto
1
430
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3k
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
380
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
120
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
130
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
280
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.7k
インシデントレスポンス演習 I / Incident Response Exercise I
ks91
PRO
0
100
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
A designer walks into a library…
pauljervisheath
211
24k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
250
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Amusing Abliteration
ianozsvald
1
210
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
Transcript
ZephyrRTOS ざっくり入門 常田 裕士 秋葉原ロボット部 第147回勉強会 @ 秋葉原 ロボスタディオン
自己紹介 常田 裕士 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
Zephyrの概要 © 2024 Fujitsu Limited 3
Zephyrの特徴 オープンソースのリアルタイムOS ArduinoとかESP32など主に「Linux が動かない」領域 軽量 (メモリ/フットプリントが小さい)
BluetoothやMatterなど、IoTの分野に強 い メカの制御にも使える 対応しているSoC、開発ボードが非常に多 い POSIX対応をはじめとして多機能 OSとしてHALを定義している © 2024 Fujitsu Limited 4
Zephyros (en:Zephyr) 名前はギリシア神話の西風の神Zephyrosの英語読みから © 2024 Fujitsu Limited 5 この人が
ゼファー
誰がどこでZephyrを使ってる? #1 Google Chromebook の電源・ボタン制御 電源回りのハードウェアの インターフェースを統一して 汎用的に使えるようにしている。
メインのCPUでは動いていない。 システムのスキマを埋めている © 2024 Fujitsu Limited 6 メインのCPU Zephyrでデバイ スを制御してい る
誰がどこでZephyrを使ってる? #2 ZMK カスタマイズ性に優れた、自作キーボード向けのファームウェア。 Bluetoothのサポートに利用している。 © 2024
Fujitsu Limited 7
誰がどこでZephyrを使っ てる? #3 ロボット・宇宙開発 札幌のSpaceCubicsさんが、福島第一原発の 廃炉ロボット、CubeSat(超小型人工衛星)へ の利用を行っている。
ROS2と合わせて活用とのこと この方面だとZenohの通信プロトコルなども 注目。 © 2024 Fujitsu Limited 8
誰がどこで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
ネットワーク(Connectivity)が強い Bluetooth Bluetoothの「盟主」のNordic Semiconductorが精力的にコミット TCP/IP OSにインテグレートされて「第1級」のサポートとなっている点がLWIPよりも優位
Matter/OpenThread スマートホームもBluetooth同様手厚い ModBus FA系も通信規格もスコープに入っている。 CANBUS もちろん車載も © 2024 Fujitsu Limited 10
個人的に注目しているトピック XenのDOM-0/DOM-Dへの Zephyrの適用 Xenでドライバ機能を提供す るOSをLinuxからZephyrに差 し替える。 機能安全では、レビューに
よる検証が必要で、Linuxの 規模だと対応が難しいが Zephyrだと実現が視野に入 る。 RPi5のサポートに合わせて Xenの開発者が動きだしてい る。 © 2024 Fujitsu Limited 11
westコマンド © 2024 Fujitsu Limited 12 Zephyrの総合的なフロントエンドを提供するコマンド Zephyrの操作はほぼすべてこのコマンド経由で実行する
以前はcmake & ninjaを直接使っていたが、全部west経由に。 いまではZephyrの特徴の一つと言えるほどプロセスの中核に居 座っている GitHubのghコマンドやVueやflutterのコマンドなど、 Web系の文脈から見ると自然な導入に見える Zephyrは組み込みの文脈だけがルーツとなっていない!
DeviceTree DeviceTreeはZephyrを特徴づける最大の要素 「汎用RTOS」であるため、カーネルの基本機能で強い「色」はついていな い。 Linuxと違って、DeviceTreeを静的にコンパイルして組み込む。 組み込み用途で必要なフットプリント最小化と、
実装と構成の分離を同時に実現している。 このトレードとして、 大変煩雑なC言語のマクロの記述が必要になる このpros/consのトレードの判断こそが Zephyrを特徴づけている © 2024 Fujitsu Limited 13
Version 4.0.0 デバイスのAPI追加 コンパレーターAPIの追加。つまりコレ→ のAPI。 地味ながら、STM32とか持っているマイコンは 多い
ステッピングモーターAPI メカ回りに。 ハプティクス 体感系の諸々のデバイス向けの統合API マルチメディアサポート ESP32でのカメラのサポートなど + -
Zephyrをはじめる
今回はNucleoで 入手しやすい。(皆さん、部品箱探せば一つぐらいある?) USBケーブル1本で全部動く。 ツブシが利く。(Arduinoがサポートされているので、すで にArduinoで動作実績あるもののドライバ開発とかに便利) 16
Raspberry Pi Picoも安くておすすめ。 私がメンテナなので手前味噌ながら。 Pico2は現在レビュー進行中 Raspberry Pi
Debug Probeも用意する。 対応ボード一覧 https://docs.zephyrproject.org/latest/boards/index.html 17
Getting Started Guide https://docs.zephyrproject.org/latest/develop/getting_started/index.html これの手順をstep by stepで実行すれば「はじめの一歩」はクリアできる。
今回は、まずこれに従って環境構築、ビルド、実行、デバッグをやってみる。
環境設定(Windows) #1 Windowsの場合はWSLを使うのが便利。 コントロールパネル→プログラム→Windowsの機能の有効化または無効化 Windows StoreよりUbuntuをインストール
環境設定(Windows) #2 WSL USB Manager https://gitlab.com/alelec/wsl-usb-gui USBデバイスのWSL環境への
接続・切断を行う。 コマンドラインで行ってもいいが、 これがあると敷居がかなり低くなる
環境のセットアップ 素直に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
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
SDK(コンパイラ, etc)をインストール 引き続き、指示通りに このコマンド(west sdk)は私が作りました! これで、環境セットアップはおわり。 cd ~/zephyrproject/zephyr west
sdk install # ARMだけなら –t arm-zephyr-eabi を指定する
サンプルをビルドする Hello World サンプルは samples/hello_world にある。 以下のコマンドでビルドする (ボード名は環境に合わせる)
west build -p -b nucleo_h503rb samples/hello_world/
書き込みのための設定 デバッガをつかえるように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 [ターゲット] を実行
サンプルをビルドして書き込む ここで、WSL USB Managerを使って、WSL側に デバイスを接続する 焼き込み & 実行は以下のコマンド
コンソールで出力を確認 west flash –-runner=pyocd screen /dev/ttyACM0 115200 ST-Link Debugを右ク リック、「Attach to WSL」で接続する
他のサンプルを試してみる Lチカは samples/basic/blinky west build –p –b nucleo_f103rb samples/basic/blinky
west flash –-runner=pyocd
デバッグする デバッグもwestコマンドを叩くとコンソールのgdb が立ち上がる gdbの簡単なコマンド b: breakpoint を設定、b
mainのようにしてみる。 c: プログラムの実行を継続 s: ステップ実行 n: 次の行まで実行 west debug
まとめ ZephyrはオープンソースのRTOSで、NucleoやArduino, RaspberryPi Picoのよう なマイコンで使える。対応ボードはとても多い。 IoT向けの通信機能が充実しているが、メカの制御などの従来的な組み込み、 制御の用途にも使える。
westというコマンドで統一的な操作が行える。 ビルド、書き込み、デバッグなどの操作はwestコマンドで行える。 他のマイコンでも同じノウハウで扱える。 Arduinoの代替のようなイージーな用途でも十分にメリットがある。