|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
尽管LDD3中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式Linux的底层程序员而言,对设备驱动模型的学习非常重要。
& v: W* k& l$ [! U* ULinux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统结构的一般性抽象描述。换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要新添加设备或驱动提供一般性的统一接口,这使得驱动程序的开发变得更简单了,而程序员只需要去学习接口就行了。
/ l5 d: Z3 R+ a8 t在正式进入设备驱动模型的学习之前,有必要把documentation/filesystems/sysfs.txt读一遍(不能偷懒)。sysfs.txt主要描述/sys目录的创建及其属性,sys目录描述了设备驱动模型的层次关系,我们可以简略看一下/sys目录,
3 g) B! E# r- o, n# t6 z- g H# W' v3 b# y. Y$ l' b
. ]3 X. U& P+ v) N
( }! L- @" p% `' l. h/ M' H* G
3 o% J' N7 G) C2 t/ ]* T
! ]; ~, z1 T6 H0 V. Yblock:所有块设备
7 Y% U" T% E( w- {( Hdevices:系统所有设备(块设备特殊),对应struct device的层次结构
@2 p% D- v6 s* Sbus:系统中所有总线类型(指总线类型而不是总线设备,总线设备在devices下),bus的每个子目录都包含
, x! N9 U- M( b( _% s --devices:包含到devices目录中设备的软链接
( `( V: d' I- C5 L! s --drivers:与bus类型匹配的驱动程序
! a3 H0 P* m% }. H Iclass:系统中设备类型(如声卡、网卡、显卡等)
2 @% H% ^( R H8 S+ T _7 ]fs:一些文件系统,具体可参考filesystems /fuse.txt中例子* a& X+ P6 T/ k4 e; ^& e, J6 V1 g
dev:包含2个子目录
, j j! G) H5 w6 x1 k7 a, y- C3 q--char:字符设备链接,链接到devices目录,以<major>:<minor>命名
# N/ |: c' w, ?6 |! a# R--block:块设备链接2 [& H, r8 D9 v# ^& Q" w* R: ?
* F3 m! d* o/ ?. [2 X* b4 [6 T& b3 w
/ @& Y7 C) ^3 n- r$ E k3 d9 s4 g
- d: T$ D2 c( z
. [: S/ u, ~8 z- T. [0 x8 b0 {" q, c |
|