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
850
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
120
ZephyrでWASMを動かして起きる色々なこと
tokitahiroshi
0
250
OSSJ CFP提出反省会
tokitahiroshi
0
200
Zephyr RTOS Tutorial & MeetUp @ OSC2025Tokyo/Spring 駒澤大学種月館
tokitahiroshi
1
1.2k
ZephyrRTOSざっくり入門
tokitahiroshi
4
1.4k
ZephyrRTOSざっくり入門#2
tokitahiroshi
3
340
The_Features_of_ZephyrRTOS_and_the_project_operations.pdf
tokitahiroshi
1
140
KiCad 8.0 出ました。
tokitahiroshi
0
460
小江戸らぐ2024/2
tokitahiroshi
0
220
Other Decks in Technology
See All in Technology
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
460
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
1
360
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
0
200
Introduction to Bill One Development Engineer
sansan33
PRO
0
480
GopherCon @シアトル に行ってきました
logica0419
0
430
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
Distributed Transactions Under Fire: Building a Zero-Oversell Flash Sale Platform with Amazon Aurora DSQL
yama3133
1
110
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
120
Digital Credentials API × OpenID4VP ブラウザ完結型本人確認の実装知見(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
340
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
340
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
We Have a Design System, Now What?
morganepeng
55
8.3k
The Spectacular Lies of Maps
axbom
PRO
1
950
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Navigating Weather and Climate Data
rabernat
0
490
Why Our Code Smells
bkeepers
PRO
340
58k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
430
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