Files
templates/c/firmware-info

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 без изменений.