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

46 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.