阅读:1801回复:6
出现“BUFFER_OVERRUN”错误,为什么?请高手指点
用的是一个arm9的芯片,集成了usb,驱动没有什么问题,windows可以识别。
从arm上读数据时出了问题,有时候可以读取数据,几十秒后就不能正确读数据了,readfile函数一用就返回了,返回的读取长度是指定的,但是没有读到数据。 用softice查看到: 出问题时返回的状态是 USBD_STATUS_BUFFER_OVERRUN (0xC000000C),以后每次都是: USBD_STATUS_ENDPOINT_HALTED (0xC0000030),不知道为什么? 有谁也碰到了这样的问题?大家讨论一下 |
|
|
沙发#
发布于:2005-05-08 17:48
出问题后有时还可以用 writefile 向设备发送数据,设备也可以接收到数据,有时不行, 但 readfile 就完全收不到数据。
那位大侠碰到了这种问题,讨论一下。。 |
|
|
板凳#
发布于:2005-05-09 11:21
我也遇到类似的问题,但我是用bushound观察数据,有时候出现这种情况
10.0 CTL 80 06 00 01 GET DESCRIPTOR 00 00 12 00 10.0 USTS 0c 00 00 80 buffer overrun 这是什么意思,又是什么原因引起的呢? 请见过这种现象的大侠不吝指教。 |
|
地板#
发布于:2005-05-09 13:44
DEVICE返回给HOST的数据长度超过HOST期望的长度。我以前遇到过,比如GET DEVICE DESCRIPTOR,HOST 期望数据长度是0X12,但我通过DMA以WORD方式传了五次(20B)导致出现这个问题。
|
|
地下室#
发布于:2005-05-09 14:53
那么数据发送过程中为什么会出这种问题,设备发的数据多了? 我的发送端点fifo的大小为64byte,pc这边用readfile传入的缓冲区比较的,应该不会引起数据多了。 那么是否是设备每次通信中发了不只64字节的数据?是什么原因引起的呢? 出错一次之后每次都会出错? |
|
|
5楼#
发布于:2005-05-10 09:58
设备只会把FIFO中数据发出去,如果数据多了,只能是写到FIFO里的数据多了。我遇见过一种情况,定义了一个STRUCTURE,在8位机下sizeof返回的是0X12B,但在32位机下返回0X14B,导致了多写了数据到FIFO。
|
|
6楼#
发布于:2008-02-26 17:10
用户被禁言,该主题自动屏蔽! |
|