Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Виснет USBXpreess Silabs
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Left Radio
Устройство сделано на C5081F321, софт на компе написан на шарпе. Так вот, запускаю программу на компе,
все работает, данные принимает, но через пару секунд все зависает....
Иногда так, что диспетчер задач не спасает....
Также прошивал в мк Silab-овские примеры, при запуске Host программы тоже самое sad.gif
В чем может быть причина?
Left Radio
Ну раз никто мне не отвечает, то придется самому себе ответить....
Может еще у кого-то будут подобные проблемы...
Собственно за три дня мозголамания и чтения всего что касается UsbXpress, причина зависаний так и не была найдена.
А оказалось что проблема была скрыта в БИОСе компа, а точнее в опции USB Legacy Suport(USB Keyboard & USB Mouse). После ее отключения все заработало без проблем, хоть это и очень странно sad.gif
Проверялось на нескольких компах(Atlon X2, Semptron) везде одно и тоже, неужели у всех так ?
Или у всех нормально, а я такой невезучий ?
exeron
У меня проблема была (есть) поинтереснее.
Между основной программой и устройством идет очень интенсивный обмен данными,
на одноядерных процах все работает просто замечательно. На двухядерных (Athlon X2, со всеми заплатками), периодически,
SI_Write задумывается на неопределенное число секунд, затем продолжает работу. Данные при этом не портятся и не теряются, сама функция возвращает SI_SUCCESS. Таймауты установлены.
Проблема была на разных мат платах (чипсеты от NVIDIA и AMD) и на разных процессорах.
Отписал в Silab - молчат.
Left Radio
Очень похоже на мою проблему, только функция у меня не возвращала SI_SUCCESS, попробуйте в биосе отключить USB Legacy и/или USB2.0 support.
exeron
USB Legacy еще можно попробовать отключить, но по-моему эта штука работает только во время загрузки компьютера. А вот за отключение USB 2.0 можно узнать о себе массу нового и неприятного от конечных пользователей. Да и не решение это проблемы.
Не могут, гады, дать исходники, хотя бы под NDA - больше чем уверен, что это где-то у них...
Left Radio
Понятно что это не решение проблемы... Это так ради эксперимента, а вдруг заработает?
У меня проблема решилась именно отключением USB Legacy, хотя ни где об этом производитель не упоминает...
exeron
Ну если бы проблема хоть как то четко вылавливалась..
Просто был случай что 48 часов и ни одной заминки и на двухядерном, а после буквально в течении каждого часа задержки на несколько секунд.
Так что отпишу о результатах попозже.
exeron
Отключение USB Legacy - не помогло.
uriy
А какой у вас USB кабель и электромагнитная обстановка рядом? Я решил использовать дешевый китайский USB кабель без экрана для CP2103 (это наверно тоже какой-то микроконтроллер). При выходе на передачу с радиостанции мощностью 5 Вт в радиусе примерно до 2 метров микросхема зависала, хотя сама она внутри металлического корпуса. Заменил кабель на нормальный с экраном, щас можно даже намотать кабель на антенну и выходить на передачу - микросхема не виснет.
exeron
Если вопрос был адресован мне, то сообщаю:
Кабели используем достаточно хорошие: http://www.nix.ru/autocatalog/cables/Defen...0406_56778.html
Когда только начинали работать с этими МК, достаточно быстро обнаружили, что с обычными лучше не связываться.

Ставили 2 компа, отличавшихся только процессором - двухядерный достаточно часто "замирал", с одноядерным таких проблем не было. Эксперимент многократно повторялся с разными процессорами (надо же и рабочие компы обновлять wink.gif ). Не думаю что дело в помехах.
_AM_
Цитата(exeron @ Sep 9 2009, 20:20) *
Ставили 2 компа, отличавшихся только процессором - двухядерный достаточно часто "замирал", с одноядерным таких проблем не было. Эксперимент многократно повторялся с разными процессорами (надо же и рабочие компы обновлять wink.gif ). Не думаю что дело в помехах.


Пару лет назад при работе с USB-мс FT2232 от FTDI (интенсивный обмен с использованием D2XX-драйвера) обнаружилась такая же проблема (одноядерный ЦП - OK, двухядерный (Pentium HT) - сбои и зависы). Было найдено "гениальное" решение - лишить ЦП многоядерности (естественно только для свого приложения).
А недавно, уже при работе с USBXpreess Silabs (ЦП - Athlon X2), - та же беда! Но и решение - то же!

Для проверки эффективности решения производим следующие манипуляции:
- запускаем приложение;
- запускаем Диспетчер задач;
- на вкладке "Процессы" находим своё приложение, правой кнопкой вызываем для него контекстное меню, выбираем там "Задать соответствие" и оставляем галочку только у одного из ЦП.

В случае положительного результата проверки - добавляем в приложение несколько строк, лишающих ЦП многоядерности уже программно.
exeron
"Лечили" с помощью SetProcessAffinityMask?

PS
Может ребята из Silabs "одолжили" часть кода драйвера у FTDI и по этому не хотят показывать, или просто у дураков мысли сходятся? ))
_AM_
Цитата(exeron @ Nov 10 2009, 12:35) *
"Лечили" с помощью SetProcessAffinityMask?

Да.

Цитата(exeron @ Nov 10 2009, 12:35) *
PS
Может ребята из Silabs "одолжили" часть кода драйвера у FTDI и по этому не хотят показывать, или просто у дураков мысли сходятся? ))

Возможно, они пользовались одними и теми же рекомендациями и ЦУ от Microsoft , и не всё в них поняли smile.gif
exeron
Похоже Silab все же соизволили посмотреть на баги в USBXpress - во всяком случае в свежей версии копали именно в направлении многопоточности, насколько хорошо поработали пока не проверял, благо AMD еще производить одноядерные процы.
62256
Проверил старый (2й) USBXpreess на четырехядерном Атлоне под Windows 7 - работает нормально с CP2102! Следовательно, нет смысла переходить на третий USBXpreess - он (третий) не поддерживает Windows 98.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.