Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Альтернативные прошивки для AVR910 by PROTTOSS
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3
Ink
Приветствую всех участников форума!

Вот пришла и моя очередь "принести пользу обществу" :)
Предлагаю на ваш суд альтернативные прошивки для программатора AVR910 by PROTTOSS. Надеюсь, никто, а особенно автор, против не будет:)



0. Оригинальная прошивка

Оригинальная прошивка и драйвера доступны по адресу http://www.prottoss.com/projects/AVR910.us..._programmer.htm.



1. AVR-Doper

Довольно известный и популярный программатор, попытки портирования на форуме уже были, но к большому сожалению они затерялись в той большой ветке (было дело, искал целенаправленно, но не мог найти!). Но главное, что в тех прошивках так и не был исправлен глюк с таймаутами в avrdude и "работой через раз" в CodeVisionAVR.

Мой порт AVR-Doper для AVR910 сделан аккуратно, он не нарушает целостности исходников (т.е. там аккуратно добавлен AVR910, ничего не попорчено). Веселый баг с потерей USB-пакета также исправлен.

В целом прошивка работает так же, как и оригинальная: при подключении программатора появляется COM-порт, перемычка 'low sck' работает для понижения частоты, красный светодиод мигает при записи/стирании чипа, зеленый горит при "подключении к девайсу" (когда пины настраиваются как выходы), на выходе "LED" генерируется 1 МГц.

Существует 4 модификации прошивки:

а) Стандартная CDC (эмуляция COM-порта), без отладочного интерфейса. Рекомендуется в большинстве случаев.
б) CDC с отладочным интерфейсом - дополнительно к COM-порту реализован "свой" протокол для передачи информации через UART программатора (подробнее см. ниже).
в) Бездрайверное HID-устройство, без отл. интерфейса. Т.к. CDC на V-USB нарушает стандарт USB, иногда бывают проблемы с работой программатора (хоть и решаемые). HID стандарт не нарушает и не требует драйверов вообще. К сожалению, поддержка есть пока только в avrdude.
г) Бездрайверное HID-устройство с отл. интерфейсом.

Отладочный интерфейс предназначен для обмена данными между программируемым устройством и ПК. Для его работы нужно подключить RxD и TxD программатора к TxD и RxD устройства. Настроить в устройстве UART на 19200, 8N1. На ПК необходимо установить библиотеку libusb (подробнее см. архив в прошивками) и запустить файл avrdebug.exe (идет в комплекте с прошивками). При этом все, что отправляет устройство в UART, будет приходить в терминал, а все что набрано в терминале будет уходить в устройство.



2. USBasp

Также довольно известный простой программатор, очень похож на AVR910.

Прошивка работает так же, как и оригинальная, за исключением того, что не появляется COM-порт (программатор требует libusb, он идет в комплекте). Странно, что схема USBasp содержит 2 светодиода, но в прошивке использовался только один. Теперь работают оба (так же, как в AVR-Doper), плюс добавлена генерация 1 МГц на выходе "LED".

Этот программатор самый скоростной, однако в avrdude я иногда славливал глюк с неправильно прочитанным ID чипа (вроде как не критично, но кто знает).



Сравнение скоростей программаторов

Тесты проводились с avrdude с помощью заливки в ATMega8 тестовой прошивки размером ~5кБ.

Код
Програматор   Чтение      Запись
AVR910        2.5 кБ/с    0.5 кБ/с
Doper-CDC     0.47 кБ/с   0.44 кБ/с
Doper-HID     0.5 кБ/с    260 Б/с
USBasp        3 кБ/с      1.5 кБ/с




Файлы

AVR-Doper.2008-11-27.avr910+fix.zip - исходники прошивки AVR-Doper (готовые для употребления в WinAVR).
usbasp.2009-02-28.avr910-only.zip - исходники USBasp (аналогично, готовые для WinAVR).

avr910-avrdoper-hex.zip - четыре прошивки в hex-формате, .inf-файлы, отладочный терминал, описание.
avr910-usbasp-hex.zip - прошивка в hex, .inf-файл + драйвера libusb, описание.



