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

 
 
6 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Вышла очередная версия AVR-USB драйвера от Objective Development, Исправлена пара серьезных багов, рекомендуется обновиться
EWAVR
сообщение Mar 20 2006, 10:47
Сообщение #16


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 26-07-05
Из: Киев, Украина
Пользователь №: 7 113



Цитата
+extern unsigned usbCrc16(uchar __near *data, uchar len)


Не компилируется в tiny - модели: Error[Pa043]: the keyword "__near" is not available with the current settings
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 20 2006, 14:08
Сообщение #17


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

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



Цитата(EWAVR @ Mar 20 2006, 12:47) *
Цитата
+extern unsigned usbCrc16(uchar __near *data, uchar len)

Не компилируется в tiny - модели: Error[Pa043]: the keyword "__near" is not available with the current settings

Это для меня сюрприз, придется обходить по другому. Я проверял на меге32, но в tiny. Не хочется переделывать асмовский код, хотя не столь и сложно.

AT90S2313? Версия IAR?
Go to the top of the page
 
+Quote Post
EWAVR
сообщение Mar 20 2006, 16:30
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 26-07-05
Из: Киев, Украина
Пользователь №: 7 113



Да, at90s2313. IAR AVR 4.12A, есть для проверки 4.11A и 3.20D.

Сообщение отредактировал EWAVR - Mar 20 2006, 16:33
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 20 2006, 16:53
Сообщение #19


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

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



Да, действительно для AT90S2313 __tiny недоступно даже в виде исключения (документировано), вот не ожидал от IAR такой диверсии. Почему, спрашивается...

Самый простой workaround - это вот такой:

usbdrv.h:
Код
//extern unsigned usbCrc16(uchar *data, uchar len);
extern unsigned usbCrc16(unsigned dptr, uchar len);

//extern unsigned usbCrc16Append(uchar *data, uchar len);
extern unsigned usbCrc16Append(unsigned dptr, uchar len);

usbdrv.c:
Код
//  usbCrc16Append(&usbTxBuf1[1], len);
    usbCrc16Append((unsigned)(&usbTxBuf1[1]), len);

//      usbCrc16Append(usbTxBuf + 1, len);
        usbCrc16Append((unsigned)(usbTxBuf + 1), len);

Это для проверки. Вынуждает передать функции два байта в качестве указателя вместо одного. В дизассемблере код похож на правду, в железе не проверял.

Решение не самое красивое, но работоспособное. Безусловно, оптимальнее переписать ассемблерные функции для решения проблемы, но автор едва ли согласится делать это в официальной версии. Потому пока прошу лишь проверить работоспособность. Во всяком случае, всегда есть возможность так и оставить для личных целей.
Go to the top of the page
 
+Quote Post
EWAVR
сообщение Mar 20 2006, 22:49
Сообщение #20


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 26-07-05
Из: Киев, Украина
Пользователь №: 7 113



Спасибо, все заработало( все так просто, сам мог бы догадаться!).
Далее я попробовам перенести в IAR свой прект на tiny26. В нем использутся прерывание от АЦП, и линкер выдал следующее:
Цитата
Error[e16]: Segment INTVEC (size: 0x18 align: 0x1) is too long for segment definition. At least
0x4 more bytes needed. The problem occurred while processing the segment placement
command "-Z(CODE)INTVEC=0-(_..X_INTVEC_SIZE-1)", where at the moment of placement
the available memory ranges were "CODE:0-1,CODE:4-17"
Reserved ranges relevant to this placement:
CODE:0-1 ?FILL1
CODE:2-3 Absolute code from usbdrvasm
CODE:4-17 ?FILL2

Ассемблерный код нагло залез в сегмент INTVEC.
Разборки с директивами ассемблера показали, что в файле usbdrvasm.S в месте

ASEG
ORG INT0_vect + IVT_BASE_ADDRESS
rjmp SIG_INTERRUPT0

нужно поменять ASEG на COMMON INTVEC, тогда линкуется без проблем.

