基于Linux的USB从设备驱动研究(3)

  Gadget API是设备控制器的控制功能抽象接口,Gadget驱动程序可以试用Gadget API,它可以把下层的UDC驱动程序和上层Gadget驱动程序相隔离,以使得在linux系统中编写USB设备侧驱动程序时,能够把功能的实现和底层通信相分离。

  如果要在S3c24.10上实现大存储类从设备,则需要运行file_storage.c和s3c2410_udc.c这两个驱动程序。 file_stoarge.c具体控制USB设备功能的实现,它使用Gadget API来控制s3c2410.c以实现其功能。s3c2410.c驱动程序可直接访问硬件,以控制USB设备和主机间的底层通信,同时向上层提供和硬件相关操作的回调函数。

  3 USB从设备驱动

  驱动程序完成的功能包括初始化设备、为各类设备提供服务、负责内核与设备间的数据交换、以及检测和处理设备工作过程中出现的错误等。

  基于完成这些功能,每个驱动程序都需要注册和注销,这样,内核才能知道有这个驱动的存在或者驱动的卸载。下面是两个最基本的模块:

  module_init(usb_skel_init);

  module_exit(usb_skel_exit);

  对于USB从设备而言,结构USB_gadget就可以代表。Gadget通过“Gadget驱动程序”来实现设备功能,处理所有的USB配置和接口。通过操作函数集,Gadget驱动程序与硬件特定代码间接通信。它将Gadget驱动程序与那个硬件细节隔开,并通过I/O队列包装硬件端点。 “usb_gadget”“usb_ep”接口则可提供对硬件的隔离。

  其结构usb_gadget的代码如下:

基于Linux的USB从设备驱动研究

基于Linux的USB从设备驱动研究

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpfzd.html