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
0
1.2k
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
710
Web3 (DAO) from the perspective of the history of Open Source Software
nekomatu
0
200
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
210
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
560
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
7k
Other Decks in Technology
See All in Technology
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
290
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
130
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
290
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
130
20250912_RPALT_データを集める→とっ散らかる問題_Obsidian紹介
ratsbane666
0
100
Snowflake×dbtを用いたテレシーのデータ基盤のこれまでとこれから
sagara
0
140
Rustから学ぶ 非同期処理の仕組み
skanehira
1
160
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
480
疎結合でスキーマ駆動開発を実現するイベントバスの設計
hacomono
PRO
0
120
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/06 - 2025/08
oracle4engineer
PRO
0
120
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
590
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
410
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Gamification - CAS2011
davidbonilla
81
5.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
We Have a Design System, Now What?
morganepeng
53
7.8k
Git: the NoSQL Database
bkeepers
PRO
431
66k
It's Worth the Effort
3n
187
28k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
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