Files
templates/c/rtc-service/PORTING.md
Andrey Kruchinkin 34cbd92808 feat(rtc-service): служба RTC с резервированным backup-томом
Перенесена из k1921vk028/1921vk028/lib/rtc_service.

Ядро rtc_service_core.c зависит только от stddef, string и собственных
заголовков; доступ к часам и backup-памяти вынесен в rtc_service_port.h.
Порт для K1921VK028 идёт в комплекте и служит образцом для следующего МК.
2026-08-23 01:15:36 +03:00

2.0 KiB
Raw Permalink Blame History

PORTING — RTC Service

Что переносить

Библиотека строится как:

  • переносимое ядро (rtc_service_core.c) — без зависимостей от HAL/реестров;
  • порт (rtc_service_port_k1921vk028.c) — конкретные вызовы plib028.

Шаги переноса на другой MCU

  1. Создать новый rtc_service_port_*.c (и при необходимости _port.h).
  2. Реализовать все функции из rtc_service_port.h:
    • RtcService_Port_InitClock
    • RtcService_Port_EnableRtcClock
    • RtcService_Port_IsPowerOnReset
    • RtcService_Port_ReadRtc
    • RtcService_Port_WriteRtc
    • RtcService_Port_ReadBackup
    • RtcService_Port_WriteBackup
    • RtcService_Port_EraseBackup
  3. Собрать таблицу соответствий:
    • форматы времени;
    • единицы дня/месяца/года;
    • адреса backup-области и ограничения размера.
  4. Пройти чеклист:
    • 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.