реклама на сайте
подробности

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


Частый гость
**

Группа: Свой
Сообщений: 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.

Ошибки проявлялись на фазе начального коннекта при ряде специфических условий и при интенсивном обмене с хостом (знаю в деталях, ибо сам руку приложил к их обнаружению и идентификации). Сейчас все работает отлично. Размер кода не увеличился. Рекомендую обновить версию.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
733259
сообщение Mar 29 2006, 09:03
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Цитата
Насколько я понял - это было сделано из-за того что GCC case всегда как "int" обрабатывает, но ИАР case"ы весьма эффективно раскручивает.


Так было в gcc 3 версии, 4.0.3 у меня case нормально обрабатывает.

Цитата
Он вообще недоумевает, почему наши люди не используют бесплатный компилятор gcc...


Аналогично, тоже недомеваю.

Сообщение отредактировал 733259 - Mar 29 2006, 09:08
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 29 2006, 09:12
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 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 или т.п. - очень даже. Да и привычка русского человека....
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Apr 10 2006, 18:01
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



Прикрепленный файл  TestPowerswitch.rar ( 153.94 килобайт ) Кол-во скачиваний: 270
Все! Сделал управление Powerswitch_ем из-под Дельфи через USBIO от http://www.thesycon.de smile.gif
Осталось найти свежую не демо версию драйвера.
Ато дает поработать только 4 часа sad.gif
Go to the top of the page
 
+Quote Post
lazycamel
сообщение Apr 11 2006, 05:30
Сообщение #5


Участник
*

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



Цитата(aleksey_g @ Apr 10 2006, 21:01) *
Прикрепленный файл  TestPowerswitch.rar ( 153.94 килобайт ) Кол-во скачиваний: 270
Все! Сделал управление Powerswitch_ем из-под Дельфи через USBIO от http://www.thesycon.de smile.gif
Осталось найти свежую не демо версию драйвера.
Ато дает поработать только 4 часа sad.gif


НАФИГА ? Чем тебя LibUSB-win32 не устроила ? Халявная кстати.
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Apr 11 2006, 06:31
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 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 подкупает!
Go to the top of the page
 
+Quote Post
lazycamel
сообщение Apr 12 2006, 18:29
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
osnwt
сообщение Apr 12 2006, 20:41
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Apr 20 2006, 17:28
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



При перекомпиляции Powerswitcha IAR_ом под мегу48 компилятор ругается:
Error[e16]: Segment TINY_Z (size: 0x16 align: 0) is too long for segment definition. At least 0x15 more bytes
needed. The problem occurred while processing the segment placement command
"-Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_BASE-_..X_SRAM_TEND", where at the moment of placement the available
memory ranges were "DATA:100-100"
Reserved ranges relevant to this placement:
DATA:100-100 TINY_I

Описание из iarcompat.h:
#ifndef USB_BUFFER_SECTION
# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */
#endif

При чем avr-gcc использует описание сегмента .dss и работает правильно.
Цитата из usbconfig-prototype.h
/* #define USB_BUFFER_SECTION ".bss" */
/* The USB receive buffer (variable "usbRxBuf") with a length of 22 bytes
* MUST NOT cross a 256 byte boundary. We have introduced this configuration
* option to allow you to change the data segment where this buffer is
* allocated. If you have problems with the default segment (start of .bss),
* you may change this setting. See the comment in usbdrv.h for details.
* On IAR C, the default is the TINY_Z segment (first 256 bytes). You must
* change this default for devices which don't have RAM below 0x100.
*/

Вопрос- Как описать этот сегмент, чтобы иар не ругался? help.gif
Go to the top of the page
 
+Quote Post
osnwt
сообщение Apr 20 2006, 18:00
Сообщение #10


Частый гость
**

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



Цитата(aleksey_g @ Apr 20 2006, 20:28) *
Описание из iarcompat.h:
#ifndef USB_BUFFER_SECTION
# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */
#endif

