This file contains Mass storage device application related functions.
- Note
- The example is tested on MicroBlaze, PPC405 and 440 systems with caches included in the H/W design and also with systems not having caches.
MODIFICATION HISTORY:
Ver Who Date Changes
1.00a hvm 2/22/07 First release
1.01a hvm 5/30/07 Added code to handle endpoint zero class specific
commands. Added support for PPC.
1.01a hvm 10/2/08 The complete SCSI READ command processing implementation
is modified. The send processing is shifted into the
endpoint one interrupt handler.Updated the code to
enable caches.
2.00a hvm 12/08/08 Updated the example with cache APIs
2.00a hvm 03/12/09 Updated the example with DMA Done check for every
transaction initiated.
3.00a hvm 11/18/09 Updated to use HAL processor APIs.
XUsb_mReadReg is renamed to XUsb_ReadReg and
XUsb_mWriteReg is renamed to XUsb_WriteReg.
3.02a hvm 08/16/10 Updated with the little endian support changes.
4.00a hvm 06/01/11 Signature parameter of Command Status word is
initialized with 'U''S''B''S' in ProcessRxCmd function.
CR611761 fix.
4.00a hvm 24/06/11 The cache flush call with 512 size in EP1 handler is
moved inside the HIGHSPEED condition. CR614791
4.02a bss 11/01/11 Modified UsbIfIntrHandler function to unconditionally
reset when USB reset is asserted (CR 627574).
5.2 MNK 03/30/2016 Modified the example to support ZYNQMP.
|
int | main () |
| This main function starts the USB application. More...
|
|
void | InitUsbInterface (XUsb *InstancePtr) |
| This is the USB initialization function. More...
|
|
void | UsbIfIntrHandler (void *CallBackRef, u32 IntrStatus) |
| This function is the interrupt handler for the USB mass storage device application. More...
|
|
void | Ep0IntrHandler (void *CallBackRef, u8 EpNum, u32 IntrStatus) |
| This function is the interrupt handler for the USB End point Zero events. More...
|
|
void | Ep1IntrHandler (void *CallBackRef, u8 EpNum, u32 IntrStatus) |
| This function is the interrupt handler for the USB End point one events. More...
|
|
void | Ep2IntrHandler (void *CallBackRef, u8 EpNum, u32 IntrStatus) |
| This function is the interrupt handler for the USB End point two events. More...
|
|
void | ProcessRxCmd (XUsb *InstancePtr) |
| This function processes mass storage specific commands and sends the required response. More...
|
|
void | Read10 (XUsb *InstancePtr, PUSBCBW pCmdBlock, PUSBCSW pStatusBlock) |
| This function implements the transmission of data from the device to the READ request from the USB Host. More...
|
|
void | Write10 (XUsb *InstancePtr, PUSBCBW pCmdBlock, PUSBCSW pStatusBlock) |
| This function implements the reception of data in the USB device for the write request from the USB Host. More...
|
|
void | MassStorageReset (XUsb *InstancePtr) |
| This routine is called when a RESET class command is received. More...
|
|
void | GetMaxLUN (XUsb *InstancePtr) |
| This routine is called when a GETMAXLUN class command is received. More...
|
|
void InitUsbInterface |
( |
XUsb * |
InstancePtr | ) |
|
This is the USB initialization function.
This example initializes the device for Mass Storage Application. The following configuration is done.
- EP0 : CONTROL end point, Bidirectional, Packet size 64 bytes.
- EP1 : NON_ISOCHRONOUS, BULK_IN, packet size 512 bytes.
- EP2 : NON_ISOCHRONOUS, BULK_OUT, packet size 512 bytes
- Parameters
-
InstancePtr | is a pointer to the XUsb instance. |
- Returns
- None.
- Note
- None.
References XUsb_Config::BaseAddress, XUsb_EpConfig::Buffer0Ready, XUsb_EpConfig::Buffer1Ready, XUsb::Config, XUsb::DeviceConfig, XUsb_DeviceConfig::Ep, XUsb_EpConfig::EpType, XUsb_DeviceConfig::NumEndpoints, XUsb_EpConfig::OutIn, XUsb_EpConfig::RamBase, XUsb_EpConfig::Size, XUSB_BUFFREADY_OFFSET, XUsb_ConfigureDevice(), XUSB_EP_DIRECTION_IN, XUSB_EP_DIRECTION_OUT, XUsb_EpEnable(), XUSB_STATUS_EP_BUFF2_SHIFT, and XUsb_WriteReg.