网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 设备驱动 > 文章  
Linux培训园地:Linux下设备完全驱动之一
文章来源: 赛迪技术天地-开放系统世界 文章作者: 郄晓烨 发布时间: 2005-08-29   字体: [ ]  
 

  本讲主要概述Linux设备驱动框架、驱动程序的配置文件及常用的加载驱动程序的方法;并且介绍Red Hat Linux安装程序是如何加载驱动的,通过了解这个过程, 我们可以自己将驱动程序放到引导盘中;安装完系统后,使用kudzu自动配置硬件程序。

  Linux设备驱动概述

  1. 内核和驱动模块

  操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用nVIDIA芯片,还是ATI芯片的显示卡,只需知道输入命令后,需要的文字就显示在屏幕上。硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有较高的比例。

  Linux内核中采用可加载的模块化设计(LKMs ,Loadable Kernel Modules),一般情况下编译的Linux内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其它的代码可以选择是在内核中,或者编译为内核的模块文件。

  如果需要某种功能,比如需要访问一个NTFS分区,就加载相应的NTFS模块。这种设计可以使内核文件不至于太大,但是又可以支持很多的功能,必要时动态地加载。这是一种跟微内核设计不太一样,但却是切实可行的内核设计方案。

  我们常见的驱动程序就是作为内核模块动态加载的,比如声卡驱动和网卡驱动等,而Linux最基础的驱动,如CPU、PCI总线、TCP/IP协议、APM (高级电源管理)、VFS等驱动程序则编译在内核文件中。有时也把内核模块就叫做驱动程序,只不过驱动的内容不一定是硬件罢了,比如ext3文件系统的驱动。

  理解这一点很重要。因此,加载驱动时就是加载内核模块。下面来看一下有关模块的命令,在加载驱动程序要用到它们:lsmod、modprob、insmod、rmmod、modinfo。

  lsmod 列出当前系统中加载的模块,例如:

#lsmod  (与cat /proc/modules 得出的内容是一致的)
Module		Size     Used by  Not tainted
radeon		115364   1 
agpgart		56664	  3 
nls_iso8859-1	3516	  1	    (autoclean)
loop		12120	  3	    (autoclean)
smbfs		44528	  2	    (autoclean)
parport_pc	19076	  1	    (autoclean)
lp			9028	  0	    (autoclean)
parport		37088	  1	     (autoclean) [parport_pc lp]
autofs		13364	  0	    (autoclean) (unused)
ds			8704	  2 
yenta_socket	13760	  2 
pcmcia_core	57184	  0	    [ds yenta_socket]
tg3		55112	  1 
sg			36940	  0	    (autoclean)
sr_mod		18104	  0	    (autoclean)
microcode  	 	4724	  0	    (autoclean)
ide-scsi         12208    0 
scsi_mod	       108968   3	    [sg sr_mod ide-scsi]
ide-cd	       35680	  0 
cdrom		33696    0	    [sr_mod ide-cd]
nls_cp936		124988	  1	    (autoclean)
nls_cp437        5148	  1	    (autoclean)
vfat		13004	  1	    (autoclean)
fat		       38872	  0	    (autoclean) [vfat]
keybdev		2976	  0	    (unused)
mousedev		5524     1 
hid		22212    0	    (unused)
input		5888	  0	    [keybdev mousedev hid]
ehci-hcd		20104   0	(unused)
usb-uhci		26412   0	(unused)
usbcore		79392   1	[hid ehci-hcd usb-uhci]
ext3		91592   2 
jbd		52336   2	[ext3]

  上面显示了当前系统中加载的模块,左边数第一列是模块名,第二列是该模块大小,第三列则是该模块使用的数量。

 
推荐文章
·让arm-linux支持普通USB摄像头
·Linux设备驱动编程之结构化设备
·Linux设备驱动编程之复杂设备驱
·深入浅出Linux设备驱动之并发控
·深入浅出Linux设备驱动之字符设
·深入浅出Linux设备驱动编程之内
·深入浅出Linux设备驱动编程之引
·Linux设备驱动编程之定时器
·Linux设备驱动编程之中断处理
·Linux设备驱动编程之异步通知
·Linux设备驱动编程之阻塞与非阻
·Linux设备驱动编程之内存与I/O操
·摄像头(WebCam)在Linux操作系
·中星微芯片(301,302)USB 摄像头
 

 
共5页: 上一页 1 [2] [3] [4] [5] 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·摄像头(WebCam)在Linu
·在Linux中使用中星微301
·中星微芯片(301,302)USB
·Linux设备驱动编程之内
·深入浅出Linux设备驱动
·Linux培训园地:Linux下
·Linux的I2C驱动架构
·让arm-linux支持普通USB
相关文章
·深入浅出分析Linux设备
·Linux培训园地:Linux下
·如何编写Linux操作系统
·Linux培训园地:Linux下
·让微软汗颜的XGL-Linux
·Linux桌面环境下载利器N
·Qt/Embedded在嵌入式Lin
·Linux设备驱动编程之结
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统