Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ZephyrRTOSざっくり入門
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
soburi
December 14, 2024
Technology
1.5k
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
120
ZephyrでWASMを動かして起きる色々なこと
tokitahiroshi
0
260
OSSJ CFP提出反省会
tokitahiroshi
0
200
Zephyr RTOS Tutorial & MeetUp @ OSC2025Tokyo/Spring 駒澤大学種月館
tokitahiroshi
1
1.2k
ZephyrRTOSざっくり入門#2
tokitahiroshi
3
350
The_Features_of_ZephyrRTOS_and_the_project_operations.pdf
tokitahiroshi
1
150
KiCad 8.0 出ました。
tokitahiroshi
0
470
小江戸らぐ2024/2
tokitahiroshi
0
220
ZephyrRTOSで遊ぼう!
tokitahiroshi
0
860
Other Decks in Technology
See All in Technology
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
3
560
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
30
17k
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.8k
2026_devsumi_ozono.pdf
o3
3
530
品質と信頼性を地続きにする
grimoh
2
820
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
350
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
130
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
10
4.3k
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
110
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
210
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
180
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Technical Leadership for Architectural Decision Making
baasie
3
570
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
460
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
The browser strikes back
jonoalderson
0
1.7k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Typedesign – Prime Four
hannesfritz
42
3.2k
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の代替のようなイージーな用途でも十分にメリットがある。