|
Вышла очередная версия AVR-USB драйвера от Objective Development, Исправлена пара серьезных багов, рекомендуется обновиться |
|
|
|
Mar 16 2006, 10:56
|

Частый гость
 
Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664

|
Вышла версия программного USB драйвера для большинства AVR контроллеров. См сайт автора. Самая последняя версия всегда находится в составе reference-проекта PowerSwitch. Изменения в текущей версии: Цитата * Release 2006-03-14
- Added IAR compiler compatibility to USB driver (not the PowerSwitch project). Thanks to Oleg Semyonov for contributing this port! - Major Bugfixes in the low level parts of the USB driver. See the driver's Changelog for details. Цитата Changelog:
- Give a compiler warning when compiling with debugging turned on. - Added Oleg Semyonov's changes for IAR-cc compatibility. - Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect() (also thanks to Oleg!). - Rearranged tests in usbPoll() to save a couple of instructions in the most likely case that no actions are pending. - We need a delay between the SET ADDRESS request until the new address becomes active. This delay was handled in usbPoll() until now. Since the spec says that the delay must not exceed 2ms, previous versions required aggressive polling during the enumeration phase. We have now moved the handling of the delay into the interrupt routine. - We must not reply with NAK to a SETUP transaction. We can only achieve this by making sure that the rx buffer is empty when SETUP tokens are expected. We therefore don't pass zero sized data packets from the status phase of a transfer to usbPoll(). This change MAY cause troubles if you rely on receiving a less than 8 bytes long packet in usbFunctionWrite() to identify the end of a transfer. usbFunctionWrite() will NEVER be called with a zero length. Ошибки проявлялись на фазе начального коннекта при ряде специфических условий и при интенсивном обмене с хостом (знаю в деталях, ибо сам руку приложил к их обнаружению и идентификации). Сейчас все работает отлично. Размер кода не увеличился. Рекомендую обновить версию.
|
|
|
|
|
 |
Ответов
|
Mar 29 2006, 09:03
|
Местный
  
Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146

|
Цитата Насколько я понял - это было сделано из-за того что GCC case всегда как "int" обрабатывает, но ИАР case"ы весьма эффективно раскручивает. Так было в gcc 3 версии, 4.0.3 у меня case нормально обрабатывает. Цитата Он вообще недоумевает, почему наши люди не используют бесплатный компилятор gcc... Аналогично, тоже недомеваю.
Сообщение отредактировал 733259 - Mar 29 2006, 09:08
|
|
|
|
|
Mar 29 2006, 09:12
|

Частый гость
 
Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664

|
Цитата(733259 @ Mar 29 2006, 11:03)  Так было в gcc 3 версии, 4.0.3 у меня case нормально обрабатывает Там написано, что версия драйвера оптимизимрована под gcc 3. Последующие могут быть оптимизированы под 4. А насчет использования IAR я уже писал: код лоадера от Atmel компилируется в 1400 байтов под gcc 3 (4 не проверял), и в 1000-1050 - под IAR. Для ATmega128 не критично, для 2313 или т.п. - очень даже. Да и привычка русского человека....
|
|
|
|
|
Apr 10 2006, 18:01
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066

|
TestPowerswitch.rar ( 153.94 килобайт )
Кол-во скачиваний: 270Все! Сделал управление Powerswitch_ем из-под Дельфи через USBIO от http://www.thesycon.de Осталось найти свежую не демо версию драйвера. Ато дает поработать только 4 часа
|
|
|
|
|
Apr 11 2006, 05:30
|
Участник

Группа: Свой
Сообщений: 48
Регистрация: 5-11-04
Пользователь №: 1 053

|
Цитата(aleksey_g @ Apr 10 2006, 21:01) 
TestPowerswitch.rar ( 153.94 килобайт )
Кол-во скачиваний: 270Все! Сделал управление Powerswitch_ем из-под Дельфи через USBIO от http://www.thesycon.de Осталось найти свежую не демо версию драйвера. Ато дает поработать только 4 часа  НАФИГА ? Чем тебя LibUSB-win32 не устроила ? Халявная кстати.
|
|
|
|
|
Apr 11 2006, 06:31
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066

