平台总线概述
2013-04-26 19:19
134 查看
说明:版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址
platform总线是linux2.6内核加入的一种虚拟总线。Platform机制的本身使用并不复杂,由两部分组成:platform_device 和 platform_driver
platform驱动与传统的设备驱动模型相比,优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性。
platform总线在linux中的体系架构如下图所示:
通过platform机制开发底层设备驱动的流程如图:
平台设备的描述:
平台设备使用struct platform_device来描述
struct platform_device{
const char *name; //设备名
int id; //设备编号,配合设备名使用
struct device dev;
u32 num_resources;
struct resource *resource; //设备资源
}
struct platform_device的分配使用:
struct platform_device *platform_device_alloc(const char *name, int id);
参数:name: 设备名 id:设备id,一般为-1
平台设备的注册:
注册平台设备,使用函数:int platform_device_add(struct platform_device *pdev);
设备资源:
平台设备资源使用struct resource来描述:
struct resource {
resource_size_t start; //资源的起始物理地址
resource_size_t end; //资源的结束物理地址
const char *name; //资源的名称
unsigned long flags; //资源的类型,比如MEM,IO,IRQ类型
struct resource *parent, *sibling, *child; //资源链表指针
}
资源例子:
static struct resource s3c_wdt_resource1 = {
.start = 0x44100000,
.end = 0x44200000,
.flags = IORESOURCE_MEM,
}
static struct resource s3c_wdt_resource2 = {
.start = 20,
.end = 20,
.flags = IORESOURCE_IRQ,
}
获取资源:
struct resource *platform_get_resource(struct platform_device *dev,
unsigned int type, unsigned int num)
参数: dev:资源所属的设备 type:获取资源的类型 num:获取的资源数
例如:platform_get_resource(pdev, IORESOURCE_IRQ, 0); 获取中断
平台驱动描述:
平台驱动使用struct platform_driver描述
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
void (*shutdown)(struct platform_device *);
int (*suspend)(struct platform_device *, pm_message_t state);
int (*suspend_late)(struct platform_device *, pm_message_t state);
int (*resume_early)(struct platform_device *);
int (*resume)(struct platform_device *);
struct device_driver driver;
}
平台驱动注册:
平台驱动注册使用函数:int platform_driver_register(struct platform_driver *);
相关文章推荐
- 平台总线驱动设计
- 生产信息集成分析平台(MIIAS V1.0) 概述
- [黑莓开发之路][00][BlackBerry平台架构概述][08][数据传输流程][03][BIS]
- 技术积累应用-可视化编程平台概述
- 技术积累应用-可视化编程平台应用层面概述
- 木其工作室(专业程序代写服务)[原]ok6410学习笔记(14.platform平台总线驱动模型)
- 木其工作室(专业程序代写服务)[原]ok6410学习笔记(15.platform平台总线驱动模型之混杂设备驱动led)
- Linux SPI总线和设备驱动架构之一:系统概述
- 第4章 PCIe总线概述
- tizen软件平台概述
- 1.0 Android平台概述
- Linux SPI总线和设备驱动架构之一:系统概述
- 总线概述及常见总线(转)
- Android平台下驱动的开发及测试框架概述(一)
- Android平台下驱动的开发及测试框架概述(二)
- Android平台下驱动的开发及测试框架概述(四)
- Android平台下驱动的开发及测试框架概述(五)
- 第三方支付平台接口概述
- 一、Java程序设计平台概述