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-протоколов.
Подключение
- Добавьте
include,src/firmware_info.cиsrc/firmware_info_port.c. - Скопируйте подходящий
ports/<mcu>/firmware_info_config.template.hв проект какfirmware_info_config.hи задайте SemVer. - Добавьте каталог с config и
includeв include path. - Перед сборкой запустите
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 без изменений.