Сохранить русские комментарии и настройки проекта в UTF-8
Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
This commit is contained in:
@@ -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 и соседних шаблонах.
|
||||
Reference in New Issue
Block a user