Перенесена из k1921vk028/1921vk028/lib/rtc_service. Ядро rtc_service_core.c зависит только от stddef, string и собственных заголовков; доступ к часам и backup-памяти вынесен в rtc_service_port.h. Порт для K1921VK028 идёт в комплекте и служит образцом для следующего МК.
2.0 KiB
2.0 KiB
PORTING — RTC Service
Что переносить
Библиотека строится как:
- переносимое ядро (
rtc_service_core.c) — без зависимостей от HAL/реестров; - порт (
rtc_service_port_k1921vk028.c) — конкретные вызовыplib028.
Шаги переноса на другой MCU
- Создать новый
rtc_service_port_*.c(и при необходимости_port.h). - Реализовать все функции из
rtc_service_port.h:RtcService_Port_InitClockRtcService_Port_EnableRtcClockRtcService_Port_IsPowerOnResetRtcService_Port_ReadRtcRtcService_Port_WriteRtcRtcService_Port_ReadBackupRtcService_Port_WriteBackupRtcService_Port_EraseBackup
- Собрать таблицу соответствий:
- форматы времени;
- единицы дня/месяца/года;
- адреса backup-области и ограничения размера.
- Пройти чеклист:
RtcService_Initс cold-reset и warm-reset;- сценарий power-on без сохранённого backup;
- проверка CRC/валидности;
- задание корректной даты при запуске;
- корректная работа
RtcService_SetDateTime.
Что считать обязательным
- Выделить RAM/flash под backup-blob как минимум на 16 слов.
- Обеспечить атомарность записи backup (erase+write/защита от разрыва).
- Поддержать код возврата:
- ошибки портов;
- недоступность storage;
- отсутствие флага инициализации.
Рекомендуемые расширения
- Реальное определение режима источника (
LSE/LSI/AUTO). - Реальная детекция
power-on reset. - Таймауты доступа к Flash.