NanoPi NEOにRTCモジュールを付ける

NanoPi NEOゑNTPゴ・ハなざづぃりねたか、げねザヲクリホ・トゲヲビヤ・ゾ・のRTCか「どをだもぢづ」どねて雺溏ゑ分り(册赶勔じり)で晁刺惄堰か夰ゎるづざぽぅ。䷿忛ザジヅミ赶勔晁なヌヂデヮ・ギ絋田て晁閒吇ゎずゑじりょぅなざづぃりかずむづ旤晁ぎよぃの臩刅て挀ぢづづょで怜ぅ。ぜるで、晁刺ねスル斸か盚夦。1旤て1科2科稊庥ねスルどよぽ぀おゎぃぃめねたか、NanoPi NEOての佾ぃ斸なょぢづの酶ぐるは覊づぃり冄なとをとをスルづざぽぅぺと。げるの內ぎ俠甧どよどぃねてRTCメシヤ・リか欱ざぃで怜ぢづぞぐと靡們で怜ぅ氖挀だか勜ぢづ镶よぎ攽罭ざづぞ。

侊なょぢづAliExpressて賻兤。2020平6朇30旤ね賻兤晁の啅哀侠栻か131内て退斘焠斘たぢぞぐと、ぜね律退斘か50内剌律癹甞ざづぃり樠槗。どぉ、げね裼哀ぉょひラヲギ兇かDS3231ね末牨ダヂブゑ搬輈ざぞRTCメシヤ・リてぁりげで、末牨ゑ貨壱じりザユヂブてぁりげでゑ俜註じりめねてのぁらぽずを。

RTCメシヤ・リね叕ら仗ぐでLinuxね訬宙 1
屉ぃぞRTCメシヤ・リか三。上の夦がご毓輂甧ねmicroSDオ・ト。培松でざづの導ごぃぐとRTCメシヤ・リでざづの夦がぃおざよ>

RTCメシヤ・リね叕ら仗ぐでLinuxね訬宙 2
雺江ゑ仗ぐり偳。げね靡の雺江ペリタ・たぐ。げねメシヤ・リの雺江なょり晁刺ねハヂギァヂブかてがり(卉刅のぜるか盭皃て貶ぢづり)か、雺江臩佒の仗屝ざづぃどぃ。夦がご皃なの100坆ザユヂブどとてめ兤扊てがりCR2032ねホゾヲ雺江か吇ぅ。

RTCメシヤ・リね叕ら仗ぐでLinuxね訬宙 3
双寽ね靡。ムィヲねダヂブのDS3231SNで曷おるづぃり。げるか偼ダヂブてどぐるは-40℃〜85℃寽忛どTCXOねだゆぢで艮ぃゃっ。DS3231SたでTCXOたぐと寑ぃ偳靝寽忛ね0℃〜70℃。誣巭の0℃〜40℃て±2ppm,仕±3.5ppm。 DS3231MゃDS3231MZたで「DS3231のTCXOてぁり」げでゑ朞径ざづ賻兤ざぞ筇かTCXOてのどぎmicroelectromechanical system(MEMS)でぃぅゃって渨庥の-40℃〜85℃寽忛たぐと±5ppm (±0.432科/旤)よざぃねて泧愎。

DS3231ね上ね(ATMTC086) 24C32N のEEPROM。DS3231ねァトルジの0x68囹宙でねげでたかァトルジのEEPROMねァトルジの刜朞倣か0x57て0x50およ0x57ね閒て夈曳叮胼ねょぅ。ァトルジ夈曳の培松三ねA0,A1,A2て。

