Fortune 0 18 декабря, 2012 Опубликовано 18 декабря, 2012 (изменено) · Жалоба История такая. Взял атмеловские исходники usb framework+cdc и переделал с целью получения vendor-specific устройства(на контроллере at91sam7s64), работающего в режиме bulk(просто повыкидывал из кода все что касается cdc). С помощью WDK создал драйвер для этого устройства и все более или менее заработало. Но проблема в том, что я хочу увеличить скорость передачи, передавая не 64 байта за раз а 4096 байт. unsigned char BULK_Write(S_std_class *pBulk, void *pBuffer, unsigned int dLength, Callback_f fCallback, void *pArgument) { return USB_Write(pBulk->pUsb, BULK_EPT_DATA_IN, pBuffer, dLength, fCallback, pArgument); } в этом коде фигурирует функция USB_Write(она осталась неизменной из атмеловских примеров ). Эта функция принимает в качестве аргумента dLength, который, по идее равен количеству байт, которые я планирую передать на хост. Сейчас я передаю dLength=64. Могу ли я передать в эту функцию dLength=4096? (пробовал, максимум что у меня получилось - 128). Если нет, то как организовать передачу блоками по 4кб? Нужно ли модифицировать каким-то образом функцию USB_Write или нужно передавать как-то по другому? Изменено 18 декабря, 2012 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fortune 0 19 декабря, 2012 Опубликовано 19 декабря, 2012 · Жалоба Всем спасибо, уже разобрался. С функцией USB_Write все в порядке, проблема была в моем кривом коде. Моя функция-обёртка для функции USB_Write передавала в последнюю dLength типа unsigned char, поэтому я не мог передать 256 байт и больше. Исправил на unsigned int и все заработало. Тему можно закрывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться