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.1k
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
620
Web3 (DAO) from the perspective of the history of Open Source Software
nekomatu
0
180
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
170
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
510
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
6.3k
Other Decks in Technology
See All in Technology
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
20k
caching_sha2_passwordのはなし
boro1234
0
220
React Server Componentは 何を解決し何を解決しないのか / What do React Server Components solve, and what do they not solve?
kaminashi
6
1.3k
Compose MultiplatformにおけるiOSネイティブ実装のベストプラクティス
enomotok
1
210
職種に名前が付く、ということ/The fact that a job title has a name
bitkey
1
250
「ラベルにとらわれない」エンジニアでいること/Be an engineer beyond labels
kaonavi
0
170
Vision Language Modelを活用した メルカリの類似画像レコメンドの性能改善
yadayuki
9
1.3k
[CATS]Amazon Bedrock GenUハンズオン座学資料 #2 GenU環境でRAGを体験してみよう
tsukuboshi
0
150
銀行でDevOpsを進める理由と実践例 / 20250317 Masaki Iwama
shift_evolve
1
110
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
7
1.2k
日本MySQLユーザ会ができるまで / making MyNA
tmtms
1
370
Cloud Native PG 使ってみて気づいたことと最新機能の紹介 - 第52回PostgreSQLアンカンファレンス
seinoyu
2
230
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.5k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Embracing the Ebb and Flow
colly
85
4.6k
Writing Fast Ruby
sferik
628
61k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
30k
Building a Modern Day E-commerce SEO Strategy
aleyda
39
7.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
Adopting Sorbet at Scale
ufuk
75
9.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