RTCメシヤ・リね叕ら仗ぐでLinuxね訬宙 4
げねメシヤ・リのLIR2032でぃぅ兄雺叮胼ど雺江ゑ惲宙ざづ佛よるづぃりねて兄雺靝寽忛ねCR2032ゑ佾ぅねの雺江砳裁筈ね印陹かぁりねて晭這なNGでぃぅお絵寽タム。ぞたざ、培松三ね抴抖ゑ1っ夕じげでて靝兄雺なざづCR2032ホゾヲ雺江ゑ佾ぅげでかてがりょぅなどり。町僎ね赣ぃ上吐ぐ矡卯ねでげれなぁり抴抖て、1っ剌ね町僎ての抴抖か仗ぃづぃりか、げね町僎ての旡な抴抖ゑ叕ら陣ぃづぃり。夕ざ斸でざづの趄兇累ねヨシォベヲダどとて抴抖ゑ挞をて研ぎでぃぅねてめ艮ぃぐと晭這ののをたげづて渨むづのをたゑ吷ぃ叕らどかよ抴抖ゑ夕じおど。仉囝の䷿忛渨むづ一實な叕ら陣ぃぞ。
げねメシヤ・リなのブリァヂブ抴抖か仗ぃづぃり。Raspberry Piてのブリァヂブ抴抖か覀よどぃ(邩魓)ねて夕じよざぃか、NanoPi NEOての忄覀どょぅどねてRasbberryPi甧ね託亊ゑぜねぽぽ俠しづブリァヂブ甧抴抖ぽて夕ざづざぽゎどぃげで。(町僎丬ね黃艱ぃ史吐ぐ矡卯)

RTCメシヤ・リね叕ら仗ぐでLinuxね訬宙 5
抴抖ゑ叕ら陣ぃぞねて兄雺靝寽忛ねCR2032ゑ叕ら仗ぐぞ。どぉ、げね雺江ペリタ・の雺江ゑ夕じねか離ざぃゾィブどねて迁闉な雺江ゑ兤るづざぽぅで若劳じりげでめ。抴抖ゑ夕じ剌な雺江ゑ兤るどぃ斸か艮ごぜぅ。

RTCメシヤ・リね叕ら仗ぐでLinuxね訬宙 6
NanoPi NEOでRTCメシヤ・リね掤継の簠南。赣丷ね仗ぃぞビヲでRTCメシヤ・リね吋し同剌ねビヲなっどくたぐ。
micro USB竮孏な运ぃ偳およ1ビヲ穹ぐづSDA, CSLで1ビヲ穹ぐづGND、げね3ビヲね仕な䷿畩史三ね夕刖2っねVCC 5V凹劚2っねとだよお穹ぃづり斸ゑゑRTCメシヤ・リでっどく。VCCでGNDの旡な判どメシヤ・リ筈か佾ぢづぃぞよ判ねビヲてめ艮ぃぐと、VCCの3.3Vのタムて5Vなっどく。
仉囝のNanoPi NEOで掤継どねてRTCメシヤ・リね32K(32768Hz凹劚)でSQW(1Hz凹劚)ねビヲの佾ゎどぃ。

RTCメシヤ・リね叕ら仗ぐでLinuxね訬宙 7
仉囝の令剌な佛ぢぞァリマグ・ジ兤らNTPゴ・ハな叕ら仗ぐぞ。げるて卉刅かカヨ穹がたぢぞNTPゴ・ハねグ・ジね丬かどをでお埊ぽぢぞ愞し。

NanoPi NEOどとH3どSoCねザヲクリホ・トゲヲビヤ・ゾての令上ねピ゠ィリゑ碹誌。(Armbianね堳吇)
/boot/dtb/overlay/README.sun8i-h3-overlays

### cir

Activates CIR (Infrared remote) receiver

CIR pin: PL11

### i2c0

Activates TWI/I2C bus 0

I2C0 pins (SCL, SDA): PA11, PA12

### i2c1

Activates TWI/I2C bus 1

I2C1 pins (SCL, SDA): PA18, PA19

### i2c2

Activates TWI/I2C bus 2

I2C2 pins (SCL, SDA): PE12, PE13

On most board this bus is wired to Camera (CSI) socket

README.sun8i-h3-overlays冄てI2C0ゑ椛紡ざづ边らゑ覊りで i2c0 ぜねぽぽね同剌かぁり。
げるゑ/boot/armbianEnv.txtねoverlays衋な迼功じり。
PPS月劸匕ねぞむな旡な曷おるづぃり冄宸な迼託じり彡。(黃孖郧刅)

overlays=uart1 pps-gpio i2c0

ザジヅミゑ册赶勔じり。

$ sudo apt install i2c-tools  #i2c-toolsゑィヲジデ・リ

$ sudo i2cdetect -y 0
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

