一、引言
二、框架分层
------> 1、UDC驱动
------> 2、驱动例子
------> 3、驱动编写流程
------> 4、usb_gadget_driver结构
一、引言
前一章和大家介绍了USB Gadget驱动框架,这章就来具体的讲一下USB Gadget设备驱动的编写流程
二、框架分层
前一章已经介绍过,USB Gadget分为三层:Controller Drivers、Gadget Drivers、Upper Layers
再简单一点的分类就是:
硬件相关的USB 设备控制器(USB Device Controller, UDC)驱动
硬件无关的功能驱动(如:鼠标、u盘、usb串口、usb网络等)
UDC驱动
Gadget 框架提出了一套标准 API, 在底层, USB 设备控制器驱动则实现这一套 API, 不同的 UDC需要不同的驱动, 甚至基于同样的 UDC 的不同板子也需要进行代码修改。这一层是硬件相关层。
Linux 标准内核里支持各种主流 SOC 的 udc 驱动,如:S3C2410、PXA270等。你可以通过内核直接配置支持。你也可以通过修改它们获取更高的效率。如:s3c2410_uda.c 中并没有利用到控制器的dma功能,你可以根据需要修改它。
我们这里拿s3c2410_udc.c,来做例子