Linux设备驱动--------platform虚拟总线
来源:互联网 发布:淘宝古着店推荐 编辑:程序博客网 时间:2024/05/21 11:02
一、platform总线引入的目的
注意:所谓的platform_device并不是与字符设备、块设备和网络设备并列的概念,而是Linux系统提供的一种附加手段,例如,在 S3C6410处理器中,把内部集成的I2C、RTC、SPI、LCD、看门狗等控制器都归纳为platform_device,而它们本身就是字符设备。
二、platform的实现机制
实现platform模型的过程就是总线对设备和驱动的匹配过程 。打个比方,就好比相亲,总线是红娘,设备是男方,驱动是女方:
a -- 红娘(总线)负责男方(设备)和女方(驱动)的撮合;
b -- 男方(女方)找到红娘,说我来登记一下,看有没有合适的姑娘(汉子)—— 设备或驱动的注册;
c -- 红娘这时候就需要看看有没有八字(二者的name 字段)匹配的姑娘(汉子)——match 函数进行匹配,看name是否相同;
d -- 如果八字不合,就告诉男方(女方)没有合适的对象,先等着,别急着乱做事 —— 设备和驱动会等待,直到匹配成功;
e -- 终于遇到八字匹配的了,那就结婚呗!接完婚,男方就向女方交代,我有多少存款,我的房子在哪,钱放在哪等等( struct resource *resource),女方说好啊,于是去房子里拿钱,去给男方买菜啦,给自己买衣服、化妆品、首饰啊等等(int (*probe)(struct platform_device *) 匹配成功后驱动执行的第一个函数),当然如果男的跟小三跑了(设备卸载),女方也不会继续待下去的( int (*remove)(struct platform_device *))。
---------------------分割线------------------------------------------------------------三、platform举例
.sda_pin = G_I2C_SDA,
.scl_pin = G_I2C_SCL,
.udelay = 5,
.timeout = 10,
};
Struct platform_device pdev ={
.name = ”i2c_gpio”,
.id = 1,
.dev.platform_data = pdata,
};
platform_device_add(&pdev)
0pt'>Struct platform_device pdev={
.name = ”i2c_gpio”,
.id = 1,
.dev.platform_data= pdata,
};
2、然后注册platform_diverStruct platform_driver i2c_gpio_driver = {
.driver = {
.name = “i2c-gpio”,
.owner =THIS_MODULE,
},
.probe = i2c_gpio_probe,
.remove = _devexit_p(i2c_gpio_remove),
}
Platform_driver_register(&i2c_gpio_driver)
3、name相同两者匹配,执行probe(i2c_gpio_probe函数)- Linux虚拟总线platform设备和驱动
- Linux设备驱动--------platform虚拟总线
- Linux驱动---------platform总线设备
- Linux驱动-platform总线设备驱动
- Linux设备驱动模型之platform总线
- LINUX设备驱动之platform总线
- Linux设备驱动模型之platform总线
- LINUX设备驱动之platform总线
- LINUX设备驱动之platform总线
- LINUX设备驱动之platform总线
- Linux设备驱动模型之platform总线
- LINUX设备驱动之platform总线
- LINUX设备驱动之platform总线
- linux驱动platform平台设备总线
- LINUX设备驱动之platform总线
- linux设备总线驱动模型 之 platform总线驱动
- linux设备总线驱动模型 之 platform总线驱动
- linux设备总线驱动模型 之 platform总线驱动
- 数据结构上机实践第九周项目2
- 51nod 1445 变色DNA(最短路)
- Zookeeper介绍和简单3台配置集群
- python语法(一)
- 加油哇
- Linux设备驱动--------platform虚拟总线
- 轮播图小圆点可点击
- ARM汇编调用函数
- 文章标题 球员表格(增 查 排序)
- Python解析XML,sax模块的介绍
- 配置maven
- Git学习
- okhttp封装类
- check,checkbox 设置选中和未选中