Надеюсь, кому-нибудь эта информация (и прошивки!) поможет. Проверяйте, пишите отзывы о работе и глюках!
WHALE
Ещё потестю, но пока вроде полет нормальный.
Спасибо!!
ciscobsci
Какая прошивка подходит для работы из AVRStudio и BascomAVR ? STK 500 или usbASP ?
В данный момент пользуюсь оригинальной прошивкой AVR910 -> шью утилитой AVRProg и CodeVisionAVR среды.
Ink
Цитата(ciscobsci @ Mar 23 2010, 16:21) *
Какая прошивка подходит для работы из AVRStudio и BascomAVR ? STK 500 или usbASP ?
В данный момент пользуюсь оригинальной прошивкой AVR910 -> шью утилитой AVRProg и CodeVisionAVR среды.

У меня ни того, ни другого нет, но гугль сказал, что и AVRStudio, и Bascom поддерживают и AVR910, и STK500 (CDC). Можете попробовать из avr910-avrdoper-hex.zip прошивку avr910-cdc-no_debug.hex.
Ink
Проверили работу AVR-Doper-CDC в линуксах. Как и ожидалось, с непатчеными ядрами <2.6.31 не работает! У кого такая проблема - используйте AVR-Doper-HID или USBasp.

Автор AVR-Doper на счет бага с таймаутом сказал, что только так на его маке программатор заработал (без бага, как сейчас - не работал)... Странно это все... Есть у кого-нибудь мак?
Masakra
Работает программатор Protoss'a c прошивкой AVR910 оригинальной в Ubuntu 9.10 под avrdude + AVR8-Burn-O-Matt фронтэнд.
Ink
Цитата(Masakra @ Apr 9 2010, 09:33) *
Работает программатор Protoss'a c прошивкой AVR910 оригинальной в Ubuntu 9.10 под avrdude + AVR8-Burn-O-Matt фронтэнд.

ну правильно, там как раз 2.6.31 ядро.
odesasha
Прошил Doper прошивку. Работает быстрее родной раз в пять на SCK = 460 000 .
Родная еле ползала на 115 000. Спасибо автору БОЛЬШОЕ .
Шил mega 162 , 8 , Tiny 2313 . Отлично .
GDI
У меня тоже прошивка AVRDude (не та что тут, а та которую топикстартер не смог найти) работала быстрее чем AVR910-USB. Удивлен что топикстартер получил такие результаты тестирования.
Ink
Цитата(GDI @ Apr 21 2010, 14:33) *
У меня тоже прошивка AVRDude (не та что тут, а та которую топикстартер не смог найти) работала быстрее чем AVR910-USB. Удивлен что топикстартер получил такие результаты тестирования.

AVR-Doper? wink.gif
Найти-то я в итоге нашел (когда было уже не надоwink.gif ), и даже прошелся по ней WinMerge, никаких существенных изменений (типа времянок) не нашел. Так что не знаю как это так. Есть только одно подозрение: может это AVRDude медленно работает с допером, а кто-то умеет быстрее? Или надо какие доп. ключи указывать для повышения тактовой программатора?
У кого Doper заработал быстрее AVR910, отпишитесь, пожалуйста, кто чем шил и как настраивал.
GDI
Я тогда работал с ним в AVRStudio, с работой через CDC, потом еще пробовал его под Линукс, но прошивку пришлось пересобрать под HID, но скорость заливки там была соизмеримая. Вот нашел свое сообщение со сравнением скоростей работы http://electronix.ru/forum/index.php?s=&am...st&p=241138. Таки AVRProg был быстрее но не в разы.
Ink
Ну вот я так и подозревал, что дело может быть в прошивальщике. Сам не пробовал прошивать из CV, только в AVRDude. Наверное потому и результаты такие.
GDI
CV самый медленный. Только AVRProg использует блочный режим для программатора AVR910, потому он самый быстрый для этой прошивки, но AVRDoper - это STK500, а не AVR910.
sasha_tvo
Здравствуйте, уважаемые специалисты!
Всегда пользовался CodeVision и пятипроводным программатором, но прогресс движется и собрал USBasp, залил в него неисправленную прошивку от AVR-Doper и как и ожидалось шьет через раз.
А сдесь, я смотрю, эта проблемма решена.
Расскажите, пожалуйста, как и чем нужно прошить, что бы мой USBasp работал по STK500?
Copper
Доброго дня, всем!
Цитата
"Прошил Doper прошивку. Работает быстрее родной раз в пять на SCK = 460 000 .
Родная еле ползала на 115 000. Спасибо автору БОЛЬШОЕ ........."

