|
|
Описана технология 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. Если пишется бутлоадер
самостоятельно, то не факт, что он сразу заработает. Обязательно потребуется
отладка, и внимательное чтение документации на микроконтроллер. В списке можно
увидеть уже готовые популярные бутлоадеры, которыми можно воспользоваться
(список может быть и большим):
* Atmex,
http://ladyada.net/techproj/Atmex/, COM, 19200bps, Assembler; JAvrProg(Java),
ATtiny2313 (8-16Mhz);
* Bootloader Programmer, Peter Dannegger,
http://www.mikrocontroller.net/topic/12181, COM, Assembler;
ATmega8/16/32/128;
* AVRProg-compatible Bootloader, Martin Thomas,
http://www.siwawi.arubi.uni-kl.de/avr_projects/, COM, WinAVR (C); AVRProg;
Various AVRs and speeds;
* USBisp Bootloader, Matthias Weisser,
http://www.matwei.de/doku.php?id=en:electronics:usbisp, USB, COM, AVR-GCC(C);
AVRProg; STK-500; ATmega8, FT245BM;6MHz;
* DL5NEG, Herbert Dingfelder,
http://www.herbert-dingfelder.de/bootloader/bootloader.html, COM, 19200bps,
ASM, AVRProg;ATmega8 7.3728MHz;
* Chip45boot, Erik Lins,
http://www.chip45.com/index.pl?page=chip45boota?©=en, COM, 11500bps, WinAVR;
HyperTerminal; Various AVR
* STK500-Bootloader, Pascal Stang,
http://hubbard.engr.scu.edu/embedded/avr/bootloader/, COM, Hex; AVRProg;
STK500; ATmega8-128; 7.3 – 22.1MHz
* AVR109 (AVR Butterfly), Atmel,
http://www.atmel.com, COM, IAR(C);
ATmega series; 12MHz;
* AVRUSBBoot, Thomas Fischl,
http://www.fischl.de/avrusbboot/, USB, AVR-GCC; ATmega8(other Megas); 12MHz;
* Megaload, Sylvain Bissonnette,
http://www.microsyl.com/megaload/megaload.html, COM, 11500bps, ICCAVR(C);
Megaload.NET; Various AVR;
* Bootload HID,
http://www.obdev.at/products/avrusb/bootloadhid.html, USB, HID, WinAVR;
ATmega8;
* Crypto_Boot,
http://avrusb.wikidot.com/project:crypto-boot, USB, IAR(C); Crypted AES;
ATmega32; 12MHz.
Большинство бутлоадеров рассчитано на COM-порт, который уже устарел и в современных компьютерах встречается редко. Наиболее простой способ адаптировать эти бутлоадеры на USB - использование аппаратного моста USART <-> USB типа FT245BM. Но вероятно более удобно, когда USB подключен непосредственно к микроконтроллеру, и часть коммуникации бутлоадера сделана драйвером USB встроенного программного обеспечения.
[Ссылки]
1. AVR-USB-MEGA16:
USB bootloader BootloadHID для микроконтроллера ATmega16. Мой вариант
BootloadHID, заточенный под макетную плату AVR-USB-MEGA16 с микроконтроллером
ATmega16 (с исходниками и скомпилированными вариантами для микроконтроллеров
ATmega8, ATmega16, ATmega32 и кварцев на различные частоты).
2.
AVR-USB-MEGA16: USB bootloader USBASPloader для микроконтроллера ATmega32.
Мой вариант usbasploader, заточенный под макетную плату AVR-USB-MEGA16 с
микроконтроллером ATmega32 (проект для AVRStudio с исходниками и
скомпилированными вариантами для кварцев 12 МГц, 16 МГц).
Автор Андрей Синюткин. Сайт автора
Обсудить статью на форуме
| Если вы разработали схему или написали статью, и хотите чтобы о ней узнали все, пишите нам и мы разместим вашу статью (схему). Подробнее... |
|
Сайт eldigi.ru При
копировании материала с данного сайта, обязательна ссылка на сайт
eldigi.ru и на первоисточник! Администрация сайта eldigi.ru |
|