Armadilloフォーラム

システムクロックの時刻精度

masaya_yoshitomi

2023年10月12日 10時09分

G3のシステムクロックは32.678kHzと24MHzの二つの水晶発振器が接続されていると思いますが、これらがシステム内の時刻精度にどのように影響するかご教示いただきたいです。
i.MX 7Dualのデータシート(https://www.nxp.com/docs/en/data-sheet/IMX7DCEC.pdf)の4.1.4章 External clock sourcesを見ると、低周波数(RTC_XTALI:32.678kHz)と高周波数(XTALI:24MHz)の二つがあり、それぞれ以下のような役割が記載されております。
RTC_XTALIの用途 : low-frequency functions( wake-up circuit, power-down real time clock operation, and slow system and watch-dog counters)
XTALIの用途 : to generate the main system clock (the PLLs and other peripherals)
これら二つがシステムクロックに作用していることはわかるのですが、実際の動きとしてどのように時刻精度の管理をしているかを知りたいです。
例えば、RTC用の電池は"非搭載"でシステム起動→NTP同期するまでは初期時刻で動作するアプリケーションの場合、電源起動直後のOS起動中の時刻精度はRTC_XTALI(wake-up circuitの部分?)で、OS起動後の時刻精度はXTALI(main system clock)で動作するイメージでしょうか?

また、/sys/device/system/clocksource0/available_clocksourceを見るとarch_sys_counterとmxc_timer1が選択できますが、これらはarch_sys_counterがXTALIで、mxc_timer1がRTC_XTALIという認識でよろしいでしょうか?
ご回答のほどお願いいたします。

コメント

masaya_yoshitomi

2023年10月13日 15時27分

> G3のシステムクロックは32.678kHzと24MHzの二つの水晶発振器が接続されていると思いますが、これらがシステム内の時刻精度にどのように影響するかご教示いただきたいです。
> i.MX 7Dualのデータシート(https://www.nxp.com/docs/en/data-sheet/IMX7DCEC.pdf)の4.1.4章 External clock sourcesを見ると、低周波数(RTC_XTALI:32.678kHz)と高周波数(XTALI:24MHz)の二つがあり、それぞれ以下のような役割が記載されております。
> RTC_XTALIの用途 : low-frequency functions( wake-up circuit, power-down real time clock operation, and slow system and watch-dog counters)
> XTALIの用途 : to generate the main system clock (the PLLs and other peripherals)
> これら二つがシステムクロックに作用していることはわかるのですが、実際の動きとしてどのように時刻精度の管理をしているかを知りたいです。
> 例えば、RTC用の電池は"非搭載"でシステム起動→NTP同期するまでは初期時刻で動作するアプリケーションの場合、電源起動直後のOS起動中の時刻精度はRTC_XTALI(wake-up circuitの部分?)で、OS起動後の時刻精度はXTALI(main system clock)で動作するイメージでしょうか?
>
> また、/sys/device/system/clocksource0/available_clocksourceを見るとarch_sys_counterとmxc_timer1が選択できますが、これらはarch_sys_counterがXTALIで、mxc_timer1がRTC_XTALIという認識でよろしいでしょうか?
> ご回答のほどお願いいたします。

上記問い合わせについてですが、いかがでしょうか?
回答にあたって追加の情報が必要でしたらご連絡のほどお願いいたします。

溝渕です。

> G3のシステムクロックは32.678kHzと24MHzの二つの水晶発振器が接続されていると思いますが、これらがシステム内の時刻精度にどのように影響するかご教示いただきたいです。

32.678kHzはソフトウェアからは利用していません。G3のRTCは、i.MX7DualのRTCを利用していない為、RTCにも利用されません。

24MHzは、システムクロックとして利用されます。

> これら二つがシステムクロックに作用していることはわかるのですが、実際の動きとしてどのように時刻精度の管理をしているかを知りたいです。
> 例えば、RTC用の電池は"非搭載"でシステム起動→NTP同期するまでは初期時刻で動作するアプリケーションの場合、電源起動直後のOS起動中の時刻精度はRTC_XTALI(wake-up circuitの部分?)で、OS起動後の時刻精度はXTALI(main system clock)で動作するイメージでしょうか?

上記概ね当っていますが、電源断されている間〜OS起動中にRTCを読むまでの時刻制度は次の通りです。

https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…
> 表17.15 リアルタイムクロックの精度
> 型番 |精度
> --------+------------------
> AGX3*00 |平均月差±90秒(参考値)
> AGX3*4* |平均月差±60秒(参考値)
> AGX3101 |平均月差±60秒(参考値)

また、システムクロックについてはマニュアルに記載されていませんが、平均月差は周囲温度 25℃で±130 秒程度(参考値)です。

溝渕です。

すみません。システムクロックの平均月差について訂正させてください。

> また、システムクロックについてはマニュアルに記載されていませんが、平均月差は周囲温度 25℃で±130 秒程度(参考値)です。

正しくは、25℃で±180 秒程度(参考値)です。

溝渕です。

何度もすみません。システムクロックの平均月差について再度訂正させてください。以下の値が正しいです。

正しくは、25℃で±90 秒程度(参考値)です。

masaya_yoshitomi

2023年10月16日 8時58分

> 溝渕です。
>
> 何度もすみません。システムクロックの平均月差について再度訂正させてください。以下の値が正しいです。
>
> 正しくは、25℃で±90 秒程度(参考値)です。

念のための確認ですが、システムクロックの25℃で±90秒の仕様は「AGX3140-C03Z」でも同じでしょうか?

また以下についても回答のほどお願いいたします。
>>また、/sys/device/system/clocksource0/available_clocksourceを見るとarch_sys_counterとmxc_timer1が選択できますが、これらはarch_sys_counterがXTALIで、mxc_timer1がRTC_XTALIという認識でよろしいでしょうか?

溝渕です。

まず後者のみ回答します。

>>また、/sys/device/system/clocksource0/available_clocksourceを見るとarch_sys_counterとmxc_timer1が選択できますが、これらはarch_sys_counterがXTALIで、mxc_timer1がRTC_XTALIという認識でよろしいでしょうか?

違います。両方XTALI(24MHz)です。

arch_sys_counterは、armのCNTVCT(Virtual Count register)です。親clockは24MHzです。mxc_timer1は、i.MX 7DualのGeneral Purpose Timer(GPT)です。親clockは24MHzです。

溝渕です。

前者の回答です。

> 念のための確認ですが、システムクロックの25℃で±90秒の仕様は「AGX3140-C03Z」でも同じでしょうか?

上記ご認識で正しいです。システムクロックに関しては型番による差異はありません。