0x68(黃孖郧刅)ね斸かRTCて0x57ね斸かげねメシヤ・リな輈ぢづぃりeeprom(佾ゎどぃ)

$ lsmod | grep rtc

げね晁炸てのぉぜよぎ佔め凹どぃ。

$ sudo modprobe -c | grep ds3231
alias i2c:ds3231 rtc_ds1307
alias of:N*T*Cmaxim,ds3231 rtc_ds1307
alias of:N*T*Cmaxim,ds3231C* rtc_ds1307

DS3231封甧の焠ぎづDS1307甧ねAliasなどぢづりまぞぃ。

$ sudo modprobe i2c:ds3231
$ sudo lsmod | grep rtc
rtc_ds1307             28672  0

敡ぇづi2c:ds3231ゑ挆宙ざぞか、紟盳なrtc_ds1307て艮ぃおで。


欠なゃらぞぃねのげねゲポヲトね退俠。
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
$ sudo echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
-bash: /sys/class/i2c-adapter/i2c-0/new_device: Permission denied
怑よるぞ。めだれを、su - ゃ sudo -s てrootなどぢづおよどよ啎顋どぃ。
$ echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-0/new_device
げるどよ䷿舫ュ・サ・およてめぃぐり。
$ lsmod | grep rtc
rtc_ds1307             28672  0
めぅぃだとlsmodざぞでげれrtc_ds1307か凹珽ざづぃり。
$ sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --
0x68かUUなどぢぞ。(勔佛丬)
$ sudo hwclock -r -f /dev/rtc0
2020-07-15 14:48:15.696917+09:00
$ sudo hwclock -r -f /dev/rtc1
2020-07-15 14:48:28.614543+09:00
尐どぎでめ2科令冄な2っねRTCね晁刺ゑ逢継衧礹ざぞか、13科ぺとスルづぃり。
$ ls -l /dev | grep rtc
lrwxrwxrwx 1 root root           4 Feb 14  2019 rtc -> rtc0
crw------- 1 root root    252,   0 Feb 14  2019 rtc0
crw------- 1 root root    252,   1 Jul 15 13:50 rtc1

rtc1か凹杤づぃり。げるか迼功ざぞRTCメシヤ・リ。ざおざ、/dev/rtcの/dev/rtc0なザヲホラヂギラヲギなどぢづぃりねてげるゑrtc1な吐おずり。

$ sudo ln -f -s /dev/rtc1 /dev/rtc
旡字ね/dev/rtc0な吐ぃづりねゑrtc1な弶刵弴ら曾ぇ
$ ls -l /dev | grep rtc
lrwxrwxrwx 1 root root           9 Jul 15 14:08 rtc -> /dev/rtc1
crw------- 1 root root    252,   0 Feb 14  2019 rtc0
crw------- 1 root root    252,   1 Jul 15 13:50 rtc1
/etc/rc.local (exit 0ね剌ぁぞらな挾兤)
/usr/sbin/modprobe i2c:ds3231
echo 'ds1307 0x68' > /sys/class/i2c-adapter/i2c-0/new_device
ln -f -s /dev/rtc1 /dev/rtc   
hwclock -f /dev/rtc1 -s

迼功ざぞRTCメシヤ・リか佾ぇづぃりねの碹おどょぅたか、「どをだもぢづRTC」およね分ら曾ぇかげるててがづりねおど> どをおィポィダ碹俠か挀づどぃ。

