Сохранить русские комментарии и настройки проекта в UTF-8

Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
This commit is contained in:
2026-10-12 12:24:48 +03:00
parent 378e06a281
commit f741741cf8
137 changed files with 21576 additions and 2134 deletions
+108
View File
@@ -0,0 +1,108 @@
# Назначение исходников Бальзам-167
Все редактируемые исходники C/H, ASM, CMD и Python используют UTF-8 без BOM.
Каждая строка кода снабжена русским пояснением. Существующие уведомления TI
и сведения о поставляемых файлах сохранены. Таблица покрытия и воспроизводимая
проверка находятся в [COMMENT_AUDIT.md](COMMENT_AUDIT.md) и
../tests/comments/run_test.py.
## Порядок работы
main.c сначала настраивает системные такты, PIE, внешнюю RAM, адрес платы,
CAN и оба SCI. Затем запускает EEPROM, очищает RAM журнала, явно инициализирует
регистратор и автомат LOAD, настраивает Timer1 и разрешает прерывания.
Параметры читаются из EEPROM; для LOAD Setup_DAC_time применяет длительность
нарастания тока и проверяет сохранённый тайм-аут CAN. Главный цикл обслуживает
команды, сохранение параметров, события регистратора и передачу служебного CAN.
Timer1 задаёт основную частоту READY_FREQ=1000 Гц. Для измерительной платы
обработчик находится в measure.c, для пульта — в pulto.c. Автомат нагрузки
выполняется в Timer1: он владеет START/STOP/разрешением и обновлением тока ЦАП.
Главный цикл не включает нагрузку поверх состояния защиты. Timer2 продвигает
автомат EEPROM; ожидание SPI не выполняется внутри длительной блокировки IRQ.
## Внутренние модули
| Файл | Назначение и важные ограничения |
| --- | --- |
| main.c | Порядок запуска, общий цикл, команды загрузчика и Modbus; COM_1 115200 с FIFO. |
| ADC.c | Настройка каналов АЦП, обработка преобразований и обновление фильтров. |
| measure.c | Типы датчиков, температурные/токовые/мощностные расчёты, диагностика, периодический такт. |
| filter_bat2.c | Накопительный фильтр; история и сумма обновляются вместе с новым отсчётом. |
| DAC.c | Передача слов ЦАП и автомат нагрузки: свежесть CAN, напряжение, STOP и максимум пять пусков. |
| ecan.c | Штатные CAN-кадры и отдельный служебный обмен УМП/GAS; ISR принимает, главный цикл передаёт ответ. |
| RS485.c | SCI-A/SCI-B, разбор кадров и упаковка слов; FIFO используется только первым портом. |
| message.c | FC03/FC06, маршрутизация УМП/GAS, заводские и сохраняемые параметры. |
| gas167.c | Карта 167/v1; проверка всего диапазона до чтения; ограничение записи такое же, как у обычного Modbus. |
| log_to_mem.c | Два банка RAM регистратора, события START/STOP/CAN/RS, замороженный архив и чтение через УМП. |
| shared_ump.c | Подключение общего протокола и паспорта из соседнего репозитория; логика общей библиотеки здесь не дублируется. |
| spise2p.c | SPI EEPROM: команда, адрес, порции данных, границы страниц и ожидание окончания записи. |
| bios.c | Последовательный загрузчик, команды памяти и EXTEND; адрес EEPROM проверяется отдельно от RAM. |
| cntrl_adr.c | Установка собственного/универсального адреса устройства. |
| peripher.c | Аппаратные перемычки, тип платы, кнопки, выбор канала и служебные GPIO. |
| kanal.c | Последовательная передача битов индикации выбранного канала. |
| pulto.c | Периодический обработчик и обмен пульта. |
| crc16.c | Таблицы и алгоритмы CRC для используемых пакетов. |
| tools.c | Внешняя шина XINTF Zone7 и задержки в микросекундах. |
## Заголовки проекта
package.h определяет аппаратные адреса и псевдонимы modbus. Стартовый ток
находится в 0x50, конечный — в 0x51. Сохраняемый LOAD_CAN_TIMEOUT занимает 0x52:
разрешено 1..60000 мс; заводское значение 600 мс устанавливается Default_params.
Setup_DAC_time исправляет недопустимое сохранённое значение на 600 мс.
Load_runner дополнительно использует 600 мс для локальной страховки при
недопустимом значении. LOAD_STATUS=0x7C и LOAD_ATTEMPTS=0x7D доступны для чтения.
eeprom_config.h выбирает физическую микросхему при сборке. spise2p.h задаёт
ширину адреса, длину страницы и типы задания SPI. gas167.h описывает границы
профиля и контракт снимка. log_to_mem.h задаёт формат точек и ёмкость банков.
RS485.h описывает состояние портов, буферы, FIFO и тайм-ауты.
measure.h хранит частоты, типы датчиков и битовые состояния диагностики.
caliber.h содержит заводские калибровочные значения. GPIO_table.h и peripher.h
задают аппаратные сигналы. Остальные заголовки объявляют интерфейсы одноимённых
модулей.
## Слово C28x и физические байты
На C28x int и char имеют ширину 16 бит. Адреса технологических регистров и GAS
считаются словами. Размеры EEPROM, загрузочного SCI8 BIN и октеты RTU считаются
8-битными байтами. Поэтому преобразование адреса EEPROM в байты выполняется
явно. Хостовые проверки используют uint16_t и модель аппаратных регистров,
чтобы обычные 8-битные char/32-битные int ПК не меняли смысл пакетов.
F28335.cmd размещает код в RAM и экспортирует абсолютные символы границ EEPROM.
EEPROM не является памятью, доступной ядру напрямую: ROM загружает образ по SPI
в RAM. Увеличение EEPROM не расширяет .text или RAM регистратора. Секция .logg
остаётся в Zone7A. Подробные пределы: [EEPROM_LAYOUT.md](EEPROM_LAYOUT.md).
## Поставляемые TI файлы
DSP2833x_headers/include содержит структуры аппаратных регистров и их битовые
поля. GlobalVariableDefs.c размещает структуры в именованных секциях; файлы
Headers_BIOS.cmd/Headers_nonBIOS.cmd связывают их с аппаратными адресами.
Рабочая сборка использует nonBIOS.
DSP2833x_common содержит начальную настройку тактов, таймеров, АЦП, PIE и XINTF,
таблицы векторов и программные приоритеты ISR. В SWPrioritizedIsrLevels.h
приоритет 0 исключает источник, меньшее ненулевое значение означает более
высокий приоритет; MINT и MG вычисляют соответствующие маски.
ADC_cal.asm и usDelay.asm обеспечивают фабричную калибровку/задержку C28x.
Комментарии описывают исходный порядок инструкций; код поставляемых модулей
не изменён.
## Настройки и результаты сборки
.project регистрирует связанные исходники и заголовки, .cproject задаёт Debug,
Release, флаги, пути и pre/post-build. .ccsproject описывает устройство и
инструментарий, .settings/*.prefs — настройки Eclipse/CCS. Эти XML и properties
содержат русские комментарии без изменения значений опций.
firmware_identity.json — входные product/target. Паспорт BIN и
profile-comparison.json — структурированные данные; комментарии JSON
недопустимы. Их поля описаны в FIRMWARE_IDENTITY.md и GAS_167_M95M02.md.
.bin/.hex/.out/.map, EXE, LIB и XLS — данные или результаты сторонних инструментов;
их нельзя снабжать комментариями как исходный C-код. .paf2/.sbl и корневые
.pjt/.lkf относятся к старым данным IDE/сборки. postBuildStep_Debug.old и fixya.bat
сохранены как старые служебные сценарии; действующие шаги CCS определены в
.cproject и соседних шаблонах.