Мне и сказать, собственно, нечего!
Только-что к
Цитата
"Шил mega 162 , 8 , Tiny 2313."
добавить: - mega128, mega16, mega32. Отлично!
Спасибо!
Удачи!
Ink
Цитата
Расскажите, пожалуйста, как и чем нужно прошить, что бы мой USBasp работал по STK500?

Нужно скачать исправленные исходники AVR-Doper (из 1го поста) и собрать их для USBasp с помощью WinAVR (команда make usbasp вроде), потом прошить полученный hex.
sasha_tvo
Ага, спасибо! Получаилось. Все работает под codevision без проблемм. Только что шил Mega16. Только светодиод тоже работает лигь зеленый - но эт мелочи.

Всем большое спасибо за такую разработку!!! Очень понравилось!
Ink
Цитата
Только светодиод тоже работает лигь зеленый - но эт мелочи.

Да, так было и в оригинальном AVR-Doper, не стал исправлять. Прямо загадка, зачем в схеме 2 светодиода, если ни в одной прошивке второй не используется... Но если нужно, вы в исходниках можете подправить и сделать 2й светодиод: в файле isp.c ищете вот такие строки

Код
#ifdef AVR910_HARDWARE
    PORT_PIN_SET(HWPIN_LED2);   /* turn on LED2 */
#endif


и

Код
#ifdef AVR910_HARDWARE
    PORT_PIN_CLR(HWPIN_LED2);       /* turn off LED2 */
#endif


и меняете в них *_SET на *_CLR, *_CLR на *_SET, AVR910_HARDWARE на USBASP_HARDWARE. а в файле hardware.h добавляете

Код
#define HWPIN_LED2          Х, Х    /* Write LED */
sasha_tvo
А какая там у него смысловая нагрузка у второго светодиода?
Ink
Цитата
А какая там у него смысловая нагрузка у второго светодиода?

Горит, когда происходит запись. Т.е., условно, зеленый - чтение, красный - запись, типа того...
Не так это и важно, конечно, но... красивее! smile.gif
Буден СеменнОЙ
Цитата(sasha_tvo @ May 1 2010, 22:04) *
Ага, спасибо! Получаилось. Все работает под codevision без проблемм. Только что шил Mega16. Только светодиод тоже работает лигь зеленый - но эт мелочи.

Всем большое спасибо за такую разработку!!! Очень понравилось!

bb-offtopic.gif Извиняюсь за офф-топ.НЕ могу отправить личное сообщение.sasha_tvo если Вам не трудно поделитесь пож прошивкой doper-usbASP.ПРивык к программатору из CodeVision.Заранее благодарен
ветерок
а почему не скачиваются первые файлы ?
Ink
да вроде скачиваются.
ветерок
а,понял сначало просто описакние идут smile.gif
Сами файлы ниже.
Подчёркивание сбивает с толку.

в архиве Droperа
usbasp-mega8-12mhz.hex
собран уже на исправленых исходниках ?
Ink
Цитата
usbasp-mega8-12mhz.hex
собран уже на исправленых исходниках ?

Нет, эти файлы остались оригинальные.
Собрал прошивку для USBasp (с исправленным глюком): атмега8 @ 12МГц. Работу НЕ гарантирую, не проверял, так что всё на свой страх и риск. Но работать оно должно, если и раньше работало под USBasp.
Буден СеменнОЙ
Цитата(Ink @ May 24 2010, 18:41) *
Нет, эти файлы остались оригинальные.
Собрал прошивку для USBasp (с исправленным глюком): атмега8 @ 12МГц. Работу НЕ гарантирую, не проверял, так что всё на свой страх и риск. Но работать оно должно, если и раньше работало под USBasp.


