Инструменты пользователя

Инструменты сайта


doc:doclist:boot_loader_flm

Boot loader и FLM

Основная статья Загрузка микропроцессора и реанимация.

Комментарий Д.А.

BootLoader – обычная программа, зашитая железно в масочном пзу, ее нельзя изменить, перезаписать и прочее. При подаче питания или после ресета старт МК всегда начинается с этой программы. Программа эта проверяет ноги Mode[2:0] и в зависимости от комбинации либо включает jtagA или jtagB и стартует с адреса FLASH, либо конфигурирует внешнюю шину и стартует с адреса внешней шины, либо настраивает UART и дальше ждет команд по UART для загрузки основной программы в озу и старта этой программы из озу.

К flm и к кейлу BootLoader не имеет никакого отношения. Flm и кейл нужны для загрузки и отладки уже основной программы через jtag. В этом режиме основную программу можно разместить во FLASH (с помощью flm файла), тогда после ресета она стартанет оттуда, потому что так скажет BootLoader, либо в озу, но тогда в кейле в файле ini в функции SETUP необходимо задать адрес в озу, с которого должна стартануть программа.

Flm это тоже обычная программа для МК, которая загружается в озу (в настройках в кейле указывается конкретный адрес в озу) и реализует функции загрузки основной программы во внутреннюю FLASH или по внешней шине в любую внешнюю память. Тогда после отработки этой flm программы в памяти FLASH или в любой памяти подключенной по внешней шине уже будет основная программа и после ресета, в зависимости от режима, BootLoader скажет исполнять ее либо оттуда либо оттуда.

К первоначальным вопросам пользователя: 1) После ресета или сброса питания всегда первым работает BootLoader, так что если настроен режим UART, МК будет работать в этом режиме, если нужен другой режим, необходимо его поменять и сбросить МК, чтобы заново отработал BootLoader и загрузил МК в новом режиме. 2) Согласно коду BootLoader и спецификации, после приема команды CMD_BAUD МК отвечает на той же скорости и затем меняет текущую на заданную пользователем в качестве параметра команды. Но по факту были подобные проблемы с ответом на новой скорости, возможно это баг, разработчики производили симуляцию – подтверждения не получили.

1986ВЕ4

У ВЕ4 bootloader не зашит в масочном пзу, у него он зашивается во flash и соответственно может быть изменен, стерт и перезашит. Зашить его можно как просто программой, но (если bootloader не зашит и после ресета некому сообщить адрес старта) для отработки этой программы опять же в кейле в ini файле нужно указать с какого адреса озу или адреса flash нужно стартануть, так и с помощью flm (зашивается в озу и стартует с адреса в настройках flm), где анализируется бит FPOR в BKP_REG_0E – если он 0, то зашивается bootloader, если 1, а в единицу его устанавливает bootloader, значит bootloader зашит и снова зашивать его не нужно. А дальше bootloader просто есть во flash и работает он как любой другой bootloader, проверяя режимы после ресета или сброса питания и настраивая МК соответствующим образом.

1) Бит POR проверяет не BootLoader, а flm, чтобы убедиться, что BootLoader на месте. 2) BootLoader внутри flm в виде массива.

doc/doclist/boot_loader_flm.txt · Последние изменения: 2017/11/13 10:18 — vasco