Главная » Статьи » Полезная информация |
Использование загрузчика Bascom-AVR
У микроконтроллеров AVR есть такая полезная фишка как умение работать с Bootloader'ом, благодаря которому перепрошить микроконтроллер можно по стандартному UART интерфейсу, без использования программатора (но чтобы прошить bootloader программатор все же потребуется). Bootloader загружается в специальную область флэш памяти и срабатывает тогда когда микроконтроллер только начинает работать (при подаче питания или после сброса). Если, пока активен bootloader, в буфер UART попадет байт инициализации, загрузчик активизируется и начинает записывать получаемые данные в память микроконтроллера, а по завершению записи запустит только что записанную программу.
Существует большое количество готовых загрузчиков, та же популярная сейчас Arduino имеет встроенный Bootloader, благодаря которому происходит быстрая загрузка скетчей в память МК.
Bascom-AVR, тоже не отстает от конкурентов :) и для этого имеется уже готовые Bootloader'ы для большинства микроконтроллеров серии Mega.
Сейчас как раз и рассмотрим bootloader для Bascom-AVR и попробуем с помощью него прошить микроконтроллер. А в качестве согласующего звена используется преобразователь USB-UART на микросхеме FT232RL.
Первым делом выбираем микроконтроллер, в котором хотим использовать загрузчик. У меня это нафаршированная ATMega64a. Памяти в ней много и поэтому решил загрузить туда бутлоадер, с нее не убудет :)
Тестовая схема ниже, помимо микроконтроллера и преобразователя в схеме присутствуют светодиод, кварц на 16 МГц и кнопка сброса
Собранная схема у меня выглядит так (об этой платке я напишу немного позже)
Затем берем исходник бутлоадера, его можно найти в папке с установленным Bascom-AVR в разделе \SAMPLES\BOOT. Версий загрузчиков там много, я использовал BootLoader.bas В нем уже содержатся настройки для всех микроконтроллеров, достаточно открыть нужный от комментария и скомпилировать прошивку. Если необходимо можно подправить частоту кварца (я изменил на 16 МГц) и изменить скорость соединения с COM-портом. По умолчанию там стоит 38400 бод, и нужно быть внимательным, так как изменив этот параметр, придется тоже самое проделать в настройках программатора Bascom-AVR.
Итак, получив прошивку бута с нужными настройками, остается только загрузить его в микроконтроллер. Это делается стандартным способом - с помощью программатора :)
И тут есть свои нюансы. Во-первых, при компилировании прошивки, компилятор скажет что файл будет занимать 99% памяти микроконтроллера (даже ATMega64 с ее 64 кб флэша). На это не обращаем внимания. Это объясняется тем, что загрузчик записывается в самый конец адресного пространства. А так как запись данных при прошивке идет по порядку - с начала в конец, то загрузка может занять достаточно длительное время, особенно на медленных программаторах.
Во-вторых, необходимо правильно сконфигурировать фьюзы - выставить размер загрузчика "Boot Flash section Size" (для ATMega64 размер составляет 1024 слов) и запрограммировать фьюз "Boot Reset Vector". Только после этого наш загруженный бутлоадер будер стартовать первым при запуске микроконтроллера.
Размер загрузчика прописан в файле бутлоадера, поэтому выбирайте в зависимости от используемого типа микроконтроллера.
Скрин с настроенными фьюзами для ATMega64 привел ниже (в Khazama AVR Programmer). Здесь вдобавок выбрано тактирование от внешнего кварцевого резонатора.
После всего этого наш bootloader готов к работе!
Теперь нужно настроить ПО на стороне компьютера. Открываем Bascom-AVR и заходим в настройки во вкладку Programmer. Из выпадающего списка выбираем нужный нам тип программатора - MCS Bootloader.
В этой же вкладке выбираем номер COM порта (у меня он под номером 15) и скорость соединения. Здесь я оставил все по умолчанияю - 38400 бод.
Теперь необходимо открыть вкладку MCS Loader и поставить величину загрузочного сектора, соответствующее тому значению, которое выставили в прошивке бутлоадера (в моем случае 1024 слов)
Остальные настройки мало интересны, за исключением пункта "Reset via DTR". Эта галочка позволяет автоматически дергать ногу Reset на микроконтроллере, если подключить ее к выводу DTR на преобразователе. У меня это не реализовано поэтому при прошивке каждый раз буду нажимать на кнопку Reset вручную :) Но для полного счастья можно применить эту фичу.
После сохранения настроек, можно приступать к загрузке программы через бутлоадер. Для примера, загрузим в контроллер простую программку мигания светодиода на ноге PortD.7
$regfile = "m64def.dat"
$crystal = 16000000 Config Portd.7 = Output Led Alias Portd.7 Do Led = 1 Waitms 100 Led = 0 Waitms 500 Loop End компилируем (F7) и нажимаем F4 и тут же появится окно загрузчика
Как я уже писал, он ожидает когда стартует загрузчик в микроконтроллере, поэтому для начала заливки файла, необходимо сбросить микроконтроллер, нажатием на кнопку Reset. После нажатия произойдет загрузка новой программы. И тут, надо признаться, был приятно удивлен, тем с какой скоростью происходит загрузка программы - "летает" даже быстрее чем на юсбаспе и всяких STK200.
| |
Просмотров: 32890 | Комментарии: 49
| Теги: |
Всего комментариев: 49 | 1 2 » | ||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
1-30 31-49 | |||||||||||||||||||||||||||||
авторизация
рубрики
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |
метки