28 lines
1.9 KiB
Markdown
28 lines
1.9 KiB
Markdown
# 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` без изменений.
|