======Boot loader и FLM====== Основная статья [[https://startmilandr.ru/doku.php/doc:doclist:bootloader|Загрузка микропроцессора и реанимация]]. Комментарий Д.А. **BootLoader** – обычная программа, зашитая железно в масочном пзу, ее нельзя изменить, перезаписать и прочее. При подаче питания или после ресета старт МК всегда начинается с этой программы. Программа эта проверяет ноги Mode[2:0] и в зависимости от комбинации либо включает jtagA или jtagB и стартует с адреса FLASH, либо конфигурирует внешнюю шину и стартует с адреса внешней шины, либо настраивает UART и дальше ждет команд по UART для загрузки основной программы в озу и старта этой программы из озу. К flm и к кейлу BootLoader не имеет никакого отношения. Flm и кейл нужны для загрузки и отладки уже основной программы через jtag. В этом режиме основную программу можно разместить во FLASH (с помощью flm файла), тогда после ресета она стартанет оттуда, потому что так скажет BootLoader, либо в озу, но тогда в кейле в файле ini в функции SETUP необходимо задать адрес в озу, с которого должна стартануть программа. Flm это тоже обычная программа для МК, которая загружается в озу (в настройках в кейле указывается конкретный адрес в озу) и реализует функции загрузки основной программы во внутреннюю FLASH или по внешней шине в любую внешнюю память. Тогда после отработки этой flm программы в памяти FLASH или в любой памяти подключенной по внешней шине уже будет основная программа и после ресета, в зависимости от режима, BootLoader скажет исполнять ее либо оттуда либо оттуда. К первоначальным вопросам пользователя: - После ресета или сброса питания всегда первым работает BootLoader, так что если настроен режим UART, МК будет работать в этом режиме, если нужен другой режим, необходимо его поменять и сбросить МК, чтобы заново отработал BootLoader и загрузил МК в новом режиме. - Согласно коду 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, проверяя режимы после ресета или сброса питания и настраивая МК соответствующим образом. - Бит POR проверяет не BootLoader, а flm, чтобы убедиться, что BootLoader на месте. - BootLoader внутри flm в виде массива.