QUOTE (Genadi Zawidowski @ Nov 29 2010, 22:52)

Посмотрите, правильно ли я понял - при наличии в контроллере USB четырёх endpoint не может быть значение bEndpointAddress
больше 3?
"в наглую" поменяв все номера ендпоинтов, превышавшие 3 на то число дало нормально опознающийся (и, даже, функционирующий в части CDC) комплект устройств...
Попутно, было вычищено пара мест (использование неинициализированого массива указателей в SetConfiguration (USBDDriver.c) - там же авторы пердусмотрели "запасной" элемент, но не предусмотрели контрль индексов при адресации к массиву endpoints. Контроль выявил место ошибки.
Хорошо хоть у вас в наличие есть другие МК, т.к. на этом (SAM7S) вы обречены на неудачу получить из представленных примеров работающий Composit(Compound) устройство
[CENSORED]! Вы абсолютно правы, беда с EP (end point), их просто физически МАЛО, всего-то 4 (включая 0-ой)
[CENSORED]!!! Как так можно было поиздеваться над пользователями

Для нормальной работы CDC+HID надо 6 (включая 0-ой)! Я тоже, наткнулся на эту проблему, когда понадобилось композитное устройство (только в моем случае CDC+MSD), потратил пару часов пока со всем разобрался... Просто код они попытались написать универсальный (в частности для конфигурации EP), но допустили ошибку для SAM7S, даже каким-нить #define-ом не учли (хотя такой и есть в board.h) сколько EP есть а сколько надо (и могли бы выдать хотя бы ошибку компиляции)!
Физически, по идее, получить композитное устройство не получиться для SAM7S! Но, можно получить "комбинированное"

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

), а в конечном итоге проинициализировать второе, скажем CDC (для рассматриваемого примера) - И СЕ, работаем!!! (вот так вот пару месяцев назад мне и пришлось выходить из "положения"! аллах ахбар там хоть не требовалась постоянная работа Флэшки(MSD))

))
Сообщение отредактировал IgorKossak - Dec 3 2010, 18:15
Причина редактирования: Поменьше эмоций