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
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
450
小江戸らぐ2024/2
tokitahiroshi
0
190
Other Decks in Technology
See All in Technology
AI時代の闇と光
tatsuya1970
0
110
実践!既存 Project への AI-Driven Development 適用〜 一ヶ月で Project 唯一のフロントエンドエンジニアを作り出せ〜
lycorptech_jp
PRO
0
250
シンガポールで登壇してきます
yama3133
0
250
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
SRE Next 2026 何でも屋からの脱却
bto
0
1k
マルチアカウント環境でSecurity Hubの運用、その後どうなった? / SRE NEXT 2026 miniLT会
genda
0
110
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
3
300
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
0
240
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
290
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
180
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
260
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
440
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
990
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
We Have a Design System, Now What?
morganepeng
55
8.2k
GraphQLとの向き合い方2022年版
quramy
50
15k
Between Models and Reality
mayunak
4
370
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
How STYLIGHT went responsive
nonsquared
100
6.2k
Designing for humans not robots
tammielis
254
26k
Git: the NoSQL Database
bkeepers
PRO
432
67k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Building AI with AI
inesmontani
PRO
1
1.1k
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