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
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
160
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
1
320
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
0
100
KiCAD講習会②
tutcreators
0
110
世界、断片、モデル。そして理解
ardbeg1958
1
110
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.1k
Claude Codeとハーネスについて考えてみる
oikon48
18
9.4k
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
5k
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
280
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
180
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
290
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
30 Presentation Tips
portentint
PRO
1
350
Navigating Weather and Climate Data
rabernat
0
310
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Accessibility Awareness
sabderemane
1
150
Leo the Paperboy
mayatellez
8
1.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Practical Orchestrator
shlominoach
191
11k
Mind Mapping
helmedeiros
PRO
1
280
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