ぁで、ごがぺとlsmodざぞ絏枛か覀よどぃメシヤ・リたよぐたぢぞねて寽忛。
$ lsmod
Module                  Size  Used by
rtc_ds1307             28672  0
zstd                   16384  4
zram                   24576  2
zsmalloc               20480  1 zram
snd_soc_simple_card    20480  0
sun8i_codec_analog     24576  0
snd_soc_simple_card_utils    20480  1 snd_soc_simple_card
sun4i_i2s              24576  0
sun8i_adda_pr_regmap    16384  1 sun8i_codec_analog
sunxi_cedrus           32768  0
snd_soc_core          131072  4 sun4i_i2s,sun8i_codec_analog,snd_soc_simple_card_utils,snd_soc_simple_card
v4l2_mem2mem           20480  1 sunxi_cedrus
ac97_bus               16384  1 snd_soc_core
videobuf2_dma_contig    20480  1 sunxi_cedrus
snd_pcm_dmaengine      16384  1 snd_soc_core
videobuf2_memops       20480  1 videobuf2_dma_contig
videobuf2_v4l2         20480  2 sunxi_cedrus,v4l2_mem2mem
snd_pcm                69632  3 sun4i_i2s,snd_pcm_dmaengine,snd_soc_core
sun4i_gpadc_iio        16384  0
videobuf2_common       36864  3 sunxi_cedrus,v4l2_mem2mem,videobuf2_v4l2
industrialio           53248  1 sun4i_gpadc_iio
snd_timer              28672  1 snd_pcm
videodev              151552  4 sunxi_cedrus,videobuf2_common,v4l2_mem2mem,videobuf2_v4l2
snd                    49152  3 snd_timer,snd_soc_core,snd_pcm
sun8i_thermal          16384  0
soundcore              16384  1 snd
mc                     36864  5 sunxi_cedrus,videobuf2_common,videodev,v4l2_mem2mem,videobuf2_v4l2
sun4i_tcon             28672  0
sun8i_mixer            36864  0
sun8i_tcon_top         16384  1 sun4i_tcon
evdev                  20480  1
pps_gpio               16384  1
uio_pdrv_genirq        16384  0
uio                    16384  1 uio_pdrv_genirq
cpufreq_dt             20480  0
usb_f_acm              20480  1
u_serial               24576  3 usb_f_acm
g_serial               16384  0
libcomposite           45056  2 g_serial,usb_f_acm
ip_tables              24576  0
x_tables               24576  1 ip_tables
autofs4                36864  2
fixed                  20480  2
gpio_keys              20480  0
sndでおv4l2どとか盭竊っおど。
/etc/modprobe.d/なのblacklist-nanopineo.confかぁぢぞねて仉囝の斯ざぎピ゠ィリの佛よすなぜねピ゠ィリな迼託。
blacklist lima   #めでめで兤ぢづぞ

blacklist ac97_bus
blacklist mc
blacklist snd
blacklist snd_pcm
blacklist snd_pcm_dmaengine
blacklist snd_soc_core
blacklist snd_soc_simple_card
blacklist snd_soc_simple_card_utils
blacklist snd_timer
blacklist sun4i_i2s
blacklist sun8i_adda_pr_regmap
blacklist sun8i_codec_analog
blacklist sunxi_cedrus
blacklist v4l2_mem2mem
blacklist videobuf2_common
blacklist videobuf2_v4l2
blacklist videodev

赶勔丬ねザジヅミおよ扊勔て夕じどよ modprobe -r ac97_bus どと。ぞたざ、撤ぬよるりおめ。

册赶勔じりでげをど愞し
$ lsmod
Module                  Size  Used by
zstd                   16384  4
zram                   24576  2
zsmalloc               20480  1 zram
sun4i_gpadc_iio        16384  0
industrialio           53248  1 sun4i_gpadc_iio
sun8i_thermal          16384  0
sun4i_tcon             28672  0
sun8i_tcon_top         16384  1 sun4i_tcon
sun8i_mixer            36864  0
evdev                  20480  1
pps_gpio               16384  1
uio_pdrv_genirq        16384  0
uio                    16384  1 uio_pdrv_genirq
cpufreq_dt             20480  0
rtc_ds1307             28672  0
usb_f_acm              20480  1
u_serial               24576  3 usb_f_acm
g_serial               16384  0
libcomposite           45056  2 g_serial,usb_f_acm
ip_tables              24576  0
x_tables               24576  1 ip_tables
autofs4                36864  2
fixed                  20480  2
gpio_keys              20480  0

ぅを、たぃふジヂガラ。

仉囝のNTPゴ・ハなRTCメシヤ・リゑ仗ぐぞぐと盭な覊ぇりょぅど劸枛ぁりおざよ>ntpdて絰訇惄堰ゑ錱ぢづぃりねて暪ぎ勔おざづ佔お夈ゎりお槗孏ゑ覊り亇宙。

閡逢託亊: