Files
templates/c/firmware-info
Andrey 41e24629ce Расширить DEIF, загрузку CAN и общую обработку сигналов
Добавить общее ядро DEIF, эмуляцию приборов и переносимые панели Python/Qt.
Расширить загрузчики F2812 и F28335, обновление Flash и профиль STM Invertor.
Добавить альтернативный МНК Eigen, модели неисправностей и диагностику сигналов.
Обновить справочники устройств, проекты CCS и регрессионные проверки.
2026-10-24 15:40:51 +03:00
..

Firmware Info

Компактный вариант для TMS320F2812, TMS320F28335 и STM32, общий pre/post-build, SHA-256 файла и паспорт сборки: подробная инструкция. Он сохраняет 12-словный контракт Climate и не требует парсера даты на MCU.

Переносимая библиотека версии реально запущенной прошивки. Повторяет контракт 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 без изменений.

Подробная инструкция с кодом обработчика, форматом ответа и проверкой переноса: PORTING.md. Для размещения файла прошивки в каталоге SETGUI используется отдельный общий публикатор.