|
Цитата НАФИГА ? Чем тебя LibUSB-win32 не устроила ? Халявная кстати. Тут ключевое слово - Дельфи. Ну тяжел для меня С. А по поводу LibUSB-win32, так Паскаль с ним работать не будет! Так сказали разработчики.http://libusb-win32 .sourceforge.net Правда, здесь мне подсказали лежит одно извращение, чтобы заставить работать под Паскалем именно LibUSB, но оно оказалось не рабочим.http://www.xs4all.nl/~ynlmns/ Может дело в версиях драйверов?, не знаю. Просто хочется использовать более знакомый инструментарий. Если под силу, выясните причину неработоспособности. Там acces violation под дебагом. Да, Lazycamel, не вы ли где-то здесь говорили, что адаптировали USB Игоря Ческо под С да еще на меге48-24? Сможете USBDRV от http://www.obdev.at/products/avrusb/index.htmlпереписать на мегу48-24 для ИАР_а? 24MHZ подкупает!
|
|
|
|
|
Apr 12 2006, 18:29
|
Участник

Группа: Свой
Сообщений: 48
Регистрация: 5-11-04
Пользователь №: 1 053

|
Цитата(aleksey_g @ Apr 11 2006, 09:31)  Да, Lazycamel, не вы ли где-то здесь говорили, что адаптировали USB Игоря Ческо под С да еще на меге48-24? Сможете USBDRV от http://www.obdev.at/products/avrusb/index.htmlпереписать на мегу48-24 для ИАР_а? 24MHZ подкупает! Было дело, но по сравнению с Objective Development мой вариант выглядит поделкой студента первокурсника :-( Я по их коду теперь практически учусь правильному написанию исходника с прицелом на кастомизацию да пытаюсь безуспешно счаз въехать в ИАР-совместимость. А по поводу 24 Мгц есть две заковыки. 1) Атмел понизил скорость Мег до 20МГц. Слишком много они жрут в 24 Мгц режиме и с флешем что-то не то на такой частоте проиходило. 2) по результатам профилирования - выигрыша по сути в движке нет, только уровень приложения ускоряется. Я по поводу драйвера, я давно уже всем советую - делайте обычное HID устройство только с 0 конечной точкой и 8 байтным фьючерепортом. В результате получаете бесплатный враппер в тоже самое стандартными драйверами виндоуз, начиная с 2000. И операции ReadFile/WriteFile.
|
|
|
|
|
Apr 12 2006, 20:41
|

Частый гость
 
Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664

|
Цитата(lazycamel @ Apr 12 2006, 21:29)  Я по их коду теперь практически учусь правильному написанию исходника с прицелом на кастомизацию да пытаюсь безуспешно счаз въехать в ИАР-совместимость. По поводу IAR-совместимости готов ответить на конкретные вопросы, поскольку это - моих рук дело. Правда, мои мысли и патчи Кристиан выразил просто блестяще, переписав это в своем стиле. Цитата 2) по результатам профилирования - выигрыша по сути в движке нет, только уровень приложения ускоряется. Есть возможность спросить автора, не получится ли при этом добавить проверку CRC "на лету". Как известно, сейчас этого не делается при приеме вообще. Хотя, если официально 24 MHz версий уже нет, то заниматься этим он не станет. Цитата Я по поводу драйвера, я давно уже всем советую - делайте обычное HID устройство только с 0 конечной точкой и 8 байтным фьючерепортом. В результате получаете бесплатный враппер в тоже самое стандартными драйверами виндоуз, начиная с 2000. И операции ReadFile/WriteFile. Есть информация, что HID без Interrupt In работает не со всеми Windows (а с ней работает, в том числе, с Win98SE). Причем, можно не реализовывать код для обработки этой самой точки (не описывать INPUT в Report Descriptor). Дотаточно того, что она просто есть. А обмен информацией организовывать через Feature Reports (фиче, кстати, а не фьюче). Только с ним ReadFile/WriteFile не работают - это для Input/Output. Для работы с Feature используются API функции GetFeature/SetFeature.
|
|
|
|
|
Apr 13 2006, 04:37
|
Участник

Группа: Свой
Сообщений: 48
Регистрация: 5-11-04
Пользователь №: 1 053

