ART
ART copied to clipboard
usb dcd dirver issue
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的情况做特殊处理。