Вопрос- Как описать этот сегмент, чтобы иар не ругался? help.gif


Буфер для приема данных должен быть размещен так, чтобы не пересекать границу 256 байт (то есть, его адрес должен быть полностью зависим только от младшего байта адреса, старший должен быть константой). В простейшем случае это может быть в IAR гарантировано размещением в TINY_x сегментах, которые гарантированно находятся в пределах младших 256 байтов адресного пространства.

В ряде контроллеров RAM находится, начиная с адреса 0x100 (то есть, там TINY области, как таковой, нет вообще). Очевидно, что невозможно разместить буфер в области нулевой длины.

Решения два:

Поставить #define USB_BUFFER_SECTION "NEAR_Z" где-нибудь в usbconfig.h, чтобы явно заказать размещение в одном из существующих стандартных сегментов достаточной длины. При этом важно после линковки убедиться, что весь указанный буфер полностью размещен так, чтобы не пересекать и даже не касаться границы 256-байтной области, например, полностью лежать в пределах 0x100-0x1fe включительно (1ff уже не допустим, так как при инкременте будет изменен старший байт адреса).

Процедура заглядывания в файл линковки каждый раз способна утомить, потому есть второй вариант - явно описать свой собственный сегмент с явно заданными границами адресов, удовлетворяющими названным требованиям. В этом случае линкер будет сам следить за их выполнением, но это может в определенных случаях (при неправильном описании) снизить эффективность размещения сегментов.

О том, как описывать сегменты в командной строке линкера (которую можно просто добавить в файл конфигурации проекта в качестве дополнительных опций) - см. документацию на линкер.
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Apr 21 2006, 11:32
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



Цитата(osnwt @ Apr 20 2006, 21:00) *
Решения два:

Поставить #define USB_BUFFER_SECTION "NEAR_Z" где-нибудь в usbconfig.h, чтобы явно заказать

явно описать свой собственный сегмент с явно заданными границами адресов, удовлетворяющими


С "NEAR_Z" не работает!
Мой вариант тоже.
Устройство через 5 раз определяется виндой, но работать отказывается.

Может не правильно понял?
скопировал lnkm48s.xcl в директорию проекта.
в нем описал свой сегмент -Z(DATA).bss=100-116 (с запвсом!)
.bss для совместимости с avr-gcc.
project/options/linker/config установил галку Override default.
Указал путь к своему lnkm48s.xcl
ИАР_ом компилируеися, но не работает. avr-gcc компилирует и устройство нормально работает.
Проект привел в такой вид, чтобы он мог компилироваться и иаром и avr-gcc

Где копать?

на всякий случай исходникиПрикрепленный файл  m48.rar ( 25.01 килобайт ) Кол-во скачиваний: 150
Go to the top of the page
 
+Quote Post
osnwt
сообщение Apr 21 2006, 11:56
Сообщение #12


Частый гость
**

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



#define TEST_DRIVER_SIZE

определенное в коде - это так и задумано? Так и работает? Чудеса...

В первом приближении причин не увидел. Попробуй пообщаться с EWAVR - у него проект в tiny под IAR заработал.
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Apr 21 2006, 12:19
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



Цитата(osnwt @ Apr 21 2006, 14:56) *
#define TEST_DRIVER_SIZE

определенное в коде - это так и задумано? Так и работает? Чудеса...


Именно!
В авторском варианте при этом не компилится usbFunctionSetup с функциями, а только usbPoll();
я же туда добавил ECHO.
И работает!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - lazycamel   Цитата(osnwt @ Apr 12 2006, 23:41) Цитата...   Apr 13 2006, 04:37
||- - osnwt   Цитата(lazycamel @ Apr 13 2006, 07:37) Ци...   Apr 13 2006, 08:58
||- - lazycamel   Цитата(osnwt @ Apr 13 2006, 11:58) Ответ ...   Apr 13 2006, 09:44
||- - 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   Для скачавших 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


Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 10:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01505 секунд с 7
ELECTRONIX ©2004-2016