24240

Boot loader и FLM

Дата последнего изменения: 25.02.2020 12:02:38

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

BootLoader – обычная программа, зашитая в масочном ПЗУ (ее нельзя изменить, перезаписать). При подаче питания или после сброса Reset старт микроконтроллера всегда начинается с выполнения этой программы. Программа проверяет выводы Mode[2:0] и, в зависимости от комбинации

  • либо включает JTAGA или JTAGB и стартует с адреса FLASH,

  • либо конфигурирует внешнюю шину и стартует с адреса внешней шины,

  • либо настраивает UART и дальше ждет команд по UART для загрузки основной программы в ОЗУ и старта этой программы из ОЗУ.

К FLM и к Keil Boot Loader не имеет никакого отношения. FLM и Keil нужны для загрузки и отладки уже основной программы через JTAG. В этом режиме основную программу можно разместить во FLASH (с помощью FLM-файла). Тогда после сброса она начнет исполняться оттуда, потому что так определено в Boot Loader либо в ОЗУ, но в этом случае в Keil в файле ini в функции SETUP необходимо задать адрес в ОЗУ, с которого должна начать выполнение программа.

FLM -  это тоже обычная программа для микроконтроллера, которая загружается в ОЗУ (в настройках в Keil указывается конкретный адрес в ОЗУ) и реализует функции загрузки основной программы во внутреннюю FLASH или по внешней шине в любую внешнюю память. Тогда после отработки этого FLM в памяти FLASH или в любой памяти, подключенной по внешней шине, уже будет расположена основная программа. После сброса RESET, в зависимости от режима, Boot Loader определит, откуда ее исполнять.

После сброса RESET или сброса питания всегда первым работает BootLoader.  Если настроен режим UART, МК будет работать в этом режиме, если нужен другой режим, необходимо его поменять и сбросить МК, чтобы заново отработал BootLoader и загрузил МК в новом режиме.

Согласно коду BootLoader и спецификации, после приема команды CMD_BAUD МК отвечает на той же скорости и затем меняет текущую на заданную пользователем в качестве параметра команды.

1986ВЕ4

У микроконтроллера 1986ВЕ4 Boot Loader зашит не в масочном ПЗУ, а во Flash и, соответственно, может быть изменен, стерт и перезашит. Зашить его можно просто программой. При этом необходимо учитывать, что, если Boot Loader не зашит и после сброса некому сообщить адрес старта. Для отработки этой программы в Keile в ini-файле нужно указать, с какого адреса ОЗУ или адреса Flash нужно начать исполнение. Можно зашить Boot Loader и с помощью FLM - программа, которая вызывается в Keil при выборе опции Erase в основном меню или при выборе алгоритма программирования в настройках проекта (зашивается в ОЗУ и стартует с адреса, указанного в настройках FLM). При запуске FLM анализируется бит FPOR в BKP_REG_0E – если он 0, то зашивается Boot Loader, если 1, а в единицу его устанавливает Boot Loader, значит Boot Loader зашит и снова зашивать его не нужно. После этого Boot loader расположен во Flash и работает как любой другой Boot Loader, проверяя режимы после RESET или сброса питания и настраивая МК соответствующим образом.

При вызове операции стирания  бит POR проверяет не Boot Loader, а FLM, чтобы убедиться, что Boot Loader зашит в память. В микроконтроллере 1986ВЕ4 Boot Loader внутри FLM представлен в виде массива.

Сохранить статью в PDF

Теги

Была ли статья полезной?