Поставки электронных компонентов ведущих мировых производителей
на главнуюнаписать письмокарта сайта ENG
О Корпорации «ТОЧКА ОПОРЫ»
МОСКВА,
Балаклавский проспект, 28 Б, строение 1
(495) 956 3942  (495) 956 3943 (факс)
(800) 200 3942  (бесплатные звонки)
скайп:  fulcrum.office
контакты и схема проезда
поиск по сайту:  ИСКАТЬ
 
 

Технические статьи

Начальный загрузчик для микроконтроллеров AVR®
фирмы Atmel с поддержкой программ AVRDUDE и AVRProg

Как было обещано при редизайне  предыдущей статьи  в 2013 году, публикуем расширенный вариант начального загрузчика с поддержкой популярных программ  AVRDUDE  и  AVRProg.

Первый вариант для  AVRProg  увидел свет примерно в 2007 году как часть другого проекта и, после достаточно длительной и сильной рихтовки, стал пригоден для публикации.  Загрузчик написан на ассемблере по мотивам предыдущей статьи, материалов программатора «Loader», app. note AVR910 (базовый набор команд и его декодирование) и AVR109 (блочные команды).
 

1.  Описание

Поддерживаются все 8-битные микроконтроллеры серии  ATmega  (по крайней мере – ATmega8,  ATmega88,  ATmega162,  ATmega32  и  ATmega1284), без проблем должны работать также серии  AT90USB  и  AT90CAN.  Обеспечивается программирование (за исключением области загрузчика, даже при сброшенных битах защиты) и чтение FLASH- и EEPROM-памяти, чтение служебной информации МК (биты конфигурации и защиты, идентификаторы).

Программирование FLASH-памяти производится постранично. Поддерживаются режимы блочной пересылки данных между ПК и загрузчиком, что резко снижает накладные расходы (вместо передачи двух служебных байт на один информационный – передается 5 служебных байт на страницу памяти программ).

Имеется метка  "hot_start"  для вызова загрузчика из прикладного ПО.  Предусмотрена возможность перемещения векторов прерываний в область загрузчика и обратно.  Можно использовать 32-битный счётчик реального времени в ОЗУ и программу его обслуживания в области загрузчика, продолжающую счёт как во время работы прикладного ПО, так и при загрузке нового  (использовано в исходном проекте на  ATmega162).

Передача управления загрузчику производится при подаче питания на МК битами конфигурации BootRST и BootSZ[1:0].  После запуска загрузчик ожидает установку заданного уровня на заданном выводе (по умолчанию – низкого уровня на выводе RxD,  см. типовую схему в BOOTLOAD.ASM).  Если заданный уровень отсутствует, управление передаётся прикладному ПО по адресу 0.  Обмен данными осуществляется через УСАПП  (USART  или  USART0,  если у МК есть более одного).

Программа  AVRProg  имеет графический интерфейс, поэтому работу с ней комментировать не будем совсем.  Программа  AVRDUDE  – консольная, но работу с ней мы также не будем комментировать подробно, а приведём только примеры командной строки для записи и чтения FLASH-памяти:

AVRDUDE -p atmega8 -P com3 -c avr109 -b 38400 -F -u -U flash:w:write_data.hex
AVRDUDE -p atmega8 -P com3 -c avr109 -b 38400 -F -u -U flash:r:read_data.hex

Первый параметр  "-p atmega8"  указывает тип МК.
Второй  "-P com3"  –  порт для связи ПК с загрузчиком  (в данном случае это конвертер на FT232, установленный как последовательный порт №3).
Третий  "-c avr109"  указывает AVRDUDE, что используется программатор, поддерживающий набор команд  AVR109  (включая блочную пересылку данных).
Четвёртый  "-b 38400"  задаёт скорость обмена данными  (38400 Бод, выбирается в файле BOOTLOAD.ASM).
Пятый и шестой  "-F -u"  –  несколько ускоряют работу за счёт отказа от проверок безопасности работы  (идентификаторов МК и состояния битов конфигурации, соответственно).
Последний параметр  "-U"  указывает, с какой памятью и какое действие производится  (flash – память команд,  w – запись  или  r – чтение),  а также какой файл данных при этом используется  (write_data.hex  или  read_data.hex).
 

2.  Исходные коды и комментарии

Проект состоит из 5-ти файлов: |   » скачать все файлы одним архивом

Скачать листинг (ASM-файл) BOOTLOAD.ASM:  содержит определения имён, выделение регистров и памяти, неспецифичные подпрограммы и настроечные константы
(листинг)
 
Скачать листинг (INC-файл) BOOTLOAD.INC:  содержит приём, разбор и выполнение команд ПК и специфичные подпрограммы для доступа к памяти МК
(листинг)
 
Скачать листинг (INC-файл) COM.INC:  обслуживает асинхронный интерфейс
(листинг)
 
Скачать листинг (TXT-файл) AT90ISP.TXT:  содержит коды МК для работы с AVRProg
(листинг)
 
Скачать листинг (INC-файл) MACROS.INC:  содержит макросы из app. note AVR001 для работы с регистрами ввода-вывода
(хотя, возможно, где-то в тексте есть и стандартные команды ассемблера).
(листинг)

 
Все места, требующие внимания пользователя (настроечные константы с выбором типа МК, частоты обмена с ПК, вариантов ассемблирования и т. п.) прокомментированы в исходных текстах или выдают необходимые предупреждения при ассемблировании.

Дополнительно поясним только выбор кода программируемого МК  (в терминах  AVRProg).  К сожалению, в  AVRProg  был заложен изначально порочный принцип привязки поддерживаемых МК к прошивке программатора  (см. строку 560 в BOOTLOAD.INC).  Поскольку развитие этого ПО прекращено, то приходится выбирать для новых МК коды подходящих старых из файла AT90ISP.TXT.  Главное правило выбора – равенство размеров страницы памяти программ.  Желательно – совпадение размеров памяти.
 

3.  Экстремальные возможности

Одна из «предсерийных» модификаций была cжата до 340 байт выкидыванием большинства команд  (только запись и чтение FLASH и EEPROM)  и работала совместно с AVRProg  в «лабораторно-настольных» условиях на ATtiny44, тактировавшемся от встроенного RC-генератора (откалиброванного на 7.3728 МГц при комнатной температуре, см. AVR053).  Основной проблемой в данном случае мне представлялось обеспечение «неубиваемости» загрузчика при отсутствии выделенной области памяти.  Способ достижения описан мною тут.

Synopsis:
AVR bootloader inspired by AVR910 and AVR109 for use with AVRDUDE or AVRprog.  Wrote in assembler.  For further information see english comments in source code.

 
 
Автор:  Станислав Лещинский  aka «Точка Опоры»
ООО «МФК Точка Опоры», Москва,  www.fulcrum.ru
21.02.2015

о компании
контакты и схемы проезда
партнерство
    главная        программа поставок    поиск по складу    поддержка    услуги
новости    конференции    рассылки    запросы товаров
 
карта сайта
добавить в избранное
сделать стартовой
 © 1999–2015  FulCrum Corp.
          обратная связь: ic@fulcrum.ru Поиск электронных компонентовRambler's Top100 ServiceTop100