feat: add M95M02-only GAS and EEPROM profiles

Expose the existing registers through Modbus and service CAN using one GAS provider only in M95M02 builds.
Include the EEPROM layout/driver, LOAD protection and calibration, firmware identity and shared CCS build workflow.
Add transport/profile and SCI8 validation tests, documentation and the checked M95M02 firmware image.
This commit is contained in:
2026-10-09 16:17:37 +03:00
parent c6c9128238
commit 5d9818291b
63 changed files with 2307 additions and 365 deletions
+39
View File
@@ -1,5 +1,40 @@
## Номер выпуска
Меняйте `FIRMWARE_VERSION_MAJOR`, `FIRMWARE_VERSION_MINOR` и
`FIRMWARE_VERSION_PATCH` в `firmware_version.h` в корне проекта CCS.
Например, `0U`, `1U`, `2U` задают версию 0.1.2. Сохраните файл и
выполните Rebuild. После обновления настроек закройте/откройте проект и
выполните Clean/Rebuild.
Debug и Release запускают `prepare_identity.py`: он читает номер из заголовка
и передаёт его общему генератору. `firmware_identity.json` содержит только
product/target; номер выпуска в нём редактировать не нужно.
`${BuildDirectory}/generated/firmware_identity.h` и JSON-паспорт создаются
автоматически; вручную их не меняйте. Диапазоны: major/minor 0..255,
patch 0..999. Неверный номер останавливает генерацию.
# Результаты сборки
Версия 0.1.1 возвращает паспорт прошивки и блочное чтение EEPROM поверх
подтверждённой на плате базы `c6c9128`. COM_1 остаётся на 115200; исходники
`main.c`, `RS485.c`, `RS485.h` и настройки PLL не менялись относительно этой базы.
Не используйте 250000/256000 для проверки этой сборки. FIFO остаётся включённым,
как в рабочей базе; диагностический вариант без FIFO здесь не используется.
Блочное чтение, проверка размера и host-тесты проверяются программно;
после загрузки сначала проверьте чтение версии 0.1.1, затем 256 байт EEPROM.
Debug post-build CCS12 также копирует проверенный BIN и сопутствующие
`.manifest.json`/`.sha256` в
`../newProject/SETGUI/..periph_28335/firmware/periph28335/bal`.
Папка создаётся автоматически; имя BIN с Git commit сохраняется.
Копирование выполняет `copy_bin_to_setgui.ps1` после успешной проверки образа
и создания паспорта. Пути определяются относительно репозитория, не cwd CCS.
Для ручного копирования: `./copy_bin_to_setgui.ps1 -Path ./Bin/<имя>.bin`.
Версия работающей прошивки, SHA-256 BIN и паспорт сборки описаны в
[инструкции для 167](../Doc/FIRMWARE_IDENTITY.md). Перед компиляцией запускается
`preBuildStep.bat`; требуются Python 3.10+ и Git в PATH CCS. Debug post-build
создаёт рядом с BIN файлы `.manifest.json` и `.sha256`.
Для сборки требуется общий UMP-протокол из соседнего репозитория:
`../newProject/SETGUI/third_party/templates/c/set-protocol` (от корня этого
репозитория). Пути к заголовкам заданы в `.cproject` для Debug и Release;
@@ -14,3 +49,7 @@
BIN создаётся скриптом `build_bin.bat`; Git должен быть доступен в `PATH`
процесса CCS. Если определить коммит не удалось, сборка завершается ошибкой.
При наличии незакоммиченных правок хеш обозначает HEAD и не описывает эти правки.
## GAS для новой EEPROM
При EEPROM_M95M02=1 доступен профиль GAS 167/v1 через Modbus и служебный CAN УМП. Карта, проверки и измеренные размеры: [GAS_167_M95M02.md](../Doc/GAS_167_M95M02.md). В сборке AT25256B GAS исключён; её загрузочный BIN не увеличивается. После обновления проекта выполнить Clean/Rebuild: новый gas167.c зарегистрирован в .project.