P.S. При переходе с gcc на IAR в проекте на tiny26 я выиграл аж 10 байт, так что овчинка выделки не стоила. Но все равно спасибо за помошь:-}

Сообщение отредактировал EWAVR - Mar 20 2006, 22:56
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 21 2006, 08:27
Сообщение #21


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

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



Цитата(EWAVR @ Mar 21 2006, 00:49) *
нужно поменять ASEG на COMMON INTVEC, тогда линкуется без проблем.

Да, я тоже предпочел бы использовать INTVEC, но сразу как-то не проэкспериментировал, напоровшись на проблемы с ORG. Однозначно, что предложенный подход более грамотный.

IVT_BASE_ADDRESS появилась ради размещения драйвера в boot area для создания загрузчиков. В варианте с INTVEC эта часть снова уходит в небытие.

Цитата
P.S. При переходе с gcc на IAR в проекте на tiny26 я выиграл аж 10 байт, так что овчинка выделки не стоила. Но все равно спасибо за помошь:-}

Но если замыкаться на IAR, то смысл в этом есть - появляется возможность разместить определенный код в мЕньшем устройстве. Остается лишь проблема, как красиво с минимумом правок решить проблему с передачей указателя. Ну что стоило поддержать __near для всех CPU...
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Mar 22 2006, 12:09
Сообщение #22


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

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



Уважаемые EWAVR & OSNWT 1111493779.gif
Ну поделитесь же Вашими портами PowerSwitch для ИАР_а
Ато читаю Вашу переписку, слюни текут!
У самого опыта еще нету. help.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 22 2006, 12:24
Сообщение #23


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(osnwt @ Mar 21 2006, 10:27) *
Цитата
P.S. При переходе с gcc на IAR в проекте на tiny26 я выиграл аж 10 байт, так что овчинка выделки не стоила. Но все равно спасибо за помошь:-}

Но если замыкаться на IAR, то смысл в этом есть - появляется возможность разместить определенный код в мЕньшем устройстве. Остается лишь проблема, как красиво с минимумом правок решить проблему с передачей указателя. Ну что стоило поддержать __near для всех CPU...


Ох, господа, не надеялся я бы так на T26. Недавно писал про глюки со старшим байтом X, так вот действительно:

Цитата
If you use

LD r16,X

then you can use XH (r27) to something else, if you use

LD r16, X+

XL is incremented and XH is reset. I can see that the description in the instruction set is a bit unclear, but you have to
believe me in that this is how it is desgined to work ( I double checked with the IC-designers) and that it is not a bug.


Это я от Atmel'а ответ получил...

Особенно убивает последняя фраза про то, что так задумано, а в описании комманд - немного ошибочно wink.gif

Мне пришлось из-за этого ПРИНУДИТЕЛЬНО включить для T26 режим near, точнее выбрать в опциях проекта не конкретно проц, а модель -v1.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Mar 22 2006, 15:20
Сообщение #24


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

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



Все! Откомпилил PowerSwitch в ИАР_е под ATMEGA8535 , слепил драйвера в LIBUSB-WIN32,
проинсталил, подключил, есть в системе устройство-PowerSwitch. a14.gif

Теперь не могу (не знаю чем) скомпилить commandline/powerswitch.c
любые попытки - море ошибок.

Вижу, Вы достаточно опытные спецы, не расскажете ли как с этим девайсом
пообщаться из-под DELPHI5?

C IgorPlug (USBtoRS232) имею некотрый опыт.
Go to the top of the page
 
+Quote Post
EWAVR
сообщение Mar 22 2006, 16:04
Сообщение #25


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 26-07-05
Из: Киев, Украина
Пользователь №: 7 113



Никаких проблем с компиляцией, недостающие файлы usb.h и libusb.lib берутся в дистрибутиве libusb-win32. Компилировал Borland C++ 5.5 из командной строки:
bcc32.exe powerswitch.c libusb.lib

Сообщение отредактировал EWAVR - Mar 22 2006, 16:07
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Mar 22 2006, 17:37
Сообщение #26


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

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



