阅读:1192回复:4
USB D11 读入的一个奇怪问题
我在用飞利浦 D11芯片开发时遇到一个奇怪的问题,端点0访问一切正常。驱动程序可以向端点1写,但无法从端点1读。因为驱动方面读写除了pipehandle和方向directin 参数不同外,其余都相同,写正常而无法读,所以我认为驱动程序应该无问题。我用DDK带的BulkUsb试过,也是可写不可读。应该是固件方面的问题了,但我发现在读端点1时,连中断也没发生,又不象单片机方面的问题,真奇怪!!!
端点2,3也是如此,到底那里错了呢? [编辑 - 5/13/03 by mfc] |
|
沙发#
发布于:2003-05-14 21:19
这样的问题确实很难回答, 看来我只有等那一天\"顿悟\"了
|
|
板凳#
发布于:2003-05-15 10:24
这位老兄,你好.关于这个问题,俺给你解释一下...
读(readfile)的时候,在读之前,d11或其他的usb接口芯片的缓冲区应该先有效,就是里面先有东东啦,这样读才能有效,否则系统返回错误,不给读啦。 具体做法:在读之前先通知firmware(典型的,用售主命令如:read_write_register)应用层要读数据,并且告此次读包要读数据的数量,先让它给放上,超过buffer_size,只放buffer_size.使驱购缓冲区有效。这样就能读出东西啦。中断是在这个缓冲区被读完以后才发生,不是一发读命令就产生。当读完后,产生中断,在中断里看看是否上次超出了buffer_size,那么把剩下的再放进去,系统就会在下个读时刻把它读走,然后又产生中断,如此循环,直到这个读包整个完成,应用层的readfile也就返回啦。ok 应用层: ... deviceiocontrol(read_write_rigerst...); readfile(...); ..... 驱动: ... switch(iocontrolcode) ... case read_write_rigerst: buildvendorrequest(.....); brak; ... firmware: ..... //over good luck to you! |
|
|
地板#
发布于:2003-05-16 09:39
非常感谢你的指点,我现在就试一试。
谢谢! |
|
地下室#
发布于:2003-05-16 21:43
非常感谢,按你的指点,已经成功
|
|