Linux下USB从设备使用gadget API
Linux下USB从设备使用gadget API
[日期:2007-12-27]
来源:Linux公社 作者:伟伟
最近在做Linux下USB从设备的驱动,程序写的差不多了,做一个整理小结。欢迎交流,如有错误请指正,谢谢!--Jason
一、USB从设备驱动介绍
USB总线上主要有三类设备:主控制器(Host Controller, such as EHCI、UHCI、OHCI)、集线器(hub)和设备(device)。Host controller(HC)负责总线的管理,是总线的指挥官,总线上一切传输都是由HC发起的,支持OTG的Device也能发起传输;Hub是总线的节点,用来扩展总线上可接入设备的数量,对于驱动来说是透明的;Device就是各种各样的设备了,每个设备都有自己的功能,比如U盘、USB摄像头等等。
Linux下主机端USB设备的驱动(device driver)编写的资料有很多,LDD3中有相应的介绍。主要是通过内核中USB core这个模块与设备交互。本文只介绍运行Linux的嵌入式USB设备驱动的编写。因为Host端已经使用了device driver一词,为了避免混淆,使用USB gadget driver一次表示从设备驱动。In USB protocol interactions, the device driver is the master (or client driver) and the gadget driver is the slave (or function driver).
Linux USB gadget driver API定义了一个通用的gadget driver的接口,gadget driver通过API与底层USB controller driver通信。该API屏蔽了底层硬件的不同,使gadget driver注重功能的实现,尽量与硬件无关。Slave端系统的架构如下图所示:
其中,gadgetfs提供给用户空间程序直接与USB device controller交互的能力。
二、相关资料
USB gadget API Layer的相关资料:
1. http://www.linux-usb.org/gadget/
2. 内核中/KernelDoc/gadget/目录下的文档
3.最重要的就是/include/linux/usb_gadget.h文件,该文件中有gadget API接口数据结构和方法的详细定义及注释。
Gadget Driver的例子:
4. 内核/drivers/usb/gadget/目录下有一些gadget driver的例子,zero.c为最简单的例子,file_storage.c是存储设备的gadget driver。
三、gadget API
要了解gadget API,只需要理解头文件(usb_gadget.h)中几个重要的数据结构就可以了。详细的字段介绍看h文件注释。
(1)
struct usb_gadget {
const struct usb_gadget_ops *ops;
struct usb_ep *ep0;
struct list_he
相关文档:
php安装
# tar xzvf php-5.2.5.tar.gz
# cd php-5.2.5
./configure --prefix=/home/redadmin/php --with-apxs2=/home/redadmin/apache/bin/apxs --with-mysql=/home/redadmin/mysql --enable-mbstring=all --enable-track-vars
# make && make install
# cp php.ini-dist /home/redadmin/php/lib/php.ini
# c ......
MySQL :: Linux 下自动备份数据库的 shell 脚本
Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令。
脚本内容如下:
#!/bin/sh
# File: /home/mysql/backup.sh
# Database info
DB_NAME=" ......
1、下载MySQL的安装文件
安装MySQL需要下面两个文件:
MySQL-server-5.0.46.i386.rpm
MySQL-client-5.0.46.i386.rpm
2、安装MySQL
rpm文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是
ivh
,其中i表示将安装指定的rmp软件包,V表 ......
1. 安装squid服务
2. 配置/etc/squid/squid.conf文件
acl all src 0.0.0.0/0.0.0.0
http_access allow all
由于我是内网使用,所以权限配置就全开放了。
3. 启动squid服务,默认的端口是3128
service squid restart ......
Linux 指令大全
cat cd
chmod chown
cp cut
名称:cat
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号 ......