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
RTCドライバから学ぶLinuxカーネルについて
Search
nekomatu
April 23, 2021
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RTCドライバから学ぶLinuxカーネルについて
解説動画
RTCドライバから学ぶLinuxカーネルについて
https://youtu.be/oHUA7KMRhgw
nekomatu
April 23, 2021
More Decks by nekomatu
See All by nekomatu
Ethereum_.pdf
nekomatu
0
830
Web3 (DAO) from the perspective of the history of Open Source Software
nekomatu
0
240
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
270
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
610
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
8.1k
Other Decks in Technology
See All in Technology
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
420
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
1
330
新しい SLO が良い感じにハマっている話
z63d
4
2.1k
サイバー捜査員研修(前半)
nomizone
1
1.6k
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
140
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
210
名古屋の市バスGTFS-JPデータ×スガキヤ 最寄りバス停検索をAmazon ElastiCache Serverless for Valkeyで最適化する
usanchuu
1
270
GitHub CopilotのFinOps- AI CreditのObservabilityと価値を生むためのエージェント設計
yuriemori
0
100
ラジオの科学
frievea
0
210
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
1.5k
AIエージェントの知識表現と推論に なぜグラフが使われるのか - 記号的AIの復権とニューラルAIとの統合
yohei1126
1
280
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Tell your own story through comics
letsgokoyo
1
1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
530
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
460
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
A Modern Web Designer's Workflow
chriscoyier
698
190k
4 Signs Your Business is Dying
shpigford
187
22k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
440
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Transcript
Linuxカーネルはこわくない RTCドライバから学ぶLinuxカーネルについて https://en.wikipedia.org/wiki/Real- time_clock#/media/File:Types_of_RTC_modules.jpg /CC BY-SA 4.0) Linuxカーネルとデバイスドライバ RTCの役割 実装(ソースコード)の解説
デバイス仕様の解説
はじめに • 想定視聴者 • Linuxカーネルに興味があるが、良く分からない・なんか怖い方 • 注意事項 • 全てを正しく完全に伝えるのは困難なため、省略過程あり
もくじ • Linuxカーネルとデバイスドライバ • カーネルとは • サブシステムについて • デバイスドライバについて •
RTC • Real Time Clockとその役割 • Epson RX-8025SA について • デバイス仕様の解説 • 機能とブロック図の理解 • I2C接続について • レジスタについて • 実装の解説 • drivers/rtc/rtc-rx8025.c を読む
Linuxカーネルとデバイスドライバ
Linuxカーネルについて • Linuxとは? • 本動画ではカーネルのことを示します • × Debian/Ubuntu • 〇
Linuxカーネルそのもの • https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-5.4.y • カーネルとは? • この問だけで、語りつくせない程に深い • 簡単には • OSを構成しているソフトウェアコンポーネントの1つ • ハードウェアとアプリの橋渡しをするプログラム ハードウェア カーネル アプリ アプリ
サブシステムについて • ひとつひとつの守備範囲を「subsystem」と呼ぶ • カーネルの中をのぞくとたくさんの機能がある • -> 手分けして開発を行っている • MAINTAINERSファイルで守備範囲が分かるようになっている
• 分野違いのことは分からなくて当たり前 • IPv4の実装に詳しい人がFilesystemに詳しいわけではない nekomatu@DESKTOP-HQVSMDQ:~/git/linux$ ls COPYING Documentation Kconfig MAINTAINERS README block crypto fs init kernel mm samples security tags usr CREDITS Kbuild LICENSES Makefile arch certs drivers include ipc lib net scripts sound tools virt
デバイスドライバ • デバイスドライバ • デバイスを動かすプログラム • USB、オーディオ、SATA、NVMe等々 • 使いたいデバイスがLinuxで動かなかったら、自分で作れば動くようになる! •
Linuxのコードの中でも多くの割合を占めている nekomatu@DESKTOP-HQVSMDQ:~/git/linux/drivers$ ls Kconfig bluetooth dax fsi i3c lightnvm most parisc ps3 scsi tee visorbus Makefile bus dca gnss ide macintosh mtd parport ptp sh thermal vlynq accessibility cdrom devfreq gpio idle mailbox mux pci pwm siox thunderbolt vme acpi char dio gpu iio mcb net pcmcia rapidio slimbus tty w1 amba clk dma greybus infiniband md nfc perf ras soc uio watchdog android clocksource dma-buf hid input media ntb phy regulator soundwire usb xen ata connector edac hsi interconnect memory nubus pinctrl remoteproc spi vdpa zorro atm counter eisa hv iommu memstick nvdimm platform reset spmi vfio auxdisplay cpufreq extcon hwmon ipack message nvme pnp rpmsg ssb vhost base cpuidle firewire hwspinlock irqchip mfd nvmem power rtc staging video bcma crypto firmware hwtracing isdn misc of powercap s390 target virt block cxl fpga i2c leds mmc opp pps sbus tc virtio
RTC
RTCとは • Real-time Clock • 時間経過を測定するための集積回路のこと らしい • ここでは、コンピュータの電源を切っても時刻を保持しているデバイスと定義する •
必要性 • PCの電源を切るたびに時刻がリセットされると大変に不便 • ファイルのタイムスタンプやTLSなど時刻が設定されている前提のシステムは少なくない • 有している機能 • (当然だが)日付・時間を取得できる • 指定時間による割込みを発生させる • その他便利そうな機能(後述)
RTCのデバイスドライバーを作るとは? • システムにRTCを生やすこと • /dev/rtc0とか/sys/calss/rtc/rtc0 のノードが見えるはず • https://www.kernel.org/doc/html/v5.4/admin-guide/rtc.html • 生やすこと=RTCクラスフレームワークを使ってドライバを書く
• 起動時にいい感じにRTCから時刻を取得してセットしてくれる • hwclock(1)コマンドなどが/dev/rtc0 にioctl()して操作できるようになる • LinuxにおけるRTCをたらしめるものはAPI • APIが結果を返せるような値をデバイスに読み書きできたら勝利! • 必要な実装は定義がある • https://github.com/torvalds/linux/blob/master/include/linux/rtc.h
rtc_class_ops構造体 • これを実装してあげればよい • 全部必要なわけでもない
RTCデバイス - Epson RX-8025SA - • 教材としてEPSONさんの RX-8025SAというデバイスを見る • 選定理由
• i2c接続である • メインライン化されているドライバーがある • コードが600行とコンパクトで読みやすい • 仕様書が公開されている • 各種リンク • https://www5.epsondevice.com/ja/products/rtc/rx8025sa.html • https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/rtc /rtc-rx8025.c?h=linux-5.4.y
デバイスの仕様について Epson RX-8025SA
機能とブロック図の理解 • https://www5.epsondevice.com/ja/products/rtc/rx8025sa.html • ソフト屋さんが主に見るところ • 入出力の部分がポイント • SCL/SDA •
これはi2cのピン • INTA/INTB • 割込み信号 • 頭にスラッシュ -> 負論理 引用; Application Manual(ETM10J-05), page5, 2021/04/22 https://support.epson.biz/td/api/doc_check.php?dl=app_RX-8025SA&lang=ja
i2c接続について • 内部バス向けの通信規格で、2つの信号線だけで完結する • SCL(Clock)とSDA(Data)の2本 • SはSerialの略 • 内部バスとは、USBとか外に出てこない中で使う規格のこと •
スレーブアドレス • これでデバイスを特定する • このRTCでは固定値となっている • > スレーブアドレスは7bitの固定値で、本RTCでは[0100010*]です • おまけ:部品選定をミスって運悪く被っていると大変めんどくさいことになる
レジスタについて • 仕様書を読んでみる • 仕様書のことをアプリケーションノートと呼ぶこともある • https://www5.epsondevice.com/ja/products/rtc/rx8025sa.html • 分かること •
所定のアドレスを読み書きすると時刻を設定・読み出しできる • アラーム機能がある • 異常状態のステータスを読み出す機能がある
実装の解説 drivers/rtc/rtc-rx8025.c