各位高手,我用xlp432芯片的usb接口在boot下做cdc类模拟串口,现在枚举已经成功,连接串口工具已经成功,但是cdc acm的67个字节的配置描述符中的中断端点没有使用,现在发现数据通信usbputc 和usbgetc都不通。xlp432(cpu)作为usb slave存在。
1.in操作不通的原因,可能是in 令牌包没有及时的到来,没有in令牌包,其他操作都不行。请问各位高手,host是根据什么发送in 令牌包的。
2.out操作不通的原因,可能是rxfifo中的数据有残留,清空fifo发现,里面有一个不变的数据。也可能是host(pc windows-xp usbser.sys)没有发送的原因。用bushound抓包发现,usbser.sys并没有发送数据(可能是传输不成功,抓包没有抓到的原因),也可能是没有使用中断端点的原因,也可能是超时设置的原因。
3.在网上查看实例发现,在枚举set configuration后,中断端点会向后发送10个字节的数据(a1 20 00 00 00 00 02 00 8b 06),不知道代表什么意思。好像8b是个状态。
4.在连接串口工具的时候,发现在setup包是21 20 00 00 00 00 07 00时,host向slave发送7个字节的数据,发送过程成功后,发现实际传输的是8个字节,芯片size寄存器却只是变化7个字节,rxfifo中有数据残留,请问一下,各位前辈在模拟串口的时候,这个地方是怎么处理的?
下面是端点2(out) host上,bushound上的包,后面的unkown是驱动,usbhub和usbser都没有发送报文,寻求原因???
20.2 URB 48 00 09 00 00 00 01 c0 BULK/INT XFER 38.1.0 2012-12-24 10:45:59.193 unknown |