diff options
| author | hathach <[email protected]> | 2018-03-23 14:15:35 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2018-03-23 14:15:35 +0700 |
| commit | e8b0500d403e71da5898cdce01708e0f8111813c (patch) | |
| tree | 00398807f5412ae27c9464dd69a6da2a9f077aad /examples/device | |
| parent | 3e5e1f70bfc320b1940a2ab0771b1dd23e6744f3 (diff) | |
MSC tested with nrf52840
Diffstat (limited to 'examples/device')
| -rw-r--r-- | examples/device/device_virtual_com/src/tusb_descriptors.c | 24 | ||||
| -rw-r--r-- | examples/device/device_virtual_com/src/tusb_descriptors.h | 12 | ||||
| -rw-r--r-- | examples/device/nrf52840/segger/nrf52840.emProject | 3 | ||||
| -rw-r--r-- | examples/device/nrf52840/src/tusb_config.h | 11 | ||||
| -rw-r--r-- | examples/device/nrf52840/src/tusb_descriptors.c | 62 | ||||
| -rw-r--r-- | examples/device/nrf52840/src/tusb_descriptors.h | 27 |
6 files changed, 100 insertions, 39 deletions
diff --git a/examples/device/device_virtual_com/src/tusb_descriptors.c b/examples/device/device_virtual_com/src/tusb_descriptors.c index 5f502fc6a..74954ba1c 100644 --- a/examples/device/device_virtual_com/src/tusb_descriptors.c +++ b/examples/device/device_virtual_com/src/tusb_descriptors.c @@ -77,7 +77,7 @@ app_descriptor_configuration_t const desc_configuration = .bDescriptorType = TUSB_DESC_CONFIGURATION, .wTotalLength = sizeof(app_descriptor_configuration_t), - .bNumInterfaces = TOTAL_INTEFACES, + .bNumInterfaces = ITF_TOTAL, .bConfigurationValue = 1, .iConfiguration = 0x00, @@ -91,7 +91,7 @@ app_descriptor_configuration_t const desc_configuration = .bLength = sizeof(tusb_desc_interface_assoc_t), .bDescriptorType = TUSB_DESC_INTERFACE_ASSOCIATION, - .bFirstInterface = INTERFACE_NO_CDC, + .bFirstInterface = ITF_NUM_CDC, .bInterfaceCount = 2, .bFunctionClass = TUSB_CLASS_CDC, @@ -105,7 +105,7 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_interface_t), .bDescriptorType = TUSB_DESC_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC, + .bInterfaceNumber = ITF_NUM_CDC, .bAlternateSetting = 0, .bNumEndpoints = 1, .bInterfaceClass = TUSB_CLASS_CDC, @@ -128,7 +128,7 @@ app_descriptor_configuration_t const desc_configuration = .bDescriptorType = TUSB_DESC_CLASS_SPECIFIC, .bDescriptorSubType = CDC_FUNC_DESC_CALL_MANAGEMENT, .bmCapabilities = { 0 }, - .bDataInterface = INTERFACE_NO_CDC+1, + .bDataInterface = ITF_NUM_CDC+1, }, .cdc_acm = @@ -146,15 +146,15 @@ app_descriptor_configuration_t const desc_configuration = .bLength = sizeof(cdc_desc_func_union_t), // plus number of .bDescriptorType = TUSB_DESC_CLASS_SPECIFIC, .bDescriptorSubType = CDC_FUNC_DESC_UNION, - .bControlInterface = INTERFACE_NO_CDC, - .bSubordinateInterface = INTERFACE_NO_CDC+1, + .bControlInterface = ITF_NUM_CDC, + .bSubordinateInterface = ITF_NUM_CDC+1, }, .cdc_endpoint_notification = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_NOTIFICATION_ADDR, + .bEndpointAddress = CDC_EDPT_NOTIF, .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, .wMaxPacketSize = { .size = 0x08 }, .bInterval = 0x10 @@ -165,7 +165,7 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_interface_t), .bDescriptorType = TUSB_DESC_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC+1, + .bInterfaceNumber = ITF_NUM_CDC+1, .bAlternateSetting = 0x00, .bNumEndpoints = 2, .bInterfaceClass = TUSB_CLASS_CDC_DATA, @@ -178,9 +178,9 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_OUT_ADDR, + .bEndpointAddress = CDC_EDPT_OUT, .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, + .wMaxPacketSize = { .size = CDC_EDPT_SIZE }, .bInterval = 0 }, @@ -188,9 +188,9 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_IN_ADDR, + .bEndpointAddress = CDC_EDPT_IN, .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, + .wMaxPacketSize = { .size = CDC_EDPT_SIZE }, .bInterval = 0 }, }; diff --git a/examples/device/device_virtual_com/src/tusb_descriptors.h b/examples/device/device_virtual_com/src/tusb_descriptors.h index db7b00051..af200946c 100644 --- a/examples/device/device_virtual_com/src/tusb_descriptors.h +++ b/examples/device/device_virtual_com/src/tusb_descriptors.h @@ -56,8 +56,8 @@ PRODUCTID_BITMAP(MSC, 4) ) ) #endif -#define INTERFACE_NO_CDC 0 -#define TOTAL_INTEFACES 2 +#define ITF_NUM_CDC 0 +#define ITF_TOTAL 2 //--------------------------------------------------------------------+ // Endpoints Address & Max Packet Size @@ -65,12 +65,12 @@ #define EDPT_IN(x) (0x80 | (x)) #define EDPT_OUT(x) (x) -#define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (1) +#define CDC_EDPT_NOTIF EDPT_IN (1) #define CDC_EDPT_NOTIFICATION_PACKETSIZE 64 -#define CDC_EDPT_DATA_OUT_ADDR EDPT_OUT(2) -#define CDC_EDPT_DATA_IN_ADDR EDPT_IN (2) -#define CDC_EDPT_DATA_PACKETSIZE 64 +#define CDC_EDPT_OUT EDPT_OUT(2) +#define CDC_EDPT_IN EDPT_IN (2) +#define CDC_EDPT_SIZE 64 //--------------------------------------------------------------------+ diff --git a/examples/device/nrf52840/segger/nrf52840.emProject b/examples/device/nrf52840/segger/nrf52840.emProject index 0c2487f36..918a7a3a3 100644 --- a/examples/device/nrf52840/segger/nrf52840.emProject +++ b/examples/device/nrf52840/segger/nrf52840.emProject @@ -56,6 +56,9 @@ <file file_name="../src/tusb_config.h" /> <file file_name="../src/tusb_descriptors.c" /> <file file_name="../src/tusb_descriptors.h" /> + <file file_name="../src/msc_device_app.c" /> + <file file_name="../src/msc_device_app.h" /> + <file file_name="../src/msc_device_ramdisk.c" /> </folder> <folder Name="hw"> <folder Name="bsp"> diff --git a/examples/device/nrf52840/src/tusb_config.h b/examples/device/nrf52840/src/tusb_config.h index 953f05858..e517376c3 100644 --- a/examples/device/nrf52840/src/tusb_config.h +++ b/examples/device/nrf52840/src/tusb_config.h @@ -60,7 +60,7 @@ #define TUSB_CFG_DEVICE_HID_KEYBOARD 0 #define TUSB_CFG_DEVICE_HID_MOUSE 0 #define TUSB_CFG_DEVICE_HID_GENERIC 0 // not supported yet -#define TUSB_CFG_DEVICE_MSC 0 +#define TUSB_CFG_DEVICE_MSC 1 #define TUSB_CFG_DEVICE_CDC 1 //--------------------------------------------------------------------+ @@ -79,6 +79,15 @@ //--------------------------------------------------------------------+ #define TUSB_CFG_ATTR_USBRAM +// LPC11uxx and LPC13uxx requires each buffer has to be 64-byte alignment +#if TUSB_CFG_MCU == MCU_LPC11UXX || TUSB_CFG_MCU == MCU_LPC13UXX + #define ATTR_USB_MIN_ALIGNMENT ATTR_ALIGNED(64) +#elif defined NRF52840_XXAA + #define ATTR_USB_MIN_ALIGNMENT ATTR_ALIGNED(4) +#else + #define ATTR_USB_MIN_ALIGNMENT +#endif + #ifdef __cplusplus } #endif diff --git a/examples/device/nrf52840/src/tusb_descriptors.c b/examples/device/nrf52840/src/tusb_descriptors.c index 5e1e421f1..a36786961 100644 --- a/examples/device/nrf52840/src/tusb_descriptors.c +++ b/examples/device/nrf52840/src/tusb_descriptors.c @@ -77,7 +77,7 @@ app_descriptor_configuration_t const desc_configuration = .bDescriptorType = TUSB_DESC_CONFIGURATION, .wTotalLength = sizeof(app_descriptor_configuration_t), - .bNumInterfaces = TOTAL_INTEFACES, + .bNumInterfaces = ITF_TOTAL, .bConfigurationValue = 1, .iConfiguration = 0x00, @@ -93,7 +93,7 @@ app_descriptor_configuration_t const desc_configuration = .bLength = sizeof(tusb_desc_interface_assoc_t), .bDescriptorType = TUSB_DESC_INTERFACE_ASSOCIATION, - .bFirstInterface = INTERFACE_NO_CDC, + .bFirstInterface = ITF_NUM_CDC, .bInterfaceCount = 2, .bFunctionClass = TUSB_CLASS_CDC, @@ -107,7 +107,7 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_interface_t), .bDescriptorType = TUSB_DESC_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC, + .bInterfaceNumber = ITF_NUM_CDC, .bAlternateSetting = 0, .bNumEndpoints = 1, .bInterfaceClass = TUSB_CLASS_CDC, @@ -130,7 +130,7 @@ app_descriptor_configuration_t const desc_configuration = .bDescriptorType = TUSB_DESC_CLASS_SPECIFIC, .bDescriptorSubType = CDC_FUNC_DESC_CALL_MANAGEMENT, .bmCapabilities = { 0 }, - .bDataInterface = INTERFACE_NO_CDC+1, + .bDataInterface = ITF_NUM_CDC+1, }, .acm = @@ -148,17 +148,17 @@ app_descriptor_configuration_t const desc_configuration = .bLength = sizeof(cdc_desc_func_union_t), // plus number of .bDescriptorType = TUSB_DESC_CLASS_SPECIFIC, .bDescriptorSubType = CDC_FUNC_DESC_UNION, - .bControlInterface = INTERFACE_NO_CDC, - .bSubordinateInterface = INTERFACE_NO_CDC+1, + .bControlInterface = ITF_NUM_CDC, + .bSubordinateInterface = ITF_NUM_CDC+1, }, .ep_notif = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_NOTIFICATION_ADDR, + .bEndpointAddress = CDC_EDPT_NOTIF, .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = 0x08 }, + .wMaxPacketSize = { .size = CDC_EDPT_NOTIF_SIZE }, .bInterval = 0x10 }, @@ -167,7 +167,7 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_interface_t), .bDescriptorType = TUSB_DESC_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC+1, + .bInterfaceNumber = ITF_NUM_CDC+1, .bAlternateSetting = 0x00, .bNumEndpoints = 2, .bInterfaceClass = TUSB_CLASS_CDC_DATA, @@ -180,9 +180,9 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_OUT_ADDR, + .bEndpointAddress = CDC_EDPT_OUT, .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, + .wMaxPacketSize = { .size = CDC_EDPT_SIZE }, .bInterval = 0 }, @@ -190,11 +190,47 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_IN_ADDR, + .bEndpointAddress = CDC_EDPT_IN, .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, + .wMaxPacketSize = { .size = CDC_EDPT_SIZE }, .bInterval = 0 }, + }, + + .msc = + { + .interface = + { + .bLength = sizeof(tusb_desc_interface_t), + .bDescriptorType = TUSB_DESC_INTERFACE, + .bInterfaceNumber = ITF_NUM_MSC, + .bAlternateSetting = 0x00, + .bNumEndpoints = 2, + .bInterfaceClass = TUSB_CLASS_MSC, + .bInterfaceSubClass = MSC_SUBCLASS_SCSI, + .bInterfaceProtocol = MSC_PROTOCOL_BOT, + .iInterface = 0x07 + }, + + .ep_out = + { + .bLength = sizeof(tusb_desc_endpoint_t), + .bDescriptorType = TUSB_DESC_ENDPOINT, + .bEndpointAddress = MSC_EDPT_OUT, + .bmAttributes = { .xfer = TUSB_XFER_BULK }, + .wMaxPacketSize = { .size = MSC_EDPT_SIZE}, + .bInterval = 1 + }, + + .ep_in = + { + .bLength = sizeof(tusb_desc_endpoint_t), + .bDescriptorType = TUSB_DESC_ENDPOINT, + .bEndpointAddress = MSC_EDPT_IN, + .bmAttributes = { .xfer = TUSB_XFER_BULK }, + .wMaxPacketSize = { .size = MSC_EDPT_SIZE}, + .bInterval = 1 + } } }; diff --git a/examples/device/nrf52840/src/tusb_descriptors.h b/examples/device/nrf52840/src/tusb_descriptors.h index 5a82764f4..cf291e25e 100644 --- a/examples/device/nrf52840/src/tusb_descriptors.h +++ b/examples/device/nrf52840/src/tusb_descriptors.h @@ -56,8 +56,10 @@ PRODUCTID_BITMAP(MSC, 4) ) ) #endif -#define INTERFACE_NO_CDC 0 -#define TOTAL_INTEFACES 2 +#define ITF_NUM_CDC 0 +#define ITF_NUM_MSC 2 + +#define ITF_TOTAL 3 // total number of interfaces //--------------------------------------------------------------------+ // Endpoints Address & Max Packet Size @@ -65,12 +67,16 @@ #define EDPT_IN(x) (0x80 | (x)) #define EDPT_OUT(x) (x) -#define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (1) -#define CDC_EDPT_NOTIFICATION_PACKETSIZE 64 +#define CDC_EDPT_NOTIF EDPT_IN (1) +#define CDC_EDPT_NOTIF_SIZE 8 + +#define CDC_EDPT_OUT EDPT_OUT(2) +#define CDC_EDPT_IN EDPT_IN (2) +#define CDC_EDPT_SIZE 64 -#define CDC_EDPT_DATA_OUT_ADDR EDPT_OUT(2) -#define CDC_EDPT_DATA_IN_ADDR EDPT_IN (2) -#define CDC_EDPT_DATA_PACKETSIZE 64 +#define MSC_EDPT_OUT EDPT_OUT(3) +#define MSC_EDPT_IN EDPT_IN(3) +#define MSC_EDPT_SIZE 64 //--------------------------------------------------------------------+ @@ -98,6 +104,13 @@ typedef struct ATTR_PACKED tusb_desc_endpoint_t ep_in; }cdc; + struct ATTR_PACKED + { + tusb_desc_interface_t interface; + tusb_desc_endpoint_t ep_out; + tusb_desc_endpoint_t ep_in; + }msc; + } app_descriptor_configuration_t; #endif |
