Господа, добрый день!
Я тут пишу загрузчик для инфинеон аурикс 2 поколения. Там есть механизм загрузки прошивки в чистые чипы Bootstrap loader mode. В общем, он ждет на определенном юарте нулевой байт, автонастраивает скорость и ждет 128 байт, которые выкладывает с определенного адреса, затем их исполняет. 128 байт это не очень много (на обслуживание WDT надо только ~60 байт, а на отключение 140). Что вообще обычно засовывают в такие загрузчики? в идеале надо продолжить прием по юарту и записать нормальный загрузчик во флеш. Но в 128 байт это совсем не лезет.
Спасибо за внимание.
Привет юзерам аурикс!
До бутлоадера я там не дошел, но сами чипы - зачетные.
Могу сказать, как примерно то же самое работает в TMS320: начало все точно такое-же: ждет некоторый байт и автонастраивает по нему скорость, потом подсасывает то ли 128 то ли 256 байтиков и передает им управление. Первый такой алгоритм делает Clear - запоняет всю flash 0x00. Потом подгружается второй алгоритм - он делает Erase - заполняет всю flash 0xFF. Потом подгружается Program - он по-байтику берет из UART (с по-блочной КС) и програмит по-блочно flash-массив.
Я мог перепутать 0xFF и 0x00 для алгоритмов Erase, Clear - но суть понятна. Это технологические операции, требуемые flash-массивом.
Сами алгоритмы подгружаются в ОЗУ двойного назначения - в нее можно писать как в память данных а потом изменив бит в регистре контроля этого блока ОЗУ - юзать ее как память програм.