¿Hay alguna razón por la que no esté comenzando con el paquete de software de demostración provisto para su placa? Una de las demos hace lo que estás pidiendo. Consulte el enlace 'Demo' en enlace
La página 14 del manual del usuario de XCor407l (disponible en la misma página web), en la sección 2.9.5, indica: 'Demostración de HS USB, la placa de desarrollo funciona como host USB; Demostración de la unidad flash USB '. Esto parece ser exactamente lo que quieres como punto de partida.
Puede descargar el software, incluido el código fuente, desde el enlace 'Demo'. El código fuente de este ejemplo se encuentra en 'EVK407L-Demo / USB HS Example / Project / USB_Host_Examples / MSC'. Eché un vistazo rápido al código fuente, claramente respalda el ULPI.
Como recuerdo, por haber escrito el firmware para varios dispositivos USB de alta velocidad, los problemas técnicos clave que operan a alta velocidad son:
Transceptor de alta velocidad: para que un dispositivo USB se conecte a alta velocidad (480M bits / s), se necesita un protocolo de enlace y los dispositivos encienden sus transceptores de alta velocidad. Si observa la hoja de datos del Microchip USB3300, verá en la página 20 que el registro de 'Control de función' toma como valor predeterminado el valor 0x41, por lo que el transceptor de velocidad completa está habilitado (sección 6.1.4.5, Selección de Xcvr [1: 0] tiene el valor 1). El firmware que controla el ULPI debe guiarlo correctamente al encender el transceptor de alta velocidad.
Tamaño del paquete: en el modo de alta velocidad USB 2.0, el tamaño del paquete de transferencia de datos es de 512 bytes, a diferencia de los 64 bytes en el modo de velocidad completa de USB 1.1. Esto se aplica solo a la transferencia de datos USB, no a los comandos y respuestas USB. El firmware debe tener en cuenta este tamaño de paquete al leer y escribir datos.
Con respecto a la velocidad de transferencia de datos, le está yendo bien para lograr 1.3M Bytes / s con USB 1.1 a toda velocidad. Existe una sobrecarga en el protocolo, los comandos y el estado del intercambio del host y el dispositivo, además de los datos, y eso lleva tiempo.
Las especificaciones de USB 2 pueden ser útiles. Están bien escritos y disponibles en USB.org, consulte enlace