(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Как заставить китайский USB-программатор за $5 работать в Linux

Источник: habrahabr
resetnow

Этот пост будет полезен в первую очередь тем, кто только начинает знакомство с микроконтроллерами или переходит от Arduino непосредственно к AVR.

Небольшое введение


Итак, вероятно, вы уже знаете, что после того, как устройство будет спроектировано, печатная плата изготовлена и контроллер помещен на свое законное место, его потребуется запрограммировать. Большинство семейств микроконтроллеров имеют какой-либо интерфейс для внутрисхемного программирования - ISP, который обычно выводится на отдельный разъем на плате. В случае с AVR программирование происходит по пяти линиям связи: MOSI, MISO, SCK, RESET и GND.

Как это сделано в Arduino


Большинство плат Arduino позволяют заливать программу через USB, и, вероятно, начинающий пользователь упомянутой платы мало что слышал об ISP и программаторах. Arduino, однако, использует несколько иной способ загрузки программы: в памяти контроллера прошит так называемый bootloader (загрузчик) - небольшая программа, которая выполняется при старте контроллера. Загрузчик способен перевести контроллер в режим программирования в зависимости от каких-либо условий - состояния пинов, переменных в памяти и т. д. В случае с Arduino загрузчик используется в комплексе либо с USB-TTL конвертером на FT232 (на ранних версиях плат Arduino), либо с контроллером ATMega8u2. Упомянутые микросхемы выполняют роль программатора и в нужные моменты переводят основной контроллер в нужный режим.

Как сделать это без Arduino


В связи с тем, что на готовом устройстве постоянное подключение программатора не потребуется, используется разъем для программирования, упомянутый ранее. Кроме того, вам потребуется программатор. Беглый осмотр доступного ассортимента программаторов может привести в уныние - фирменный программатор стоит каких-то 2300 3 900 рублей. Значит, нам хватит и нефирменного. Интернет пестрит схемами программаторов - самый простой состоит из резисторов, разъема DB-25 и подключается к LPT-порту. Осталось найти LPT-порт.

В моем случае критерием выбора была цена, поэтому почти все самосборные варианты на FT232, ATTiny, ATMega не были приняты из-за дороговизны и отсутствия нужных компонентов в магазинах моего города - кварцевого резонатора и то не найти. А если заказывать в интернете, то почему бы не купить сразу программатор?

Таким образом, за $5 был приобретен вот такой программатор. Ищется на ebay по запросу "usbisp", "usbasp" или "avr programmer". Там их много, есть в корпусах, есть без, но, как я понял, конструкционно все они одинаковы.

После получения программатора по почте возникла проблема - он видится в системе не как виртуальный COM-порт, а как HID-устройство. Вполне возможно, что с AVR Studio он будет работать, но мне нужна была работа с avrdude в Linux, который никак не хотел работать с программатором.

Поиск по VID = 0x03EB и PID = 0xc8b4 привел вот на эту страницу. В принципе, весь этот пост мог бы состоять только из этой ссылки; но, возможно, многим начинающим будет проще прочитать то же самое на русском и в чуть более подробном виде.

Все операции над программатором имеют своей целью сделать его совместимым с USBASP - популярным программатором, для которого доступна принципиальная схема и исходный код прошивки. Для этого в программатор необходимо залить прошивку от USBASP, немного модифицированную.

Итак, операции по порядку.

Установка перемычки self-programming


Изображение с сайта www.sciencetronics.com

На плате есть контакты для перемычке, помеченные как "UP". Если впаять туда перемычку, можно будет залить прошивку в микроконтроллер, используемый в программаторе (скорее всего, это reset и ground).

Прошивка

Да, как ни печально, но вам понадобится второй программатор. Помимо упомянутого LPT-порта, сделать программатор легко из Arduino: достаточно скомпилировать и прошить скетч ArduinoISP из папки примеров. При этом подключение разъема программирования можно посмотреть здесь, а распиновку самого разъема - в Google по запросу "ISP 10 pin". Я для своего случая соорудил что-то вроде шилда из разъемов и одного конденсатора.

Файл для прошивки и исходный код можно скачать здесь.

Итак, программатор-жертва подключен к основному программатору (в моем случае - Arduino). Заливка прошивки производится через avrdude следующей командой:

avrdude -c avrisp -P /dev/ttyACM0 -b 19200 -p m8 -U flash:w:20130212_mega8_usbisp.hex:a -U lfuse:w:0xef:m -U hfuse:w:0xc9

  • -b 19200 - скорость порта
  • -c avrisp - тип программатора (для ArduinoISP такой)
  • -P /dev/ttyACM0 - путь к интерфейсу устройства
  • -p m8 - тип контроллера
  • -U flash:w:20130212_mega8_usbisp.hex:a - hex-файл для прошивки. Если вы скачали архив, ссылка на который была указана выше, то hex-файл именно так и называется.
  • -U lfuse:w:0xef:m -U hfuse:w:0xc9 - установка старшего и младшего FUSE-байт

После этого устройство можно отключать, а перемычку выпаивать. После выпаивания перемычки программатор порадует новыми VID=0x16c0 и PID=0x5dc, которые соответствуют USBASP. Теперь работать с ним можно так:

avrdude -c usbisp

На этом все. Остается только догадываться, с какой целью китайцы заливают в программаторы прошивку, которую непонятно как использовать, и каким образом HID-устройство может выступать в качестве программатора. Если и мимикрировать под USBASP, используя это слово в названии товара - можно и прошивку скопировать.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 25.10.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
FastReport FMX 2 Single
Купить CommView for WiFi 1 лицензия
SAP CRYSTAL Reports 2013 WIN INTL NUL
Microsoft 365 Business Basic (corporate)
ARCHICAD 21, локальная лицензия на 12 месяцев
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Программирование на Microsoft Access
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Реестр Windows. Секреты работы на компьютере
Один день системного администратора
Компьютерная библиотека: книги, статьи, полезные ссылки
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100