|
Цитата(osnwt @ Apr 12 2006, 23:41)  Цитата(lazycamel @ Apr 12 2006, 21:29)  Я по их коду теперь практически учусь правильному написанию исходника с прицелом на кастомизацию да пытаюсь безуспешно счаз въехать в ИАР-совместимость.
По поводу IAR-совместимости готов ответить на конкретные вопросы, поскольку это - моих рук дело. Правда, мои мысли и патчи Кристиан выразил просто блестяще, переписав это в своем стиле. Ок, спасибо. Цитата Цитата 2) по результатам профилирования - выигрыша по сути в движке нет, только уровень приложения ускоряется. Есть возможность спросить автора, не получится ли при этом добавить проверку CRC "на лету". Как известно, сейчас этого не делается при приеме вообще. Хотя, если официально 24 MHz версий уже нет, то заниматься этим он не станет. Там в том то и проблема, что в месте где в движке лимитирована производителность сейчаз свободно толи 5 толи 8 тактов, при переводе на 24 высвободиться еше порядка 40. В эти полсотню тактов CRC все равно не впихнуть ИМХО. Т.е. получается что вроде и есть ресурсы, но ни для чего серьезного их просто не хватает. Цитата Цитата Я по поводу драйвера, я давно уже всем советую - делайте обычное HID устройство только с 0 конечной точкой и 8 байтным фьючерепортом. В результате получаете бесплатный враппер в тоже самое стандартными драйверами виндоуз, начиная с 2000. И операции ReadFile/WriteFile. Есть информация, что HID без Interrupt In работает не со всеми Windows (а с ней работает, в том числе, с Win98SE). Причем, можно не реализовывать код для обработки этой самой точки (не описывать INPUT в Report Descriptor). Дотаточно того, что она просто есть. А обмен информацией организовывать через Feature Reports (фиче, кстати, а не фьюче). Только с ним ReadFile/WriteFile не работают - это для Input/Output. Для работы с Feature используются API функции GetFeature/SetFeature. Ну не будем к словам придираться. :-) Тем не менее Features Report только с Win XP начали читаться через HidD_GetFeature/HidD_SetFeature, а до этого использовался обычный Read/Write.
|
|
|
|
|
Apr 13 2006, 08:58
|

Частый гость
 
Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664

|
Цитата(lazycamel @ Apr 13 2006, 07:37)  Цитата Есть возможность спросить автора, не получится ли при этом добавить проверку CRC "на лету". Как известно, сейчас этого не делается при приеме вообще. Хотя, если официально 24 MHz версий уже нет, то заниматься этим он не станет. Там в том то и проблема, что в месте где в движке лимитирована производителность сейчаз свободно толи 5 толи 8 тактов, при переводе на 24 высвободиться еше порядка 40. В эти полсотню тактов CRC все равно не впихнуть ИМХО. Т.е. получается что вроде и есть ресурсы, но ни для чего серьезного их просто не хватает. Ответ неверный. Рекомендую почитать замечательную статью на сайте автора avr-usb о том, как оптимизировался код. В двух словах: код avr-usb от obdev писался с нуля, а не по мотивам других ассемблерных реализаций. Его особенностью является то, что весь прием usb пакетов выполняется в реальном времени, в том числе, bit stuffing, - в отличие от ассемблерного драйвера, сначала принимающего, а потом декодирующего. Этим выигрывается как время, так и объем. Нетрудно подсчитать (что и сделано в той статье), что при скорости low-speed девайса 1.5MBit и тактовой контроллера 12MHz мы получаем 8 машинных циклов на принимаемый бит, которыми нужно распорядиться и для манипуляций битами, и для продвижения указателя, и для подсчета принятого количества бит. И ровно 8 циклов использовано в алгоритме. Как к этому шел автор - тоже приведено в статье на уровне исходного кода с комментариями. Отсюда намного лучшая производительность этого драйвера, его предсказуемость и документированность. Удвоение тактовой добавит всего 8 (свободных) тактов, совсем не 40. Хватит ли их на CRC calculation - надо смотреть. Но это уже другой вопрос. Цитата Тем не менее Features Report только с Win XP начали читаться через HidD_GetFeature/HidD_SetFeature, а до этого использовался обычный Read/Write. Факт, взятый с широкоизвестного HID FAQ, подтверждаемого также MSDN. Цитата: Цитата How can an application send a report using a control transfer?
Under Windows 98 Gold (original version), WriteFile sends Output reports using control transfers with Set_Report requests. Under later Windows editions, WriteFile uses control transfers if the HID interface doesn't have an interrupt OUT endpoint. Otherwise, WriteFile uses interrupt transfers for Output reports. Beginning with Windows XP, you can use HidD_SetInputReport to send an Output report with a control transfer and a Set_Report request. Under all Windows editions, HidD_SetFeature sends a Feature report using a control transfer with a Set_Report request. Похоже, в ранее приведенном Вашем утверждении были перепутаны Feature и Output reports. Такая совместимость для Feature, кстати, очень удобна для всяких загрузчиков и т.п. дел.
Сообщение отредактировал osnwt - Apr 13 2006, 09:01
|
|
|
|
|
Apr 13 2006, 09:44
|
Участник

Группа: Свой
Сообщений: 48
Регистрация: 5-11-04
Пользователь №: 1 053