Нашел ВС++ 5.2 Установил. Скомпилил. 2 WARNING:

C:\...werSwitch.2006-03-14\commandline>bcc32.exe powerswitch.c libusb.lib
Borland C++ 5.2 for Win32 Copyright © 1993, 1997 Borland International
powerSwitch.c:
Warning powerSwitch.c 127: 'handle' is assigned a value that is never used in function main
Turbo Link Version 2.0.68.0 Copyright © 1993,1997 Borland International
Warning: Extern '_usb_busses' was not qualified with __import in module powerSwitch.c

Получил екзешник 61440 байт.
Подключил устройство.
на строку "powerSwitch on 0 2.5" получаю:
powerSwitch.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.
(WINXP SP1 rus) sad.gif
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 22 2006, 19:58
Сообщение #27


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

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



Цитата(aleksey_g @ Mar 22 2006, 14:09) *
Ну поделитесь же Вашими портами PowerSwitch для ИАР_а

Алексей, отправить PM не удалось, какая-то ерунда с сервером. Пишу тут.

К сожалению, я не занимался попытками полноценно скомпилировать PowerSwitch под IAR. Я просто раскрутил, закомментировал вотчдоги и т.п., проверил, что собирается в tiny, и стер.

Как я понял, проблема уже решена.

Насчет командной строки то же самое: я уже писал на форуме, что варианты под libusb мне не интересны на данном этапе, и примеры приложений obdev я не компилировал. Я использовал для своих целей основу из Automator, и собирал ее под VisualStudio 6. Но собралось оно не сразу, а я вообще переписал приличный кусок.

Так что готовыми решениями стандартных примеров не порадую, увы. Да и интереснее самому разобраться. А, главное, полезнее.

Удачи!
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение Mar 23 2006, 08:23
Сообщение #28


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

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



Олег!
Ерунда с сервером похоже есть!
ERROR
The requested URL could not be retrieved

--------------------------------------------------------------------------------

While trying to retrieve the URL: http://electronix.ru/forum/index.php?

The following error was encountered:

Zero Sized Reply
Squid did not receive any data for this request

Но ко мне письма пришли, надеюсь к Вам тоже.
Go to the top of the page
 
+Quote Post
EWAVR
сообщение Mar 23 2006, 19:08
Сообщение #29


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 26-07-05
Из: Киев, Украина
Пользователь №: 7 113



Цитата(aleksey_g @ Mar 22 2006, 21:37) *
Подключил устройство.
на строку "powerSwitch on 0 2.5" получаю:
powerSwitch.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.


Есть маленькая хитрость: выравнивание данных нужно включить по границе байта (data align=byte, ключ компиляции -a1 или -a-). Сам чуть не поседел, пока нашел. А command-line-only BC++ 5.5 можно скачать с сайта Borland.

Сообщение отредактировал EWAVR - Mar 23 2006, 19:10
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 24 2006, 08:48
Сообщение #30


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

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



EWAVR,

если есть возможность, прошу проверить работоспособность экспериментальной версии порта USBDRV на аппаратном tiny контроллере (tiny26, 90s2313 или т.п.). Ссылка на порт в PM. Это приватный билд, его нет смысла хранить (тем более, в нем есть кое-что неучтенное). Если будет все нормально, то будет официальная версия с поддержкой tiny.

У меня оно работает и в small, и в tiny на ATmega32 (код отличается на 101 байт на очень малой программе), но на маленьких контроллерах не тестировал.

Особенности: необходимость определения регистров работы с прерываниями для разных контроллеров (см. файл usbconfig-prototype.h в конце). К сожалению, #ifdef в IAR не работает для SFR, потому придется явно задать нужные регистры. Что можно задать - можно посмотреть в коде usbdrv.h, где возможность определения уже учтена.

Просьба не распространять эту версию - если с ней проблем не будет, то на следующей неделе будет официальная на сайте.

Прошу сообщить результат по мере возможности, или если такой возможности нет - то тоже сообщить, чтобы передать автору.
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

 


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


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