@@ -68,11 +68,11 @@ const DeviceDescriptor USB_DeviceDescriptor = D_DEVICE(0x00, 0x00, 0x00, 64, USB
68
68
volatile uint32_t _usbConfiguration = 0 ;
69
69
volatile uint32_t _usbSetInterface = 0 ;
70
70
71
- static __attribute__ ((__aligned__(4 ))) /* __attribute__((__section__(".bss_hram0")))*/
71
+ static __attribute__ ((__aligned__(8 ))) // __attribute__((__section__(".bss_hram0")))
72
72
uint8_t udd_ep_out_cache_buffer[4][64];
73
73
74
- static __attribute__ ((__aligned__(4 ))) /* __attribute__((__section__(".bss_hram0")))*/
75
- uint8_t udd_ep_in_cache_buffer[4][128 ];
74
+ static __attribute__ ((__aligned__(8 ))) // __attribute__((__section__(".bss_hram0")))
75
+ uint8_t udd_ep_in_cache_buffer[4][64 ];
76
76
77
77
// ==================================================================
78
78
@@ -375,7 +375,7 @@ void USBDeviceClass::initEP(uint32_t ep, uint32_t config)
375
375
{
376
376
if (config == (USB_ENDPOINT_TYPE_INTERRUPT | USB_ENDPOINT_IN (0 )))
377
377
{
378
- usbd.epBank1SetSize (ep, 8 );
378
+ usbd.epBank1SetSize (ep, 64 );
379
379
usbd.epBank1SetAddress (ep, &udd_ep_in_cache_buffer[ep]);
380
380
usbd.epBank1SetType (ep, 4 ); // INTERRUPT IN
381
381
}
@@ -580,7 +580,13 @@ uint32_t USBDeviceClass::send(uint32_t ep, const void *data, uint32_t len)
580
580
if (!_usbConfiguration)
581
581
return -1 ;
582
582
583
- armSend (ep, data, len);
583
+ // armSend(ep, data, len);
584
+
585
+ /* memcopy could be safer in multithreaded environment */
586
+ memcpy (&udd_ep_in_cache_buffer[ep], data, len);
587
+
588
+ usbd.epBank1SetAddress (ep, &udd_ep_in_cache_buffer[ep]);
589
+ usbd.epBank1SetByteCount (ep, len);
584
590
585
591
// Clear the transfer complete flag
586
592
usbd.epBank1AckTransferComplete (ep);
@@ -712,9 +718,9 @@ bool USBDeviceClass::handleStandardSetup(Setup &setup)
712
718
#endif
713
719
714
720
#if defined(CDC_ENABLED)
715
- initEP (CDC_ENDPOINT_ACM, USB_ENDPOINT_TYPE_BULK | USB_ENDPOINT_IN (0 ));
721
+ initEP (CDC_ENDPOINT_ACM, USB_ENDPOINT_TYPE_INTERRUPT | USB_ENDPOINT_IN (0 ));
716
722
initEP (CDC_ENDPOINT_OUT, USB_ENDPOINT_TYPE_BULK | USB_ENDPOINT_OUT (0 ));
717
- initEP (CDC_ENDPOINT_IN, USB_ENDPOINT_TYPE_INTERRUPT | USB_ENDPOINT_IN (0 ));
723
+ initEP (CDC_ENDPOINT_IN, USB_ENDPOINT_TYPE_BULK | USB_ENDPOINT_IN (0 ));
718
724
#endif
719
725
_usbConfiguration = setup.wValueL ;
720
726
0 commit comments