对设备模型的认识
来源:互联网 发布:sql2000数据库挂起 编辑:程序博客网 时间:2024/05/16 04:45
以前看设备模型时里面一大堆的数据结构,并且关系错综复杂,丫的,头都大了,最近在学习平台设备platform,重新回顾设备模型的章节,偶有感触,呵呵,先写出来与大家分享一下,希望对那些还在迷惑当中的你有所帮助。
在sysfs虚拟文件系统,通过观察系统硬件的层级视图,在顶层目录的bus目录下,我们可以看到各种不同的总线类型,比如pci、usb、i2c、spi等,有一个很有趣的现象是,每一种总线类型下面又有相应的devices目录与drivers目录,这就是我们所要说的设备模型。
在Linux设备总线模型中,系统中任一设备都有一个device对象描述,即struct device,相对应的,系统中有一个driver对象来描述对设备的操作,即struct driver。在设备总线struct bus_type中,所有与该总线相关的驱动程序集合由struct kset drivers结构体来描述 ,所有挂接在该总线上的设备的集合由struct kset devices 结构体来描述。正是总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,也会寻找与之匹配的设备,而匹配由总线完成。
系统中的总线类型有PCI、USB、I2C、SPI、Platform等,事实上,Platform总线并不实际存在,是一条虚拟总线。在Linux中设备和驱动需要挂接在一条总线上,这对于本身依附于PCI、USB、I2C、SPI的设备而言没有什么问题。但是对于嵌入式系统里面,SoC系统中集成的独立的外设控制器、挂接在SoC内存中的外设等并不依附于此类总线,也正是基于此,Linux引进了虚拟总线,即Platform,总线类型struct platform_bus_type,相对应的设备struct platform_device,也成为平台设备,相对应的驱动struct platform_driver。
在S3C2410中的平台设备主要如下
struct platform_device s3c_device_usb; //USB控制器
struct platform_device s3c_device_lcd; //LCD控制器
struct platform_device s3c_device_wdt; //看门狗
struct platform_device s3c_device_i2c; //I2C控制器
struct platform_device s3c_device_iis; //IIS
struct platform_device s3c_device_rtc; //实时时钟
....
platform总线类型 struct platform_bus_type
struct bus_type platform_bus_type = {
- 对设备模型的认识
- 对Linux设备驱动开发初步的认识
- 对实体—联系模型的基本概念的认识
- 对实体--联系模型比较深入的认识
- 对E-R模型向关系模式转换的认识
- 设备驱动的认识
- Linux设备模型<一>认识Sysfs
- 计算模型的认识
- 对句柄的认识
- 对句柄的认识
- 对句柄的认识
- 对句柄的认识
- 对暂存器的认识
- 对const的认识
- 对引用的认识
- 对程序语言的认识
- 对数据仓库的认识
- 对CreateCompatibleDC的认识
- XSAN配置手册
- 位运算实现加法
- string.Format字符串格式化说明(转)
- 今天没事,写点东西
- struts1的初始化过程
- 对设备模型的认识
- 判断32位整数二进制中1的个数的算法
- 一个字节中的1的个数
- 第四届Hadoop 2010中国云计算大会在京隆重开幕
- dsdsaf
- C语言常用的转义符及含义
- 【面试】字符串最长不重复子串长度。
- 关于激励人们学习和掌握正确学习方法的文章: 赵鑫鑫是第四届杨官璘杯刚尽管输给蒋川却还是拿了冠军的那位
- Effective c++ iii