
Hi, thaoth
thaoth wrote:
Can you help me to resolve this bug?
I think that it is a problem of the unalignment access. Please change your compiler or change a source code as follows:
diff --git a/common/usb.c b/common/usb.c index 9502f39..1acf51d 100644 --- a/common/usb.c +++ b/common/usb.c @@ -250,7 +250,10 @@ int usb_set_maxpacket(struct usb_device *dev)
for(i=0; i<dev->config.bNumInterfaces;i++) { for(ii=0; ii<dev->config.if_desc[i].bNumEndpoints; ii++) { - ep = &dev->config.if_desc[i].ep_desc[ii]; + struct usb_endpoint_descriptor tmp; + memcpy(&tmp, &dev->config.if_desc[i].ep_desc[ii], + sizeof(struct usb_endpoint_descriptor)); + ep = &tmp; b=ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
if((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)==USB_ENDPOINT_XFER_CONTROL) { /* Control => bidirectional */
Thank you very much for your supports!
You're welcome! :)
Best regards, Yoshihiro Shimoda