В моей не давней статье про V-микшер, был один комментарий с предложением сделать видео урок по прошивке микроконтроллеров. Вот та статья


Да, к стати, описывать я буду AVR микроконтроллеры (tiny, mega), просто их великое множество, и так, поехали!

Начну с пояснений, что есть что и зачем это надо.

Сама так называемая «прошивка» - это файл с расширением «.hex» - это и есть программа, благодаря которой оживает микроконтроллер, установленный на вашей плате, без прошивки такая плата – просто кучка бесполезных радиодеталей! Именно её мы и скачиваем с просторов инета.Так же в папке с скачанной «прошивкой» может находиться и ещё один файл с расширением «.eep» - это не рабочая программа, а просто данные, которые использует основная программа, то есть временнЫе калибровки импульсов или на пример «домашние» координаты GPS, или фэйл сэйв и тому подобное, да просто всё, что угодно, что нужно сохранить в памяти и не настраивать заново плату после выключения питания.Файл «.hex» шьётся в FLASH контроллера. Файл «.eep» - в EEPROM. Об этом подробнее ниже.Так же существуют так называемые «фьюз биты» - они отвечают за настройку самого контроллера – это тактовая частота, пониженное напряжение до сброса, сторожевой таймер – защита от зависания, биты защиты от считывания прошивки – их устанавливает производитель, что бы не тырили прошивку! Ну и кое чего ещё…

На фьюзах можно не заострять внимание, если Вы просто перепрошиваете какую-то рабочую плату, на пример ESC для коптера для улучшения его характеристик…

Далее про мозги.

Все AVR-ки, запаянные на плате шьются по 6-ти проводам:

MOSI

MISO

SCK

RESET

Vcc – «+5В»

GND или Vss – «земля»

Именно так названы провода, выходящие с платы программатора!

И точно так же называются выводы микроконтроллера – их можно найти в документе под названием «datasheet».

Вот скриншот со второй страницы даташита для примера:

Это скрин ATmega8A-AU – красным потому, что это нам знать не обязательно.

И так: смотрим на нашу плату, находим микроконтроллер, читаем его название, скачиваем даташит и находим нужные нам ножки и скорее всего эти ножки соединены с штырьковой колодкой, распаянной на плате.

Далее про программатор.

Их, как и семейств контроллеров – множество!

Когда-то я пользовался на прямую LPT портом, потом собрал STK 200/300

Потом «AVR-910»

Всё это нравилось, пока я просто занимался повторением чужих конструкций. А уж как и сам научился писать прошивки, их скорости стало катастрофически не хватать – пришлось делать «USBASP», в то время я ещё не знал, что его можно купить здесь… USBASP а везде в инете тогда предлагали за 1000!

Пришлось делать самому Только вот проблема - что бы сделать такой программатор – нужен программатор. И если не у кого взять – то проще купить готовый.

Ещё бывает «Параллельное» программирование – это конечно очень быстро, но дорого!

Далее про оболочку.

Оболочка – это и есть та программа, которая устанавливается на компьютер, их тоже много красивых, функциональных и не очень… Всё их отличие в основном – это список поддерживаемых микроконтроллеров и программаторов. Именно в эту программу вставляются файлы «.hex» и «.eep», именно эта программа заливает прошивки на наши платы (через программатор конечно же), именно она переключает фьюзы…

Как я уже говорил – таких программ много. AVR Studio, CVAVR, AVRGCC и т.д. – это всё пакеты, в них пишется текст программы для контроллера, оптимизируется, компилируется и заливается в контроллер. Сам я пользуюсь CVAVR 2.05, но в ней нет поддержки программатора USBASP. По этому приходится пользоваться простыми оболочками, такими, как Khazama, AVRDUDE, SinaProg, ExtremeBurner и т.д.

Ну а теперь постараюсь наглядно показать, как всё это происходит, режиссёр из меня конечно не очень, да и голос далеко не дикторский.

Пояснение:

На макетной плате стоит микроконтроллер ATtiny13A, светодиод с ограничительным резистором, кнопка и подтягивающий резистор на вывод RESET.

Что будет делать контроллер? Он будет мигать светодиодом, за это отвечает файл «.hex». Короткими нажатиями на кнопку я буду увеличивать скорость моргания и эта скорость будет сохраняться в памяти – за это отвечает файл «.eep».

В качестве оболочки буду использовать «Khazama».

Смотрим.