hay varios fallos en el usbstorage.c.
Si quieres tener la maxima velocidad usb debes usar este usbstorage.c
http://www.megaupload.com/?d=JHCX8IQJ y ponerlo en libogc\libogc
y este otro
http://www.megaupload.com/es/?d=XAWDNA60 en libfat\source\ogc_io
o esperar a que sven arregle los fallos que le he comentado.
Estas correcciones son mias y pueden no ser del todo correctas pero parece que van bien.
Asegurate de usar la ultima version de libfat del cvs de sourceforge y aplicar todos los patch que hay en el tracker, una vez hecho esto sustituye los archivos que he mencionado anteriormente y tendrás soporte usb a pleno rendimiento.
Obviamente ahora debes compilar libogc y libfat.
en el directorio de libogc, make, make install
en el directorio de libfat make ogc-install
no hace falta que copies nada manualmente, te debe funcionar sin problemas.
Lo normal es que las fuentes de libogc y libfat no esten en el mismo directorio que la instalacion de libogc, ejemplo:
\devkitPro\libogc directorio de instalacion de libogc
\devkitPro\cvs\libogc directorio de las fuentes de libogc
al hacer make install en el directorio de las fuentes copia todo lo necesario al directorio de la instalacion
Lo mismo ocurre con libfat pero solo hay que hacer make ogc-install
Para usar usb en libfat es como la sd.
partition : PI_INTERNAL_SD (3) PI_USBSTORAGE (4)
La sd es fat3:/ y la usb fat4:/ es decir para pasar de una a otra pueder hacer:
chdir("fat3:/") para ir a la raiz de la sd ya que PI_INTERNAL_SD == 3
chdir("fat4:/") para ir a la raiz del usb storage ya que PI_USBSTORAGE== 4
tambien puedes usar fatSetDefaultInterface(interface) para usar fat0:/, es decir:
fatSetDefaultInterface(PI_USBSTORAGE);
chdir("fat0:/");
te llevaría a la raiz del usb y:
fatSetDefaultInterface(PI_INTERNAL_SD);
chdir("fat0:/");
te llevaría a la raiz de la sd.
Si quieres acelerar la lectura debes usar fatEnableReadAhead(partition, 64, 128) y se activará la read ahead cache que aumentará el rendimiento de lectura.
Es decir si quieres tener caché tanto en la sd como en el usb tendras que poner:
fatEnableReadAhead(PI_INTERNAL_SD, 64, 128);
fatEnableReadAhead(PI_USBSTORAGE, 64, 128);
La mejor forma de aprender a manejar la libfat es ver el codigo de ftpii
http://code.google.com/p/ftpii/ así es como yo aprendí.
Si tienes mas dudas exponlas y así podremos ayudarte.