|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
【摘要】本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型。首先介绍了Platform总线的基本概念,接着介绍了platform device和platform driver的定义和加载过程,分析了其与基类device 和driver的派生关系及在此过程中面向对象的设计思想。最后以ARM S3C2440中I2C控制器为例介绍了基于platform总线的驱动开发流程。( \9 p+ u/ w$ m
【关键字】platform_bus, platform_device, resource , platform_driver, file_operations
) U+ E2 ^- r5 I6 H' n目录% |, V" Z1 { @
1 何谓platform bus? 24 _: h! |( n" D( _
2 device和platform_device 3
# C; N( q* |9 C- A4 V# c3 device_register和platform_device_register 5: _. W* ~+ D' b7 G, e/ s
4 device_driver和platform driver 82 K; a1 }: Y: a# w, ?7 n% E9 o
5 driver_register 和platform_driver_register 10
( P8 u' b7 a& ~; J6 bus、device及driver三者之间的关系 17/ [4 o, w" e3 @4 i, P
7 哪些适用于plaRForm驱动? 185 w. j( c6 [' \; `- F) R" ?. \
8 基于platform总线的驱动开发流程 18: n/ J8 ~" k6 H% j- C# G( y; @& M
8.1 初始化platform_bus 199 O- M# |. u# w+ E, B! M
8.2 定义platform_device 225 U4 @9 Y5 @5 c$ G9 h
8.3 注册platform_device 22( \. X4 C. {; y8 X
8.4 定义platform_driver 28! a T- C3 v s3 G+ d
8.5 注册platform_driver 29
/ W) G3 S7 g3 w" @4 `! a 8.6 操作设备 32
+ z3 G. F0 Q! @/ e ! K. n# T; Y; D
3 o X7 F# A0 R9 U; V! @
1 何谓platform bus?
7 _! D" @' B, k/ M* \ Linux系统中许多部分对设备是如何链接的并不感兴趣,但是他们需要知道哪些类型的设备是可以使用的。设备模型提供了一种机制来对设备进行分类,在更高的功能层面上描述这些设备,并使得这些设备对用户空间可见。因此从2.6内核开始引入了设备模型。& ?4 u# w7 B/ H* q) `1 y
总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。
% P' Q6 u" @# T8 H* K; [) s6 m& x# j7 ?; t4 ~- A
* {1 a1 I: o6 Q H
) U9 A! t: _- n$ ?) P4 o {1 `% `2 m0 r; ?
|
|