Добавить защищённое обновление приложения через RS и CAN с сохранением загрузчика, проверкой CRC, восстановлением передачи и защитой EEPROM. Подключить общий процесс сборки C2000 и автоматический счётчик версии для согласованных RAM, Flash, CAN и паспортов бинарных образов. Уточнить запуск ЦАП, обработку измерений и параметров нагрузки, начальную индикацию и документацию регистров GAS. Дополнить модели аппаратуры и изолировать заголовки CAN в тестах. Проверка: 26 тестов выпуска, 4 теста восстановления CAN и восемь программных моделей CAN, Flash, EEPROM, ЦАП, параметров и TESTLAMP.
17 lines
2.7 KiB
NASM
17 lines
2.7 KiB
NASM
.ref _c_int00 ; Стандартный COFF startup применяет .cinit и вызывает main после отключения раннего watchdog.
|
|
.def _flash_app_start ; Экспортирует отдельную точку приложения; аппаратный вход 0x33FFF6 принадлежит постоянному загрузчику.
|
|
.sect ".flash_app" ; Linker резервирует 16 слов по 0x300000; postbuild заполнит описание FAB1 и CRC окончательно связанных LOAD-секций.
|
|
.word 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh ; До подписи отсутствуют magic и версия, поэтому незавершённый OUT не считается запускаемым приложением.
|
|
.word 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh ; Резервирует адрес точки входа и начало диапазона в словах C28x.
|
|
.word 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh ; Резервирует конец диапазона и CRC32 его физических октетов.
|
|
.word 0FFFFh, 0FFFFh, 0FFFFh, 0FFFFh ; Резервирует инверсию entry и маркеры завершённого описания FAB1.
|
|
.text ; Последовательность взята из штатного TI DSP2833x_CodeStartBranch.asm и размещается в секторе основного кода.
|
|
_flash_app_start: ; Общий загрузчик вызывает эту точку только после проверки описания и CRC приложения ниже сектора A.
|
|
SETC OBJMODE ; Выбирает C28x object mode, требуемый стандартным COFF startup процессора F28335.
|
|
EALLOW ; Разрешает запись защищённого регистра WDCR перед запуском C runtime.
|
|
MOVZ DP, #7029h>>6 ; Адрес слова WDCR=0x7029 из карты F28335; DP выбирает соответствующую страницу по 64 слова.
|
|
MOV @7029h, #0068h ; Значение 0x0068 содержит контрольные биты WDCHK=101 и WDDIS=1, как официальный TI startup.
|
|
EDIS ; Возвращает защиту системных регистров перед переходом в библиотечную инициализацию.
|
|
LB _c_int00 ; Применяет штатную ROM-модель инициализации и затем запускает текущий main 167.
|
|
.end ; Завершает модуль, не добавляя произвольных данных рядом с CSM-паролями сектора A.
|