rk3568のPMU rk809は内部RTCを備えている。edge2の電源が切れた後、内蔵RTCはシステム時間を保存することができません。停電後のシステム時間を保存するために、edge2は外部RTC HYM8563とボタン電池ベースを提供します。ボタン電池を取り付けた後、edge2はシステム時間を保存することができます。
はじめに
エッジ2はHYM8563をRTCとして使用(リアルタイムクロック).HYM8563は、プログラマブル・クロック出力、割り込み出力、パワーダウン検出器を備えています。すべてのアドレスとデータは、I2Cバス・インターフェースを介してシリアルに渡されます。最大バス速度は400Kbits/sです。各読み出しと書き込みの後、内蔵ワード・アドレス・レジスタは自動的にインクリメントされます。
- タイミングは32.768kHzの水晶振動子をベースに秒、分、時、週、日、月、年で設定可能
- 広い動作電圧範囲:1.0〜5.5V
- 低静止電流:通常0.25μA(VDD =3.0V、TA =25°C)
- 内蔵発振コンデンサー
- ドレインオープン割り込み端子
インターフェイスの使用
Linuxは3つのユーザー空間呼び出しインターフェースを提供する。Edge 2の対応するパスは以下の通りである:
- SYSFS インターフェース :
/sys/class/rtc/rtc0/。
- PROCFS インターフェース :
/proc/driver/rtc
- IOCTL インターフェース :
/dev/rtc0
SYSFSインターフェース
以下のインターフェイスを使用 cat
そして hwclock
を直接操作できる。 /sys/class/rtc/rtc0/。
.
例えば、RTCで現在の日付と時刻をチェックする:
# cat /sys/class/rtc/rtc1/date
2021-10-14
# cat /sys/class/rtc/rtc1/time
10:30:15
PROCFSインターフェース
RTC関連情報を印刷する:
# cat /proc/driver/rtc
rtc_time : 10:33:58
rtc_date : 2021-10-14
alrm_time : 11:06:00
alrm_date : 2021-10-14
alarm_IRQ : no
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1
max user IRQ frequency : 64
24hr : yes
IOCTLインターフェース
以下のインターフェイスを使用 ioctl
そして hwclock
を直接操作できる。 /dev/rtc1
その場合、rootアカウントで以下のコマンドを実行する必要がある。
# hwclock -f /dev/rtc1
Thu Oct 14 10:36:21 2021 0.000000秒
よくあるご質問
Q1: 開発ボードの電源を入れた後、時刻がずれてしまいます。A1: RTCボタン電池が正しく接続されているか確認してください。
RTCドライバ
[注]:Mixtile がリリースした Android / Debian は、すでにカーネルで RTC 機能を有効にしています。Andorid / Debianシステムをコンパイルする場合は、RTCドライバを以下のように設定してください。カーネルのDTSコンフィギュレーション・リファレンス:kernel/arch/arm64/boot/dts/rockchip/mixtile-edge2-evb.dtsi
&i2c3 {
status = "okay";
hym8563: hym8563@51 {
compatible = "haoyu,hym8563";
reg = ;
pinctrl-names = "default";
pinctrl-0 = ;
interrupt-parent = ;
interrupts = ;
status = "okay";
};
};
&pinctrl {
rtc {
rtc_int: rtc-int {
rockchip,pins = ;
};
};
}
ドライブリファレンス: カーネル/ドライバ/rtc/rtc-hym8563.c
RTCの起動
外部RTC HYM8563が有効で、HYM8563の時刻を同期させるためにシステム時刻が有効になっている場合、カーネルではRK809の内部RTCがデフォルトで使用されるが、システムを以下のように変更する必要がある:
カーネルの変更
- DTSの変更
参照 RTCドライバ
- 設定の変更
修正されたファイルは
kernel/arch/arm64/configs/mixtile_edge2_defconfig
以下のコンフィギュレーションを追加する:
CONFIG_RTC_DRV_HYM8563=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc1"
CONFIG_RTC_SYSTOHC_DEVICE="rtc1"
カーネルをコンパイルするには カーネルのコンパイル の章で詳しく説明する。
boot.imgを焼くには、以下を参照してください。 ファームウェアの更新 の章で詳しく説明する。
アンドロイドの改造
外付けRTC HYM8563はシステム内にノードとして存在する。 /dev/rtc1
の許可を得る必要がある。 /dev/rtc1
ファイル1の修正 device/rockchip/rk356x/mixtile_edge2/init.mixtile_edge2.rc
以下のコンフィギュレーションを追加する:
on boot
chown system system /dev/rtc1
chmod 0640 /dev/rtc1
ファイル2の修正 device/rockchip/rk356x/mixtile_edge2/sepolicy/genfs_contexts
以下のコンフィギュレーションを追加する:
genfscon sysfs /devices/platform/fe5c0000.i2c/i2c-3/3-0051/power/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/fe5c0000.i2c/i2c-3/3-0051/rtc/rtc1/hctosys u:object_r:sysfs_hctosys:s0
Androidをコンパイルするには カーネルのコンパイル の章で詳しく説明する。
super.imgを焼くには、以下を参照してください。 ファームウェアの更新 の章で詳しく説明する。