usb hid gadget调试

本文介绍了USB HID Gadget的调试过程,包括如何在PC和Ubuntu上查看USB设备信息,重点解析了在调试HID Gadget时遇到的数据头问题以及内核代码分析。通过中断处理函数xx_udc_irq(),探讨了数据接收的三个状态:EP0_IDLE、EP0_OUT_DATA_PHASE,并解释了为何第一次接收不到数据的原因。同时,文章还提到了struct usb_ctrlrequest结构和端点选择策略。
摘要由CSDN通过智能技术生成
usb hid gadget调试
 在PC上可以使用usbview 查看usb设备的信息, ubuntu可以下载tgz的包,编译一下就可以,感觉比较实用。
 在调试hid  gadget时,发现接收数据时多了一个数据头(struct
usb_ctrlrequest),并且第一次接收不到数据,为了查找原因,看了一下内核代码,使用的是A20芯片。
gadget驱动,linux本身有框架可以看一下内核代码(drivers/usb/gadget)。usb接收过来的数据存放在struct
usb_request结构中,发现此时的数据就是错误的,只能看udc驱动代码(负责从usb总线接收/发送数据,一般有芯片厂商编写),每个平台有差异,但框架是相同的,底层的所有数据传输主要是在
udc的中断控制函数中处理的,一般都是通过request_irq注册一个中断处理函数xx_udc_irq(),usb通信都是由host发起的,gadget只能通过中断来处理所有的操作。可以参考一下s3c2410_udc.c,发现大家的实现都是一样的,名字差不多。
中断处理函数xx_udc_irq()中处理,gadget的枚举操作,都在里面处理,通过EP0(控制传输)的处理根据中断调用xx_udc_handle_ep0(),
其他方式的传输(中断,批量,实时)调用xx_udc_handle_ep()。<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值