Add reusable firmware info module
This commit is contained in:
27
c/firmware-info/README.md
Normal file
27
c/firmware-info/README.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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` без изменений.
|
||||
Reference in New Issue
Block a user