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
soburi
October 04, 2023
Technology
820
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
96
ZephyrでWASMを動かして起きる色々なこと
tokitahiroshi
0
220
OSSJ CFP提出反省会
tokitahiroshi
0
170
Zephyr RTOS Tutorial & MeetUp @ OSC2025Tokyo/Spring 駒澤大学種月館
tokitahiroshi
1
1.1k
ZephyrRTOSざっくり入門
tokitahiroshi
4
1.3k
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
Other Decks in Technology
See All in Technology
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
120
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.7k
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.1k
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
140
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
130
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
180
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
110
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
170
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
160
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
160
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Accessibility Awareness
sabderemane
1
140
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
430
Why Our Code Smells
bkeepers
PRO
340
58k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
Documentation Writing (for coders)
carmenintech
77
5.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
Facilitating Awesome Meetings
lara
57
7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
150
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