Добавить общее ядро DEIF, эмуляцию приборов и переносимые панели Python/Qt. Расширить загрузчики F2812 и F28335, обновление Flash и профиль STM Invertor. Добавить альтернативный МНК Eigen, модели неисправностей и диагностику сигналов. Обновить справочники устройств, проекты CCS и регрессионные проверки.
157 lines
12 KiB
Markdown
157 lines
12 KiB
Markdown
# Отдельные проекты CCS: F28335 и F2812
|
||
|
||
Весь комплект находится внутри `templates/c/protocan-boot`: проекты CCS,
|
||
исходники загрузчиков, аппаратные порты, linker command files, необходимая
|
||
поддержка TI, CLI-сборка, тесты и документация. Зависимости от исходников
|
||
`28335_periph` и `BALZAM_167` при сборке отсутствуют. Требуется установленный
|
||
TI C2000 compiler с поддержкой **COFF ABI**; проверена версия **22.6.0.LTS**.
|
||
|
||
| Проект CCS | Контроллер | Обновляемая память | Схема |
|
||
| --- | --- | --- | --- |
|
||
| `ccs/f28335` — `F28335_CAN_AB` | TMS320F28335 | M95M02, 256 КиБ | A/B, trial, CONFIRM, rollback |
|
||
| `ccs/f2812` — `F2812_CAN_NOR` | TMS320F2812 / ПМ67 | AM29LV800BT-70EI, 1 МиБ, x16 | Один выделенный NOR-слот, проверяемый manifest, CAN recovery |
|
||
|
||
F2812 не использует EEPROM. Его карта, GPIO, частота CAN, допустимые адреса
|
||
приложения и состояние протокола отделены от F28335.
|
||
|
||
## Открытие в Code Composer Studio
|
||
|
||
1. **Project → Import CCS Projects**, каталог поиска — `c/protocan-boot/projects/ccs`.
|
||
2. Выбрать `F28335_CAN_AB` и `F2812_CAN_NOR`. Оставить проекты в исходном
|
||
расположении: **не включать Copy projects into workspace**, поскольку
|
||
переносимые ссылки `PCAN_ROOT` ведут к общей библиотеке выше проектов.
|
||
3. Выбрать **Debug** либо **Release**, затем **Build Project**. Оба проекта
|
||
содержат собственные `.project`, `.cproject`, `.ccsproject`.
|
||
4. OUT/MAP появятся в `ccs/<контроллер>/<Debug|Release>/`.
|
||
|
||
В `targetConfigs` сохранены существующие конфигурации Sauris SAU510:
|
||
F28335 — Iso Plus v.2, F2812 — Iso Plus. Для другого адаптера выбрать свой
|
||
Connection в Target Configuration. Компиляция и импорт не подключаются к JTAG
|
||
и не программируют плату.
|
||
|
||
Для отдельных workspace с ограниченными правами CCS допускает переменную
|
||
`TI_APPDATA_DIR` с доступным для записи каталогом. Это служебный cache IDE,
|
||
он не относится к исходникам загрузчиков.
|
||
|
||
## Сборка без запуска IDE
|
||
|
||
Из корня **templates**:
|
||
|
||
```powershell
|
||
python c/protocan-boot/projects/build.py --device f28335
|
||
python c/protocan-boot/projects/build.py --device f2812
|
||
python c/protocan-boot/projects/build.py --device f28335 --configuration Release
|
||
python c/protocan-boot/projects/build.py --device f2812 --configuration Release
|
||
```
|
||
|
||
Можно передать `--compiler <каталог-ti-cgt-c2000>` и `--output <каталог>`.
|
||
Скрипт читает состав исходников и настройки из этих же CCS-проектов, полностью
|
||
пересобирает их и проверяет реальные COFF LOAD-адреса официальным `ofd2000`.
|
||
Проверка отклоняет загружаемый RAM-код без Flash LOAD, пересечения, отсутствующие
|
||
boot branch/C entry, запись CSM/OTP и посторонних внутренних секторов.
|
||
Рядом с OUT сохраняются MAP, `build.log` и manifest с SHA-256.
|
||
|
||
Результаты:
|
||
|
||
- `ccs/f28335/Debug/F28335_CAN_AB.out`;
|
||
- `ccs/f2812/Debug/F2812_CAN_NOR.out`.
|
||
|
||
OUT — постоянный загрузчик для первоначальной установки через JTAG во
|
||
**внутреннюю Flash** соответствующего TMS. Образ самого приложения передаётся
|
||
по CAN в его внешнюю память. Для автоматического запуска должен быть выбран
|
||
внутренний Flash boot; у ПМ67 необходимо также учитывать штатную логику CPLD
|
||
выбора источника reset/boot из `big_dsp_module` платы.
|
||
|
||
## F28335 / M95M02
|
||
|
||
Проект использует существующий порт и формат журнала без изменения адресов:
|
||
**PERIPH 0–31: Type = 1 + PERIPH / 16, Device ID = PERIPH mod 16**.
|
||
УМП1 — **1/5**, УМП2 — **1/6**, задатчик — **1/8**.
|
||
Product **0x2833**, HW **1**, CAN **250000 бит/с**. Приложение и загрузчик
|
||
используют один аппаратный номер платы; прежний общий адрес **3/7** отменён.
|
||
Код загрузчика — внутренний сектор A `0x338000..0x33FF7F`, boot — `0x33FFF6`.
|
||
Слоты M95M02 имеют по **130560 октетов**, параметры — прежние 258 октетов
|
||
по адресу `0x3FEFC`. Приложение загружается в RAM ниже CPU word-адреса `0xE000`.
|
||
|
||
После установки постоянного загрузчика новое приложение 167 передаётся
|
||
существующим клиентом SETGUI **CAN / ProtoCAN Boot**. Оно обязано содержать
|
||
hooks READY/CONFIRM и watchdog: пример интеграции реализован в ветке 167.
|
||
Без CONFIRM следующий reset возвращает подтверждённый active.
|
||
Полная последовательность — [документация порта F28335](../ports/tms320f28335/README.md).
|
||
|
||
## F2812 / AM29LV800BT
|
||
|
||
Профиль: **Device Type 3, Device ID 6, Product 0x2812, HW 1,
|
||
CAN 250000 бит/с, SYSCLKOUT 150 МГц**. CAN находится на **GPIOF6 TX / GPIOF7 RX**.
|
||
F2812 использует программную арифметику `rts2800_ml.lib`; F28335 — FPU32
|
||
и `rts2800_fpu32.lib`.
|
||
|
||
Внутренний сектор A загрузчика: `0x3F6000..0x3F7F7F`, boot — `0x3F7FF6`.
|
||
Внешняя NOR подключена по **CPU word-адресу `0x100000`**. Новый CAN-раздел
|
||
задан явно в `ports/tms320f2812/boot2812.h`:
|
||
|
||
| Область | CPU word-адреса включительно | Размер |
|
||
| --- | --- | ---: |
|
||
| Существующая нижняя область: прежние образы/параметры/FPGA | `0x100000..0x15FFFF` | 768 КиБ |
|
||
| Новый SCI8 CAN-образ: обычные сектора 12/13/14 | `0x160000..0x177FFF` | **192 КиБ** |
|
||
| Неизменяемые этим загрузчиком top-boot сектора 15/16/17 | `0x178000..0x17DFFF` | 48 КиБ |
|
||
| Новый manifest: последний top-boot сектор 18 | `0x17E000..0x17FFFF` | 16 КиБ |
|
||
|
||
Это **новое явное размещение CAN-образа**, а не автоматическое определение
|
||
свободного места в уже заполненном чипе. Перед первоначальной установкой
|
||
согласовать эти два выделенных участка с фактической картой NOR конкретной
|
||
платы. В известном исходнике FPGA начинается с `0x130000`, а новый CAN-слот
|
||
находится выше; драйвер не изменяет ничего ниже `0x160000` и в секторах 15–17.
|
||
|
||
После reset доступно **3 секунды** для ENTER_BOOT. Открытая сессия удерживает
|
||
загрузчик; пустой/повреждённый manifest оставляет CAN recovery постоянно.
|
||
Для обновления уже работающего приложения нужно войти в это окно после reset;
|
||
приложение F2812 само по себе пока не получает обработчик ENTER_BOOT от добавления
|
||
отдельного проекта загрузчика.
|
||
|
||
Перед записью требуется AMD manufacturer **`0x0001`**, device **`0x22DA`**.
|
||
Сначала стирается сектор manifest, затем три сектора образа. Запись проверяет
|
||
каждое слово. VERIFY повторно читает NOR, проверяет CRC32, SCI8, entry,
|
||
перекрытия и запрещённые назначения. COMMIT повторяет проверку, сохраняет
|
||
manifest с собственной CRC, два magic-слова публикуются последними.
|
||
Стирание сообщает BUSY каждые 250 мс, продлевая живую сессию.
|
||
|
||
Это single-slot схема: при обрыве обновления последнего CAN-образа остаётся
|
||
recovery, автоматический A/B rollback для F2812 не заявляется. Полное стирание
|
||
NOR, запись внутренней Flash по CAN и программирование FPGA отсутствуют.
|
||
|
||
Образ приложения — **TI SCI8 `AA 08`**, максимум **196608 октетов**. Старый
|
||
flat BIN основного контроллера автоматически не мигрируется. Допустимый payload:
|
||
|
||
- L0 `0x8000..0x8EFF`;
|
||
- H0 `0x3F8000..0x3F9FFF`;
|
||
- внешняя SRAM zone2 `0x80000..0xFFFFF`.
|
||
|
||
Стек M1, L1 `0x9000..0x9FFF`, RAM InitFlash `0x8F00..0x8FFF`, периферия,
|
||
внутренняя Flash и NOR не допускаются как назначения SCI8. `.ebss` приложения
|
||
может занять L1 после перехода в его C runtime; инициализированный payload
|
||
работающую RAM загрузчика перезаписывать не должен. Настройка приложения
|
||
F2812/его linker — отдельная от импорта загрузчика операция.
|
||
|
||
Геометрия x16, ID и команды AA/55/A0/80/30/F0 взяты из
|
||
[оригинального datasheet AMD Am29LV800B](https://cms.nacsemi.com/content/AuthDatasheets/FASLS02690-1.pdf).
|
||
Аппаратные GPIO/CPLD и XINTF-тайминги перенесены из действующих
|
||
`big_dsp_module.c` / `flash_tools.c` ПМ67, без зависимости от этих файлов при сборке.
|
||
|
||
## Проверки
|
||
|
||
```powershell
|
||
$env:CC = 'C:/msys64/ucrt64/bin/gcc.exe'
|
||
python c/protocan-boot/tests/run_tests.py
|
||
```
|
||
|
||
Проверяются протокол, CRC, сессии/BUSY, A/B F28335 с trial/rollback/CONFIRM,
|
||
NOR F2812 с настоящими AMD command cycles, ID, readback, запрещёнными секторами,
|
||
обрывами COMMIT, повреждением CRC/SCI8 и тайм-аутом DQ7.
|
||
Вариант с CMake/CTest также поддерживается.
|
||
|
||
Подтверждены реальные import/build обоих проектов в CCS 12.3, CLI-сборки
|
||
Debug/Release TI 22.6 COFF и проверки секций OUT. Физические JTAG/CAN/XINTF,
|
||
режим boot и поведение конкретной платы при отключении питания требуют стенда;
|
||
физическое программирование этим комплектом автоматически не выполнялось.
|