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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
soburi
October 04, 2023
Technology
830
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ZephyrRTOSで遊ぼう!
soburi
October 04, 2023
More Decks by soburi
See All by soburi
Community Activities In Japan
tokitahiroshi
0
110
ZephyrでWASMを動かして起きる色々なこと
tokitahiroshi
0
240
OSSJ CFP提出反省会
tokitahiroshi
0
190
Zephyr RTOS Tutorial & MeetUp @ OSC2025Tokyo/Spring 駒澤大学種月館
tokitahiroshi
1
1.1k
ZephyrRTOSざっくり入門
tokitahiroshi
4
1.3k
ZephyrRTOSざっくり入門#2
tokitahiroshi
3
310
The_Features_of_ZephyrRTOS_and_the_project_operations.pdf
tokitahiroshi
1
130
KiCad 8.0 出ました。
tokitahiroshi
0
460
小江戸らぐ2024/2
tokitahiroshi
0
200
Other Decks in Technology
See All in Technology
CTOキーノート:AI時代の「つなぐ」を再定義 ― 真のIoTとリアルワールドAI【SORACOM Discovery 2026】
soracom
PRO
0
300
「待ち時間」の消滅と「自我消耗」の加速:生成AI時代のエンジニアを救うメンタル・リソース管理
poropinai1966
0
300
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
250
信頼できるテスティングAIをどう育てるか?
odan611
0
150
MCPをつなげて作る組織横断のAIエージェント基盤
tsubakimoto_s
0
260
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
1.5k
カメラ×AIで挑む「ホワイト物流」― 車両管理、自動化の壁と突破口【SORACOM Discovery 2026】
soracom
PRO
0
180
QAタスクをスキル化したいときに考えること
aomoriringo
0
120
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
0
200
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
160
データ活用研修 データマネジメント【MIXI 26新卒技術研修】
mixi_engineers
PRO
4
740
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
29
24k
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
The Limits of Empathy - UXLibs8
cassininazir
1
560
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
190
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
640
Odyssey Design
rkendrick25
PRO
2
740
Claude Code のすすめ
schroneko
67
230k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
670
The Pragmatic Product Professional
lauravandoore
37
7.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
Transcript
ZephyrRTOSで遊ぼう! 富士通株式会社 インフラストラクチャシステム事業本部 データセンタ事業部 Linuxアプライアンス技術部 常田 裕士 2023/9/29 Japan Technical
jamboree EPII Session#1 © 2023 Fujitsu Limited 1
自己紹介 ⚫常田 裕士 ⚫富士通で組み込みLinuxの開発をやっています。 昔は携帯電話(Feature Phone、いわゆる「ガラケー」)、 今はカーナビ関連(車載Linuxサポートなど) ⚫KiCadで雑に基板を作るチュートリアル (v6.0予習版) https://speakerdeck.com/tokitahiroshi/kicaddeza-niji-ban-wozuo-
rutiyutoriaru-ver6-dot-x-yu-xi-ban ⚫インターフェース誌 2022年6月号 第2特集 C/C++でPython拡張 第1部 ハードウェア効率化…C/C++で拡張モジュール作り https://interface.cqpub.co.jp/magazine/202106/ © 2023 Fujitsu Limited 2
本日のアウトライン ⚫ZephyrRTOSについて ⚫ZephyrRTOSを動かしてみる ⚫ZephyrRTOSのLinuxっぽいところ ⚫学び © 2023 Fujitsu Limited 3
ZephyrRTOSについて © 2023 Fujitsu Limited 4
ZephyrRTOS ⚫ LinuxFoundationが開発を推進している組み込み向け のRTOS。 もともとはWindRiverが作っていた。(素性が良い。) ⚫ LinuxからKconfigとDeviceTreeの仕組みを借りてきて いる。 他にもいろいろLinuxにAPIなどは似せようとしている。 ⚫
POSIX互換レイヤーもある。 ⚫ 「組み込み用のLinux」と言っても当たらずとも遠から じ、みたいな雰囲気。 ⚫ 最近はNordic Semiconductorさんが自社の開発環境に 組み込んで開発を推進している。(自社製品のメインの 開発環境にしている) 画像は https://ja.wikipedia.org/wiki /Zephyr_(オペレーティングシ ステム) より © 2023 Fujitsu Limited 5
成長中 ⚫ ソースコード公開してから順調にソースもコミュニティも成 長している。 ⚫ 海外での注目度に比べて、国内でのプレゼンスが低い感じは する。 ⚫ 最近は車載系向けの機能安全やMISRA-C準拠も進んでいる。 (グラフはhttps://openhub.net/p/zephyrprojectより)
© 2023 Fujitsu Limited 6
Zephyrの主要スポンサー ⚫プラットフォーム企業、半導 体ベンダーを中心に豪華メン バーが集まっている。 ⚫ (画像はhttps://www.zephyrproject.org/project- members/より © 2023 Fujitsu
Limited 7
ZephyrとChromebook ⚫ChromebookのIO制御回り にZephyrが使われている ⚫実はこれもOSSで Chromebook EC(Embedded Controller) としてソース公開されている ⚫おそらくは一番エンドユー ザー利用数の多いZephyrの
利用事例 ⚫ ChromeOS's Embedded Controller - Zephyr Project © 2023 Fujitsu Limited 8
ZephyrとXen ⚫ Xenの特権ドメイン(Dom-0)に Zephyrを使おうという動きがある。 ⚫ 通常はLinuxを使うが、機能安全認 証を目指したときにソースが大き すぎて大変、よりコンパクトな仕 組みでVirtualizationができる環境 を作りたい、という流れ。
⚫ LinuxFoundation関連では、 Zephyr/Xen/Elisaが機能安全の文 脈で相互に連携する動きがある。 ⚫ https://wiki.xenproject.org/wiki/Xe n_ARM_with_Virtualization_Extensi ons_whitepaper © 2023 Fujitsu Limited 9
Zephyrについてちょっとした雑感 ⚫ コミュニティはEU圏中心。何よりNordic semiconductorが強力にコミット。 ⚫ 東欧圏も多い。宇露戦争の報道で聞くポーランドの街もgithubのプロフで見かけ る。 ⚫ STのLeMansの拠点がコミット多くて、24耐のイメージから車載頑張ってそうな 印象。
⚫ 米国はIntelが中心。Google/Metaの人も主力コミッタに。 ⚫ コミュニケーションはGithub/Discordが多い。この辺は若手入りやすそうな印象。 ⚫ 日本/アジア圏は少なめ。Githubで簡単にPR出せるのでみんなやろう。 © 2023 Fujitsu Limited 10
ZephyrRTOSを動かしてみる © 2023 Fujitsu Limited 11
Cooking Recipe 1. ボードとデバッガを用意する 2. コンパイラをインストールする 3. West コマンドを用意する 4.
ビルドする 5. ファームを焼く/デバッグする © 2023 Fujitsu Limited 12
サポートしているボード ⚫現在500種類以上のボードをサポート ⚫スポンサーとなっているNordicSemi, NXP, STのボードが比較的充実している。 ⚫廉価に入手できるRaspberry Pi Picoもサポート ⚫コミュニティベースのサポートのため、動きは若干ゆっくり (私がやってます)
⚫最近中国で色々出ている廉価なRISC-Vチップも ⚫M5Stamp C3 などで使っている Espressif ESP32-C3 ⚫第一世代の Chinese RISC-V ChipのGigaDevice GD32V (私がやりました) © 2023 Fujitsu Limited 13
Westコマンド ⚫Pythonのpipでインストールできるzephyrの万能ナイフコマンド ⚫Zephry=Zephyros(ギリシャ語の西風)なのでwest. ⚫GitHubのghのように、最近のクラウドを意識したコマンドライン のフロントエンド。 # こんな感じで打つとビルドができる。 mkdir newproj; cd
newproj python3 –m venv .venv # 最近のubunutはvenv必須… source .venv/bin/activate # venv有効化 pip3 install west # westをインストール west init # zephyrの初期化。 west update # 関連リポジトリのDL。とても大きい… west build –b rpi_pico samples/hello_world # -bでボードを指定する © 2023 Fujitsu Limited 14
West flash/debug ⚫Zephyrではどのボードでも west flash のコマンドでファームの書 き込み、west debugでgdbによるデバッグが行える。 ⚫どのボードでも使い方が統一されているので、 「JTAGのデバッガをつなぐのに3日かかった!」
ような不幸な事故を撲滅 # どんなボードでも共通でflash/debugできる west flash # ファームの焼きこみ west debug # gdbでデバッグ © 2023 Fujitsu Limited 15
Hello World! を見てみる #include <stdio.h> int main(void) { printf("Hello World!
%s¥n", CONFIG_BOARD); return 0; } ⚫純粋なHello worldが使えるので、組み込み固有のノウハウを持っ ていなくてもスタートできる。 ⚫Lチカではなくhello worldが1st step。 組み込みというよりもLinux寄りの文化性がある。 © 2023 Fujitsu Limited 16
Lチカを見てみる int main(void) { gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE); while (1) { gpio_pin_toggle_dt(&led);
k_msleep(SLEEP_TIME_MS); } return 0; } ⚫だいたいArduinoを使う感覚で使える。 ⚫DeviceTree, Kconfigの設定が見えてしまうと若干お作法が必要。 © 2023 Fujitsu Limited 17
ZephyrRTOSのLinuxっぽいところ © 2023 Fujitsu Limited 18
ZephyrRTOS=組み込み向けLinux? ⚫ZephyrRTOSではLinuxに強く影響を受けた仕組みが色々ある。 ⚫printk をはじめ、関数、APIの名前が同じ、もしくは「それっぽい」 ⚫Kconfigがある。(MakefileはCmakeに変わっている) ⚫DeviceTreeがある。 ⚫ユースケースとしては、昔のucLinuxに近い?! ⚫メモリ管理なしだが、TCP/IPを使いたい。 © 2023
Fujitsu Limited 19
DeviceTreeとソースコードとの連携 ⚫ DeviceTreeはもともとLinuxの仕組み。 ⚫ARMの無秩序なパッチが多くて、Linus氏がブチ切れて導入された…と記憶 ⚫https://srad.jp/story/11/06/22/0911201/ ⚫ デバイスの依存関係を専用の言語で記述して、実行時に解決する仕組み。 ⚫依存性注入の手法。結果、ドライバとデバイスが依存しなくなる。 ⚫ ZephyrRTOSでは、DeviceTreeはビルド時にC言語のマクロとして展開さ
れる。 ⚫ RTOSの場合、メモリはstaticに確保するのが原則。(mallocが無いかもし れない) マクロに展開されたDeviceTreeの情報を使って、デバイス毎のデータ領域 を静的に確保するのがZephyrのドライバのお作法。 ⚫ここだけ抑えれば、ドライバはただの関数の集まり。 © 2023 Fujitsu Limited 20
DeviceTreeからマクロが生成される ⚫ Zephyrのビルドの過程で DeviceTreeのファイルから devicetree_unfixed.hのヘッ ダファイルを生成する ⚫ 専用のマクロ群で簡単に扱え るようになっている。 ⚫
マクロ自体は複雑。 エラー出るとデバッグは面倒。 dts/riscv/gigadevice/gd32vf103.dtsi から抜粋、編集 / { soc { usart0: serial@40013800 { compatible = "gd,gd32-usart"; reg = <0x40013800 0x400>; interrupts = <56 0>; interrupt-parent = <&eclic>; rcu-periph-clock = <0x60e>; status = “okay"; label = "UART_0"; }; usart1: serial@40004400 { compatible = "gd,gd32-usart"; … 生成された devicetree_unfixed.h #define DT_N_S_soc_S_serial_40013800_PATH "/soc/serial@40013800" #define DT_N_S_soc_S_serial_40013800_FULL_NAME "serial@40013800" #define DT_N_S_soc_S_serial_40013800_PARENT DT_N_S_soc #define DT_N_S_soc_S_serial_40013800_CHILD_IDX 3 … © 2023 Fujitsu Limited 21
デモ © 2023 Fujitsu Limited 22
デモ ⚫ 自作の評価ボードもってきました。 ⚫ 現在レビュー中のPullRequestのデ モ(動作確認?)を後ろで動かして ます。 ⚫ RPI PICO
のPIOを使ったWS2812点灯 ⚫ SH1107 OLEDドライバのモジュール ⚫ U8g2のZephyr移植 © 2023 Fujitsu Limited 23
Arduino UNO R4 対応 ⚫ 現在鋭意開発中! ⚫ こちらも後ろでLチカのデモします ⚫ RenesasさんのR-Carは
Zephyrではフランスの iot.bzhさんが色々 コミットされてます。 ⚫ これが通るとたくさんドライバ コミットできますw 興味ある人はコミットしよう! © 2023 Fujitsu Limited 24
© 2023 Fujitsu Limited Thank you