Добавить неизменяемое окно firmware-info v1 0x1200 из 12 слов для FC03 и служебного CAN, запретить запись. Сохранить текущую технологическую карту и логгер v4 с записью 12 слов. Подключить общий генератор версии 1.0.0 для Balsam-166-PM35, prebuild CCS и локальный выпуск BIN с manifest и SHA-256. Проверять соответствие встроенных слов манифесту до публикации; старый OUT без паспорта отклонять. Проверка: реальные обработчики RS/CAN и CRC под GCC O3, прежний тест логгера, анализатор установленного SetGUI, полная сборка TI C2000 22.6.0.LTS. BIN 30248 байт при границе параметров 32508 байт. Аппаратная проверка требует установки нового образа и перезапуска платы.
76 lines
6.5 KiB
Markdown
76 lines
6.5 KiB
Markdown
# Проект 166 для CCS 12
|
||
|
||
Настройки перенесены из проекта 167. Имя проекта в CCS: `Balsam_166`.
|
||
|
||
## Импорт и сборка
|
||
|
||
1. В CCS выберите **Project → Import CCS Projects** и укажите эту папку
|
||
(`166/UKSSTMS320F28335`).
|
||
2. Импортируйте проект без **Copy projects into workspace**: исходники и
|
||
библиотеки подключены из родительской папки по относительным путям.
|
||
3. Выберите конфигурацию **Debug** и выполните **Build Project**.
|
||
|
||
Используется TI C2000 Compiler **22.6.1.LTS**, TMS320F28335, FPU32 и COFF ABI.
|
||
Сохранены настройки компиляции, линковки и преобразования прошивки из 167.
|
||
Исходники берутся из `166/Source`, linker-файл — `166/F28335.cmd`.
|
||
Файл `28335_RAM_lnk.cmd`, как и в 167, исключён из сборки.
|
||
|
||
Результаты сборки находятся в `166/Bin`: `UKSSTMS320F28335.out`,
|
||
`UKSSTMS320F28335.hex` (Intel HEX) и `UKSSTMS320F28335_<build_id>.bin`.
|
||
Рядом с BIN создаются `<имя>.bin.manifest.json` и `<имя>.bin.sha256`.
|
||
Build ID содержит восемь символов: восемь цифр ревизии либо семь цифр и `+`
|
||
при изменённых исходниках или общей библиотеке. При недоступном Git общий
|
||
контракт 167 использует `NOGIT000`; для выпуска следует проверить ревизии
|
||
`source` и `templates` в манифесте. Время паспорта хранится в UTC.
|
||
|
||
Prebuild `prepare_identity.py` использует тот же генератор firmware-info,
|
||
что 167, но product равен `Balsam-166-PM35`. Единственный источник версии —
|
||
`firmware_version.h`; первый выпуск с паспортом имеет версию **1.0.0**.
|
||
Обязательный `generated/firmware_identity.h` создаётся до компиляции.
|
||
Postbuild `build_identity.py` использует hex2000 из выбранного компилятора
|
||
CCS, общий манифест и SHA-256, затем независимо проверяет наличие ровно
|
||
одного соответствующего 12-словного паспорта в SCI8. Старый OUT без паспорта
|
||
или BIN с чужими полями не публикуется. Превышение границы параметров EEPROM
|
||
**32508 байт** также останавливает выпуск. Архивы сохраняются локально в
|
||
`UKSSTMS320F28335/Debug/firmware`; записи в репозиторий GUI нет.
|
||
|
||
`build_bin.bat` сохраняет ручную точку входа для уже скомпилированного OUT,
|
||
но теперь также требует его совпадения с паспортом соответствующего prebuild.
|
||
Простая конверсия старой прошивки не может создать ей достоверную версию.
|
||
Карта линковки остаётся в корне 166, карта конверсии — в `166/Bin`.
|
||
|
||
## Проверка прошивки в SetGUI
|
||
|
||
Из 167 точечно перенесён контракт firmware-info v1: FC03, адрес **0x1200**,
|
||
**12 регистров**, версия, дата UTC и Build ID. Чтение доступно также через
|
||
существующий служебный CAN; запись в паспорт запрещена. Технологическая
|
||
карта, логгер v4 с записью 12 слов, управление и CAN ID не меняются.
|
||
|
||
В GUI выберите модель **«Бальзам-166 · ПМ35»**, новый BIN и оставьте рядом
|
||
его `.bin.manifest.json`. После записи EEPROM перезапустите плату и нажмите
|
||
чтение версии: продолжающая работать старая прошивка ещё не имеет окна
|
||
0x1200 и отвечает `Modbus 2`. Надпись CRC OK при записи подтверждает запись
|
||
EEPROM, а версия начнёт читаться после запуска нового образа. Сравнение
|
||
версий и SHA-256 манифеста не является измерением SHA всей памяти платы.
|
||
|
||
`python tests/firmware_identity/run_test.py` проверяет реальные обработчики
|
||
RS/CAN, все слова паспорта, CRC, частичные чтения, границы, запрет записи,
|
||
сохранность старой карты и логгера. Отдельно проверяются устаревшие и
|
||
повреждённые SCI8, предел EEPROM и действующий анализатор манифеста SetGUI.
|
||
|
||
Проверено: импорт и полная сборка **Debug** в CCS **12.7.1** с компилятором
|
||
**22.6.1.LTS**, включая генерацию HEX/BIN, завершились без ошибок.
|
||
Есть шесть предупреждений в существующих `peripher.c` и `measure.c`
|
||
(преобразование знака, выход результата за диапазон и отсутствие перевода
|
||
строки в конце файла). Проверка на устройстве не выполнялась.
|
||
|
||
Перенос паспорта дополнительно проверен полной пересборкой и линковкой
|
||
TI C2000 **22.6.0.LTS** и host-тестами под GCC с оптимизацией O3. Проверенный
|
||
SCI8 BIN занимает **30248 байт**, запас до параметров EEPROM — **2260 байт**.
|
||
Совпадение встроенного паспорта, манифеста и результата штатного анализатора
|
||
SetGUI проверено программно; обмен новой прошивки с физической платой
|
||
требует её установки и перезапуска.
|
||
|
||
Конфигурация **Release** перенесена из 167 без изменений и не проверялась;
|
||
для сборки прошивки используйте **Debug**.
|