Загрузчики (bootloader) для микроконтроллеров AVR |
Написал microsin | |
20.01.2010 | |
Описана технология bootloader, встроенная во все микроконтроллеры Atmel AVR семейства ATmega. Материал для статьи взят с сайта http://www.scienceprog.com/. Возможно, что самый удобный и правильный метод программирования микроконтроллера - использовать программу бутлоадера. Поскольку Вам не надо использовать специальные адаптеры для программирования или специальные знания – нужно просто подключить стандартный кабель от Вашего PC к целевой плате и запустить на PC специальную программу, которая соединяется с программой бутлоадера, записанной в микроконтроллере. Идея проста:
Если микроконтроллер после сброса предварительно переконфигурирован (если установлены определенные фьюзы), он стартует не с адреса 0x0000, а со специального адреса, в котором обычно располагается bootloader. На диаграмме condition - это условие загрузки, которое определяется обычно опросом состояния специальной внешней перемычки, подключенной к ножке микроконтроллера. Все микроконтроллеры семейства AVR ATmega имеют возможность запрограммировать bootloader в старшие адреса адресного пространства. Адрес старта программы зависит от установок внутренних перемычек кристала AVR (fuse settings). Если установки указывают стартовать с другого адреса, то после сброса программный счетчик переставляется на секцию бутлоадера, и тогда первым выполняется bootloader. Бутлоадеры могут иметь раличный размер и использовать разные алгоритмы и интерфейсы, через которые будет загружаться основная программа. Источниками для загрузки могут быть карты Flash (MMC/SD), I2C, USART (COM-порт или RS232), SPI и USB. Условие для загрузки может быть получено, например, путем опроса специальной внешней перемычки, или наличием на карте памяти MMC/SD специального файла с прошивкой. [USB bootloader] Несомненно, самый удобный для пользователя интерфейс загрузки - USB. Этот интерфейс очень популярен, работает на всех операционных системах. Но протокол USB довольно сложен, поэтому встраивание bootloader в микроконтроллер, не имеющий аппаратной поддержки USB, потребует значительного объема кода (до 2 килобайт). Наиболее распространена программная реализация протокола USB от компании Objective Development - V-USB. Есть также другая программная реализация - USBtiny. Для микроконтроллеров AVR с аппаратным интерфейсом USB (например, AT90USB162) компания Atmel предлагает фирменные загрузчики по USB. Некоторые микроконтроллеры поставляются с завода с уже прошитым в память загрузчиком (например, все тот же AT90USB162). Технологии, применяемые для такого bootloader, называются DFU и Flip. Подробнее см. здесь - http://microsin.ru/content/view/685/44/. [Разнообразие бутлоадеров для AVR]
Многие AVR bootloader используют COM-порт для соединения с PC. Это хорошо работает, если используется аппаратный мост USB-USART. Если пишется бутлоадер самостоятельно, то не факт, что он сразу заработает. Обязательно потребуется отладка, и внимательное чтение документации на микроконтроллер. В списке можно увидеть уже готовые популярные бутлоадеры, которыми можно воспользоваться (список может быть и бОльшим): Большинство бутлоадеров рассчитано на COM-порт, который уже устарел и в современных компьютерах встречается редко. Наиболее простой способ адаптировать эти бутлоадеры на USB - использование аппаратного моста USART <-> USB типа FT245BM. Но вероятно более удобно, когда USB подключен непосредственно к микроконтроллеру, и часть коммуникации бутлоадера сделана драйвером USB встроенного программного обеспечения. [Ссылки]
1. AVR-USB-MEGA16: USB
bootloader BootloadHID для микроконтроллера ATmega16. Мой вариант BootloadHID, заточенный под макетную плату AVR-USB-MEGA16 с
микроконтроллером ATmega16 (с исходниками и
скомпилированными вариантами для микроконтроллеров ATmega8, ATmega16, ATmega32 и кварцев на различные частоты). |
|
Последнее обновление ( 02.10.2010 ) |