AVARGESNANO.NAROD.RU

AVRUSBBoot for ATMega16 = AVRUSBBoot16

AVRUSBBoot16 это модификация проекта немецкого коллеги http://www.fischl.de/avrusbboot/ , который разработал на базе комплекта V-USB http://www.obdev.at/products/vusb/ бутлоадер универсального применения, однако выложенный им комплект (avrusbboot.2006-06-25) позволяет не сильно задумываясь, внедрить бутлоадер только в проекты на базе ATmega8, с кварцем только 12 МГц, к тому же в исходниках программы из комплекта я обнаружил довольно серьезный баг, который был исправлен (файл cbootloader.cpp, функция CBootloader::getPagesize(), строка с багом "return (buffer[0] << 8) | buffer[1];" заменена на "return (unsigned char) (buffer[0] << 8) | (unsigned char) buffer[1];" - без этой правки софт не работал, подозреваю что в этом месте автор оставил всё на откуп компилятору, а они бывают самые разные).

Мне надо было тоже самое для мк atmega16, причём на частоте 16 МГц (у меня было уже почти готовое изделие на базе V-USB). Пришлось модифицировать AVRUSBBoot, в итоге и получился AVRUSBBoot16, я приложил новые дррайверы из комплекта V-USB, теперь как минимум можно выбирать частоту кварца 12 MHz, 15 MHz, 16 MHz.

Download avrusbboot-avarges.zip (25.01.2010)

AVRUSBBoot for ATMega16 = AVRUSBBoot16

Что же такое бутлоадер и зачем он нужен:
Бутлоадер это небольшая программа, занимающая 2К из 16К памяти микроконтроллера ATmega16. Бутлоадер позволяет прошить в свободные 14К любую вашу программу(прошивку) по шине USB, при этом микроконтроллер прошивает сам себя, это даёт следующие преимущества:

  • если устройство уже собрано, то можно продолжать писать программу для него и прошивать улучшенные версии, даже не вскрывая корпус;
  • имея в схеме кварц 16 МГц у меня начались проблемы с прошивкой микроконтроллера, "не вынимая из схемы" через LPT порт (LPT порт не расчитан на такую частоту) - бутлоадер помог решить проблему;
  • при помощи бутлоадера можно сэкономить на контактной площадке под микроконтроллер, ведь если бутлоадер уже прошит, то мк можно смело впаять в схему;
  • если бутлоадер прошит, то программатор для этой микросхемы уже не нужен.

    Нужно ли корректировать свою программу под этот бутлодер ?
    Ответ: нет, лишь одно ограничение есть в данном случае: бутлоадер занимает "верхние" 2 килобайта в 16 килобайтах свободного места внутри ATmega16, то есть ваша программа ограничена размером 14 килобайт, эта небольшая разница и есть цена за все удобства от бутлоадера.

    Единственным минусом бутлоадера я считаю только то, что его необходимо прошить в микросхему, для этого один раз понадобится ваш любимый программатор, я не так уж давно стал заниматься микроконтроллерами, поэтому мой программатор: 6 проводков к LPT разъему (это назвается "если хочешь поменять прошивку - слазай под стол").

    Как это всё выглядит:
    Прошиваем бутлоадер (файл compiled-atmega16@16MHz.bin из архива) своим любимым программатором, фьюзы установить: BOOTRST,BOOTSZ0,BOOTSZ1 = 0, также фьюзы отвечающие за высокочастотный кварц: CKSEL0,1,2,3 = 1, всё - бутлоадер прошит. Следующий этап - использование: выключателем SB1 подаём 0 на ножку мк (тогда схема работает в режиме бутлоадера) подсоединяем USB кабель, компьютер начинает искать драйверы, надо ему указать папку с драйвером для AVRUSBBoot (из архива). Когда устройство успешно подключено и драйвер установлен - берём программу avrusbboot.exe (из архива, она под Windows), она прошивает по USB через бутлоадер вашу прошивку в мк (это программа командной строки, поэтому чтобы она прошила, команда такая "avrusbboot.exe main.hex", где main.hex это название вашей прошивки), SB1 выключаем, пересоединяем USB кабель - всё: работает уже ваша прошивка.

    Если ваша прошивка реализует какое-то устройство, которое тоже работает c USB - тем лучше и эффективнее использование схемы, ведь тогда собранное по вышеуказанной схеме стандартное (используйте V-USB) подключение ATmega к USB используется фактически для реализации на базе одного мк и одного USB подключения двух вирутальных устройств: бутлоадер AVRUSBBoot и ваше устройство.

    Бутлоадер AVRUSBBoot использует USB идентификаторы: VID 0x16c0 / PID 0x05dc, поэтому если вы тоже используете V-USB, в своей прошивке лучше всего измените в файле usbconfig.h эти значения, иначе при переключении между бутлоадером и вашей прошивкой компьютер не будет видеть разницы, в некоторых случая это не важно, а в некоторых будет вести к тому, что драйвер AVRUSBBoot постоянно придётся удалять или устанавливать, чтобы работал или бутлоадер или ваше устройство.

    В архиве схема, готовая прошивка для такого вариант схемы, прога для прошивки мк через бутлоадер и все исходники - качайте на здоровье:

    Download avrusbboot-avarges.zip (25.01.2010)

    AVARGESNANO.NAROD.RU

    Hosted by uCoz