外部RTCを有効にする

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を焼くには、以下を参照してください。 ファームウェアの更新 の章で詳しく説明する。

この記事は役に立ちましたか?

関連記事