Перейти к содержанию
    

Виснет USBXpreess Silabs

Устройство сделано на C5081F321, софт на компе написан на шарпе. Так вот, запускаю программу на компе,

все работает, данные принимает, но через пару секунд все зависает....

Иногда так, что диспетчер задач не спасает....

Также прошивал в мк Silab-овские примеры, при запуске Host программы тоже самое :(

В чем может быть причина?

Изменено пользователем Left Radio

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну раз никто мне не отвечает, то придется самому себе ответить....

Может еще у кого-то будут подобные проблемы...

Собственно за три дня мозголамания и чтения всего что касается UsbXpress, причина зависаний так и не была найдена.

А оказалось что проблема была скрыта в БИОСе компа, а точнее в опции USB Legacy Suport(USB Keyboard & USB Mouse). После ее отключения все заработало без проблем, хоть это и очень странно :(

Проверялось на нескольких компах(Atlon X2, Semptron) везде одно и тоже, неужели у всех так ?

Или у всех нормально, а я такой невезучий ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня проблема была (есть) поинтереснее.

Между основной программой и устройством идет очень интенсивный обмен данными,

на одноядерных процах все работает просто замечательно. На двухядерных (Athlon X2, со всеми заплатками), периодически,

SI_Write задумывается на неопределенное число секунд, затем продолжает работу. Данные при этом не портятся и не теряются, сама функция возвращает SI_SUCCESS. Таймауты установлены.

Проблема была на разных мат платах (чипсеты от NVIDIA и AMD) и на разных процессорах.

Отписал в Silab - молчат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень похоже на мою проблему, только функция у меня не возвращала SI_SUCCESS, попробуйте в биосе отключить USB Legacy и/или USB2.0 support.

Изменено пользователем Left Radio

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

USB Legacy еще можно попробовать отключить, но по-моему эта штука работает только во время загрузки компьютера. А вот за отключение USB 2.0 можно узнать о себе массу нового и неприятного от конечных пользователей. Да и не решение это проблемы.

Не могут, гады, дать исходники, хотя бы под NDA - больше чем уверен, что это где-то у них...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно что это не решение проблемы... Это так ради эксперимента, а вдруг заработает?

У меня проблема решилась именно отключением USB Legacy, хотя ни где об этом производитель не упоминает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну если бы проблема хоть как то четко вылавливалась..

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

Так что отпишу о результатах попозже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой у вас USB кабель и электромагнитная обстановка рядом? Я решил использовать дешевый китайский USB кабель без экрана для CP2103 (это наверно тоже какой-то микроконтроллер). При выходе на передачу с радиостанции мощностью 5 Вт в радиусе примерно до 2 метров микросхема зависала, хотя сама она внутри металлического корпуса. Заменил кабель на нормальный с экраном, щас можно даже намотать кабель на антенну и выходить на передачу - микросхема не виснет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вопрос был адресован мне, то сообщаю:

Кабели используем достаточно хорошие: http://www.nix.ru/autocatalog/cables/Defen...0406_56778.html

Когда только начинали работать с этими МК, достаточно быстро обнаружили, что с обычными лучше не связываться.

 

Ставили 2 компа, отличавшихся только процессором - двухядерный достаточно часто "замирал", с одноядерным таких проблем не было. Эксперимент многократно повторялся с разными процессорами (надо же и рабочие компы обновлять ;) ). Не думаю что дело в помехах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ставили 2 компа, отличавшихся только процессором - двухядерный достаточно часто "замирал", с одноядерным таких проблем не было. Эксперимент многократно повторялся с разными процессорами (надо же и рабочие компы обновлять ;) ). Не думаю что дело в помехах.

 

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

А недавно, уже при работе с USBXpreess Silabs (ЦП - Athlon X2), - та же беда! Но и решение - то же!

 

Для проверки эффективности решения производим следующие манипуляции:

- запускаем приложение;

- запускаем Диспетчер задач;

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Лечили" с помощью SetProcessAffinityMask?

 

PS

Может ребята из Silabs "одолжили" часть кода драйвера у FTDI и по этому не хотят показывать, или просто у дураков мысли сходятся? ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Лечили" с помощью SetProcessAffinityMask?

Да.

 

PS

Может ребята из Silabs "одолжили" часть кода драйвера у FTDI и по этому не хотят показывать, или просто у дураков мысли сходятся? ))

Возможно, они пользовались одними и теми же рекомендациями и ЦУ от Microsoft , и не всё в них поняли :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже Silab все же соизволили посмотреть на баги в USBXpress - во всяком случае в свежей версии копали именно в направлении многопоточности, насколько хорошо поработали пока не проверял, благо AMD еще производить одноядерные процы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил старый (2й) USBXpreess на четырехядерном Атлоне под Windows 7 - работает нормально с CP2102! Следовательно, нет смысла переходить на третий USBXpreess - он (третий) не поддерживает Windows 98.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...