ART icon indicating copy to clipboard operation
ART copied to clipboard

usb dcd dirver issue

Open weety opened this issue 11 years ago • 0 comments

ART中的usb dcd驱动在端点读写时存在bug

相关代码 static rt_err_t ep_read(uep_t ep, void *buffer, rt_size_t size) { uep_desc_t ep_desc;

ep_desc = ep->ep_desc;

if(ep == 0)
    USBD_CtlPrepareRx(&USB_OTG_Core, buffer, (rt_uint16_t)size);
else
    DCD_EP_PrepareRx(&USB_OTG_Core, ep_desc->bEndpointAddress, buffer, size);

return RT_EOK;

}

static rt_size_t ep_write(uep_t ep, void *buffer, rt_size_t size) { rt_uint32_t len; uep_desc_t ep_desc;

ep_desc = ep->ep_desc;

if(ep == 0)
    len = USBD_CtlSendData(&USB_OTG_Core, buffer, (rt_uint16_t)size);
else
{
    len = DCD_EP_Tx(&USB_OTG_Core, ep_desc->bEndpointAddress, buffer, size);
}

return len;

}

在上面的代码中,如果传入的函数参数ep=0,那么在执行ep_desc = ep->ep_desc这个位置时可能出现程序崩溃问题,这里应该要对ep=0的情况做特殊处理。

weety avatar Jul 01 '13 01:07 weety