コンテックRAS/RTC Raspberry Pi ボードを使う③RTCを動かす
第1回で、リアルタイム・クロックRTCのドライバを導入して動かしました。ここでは、詳しく機能を見ていきます。
●コマンド
hwclockは、次のように引数を指定できます。
読み出すのは、下記のどちらでもよいようです。
sudo hwclock -r
sudo hwclock --show
timedatectlコマンドを使って、Linuxのシステムに組み込まれているほかの時計機能と比べます。
RTC timeが表示され、ほかの時刻と一致しています。
●いつでも使えるように
設定したRTCドライバは、OSを再起動したら、なくなってしまいます。
確認します。
~/Downloads/CPI-RAS-rtcDrv_100/rv8803drv
には、第1回でコンパイルしたファイルが入っています。
sudo make modules_install
で、モジュールをインストールし、
sudo sh -c 'echo rx8900 0x32 > /sys/class/i2c-adapter/i2c-1/new_device'
で、RTCドライバをロードします。
rebootします。
ターミナルで、lsmodを実行します。
RTCのモジュールは、入っていないですね。当然RTCも動いていません。
モジュールを入れて、デバイス・ドライバを登録するコマンドを作ります。下記のテキストをrtc_install.shで保存して、実行権を付けました。sudo ./rtc_install.shで実行します。
試行錯誤したので、余計な記述があるかもしれません。また、モジュールを保存している場所もよくないと思います。
#!/bin/bash
cd /home/pi/Downloads/CPI-RAS-rtcDrv_100/rv8803drv
sudo make modules_install
echo rx8900 0x32 > /sys/class/i2c-adapter/i2c-1/new_device | sudo su -
●起動時に実行
起動時に実行させたいプログラムを設定する方法はいくつかありますが、最新はsystemdを使います。
エディタnanoを立ち上げます。
sudo nano /lib/systemd/system/rtc.service
下記がrtc.serviceの内容です。Ctrl-Oで保存し、Ctrl-Xで終了します。実行ファイルは、/home/pi/rtc_install.shに置いていますが、本当は、もっとシステムの関連するディレクトリに保存すべきのようです。
[Unit]
Description = RTC
[Service]
ExecStart = /home/pi/rtc_install.sh
Restart = always
[Install]
WantedBy = multi-user.target
ターミナルで、
sudo systemctl enable rtc.service
サービスを登録します。一度だけ実行します。
rebootして、sudo hwclock -rが正しく日時を返すことを確認します。