|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
尽管LDD3中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式Linux的底层程序员而言,对设备驱动模型的学习非常重要。
. `' s6 v5 C0 s& t5 \* j7 c" NLinux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统结构的一般性抽象描述。换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要新添加设备或驱动提供一般性的统一接口,这使得驱动程序的开发变得更简单了,而程序员只需要去学习接口就行了。7 A6 x5 X" _: X7 B3 W8 w+ D
在正式进入设备驱动模型的学习之前,有必要把documentation/filesystems/sysfs.txt读一遍(不能偷懒)。sysfs.txt主要描述/sys目录的创建及其属性,sys目录描述了设备驱动模型的层次关系,我们可以简略看一下/sys目录,' w! M. c4 K$ S/ y3 q: ?+ Y
9 ]2 j* W: x* _4 ? X
1 o9 L% y: m+ b- ^( q) c1 ?% i0 k5 D
9 A% r% F0 R2 H) F# c1 {: F' e1 N! W @3 i
4 z) \# b& S- v8 S$ hblock:所有块设备
/ B6 b% ^* s \" ?5 v1 I! M! v# Jdevices:系统所有设备(块设备特殊),对应struct device的层次结构
0 p/ O3 ~2 n1 M$ F8 Bbus:系统中所有总线类型(指总线类型而不是总线设备,总线设备在devices下),bus的每个子目录都包含
6 l% O- C! X+ r) M/ c' M2 C --devices:包含到devices目录中设备的软链接
# K3 K) ~2 W3 d. ~3 V0 q --drivers:与bus类型匹配的驱动程序
5 I1 G) B5 a. l2 n4 x4 r( yclass:系统中设备类型(如声卡、网卡、显卡等)
3 Q) } z) U& Q# g* Xfs:一些文件系统,具体可参考filesystems /fuse.txt中例子$ N/ M# H, u; R: B" N/ _
dev:包含2个子目录
! }5 y+ `. S8 }' P--char:字符设备链接,链接到devices目录,以<major>:<minor>命名" ^, b9 f- A; I
--block:块设备链接9 W4 C1 z. p# H( Q: Z8 H4 z
_4 [( ? ^+ s* M& b6 I& l
( V2 B5 @" z; h
4 M* E, D$ G. Z; Y. N( D4 ^" V. V
: W/ ^. R$ E2 r0 U1 z, J% s' q1 \" z. N7 P% l
& D4 V" G/ |% e# U, P" [& ?8 S4 d, a
|
|