Linux USB驱动框架:从复合驱动到OTG设备
1. 驱动框架基础函数
在驱动框架中,有几个重要的函数,这些函数在执行成功时返回0,失败时返回负值。具体函数如下:
- void usb_composite_unregister(struct usb_composite_driver *) :该函数用于通过复合驱动框架注销类驱动。它是复合驱动框架对 usb_gadget_unregister_driver 小工具接口注册函数的封装。
- int usb_add_function(struct usb_configuration *, struct usb_function *) :此方法将一个功能添加到配置中,并调用绑定方法来分配接口ID和端点等资源。它在单线程上下文中运行。
- int usb_add_config(struct usb_composite_dev *, struct usb_configuration *) :该方法将一个配置添加到设备中,并将配置与全局资源(包括字符串ID)以及每个配置的资源(如接口ID和端点)进行绑定。同样在单线程上下文中运行。
2. 功能驱动层设计
功能驱动层位于小工具驱动层之上,实现实际的USB设备功能,也被称为类驱动。USB组织通过USB类规范定义USB设备功能。功能驱动的源代码位于 drivers/usb/gadget/ 目录下,源文件根据其支持的类或功能命名。
功能层由多个例程组成,这些例程决定了USB的特性:
- 一
超级会员免费看
订阅专栏 解锁全文
1231

被折叠的 条评论
为什么被折叠?



