История такая. Взял атмеловские исходники 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 или нужно передавать как-то по другому?
Сообщение отредактировал IgorKossak - Dec 18 2012, 15:42
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!