.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.