Files
templates/c/firmware-info/README.md

28 lines
1.9 KiB
Markdown
Raw 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.
# Firmware Info
Переносимая библиотека версии реально запущенной прошивки. Повторяет контракт
`FirmwareInfo` из `john103C6T6NewVer`, но оформлена как template: ядро не знает
ни о HAL, ни о конкретном протоколе, ни о модели МК.
Контракт v1 содержит 12 слов: версия контракта, `major.minor.patch`, дата/время
компиляции и 8-символьный build ID. `firmware_info_to_registers()` подходит для
Modbus, `firmware_info_to_le_bytes()` — для SETGUI и других byte-протоколов.
## Подключение
1. Добавьте `include`, `src/firmware_info.c` и `src/firmware_info_port.c`.
2. Скопируйте подходящий `ports/<mcu>/firmware_info_config.template.h` в проект
как `firmware_info_config.h` и задайте SemVer.
3. Добавьте каталог с config и `include` в include path.
4. Перед сборкой запустите `tools/make_build_id.ps1`; каталог generated также
должен быть в include path. Чистая сборка получает 8 знаков git commit,
dirty-сборка — 7 знаков и `+`, сборка без Git — `NOGIT000`.
Готовые конфигурации есть для STM32F1, STM32F4, STM32G4 и К1921ВК028. Порт не
содержит регистров МК: стандартные `__DATE__`/`__TIME__` одинаковы для GCC,
Arm Compiler 5/6 и Clang. Поэтому добавление следующего МК требует только
config, а не дублирования ядра.
KONOR публикует эти 24 байта ответом `FIRMWARE_INFO (0x03)`, сохраняя старый
32-байтовый `DEVICE_INFO` без изменений.