Using the MSC Driver
To use the MSC driver, two files, in addition to the generic file system files, must be included in the build:
fs_dev_msc.c.fs_dev_msc.h.
The file fs_dev_msc.h must also be #included in any application or header files that directly reference the driver (for example, by registering the device driver). The following directory must be on the project include path:
\Micrium\Software\uC-FS\Dev\MSC
Before µC/FS is initialized, the µC/USB host stack must be initialized as shown in Listing - Example µC/USB initialization. The file system initialization function (FS_Init()) must then be called and the MSC driver, FSDev_MSC, restivered (using FS_DevDrvAdd()). The USB notification function should add/remove devices when events occur, as shown in Listing - Example µC/USB initialization.
ROM/RAM characteristics and performance benchmarks of the MSC driver can be found in Driver Characterization.
static void App_InitUSB_Host (void)
{
USBH_ERR err;
err = USBH_HostCreate(&App_USB_Host, &USBH_AT91SAM9261_Drv);
if (err != USBH_ERR_NONE) {
return;
}
err = USBH_HostInit(&App_USB_Host);
if (err != USBH_ERR_NONE) {
return;
}
USBH_ClassDrvReg(&App_USB_Host, &USBH_MSC_ClassDrv,
(USBH_CLASS_NOTIFY_FNCT)App_USB_HostMSC_ClassNotify, (void *)0);
}
static void App_USB_HostMSC_ClassNotify (void *pclass_dev,
CPU_INT08U is_conn,
void *pctx)
{
USBH_MSC_DEV *p_msc_dev;
USBH_ERR usb_err;
FS_ERR fs_err;
p_msc_dev = (USBH_MSC_DEV *)pclass_dev;
switch (is_conn) {
case USBH_CLASS_DEV_STATE_CONNECTED: /* ----- MASS STORAGE DEVICE CONN'D ----- */
usb_err = USBH_MSC_RefAdd(p_msc_dev);
if (usb_err == USBH_ERR_NONE) {
FSDev_MSC_DevOpen(p_msc_dev, &fs_err);
}
break;
case USBH_CLASS_DEV_STATE_REMOVED: /* ----- MASS STORAGE DEVICE REMOVED ---- */
FSDev_MSC_DevClose(p_msc_dev);
USBH_MSC_RefRel(p_msc_dev);
break;
default:
break;
}
}
If the file system and USB stack initialization succeed, the file system will produce the trace output as shown in Figure - MSC detection trace output (if a sufficiently high trace level is configured) when the a MSC device is connected. See Trace Configuration about configuring the trace level.