1111493779.gif Спасибо огромное!Проверил на 48 меге.Все работает с CV 08.gif a14.gif
ветерок
вопрос а как собрать в AVRstudio это всё ?
ошибку выдаёт droper
.../main.c:300: undefined reference to `usbMsgPtr'
ветерок
а ещё хорошо бы перекомпилировать(а точнее оптимизировать и уменьшить) прошивку AVR910 протоса под atmega48
А то автор проекта не видит разницы между atmega48 которая стоит 60р. и atmega88 160р.
сам он говорит что сделать это можно.
---
спасибо за внимание.
WHALE
Цитата(sasha_tvo @ May 1 2010, 23:04) *
Ага, спасибо! Получаилось. Все работает под codevision без проблемм. Только что шил Mega16. Только светодиод тоже работает лигь зеленый - но эт мелочи.

Всем большое спасибо за такую разработку!!! Очень понравилось!


А у моих коллег не получается зашить еепром М16 из под СV-пишет "STK-500 error leaving programming mode".
Читается при этом еепром нормально.Флеш, фьюзы, лок-биты пишутся-читаются без проблем.
И эта байда похоже только в серии М16х. Меги 48,8,128 пишутся нормально.Тини вроде тоже без проблем.
Из-по студии все работает как часы.
Никто не сталкивался?
prottoss
Цитата(WHALE @ Aug 11 2010, 17:57) *
А у моих коллег не получается зашить еепром М16 из под СV-пишет "STK-500 error leaving programming mode".
Читается при этом еепром нормально.Флеш, фьюзы, лок-биты пишутся-читаются без проблем.
И эта байда похоже только в серии М16х. Меги 48,8,128 пишутся нормально.Тини вроде тоже без проблем.
Из-по студии все работает как часы.
Никто не сталкивался?

В исходниках AVRDOPER, включая самый последний, есть два два бага, касающийся функции записи во ФЛЭШ и ЕЕПРОМ.

Баг №1. После записи байта происходит сравнение записанного байта с значениями poll1 и poll2. Если байт равен одному из этих значений, опрос статуса записи байта не происходит, а выполняется программная задержка. В описании протокола STK500v2 сказано, что poll2 нужно проверять только при записи в ЕЕПРОМ. В коде проверяется оба значения при записи в любой тип памяти.

Баг №2. После записи байта и сравнения, описанного выше, происходит формирование команды чтения записанного байта.
Команда формируется путем установки/стирания бита указывающего, младшее или старшее слово нужно читать, в байте команде чтения. Проверки типа памяти - ФЛЭШ или ЕЕПРОМ не делается. Соответсвенно, если мы работаем с ЕЕПОРМ, команда портится, в итоге, ошибка записи в ЕЕПРОМ.

Таким образом, в зависимости от типа МК и типа программного обеспечения, работающего с DOPER, может быть ошибка записи памяти ФЛЭШ или ЕЕПРОМ.
WHALE
Странно это. Проявляется только в CV и только в семействе М16ХХ.
А судя по вашему описанию багов должно глючить всегда и везде.
Выйду из отпуска зашью ребятам вашу версию.

З.Ы. DOPER вроде-бы тоже обновляется изредка,неужто до сих пор не в курсе?
prottoss
Цитата(WHALE @ Sep 11 2010, 17:27) *
Странно это. Проявляется только в CV и только в семействе М16ХХ.
А судя по вашему описанию багов должно глючить всегда и везде.
Выйду из отпуска зашью ребятам вашу версию.

З.Ы. DOPER вроде-бы тоже обновляется изредка,неужто до сих пор не в курсе?
я написал им, посмотрим , что скажут, но то, что это реальные ошибки - очевидно.

Цитата(WHALE @ Sep 11 2010, 17:27) *
Странно это. Проявляется только в CV и только в семействе М16ХХ.
Вы удивитесь smile.gif Но AVRStudio, CV и avrdude имеют зачастую совершенно разные подходы к программированию отдельно взятого МК smile.gif
WHALE
Цитата(prottoss @ Sep 11 2010, 14:43) *
Вы удивитесь smile.gif Но AVRStudio, CV и avrdude имеют зачастую совершенно разные подходы к программированию отдельно взятого МК smile.gif

Но баги -же в софте программатора,вроде...
prottoss
Цитата(WHALE @ Sep 11 2010, 20:03) *
Но баги -же в софте программатора,вроде...
Вы читали мой первый сегодняшний пост? Цитирую "в зависимости от типа МК и типа программного обеспечения"

Первый баг обходится, если pol1 = pol2
Второй баг обходится, если вместо чтения-проверки записанного байта в ЕЕПРОМ, использовать просто задержку на время записи в ЕЕПРОМ.

Это все устанавливается флагами в параметрах команды записи протокола ST500v2
Ink
prottoss, а вы, раз уж разобрались, могли бы сделать фикс этих багов и выложить здесь прошивку? Автор допера не горит желанием быстро обновлять сайт (до сих пор там старые прошивки лежат, с глюками в CDC, хотя я ему писал и он сказал что попозже посмотрит).

Или конкуренция и все такое?wink.gif
prottoss
Цитата(Ink @ Sep 13 2010, 14:44) *
prottoss, а вы, раз уж разобрались, могли бы сделать фикс этих багов и выложить здесь прошивку? Автор допера не горит желанием быстро обновлять сайт (до сих пор там старые прошивки лежат, с глюками в CDC, хотя я ему писал и он сказал что попозже посмотрит).

Или конкуренция и все такое? wink.gif
Да какая конкуренция? smile.gif Собирать проект просто нет времени. Да и испытывать не на чем... Вернее испытан был на моем программаторе. Прошивка в соседнем топике. Могу указать в каком именно месте ошибки:
Файл "isp.c"; функция "uchar ispProgramMemory(stkProgramFlashIsp_t *param, uchar isEeprom)"
Исходный код в теле функции:
Код
/* poll for ready after each byte (word mode) or page (page mode) */
         if(param->mode & valuePollingMask){ /* value polling */
             uchar d = param->data[i];
             if(d == param->poll[0] || d == param->poll[1]){ /* must use timed polling */
                 timerMsDelay(param->delay);
             }else{
                 uchar x = param->cmd[2];     /* read flash */
                 x &= ~0x08;
                 if((uchar)i & 1){
                     x |= 0x08;
                 }
                 cmdBuffer[0] = x;
                 timerSetupTimeout(param->delay);
                 while(ispBlockTransfer(cmdBuffer, 4) != d){
                     if(timerTimeoutOccurred()){
                         rval = STK_STATUS_CMD_TOUT;
                         break;
                     }
                 }
             }
         }else if(param->mode & rdyPollingMask){ /* rdy/bsy polling */
             rval = waitUntilReady(param->delay);
         }else{                          /* must be timed delay */
             timerMsDelay(param->delay);
         }


Исправленный код. Смотрите комментарии на русском языке.

Код
/* poll for ready after each byte (word mode) or page (page mode) */
         if(param->mode & valuePollingMask){ /* value polling */
             uchar d = param->data[i];
             if(d == param->poll[0] ||  /* must use timed polling */
               (d == param->poll[1] && isEeprom)){  /* poll2 используется только при программировании ЕЕПРОМ!!!  - см. описание протокола STK500v2 */
                 timerMsDelay(param->delay);
             }else{
                 if(!isEeprom){  /* Проверка какой тип памяти программируется !!! */
                     uchar x = param->cmd[2];     /* read flash */
                     x &= ~0x08; /* Команда записи младшего байта ФЛЭШ */
                     if((uchar)i & 1){
                        x |= 0x08;/* Команда записи старшего байта ФЛЭШ */
                     }
                 }
                 cmdBuffer[0] = x;
                 timerSetupTimeout(param->delay);
                 while(ispBlockTransfer(cmdBuffer, 4) != d){
                     if(timerTimeoutOccurred()){
                         rval = STK_STATUS_CMD_TOUT;
                         break;
                     }
                 }
             }
         }else if(param->mode & rdyPollingMask){ /* rdy/bsy polling */
             rval = waitUntilReady(param->delay);
         }else{                          /* must be timed delay */
             timerMsDelay(param->delay);
         }
Ink
prottoss, спасибо! будет время - покурю и исправлю.
Andru_stv
Только с прошивкой из этого топика мой программатор (заказывал на mkpochtoi, пришлось переделывать!) стал работать в линухе.
Благодарю. smile.gif
Foris
Вы какой программатор заказывали - типа stk500 или AVR910 ? Приложите пожалуйста архив с прошивкой и всем что нужно чтобы программатор запустить в Linux.
Тоже хочу на мкпочтой программатор заказать и на ноутбуке у монтажника Linux установлен.
Andru_stv
Цитата(Foris @ Oct 11 2010, 13:51) *
Вы какой программатор заказывали - типа stk500 или AVR910 ? Приложите пожалуйста архив с прошивкой и всем что нужно чтобы программатор запустить в Linux.
Тоже хочу на мкпочтой программатор заказать и на ноутбуке у монтажника Linux установлен.

STK500. Вот полное описание переделки. Дел - на 20 минут, вместе с изготовлением эрзац-LPT-программатора.
http://rootadmin.livejournal.com/10824.html
Работает - отлично, уже поэкспериментировал.
ИМХО - если сразу заказать AVR910 - там вся переделка будет заключаться в перешивке.
Главное - не забывать что на схеме выводы для контролеера в DIP корпусе, а стоИт tqfp.
G_S_V
1)Сделал программатор по схеме PROTTOSSa . Хочу отметить медленную скорость работы прошивки PROTTOSSa. Перепрошил прошивку DOPERa - скорость работы !!!!!отличная!!!!!!. 2). Для информации (работа под WINDOWS 7) - прошивка (cdc) PROTTOSSа работает под win7, а прошивка (cdc) DOPER - непожелала работать под win7. Может кто подскажет как заставить работать прошивку cdc DOPER под win7.
G_S_V
Нашел решение проблемы работы прошивки DOPER под windows 7. Проверено. При подключение программатора подсунуть вместо драйверов в архиве, вот ети драйвера http://www.recursion.jp/avrcdc/avrcdc_inf.zip (там найти папку с нужной виндой)

Если у вас набралось много виртуальных портов и есть желание их удалить - действуйте по етой методике http://forum.oszone.net/thread-122359.html
Ink
Цитата(G_S_V @ Nov 9 2010, 21:19) *
прошивка (cdc) PROTTOSSа работает под win7, а прошивка (cdc) DOPER - непожелала работать под win7.

Дела... Кто-нибудь еще такое наблюдал? Как это можно объяснить?
labanlexx
Здравствуйте! Когда-то собирал программматор AVR910 by PROTTOSS - шил в основном Mega8, все работало отлично, но тут возникла необходимость прошить некоторое количество atmega128, но никак. Error entering ...... Не читается, не пишется. Решил попробовать альтернативные прошивки из данной темы - то же самое. При всем при этом STK200/300 читает и пишет без проблем. Но нужен именно программатор на USB.

Подскажите в чем может быть проблема?
GYUR22
проверьте не висит ли что то на портах у меги -у Protoss достаточно высокоомные защитные резисторы по схеме
у меня тая штука с 910 и Usbasp было. Usbasp работал 910 нет
KCA
Здравствуйте!
Сразу прошу прощения , если мой вопрос окажется глупым.

Работал мой "ПРОТТОС" с альтернативной прошивкой "АВРдоппер" на "ХР" отлично.
Но вот возникла необходимость перейти на "Виндовс 7" .
Собственно вопрос :
какой теперь драйвер мне нужно установить ? Или снова установить тот что с ХР работал ?
Спасибо.
KCA
Здравствуйте!
Использую программатор от «ПРОТТОС» с прошивкой
avr910-avrdoper-hex Стандартная CDC (эмуляция COM-порта) от Ink с этой темы.
В связи с переходом на Windows 7, AVR Studio 4.18 перестала видеть программатор .
Раньше, в WindowsХР работал нормально.
В CodeVisionAVR работает .
Подскажите, как победить возникшее неудобство ?
Dust112
Только-что сегодня прошил чип, студии 4.19 и 5 железо видит. Система windows 7 х86.
KCA
Может и мне попробовать новую версию "студии" ?
Dust112
KCA, а какие дрова используете? Я устанавливал последние дрова, которые давал prottoss на своем сайте.
В догонку, а что у вас с правами доступа в 7?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.