# 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.