|
Цитата(osnwt @ Apr 13 2006, 11:58)  Ответ неверный. Рекомендую почитать замечательную статью на сайте автора avr-usb о том, как оптимизировался код.
В двух словах: код avr-usb от obdev писался с нуля, а не по мотивам других ассемблерных реализаций. Его особенностью является то, что весь прием usb пакетов выполняется в реальном времени, в том числе, bit stuffing, - в отличие от ассемблерного драйвера, сначала принимающего, а потом декодирующего. Этим выигрывается как время, так и объем. Ась ? У нас по-моему некоторое взаимонепонимание. Я говорю про ту часть которая разбирает адрес и формат пакета (от метки se0) , а не про SIE (получение последовательности битов) и превращение их в байты. Цитата Похоже, в ранее приведенном Вашем утверждении были перепутаны Feature и Output reports. Такая совместимость для Feature, кстати, очень удобна для всяких загрузчиков и т.п. дел. Крайне на это похоже. Точнее я попутал вот с этим: "HidD_GetFeature requests a Feature report using a control transfer with a Get_Report request. Beginning with Windows XP, you can use HidD_GetInputReport to request an Input report with a control transfer and a Get_Report request." Чтож и на старуху бывает проруха. Спасибо.
Сообщение отредактировал lazycamel - Apr 13 2006, 09:47
|
|
|
|
Сообщений в этой теме
osnwt Вышла очередная версия AVR-USB драйвера от Objective Development Mar 16 2006, 10:56 aleksey_g Олег, было бы совсем прекрасно, если бы Вы PowerSw... Mar 16 2006, 17:04 osnwt Цитата(aleksey_g @ Mar 16 2006, 19:04) Ол... Mar 16 2006, 17:17 EWAVR Гм... Скомпилировал c грехом пополам PowerSwitch I... Mar 16 2006, 22:21 osnwt Цитата(EWAVR @ Mar 17 2006, 00:21) Гм... ... Mar 17 2006, 00:34 EWAVR Компилировалось и заливалось в AT90S2313, для кот... Mar 17 2006, 12:13 osnwt Цитата(EWAVR @ Mar 17 2006, 14:13) Компил... Mar 17 2006, 12:27 EWAVR Скомпилировал PowerSwitch (at90s2313) - IAR проигр... Mar 17 2006, 16:06 osnwt Цитата(EWAVR @ Mar 17 2006, 18:06) Скомпи... Mar 17 2006, 16:15 aleksey_g ЦитатаЕсли это вообще кому-то сильно нужно, я могу... Mar 17 2006, 17:37 EWAVR Гы! Скомпилировал PowerSwitch для 90s2313 IAR... Mar 17 2006, 21:29 osnwt Цитата(EWAVR @ Mar 17 2006, 23:29) Гы... Mar 18 2006, 10:38 osnwt Цитата(EWAVR @ Mar 17 2006, 23:29) Ув. os... Mar 20 2006, 01:03 Proton Посмотрел на сайте проект PowerSwitch, а там почем... Mar 20 2006, 05:41 osnwt Цитата(Proton @ Mar 20 2006, 07:41) А пос... Mar 20 2006, 05:57 EWAVR Цитата+extern unsigned usbCrc16(uchar __near *data... Mar 20 2006, 10:47 osnwt Цитата(EWAVR @ Mar 20 2006, 12:47) Цитата... Mar 20 2006, 14:08 EWAVR Да, at90s2313. IAR AVR 4.12A, есть для проверки 4.... Mar 20 2006, 16:30 osnwt Да, действительно для AT90S2313 __tiny недоступно ... Mar 20 2006, 16:53 EWAVR Спасибо, все заработало( все так просто, сам мог б... Mar 20 2006, 22:49 osnwt Цитата(EWAVR @ Mar 21 2006, 00:49) нужно ... Mar 21 2006, 08:27  Rst7 Цитата(osnwt @ Mar 21 2006, 10:27) Цитата... Mar 22 2006, 12:24 aleksey_g Уважаемые EWAVR & OSNWT
Ну поделитесь же Ваш... Mar 22 2006, 12:09 osnwt Цитата(aleksey_g @ Mar 22 2006, 14:09) Ну... Mar 22 2006, 19:58 aleksey_g Все! Откомпилил PowerSwitch в ИАР_е под ATMEGA... Mar 22 2006, 15:20 EWAVR Никаких проблем с компиляцией, недостающие файлы u... Mar 22 2006, 16:04 aleksey_g Нашел ВС++ 5.2 Установил. Скомпилил. 2 WARNING:
C... Mar 22 2006, 17:37 EWAVR Цитата(aleksey_g @ Mar 22 2006, 21:37) По... Mar 23 2006, 19:08 aleksey_g Олег!
Ерунда с сервером похоже есть!
ERROR... Mar 23 2006, 08:23 osnwt EWAVR,
если есть возможность, прошу проверить ра... Mar 24 2006, 08:48 KA_ru Цитата(osnwt @ Mar 24 2006, 12:48) EWAVR,... Mar 27 2006, 09:06  osnwt Цитата(KA_ru @ Mar 27 2006, 11:06) возмож... Mar 29 2006, 06:59 lazycamel Никто не пробовал в ИАРовском порте в usbdrv.c зам... Mar 29 2006, 06:15     aleksey_g Закончил управление Powerswitch_em на Дельфи.
http... Apr 12 2006, 16:28          aleksey_g После некоторых танцев с бубном, удалось запустить... Apr 13 2006, 12:56           aleksey_g А вот и сама рулилка Powerswitch_ем. С исходниками... Apr 14 2006, 13:02            aleksey_g Продолжаем "мучить Powerswitch"!
Те... Apr 17 2006, 17:47            aleksey_g Продолжаем "мучить Powerswitch"!
Те... Apr 17 2006, 17:56       aleksey_g При перекомпиляции Powerswitcha IAR_ом под мегу48 ... Apr 20 2006, 17:28        osnwt Цитата(aleksey_g @ Apr 20 2006, 20:28) Оп... Apr 20 2006, 18:00         aleksey_g Цитата(osnwt @ Apr 20 2006, 21:00) Решени... Apr 21 2006, 11:32          osnwt #define TEST_DRIVER_SIZE
определенное в коде - эт... Apr 21 2006, 11:56           aleksey_g Цитата(osnwt @ Apr 21 2006, 14:56) #defin... Apr 21 2006, 12:19           aleksey_g Для скачавших Powerswitchlibusb.rar, рекомендуется... Apr 25 2006, 07:09 aleksey_g EWAVR, опять глюки zero sized reply
PM получил? Apr 6 2006, 07:52 Георгий На базе драйвера разработал USB вольтметр (USB дра... Jan 9 2007, 12:30 prottoss Цитата(Георгий @ Jan 9 2007, 16:30) На ба... Jan 20 2007, 19:16  Георгий Цитата(prottoss @ Jan 20 2007, 19:16) Цит... Jan 22 2007, 09:23   prottoss Цитата(Георгий @ Jan 22 2007, 13:23) Цита... Jan 22 2007, 11:05    Георгий Цитата(prottoss @ Jan 22 2007, 11:05) Ско... Jan 22 2007, 11:23 Alexey Belyaev Ребят а не поможете создать джойстик? Я вот сижу и... Jan 20 2007, 19:10 osnwt Цитата(Alexey Belyaev @ Jan 20 2007, 18:1... Jan 20 2007, 19:39  prottoss Цитата(osnwt @ Jan 20 2007, 23:39) На 100... Jan 20 2007, 19:48   osnwt Цитата(prottoss @ Jan 20 2007, 18:48) Кст... Jan 20 2007, 20:18    prottoss Цитата(osnwt @ Jan 21 2007, 00:18) Цитата... Jan 20 2007, 20:31     osnwt Цитата(prottoss @ Jan 20 2007, 19:31) Да ... Jan 20 2007, 21:15      prottoss Цитата(osnwt @ Jan 21 2007, 01:15) Цитата... Jan 20 2007, 21:25 Георгий Попробовал программульку на работе, удобная штучка... Jan 22 2007, 11:52 prottoss Цитата(Георгий @ Jan 22 2007, 15:52) Попр... Jan 22 2007, 12:19 Георгий Насколько я помню, вид и пид с устройства не брали... Jan 22 2007, 12:41 prottoss Цитата(Георгий @ Jan 22 2007, 16:41) Наск... Jan 22 2007, 13:17 Георгий Если просто прицепить резистор 1,5 ком между D- b ... Jan 22 2007, 13:35 prottoss Цитата(Георгий @ Jan 22 2007, 17:35) Если... Jan 22 2007, 13:51 Георгий Так меня и интересует, в каком месте он может греш... Jan 22 2007, 16:38 prottoss Цитата(Георгий @ Jan 22 2007, 20:38) Так ... Jan 22 2007, 20:19 BSVi Добрый день. Пытаюсь скомпилировать этот драйвер п... Oct 27 2009, 21:36 BSVi Проблема решена установкой в каждом .h файле макро... Oct 28 2009, 18:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|