この記事では、SoC FPGA を搭載した評価ボードに実装されている RTC(リアルタイム・クロック)の使い方(時刻設定方法)を紹介します。
1. はじめに
Mpression Sodia ボードをはじめ SoC FPGA を搭載した評価ボードの多くには、RTC(リアルタイム・クロック)が実装されています。ボード指定のボタン電池を装填しておくことで RTC に設定した時刻をバッテリー・バックアップすることができるので、評価/検証時のログ情報にタイムスタンプを記録したいケースなどに有用です。
2. ボタン電池の装填
使用するボタン電池は、評価ボードのマニュアルもしくは回路図を参照してください。念のため、
バッテリー電源の電圧など、RTC 製品のデータシート Spec も併せてご確認ください。
Soida ボードの場合、 RTC は maxim 製 DS1339 I2C Serial Real-Time Clock(DS1339C-33#)を搭載。
ボタン電池は BR-1225 を使用します。
下記画像の赤枠が RTC のバッテリー・バックアップ用のボタン電池スロットです。
ボタン電池の指定は回路図に記載されていました。
3. 時刻設定(Linux コマンドで対応)
RTC の時刻設定は、Linux 用のリファレンス環境をご使用頂ければ hwclock コマンドにて対応可能です。
- 「hwclock --show」 .. 現在の RTC 時刻を表示
- 「hwclock --systohc」 .. システム時間を RTC 時刻へ反映
- 「hwclock --hctosys」 .. RTC 時刻をシステム時間へ反映
システム時間は date コマンドで設定します。
- 「date -s "YYYY-MM-DD HH:MM:SS"」
以下、実際に試した結果のログを添付いたします。
root@cyclone5:~# date -s "2019-06-20 13:55:00" <-- システム時間を設定
Thu Jun 20 13:55:00 UTC 2019
root@cyclone5:~# hwclock --systohc <-- システム時間を RTC に保存
root@cyclone5:~# hwclock --show
Thu Jun 20 13:55:11 2019 0.000000 seconds <-- RTC 時刻に反映された事を確認
root@cyclone5:~#
root@cyclone5:~#
root@cyclone5:~# date -s "2020-12-31 13:55:00" <-- システム時間を変更(RTC には保存しない)
Thu Dec 31 13:55:00 UTC 2020
root@cyclone5:~#
: ★ 電源再投入
cyclone5 login: root
Last login: Wed Sep 26 03:39:19 UTC 2018 on ttyS0
root@cyclone5:~#
root@cyclone5:~#
root@cyclone5:~#
root@cyclone5:~#
root@cyclone5:~# date
Thu Jun 20 13:55:56 UTC 2019 <-- システム時間に最後に保存した RTC 時刻が反映される
root@cyclone5:~#
まとめ
Linux の場合は maxim 製 RTC(DS1339)に対応したドライバーが予め用意されているため、記載の通り、RTC 設定用のコマンドを実行するだけで非常に簡単にセットアップが行えます。
尚、Linux 以外では、RTOS が同等の機能に対応している可能性もありますが、基本的には RTC 製品のデータシートを参照して I2C インターフェイス経由でコマンド送信する対応が必要になります。