Перейти на компактные 12-словные записи v4 и сохранять 10 процентов банка после отключения. Добавить трёхсекундное ожидание роста ЗПТ и настраиваемый лимит пусков. Явно инициализировать состояние UART и гарантировать публикацию параметров EEPROM перед запуском Timer2. Сохранить воспроизводимые сборки, регрессионные проверки, документацию и обновлённые результаты сборки; исключить временные артефакты.
Сборка Бальзам-167
Проект CCS использует TMS320F28335, модель памяти large и ABI COFF. Исходники и русские комментарии сохранены в UTF-8 без BOM. Кодировка проекта задана в .settings/org.eclipse.core.resources.prefs, правило редактора — в ../.editorconfig. Подробная проверка покрытия: COMMENT_AUDIT.md.
Версия и паспорт прошивки
Текущий номер 1.1.2 задаётся в firmware_version.h: major/minor 0..255, patch 0..999. Меняйте только три числовых определения версии и выполняйте Clean/Rebuild. firmware_identity.json хранит product/target.
Debug и Release вызывают prepare_identity.py. Он читает номер версии и передаёт его общему генератору паспорта. generated/firmware_identity.h и JSON создаются в каталоге сборки; вручную их редактировать не нужно. Паспорт включает исходный коммит, признак незакоммиченных изменений и время UTC. Порядок проверки приведён в FIRMWARE_IDENTITY.md.
Зависимости и настройки CCS
Для текущих конфигураций нужны Python, Git и TI C2000 22.6 LTS.
Debug и Release используют оптимизацию уровня 3 и приоритет размера
--opt_for_speed=0: это необходимо для размещения образа с настраиваемым
лимитом попыток в AT25256B. Проверенная локальная сборка находится в
Bin/AttemptLimit; перед загрузкой применяется SCI8-проверка границы EEPROM.
Общая реализация УМП и порт TMS320F28335 подключаются из
../newProject/SETGUI/third_party/templates/c/set-protocol относительно корня
репозитория. shared_ump.c включает эту реализацию и модуль паспорта.
В .cproject обе конфигурации используют генератор и post-build из K:/git_project/newProject/templates. При переносе проекта проверьте этот путь, пути Include Options к общей реализации и каталог назначения BIN. Генератор исходников и post-build сейчас находятся в соседнем репозитории; старые локальные build_bin.bat/preBuildStep.bat больше не входят в этот проект.
Post-build вызывает tools/firmware-build/ccs/postcompile.bat: формирует загрузочный образ, проверяет границы, создаёт паспорт и SHA-256. Текущий каталог копирования задан в .cproject: K:/git_project/newProject/SETGUI/..periph_28335/firmware/periph28335/balzam167.
COM_1 работает на 115200 с FIFO. COM_2 использует 57600 для OWEN либо 115200 для другого режима. Эти скорости задаются в main.c.
Профиль EEPROM и GAS
В Source/Internal/Include/eeprom_config.h значение EEPROM_M95M02=0 выбирает AT25256B 32 КиБ; значение 1 — M95M02-DR 256 КиБ. Выбор обязан соответствовать микросхеме на плате. После изменения нужен Clean/Rebuild. При отдельной сборке определение должно совпадать у компилятора и у препроцессора линкера.
GAS включается только при значении 1: технологические слова 0x5000..0x507F и дескриптор только для чтения 0x5F00..0x5F07. Транспорты — Modbus RTU и служебный CAN УМП. Карта и измеренные размеры: GAS_167_M95M02.md. Подробное назначение модулей: SOURCE_GUIDE.md.
Проверки
Запускайте из корня репозитория Python-скрипты tests/comments/run_test.py, tests/gas167/run_test.py, tests/eeprom_profiles/run_test.py, tests/load_control/run_test.py и проверки регистратора в tests/ump_logger. Проверка FIFO: tests/rs232_fifo/run_test.py --cc <путь к GCC>. Для MinGW каталог исполняемых файлов GCC должен присутствовать в PATH.