XG-50 で使用している SoC の STM32L476 には、RTC が搭載されています。
オプションの電池を接続することでメイン電源が切れても時刻を刻み続けることもできます。
下記 /dev/ 以下に見えるとおり /dev/rtc0 経由で制御を行います。
nsh> ls -l /dev /dev: cr--r--r-- 0 adc0 crw-rw-rw- 0 console crw-rw-rw- 0 i2c1 brw-rw-rw- 0 mtdblock0 crw-rw-rw- 0 null crw-rw-rw- 0 ptmx crw-rw-rw- 0 ramlog cr--r--r-- 0 random crw-rw-rw- 0 rtc0 <---- RTC crw-rw-rw- 0 timer0 crw-rw-rw- 0 ttyS0 crw-rw-rw- 0 ttyS1 crw-rw-rw- 0 ttyS2 crw-rw-rw- 0 ttyS3 crw-rw-rw- 0 zero
ioctl() で用意されているリクエストは以下になります。
Request | 内容 | Note |
---|---|---|
RTC_RD_TIME | 日時読み出し | |
RTC_SET_TIME | 日時設定 | |
RTC_HAVE_SET_TIME | 日時設定済みか確認 | |
RTC_SET_ALARM | アラーム1)設定 | struct rtc_time で指定 |
RTC_SET_RELATIVE | アラーム2)設定 | time_t で指定 |
RTC_CANCEL_ALARM | アラーム取り消し | |
RTC_RD_ALARM | アラーム設定読み出し | |
RTC_SET_PERIODIC | 定期起床設定 | |
RTC_CANCEL_PERIODIC | 定期起床取り消し |
プログラムの例は apps/examples/alarm/alarm_main.c
を参照してください。