Требуется - передача данных по Bulk. Более высокий уровень не требуется, поэтому вся поддержка из примера для mass storage была выкинута.
Фактически осталось только: энумерация, сетап, прерывание
И тут натолкнулся на пока непонятную для меня ситуацию. Фактически, в прерывании проверяется конечная точка, для которой было вызвано прерывание. Далее из прерывания же вызывается USB_EndpointXX(DWORD Event), event - USB_EVT_IN/OUT.
Для реализации mass storage там, собственно, и не происходит ничего - данные формируются и гонятся в/из памяти в необходимом формате, поэтому время выполнения прерывания невелико. У меня же необходимо данные обработать, в некоторых случаях "дочитать" еще данные, отослать некий запрос хосту, обработать данные, иногда это может занять время.
Получается, что все это время я буду "болтаться" в обработчике прерывания? И не смогу опять получить данные, т.к. я уже обрабатываю то, что получил до этого?
А еще висит RL-RTOS, которой тоже надо как-то выполняться
Или разбить все свои обработки на кучу stages, и потом в прерывании обрабатывать? Но тогда switch вырастет просто жутко (у меня команд управления только порядка полутора десятков и в половине еще куча обменов)
Или я вообще все не так понял...
Проект USBMem -
тут
Сообщение отредактировал toweroff - Feb 27 2009, 12:28