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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
nekomatu
April 23, 2021
Technology
0
1.3k
RTCドライバから学ぶLinuxカーネルについて
解説動画
RTCドライバから学ぶLinuxカーネルについて
https://youtu.be/oHUA7KMRhgw
nekomatu
April 23, 2021
Tweet
Share
More Decks by nekomatu
See All by nekomatu
Ethereum_.pdf
nekomatu
0
760
Web3 (DAO) from the perspective of the history of Open Source Software
nekomatu
0
220
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
230
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
580
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
7.6k
Other Decks in Technology
See All in Technology
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
Tebiki Engineering Team Deck
tebiki
0
24k
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
820
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
320
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
360
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
320
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.5k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
140
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
190
Greatest Disaster Hits in Web Performance
guaca
0
270
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
97
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
430
Leo the Paperboy
mayatellez
4
1.4k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
55
How GitHub (no longer) Works
holman
316
140k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
51
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