I managed to get usb host msc (mass storage class) running up until detection of the USB stick.
while(true) { os_dly_wait(2); usbh_engine(0); // check for new devices if (!bConnected && usbh_msc_status(0, 0)) { printf("MSC connected"); bConnected = true; } else if (bConnected && !usbh_msc_status(0, 0)) { printf("MSC disconnected"); bConnected = false; } }
When I insert the stick, the "MSC connected" message appears (after some delay). When I remove the stick, the "MSC disconnected" message appears.
However, when I try to read from the stick, no files are found and I get a stack overflow (in void os_error(U32 err_code)).
if (ffind("U0:*.*", &fInfo) == 0) { printf("MSC connected: %s", fInfo.name); // We never get here } // ffind does not find any files // and a stack overflow occurs here // (Note that it does not appear when I remove the ffind() command!
I also tried to open a file by name (which certainly exists on the stick), but fopen() returns NULL.
The stack problem is solved. I needed to increase OS_STKSIZE in RTX_Conf_CM.c a bit. Had nothing to do with the USB.
However, I still can't get any information about the file system on the USB stick...
fcheck("U0:") returns nonzero. It seems that on fcheck, none of the functions in fs_usbh_msc.c is called.
There seems to be something wrong in the connection between the file system layer (where all the file commands are) and the host class layer (with the functions from fs_usbh_msc.c).
It seems something doesn't get initialized. I am calling finit(NULL) at the start of my program and finit("U0:") on detection of a USB stick.
(And I am talking to myself a lot...)
Have you tried Twitter?
This is how user forums work, especially if you post multiple times within the same day, and no one with any special perspective/interest has visited. I suppose the consultant contingent are off with paying clients today.
Yes, it does sound like you have an initialization issue, and perhaps one with your abstraction implementation, suggest you go look there and through the documentation for the file system.
The "talking to myself" was just joking with myself... :-) Thanks for your reaction.