NXP i.MX7D
часы реального времени RTC
После сброса камня, часовой кварц работает и подключен к модулю SNVS.
Достаточно завести часы, что бы они начали тикать.
@ Затактировать SNVS
@ После сброса процессора, он уже затактирован загрузчиком
MOV32 R0, CCM_BASE + CCGR37 @ SNVS clock gate
MOV R1, 0x00003333
STR R1, [R0]
@ Модуль RTC имеет два счётчика реального времени
@ Счётчик HP RTC - общего назначения
@ Сбрасывается вместе с процессором
@ И по другим событиям
MOV32 R0, SNVS_BASE
MOV R1, 1 << RTC_EN @ Включить HP RTC
STR R1, [R0, HPCR]
@ Счётчик SRTC является классическим Low Power RTC
@ Вместе с камнем не сбрасывается
@ Тикает всегда, пока есть питание
MOV R1, 1 << SRTC_ENV @ Включить SRTC
STR R1, [R0, LPCR]
@ Часы тикают!
Оба счётчика имеют разрядность 47 бит
и инкрементируются на частоте часового кварца.
Таким образом, запас хода часов составит 136 лет.
Очередная проблема наступит в 2106 году.
А там глядишь и новые камушки появятся, с 48-битным счётчиком!
@ Прочитать значения часов
MOV32 R0, SNVS_BASE
LDR R1, [R0, HPRTCLR] @ Прочитать младшие 32 бита HP RTC
LDR R2, [R0, LPSRTCLR] @ Прочитать младшие 32 бита SRTC
В часах есть один будильник. И можно настроить периодические прерывания.
А ещё, можно подать сигнал PMIC на POWER OFF.
Так что, дерзайте!
p.s. Календаря нет. При наличии на кристалле такого количества математики,
стыдно делать аппаратный календарь? Как вы думаете?