在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的。一个USB设备由3个功能模块组成:USB总线接口、USB逻辑设备和功能单元:
a -- 这里的USB总线接口指的是USB设备中的串行接口引擎(SIE);
b -- USB逻辑设备被USB系统软件看作是一个端点的集合;
c -- 功能单元被客户软...
分类:
系统相关 时间:
2016-06-24 16:15:39
阅读次数:
328
设备驱动程序是操作系统内核和机器硬件之间的接口,由一组函数和一些私有数据组成,是应用程序和硬件设备之间的桥梁。在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。
设备驱动程序是内核的一部分,主要完成以下功能:对设备的初始化和释放;把数据从内核传送到硬件设备和从硬件设备读取数据;读取应用程序数据传送给设备文件和回送应用程序请求的数据;检测和...
分类:
系统相关 时间:
2016-06-24 16:14:49
阅读次数:
271
参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。
一、驱动加载部分
[cpp] view
plain copy
static int __init usb_mouse_init(void)
{
...
分类:
系统相关 时间:
2016-06-24 16:14:39
阅读次数:
300
前面学习了USB驱动的一些基础概念与重要的数据结构,那么究竟如何编写一个USB 驱动程序呢?编写与一个USB设备驱动程序的方法和其他总线驱动方式类似,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件。当然,这些制造商和设备标识需要我们编写进USB
驱动程序中。
USB 驱动程序依然遵循设备模型 —— 总线、设备、驱动。和I2C 总线设备驱动编...
分类:
系统相关 时间:
2016-06-24 16:14:24
阅读次数:
244
Spac5xx的实现是按照标准的USB VIDEO设备的驱动框架编写(其具体的驱动框架可参照/usr/src/linux/drivers/usb/usbvideo.c文件),整个源程序由四个主体部分组成:
设备模块的初始化模块和卸载模块,上层软件接口模块,数据传输模块。
具体的模块分析如下:
一、初始化设备模块
该驱动采用了显式的模块初始化和消...
分类:
系统相关 时间:
2016-06-24 16:13:53
阅读次数:
324
回顾一下USB的相关知识
USB(Universal Serial Bus)总线又叫通用串行外部总线,它是20世纪90年代发展起来的。USB接口现在得到了广泛的应用和普及,现在的PC机中都带有大量的USB接口。它最大的特点就是方便通用、支持热插拔并且可以在一个接口上插上多个设备。当设备用电量小的时候,它还可以充当电源。它的众多优点使得它得到了广泛的应用。
在...
分类:
系统相关 时间:
2016-06-24 16:13:43
阅读次数:
319
前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同。而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动、USB鼠标驱动,同样都符合LinuxUSB驱动结构:
USB设备驱动(字符设备、块设备、网络设备)
...
分类:
系统相关 时间:
2016-06-24 16:11:49
阅读次数:
314
嵌入式Linux的调试技术 本章主要介绍如何利用开发板,Android模拟器以及一些函数、工具(gdb,gdberver以及kgdb)调试嵌入式Linux内核模块、可执行程序和共享库。 Printk函数,该函数的用法和printf函数类似,只不顾printk函数运行在内核空间,printf函数运行在 ...
分类:
移动开发 时间:
2016-06-24 14:33:01
阅读次数:
166
硬件抽象层:HAL HAL是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用程。 Google为Android加入HAL目的是:统一硬件的调用接口。解决GPL版权问题。针对一些特殊要求。 本章也详细讲述了为LED驱动增加HAL: 1.编写一款 ...
分类:
移动开发 时间:
2016-06-24 14:29:07
阅读次数:
198
Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术 ...
分类:
移动开发 时间:
2016-06-24 10:31:24
阅读次数:
156