Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1367405
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: LINUX

2014-10-23 07:28:49

        操作系统或者内核如何与IO设备进行通信?
             内核与IO设备的通信,实际上说的就是驱动与设备的通信,要实现通信,首先内核必须能够找到IO设备,这就有一个寻址的问题,一直存在2种说法:一种是独立寻址和统一寻址,对应到linux内核,就是IO内存和IO端口了。
         内核IO资源管理要解决什么问题?
             为了解决IO资源分配的冲突,实际上IO资源的管理上也采用了树形结构来管理,如:设备的IO资源的分配由总线来分配,设备中具体的输入和输出的资源分配,则由设备来分配,这样先分配一大块,然后再去细分,有层次的分。
         IO资源管理与总线设备驱动模型的关系
             一般驱动的probe中需要完成IO资源的申请,也就是调用request_resource,因为这个资源的分配与硬件相关,此时硬件相关的信息只有在已经存在的情况下,才能分配。
             在设备驱动中这个request_resource调用并不是必须的唯一操作,有的情况下,还需要将扩展设备的地址空间映射到内核地址空间,内核才能访问设备,也就是通过ioremap来修改系统的页表来实现。
         IO资源分为resource和ioport_resource(对应2种寻址方式),如何查看和了解呢?
              可以在/proc/iomem和/proc/ioports来查看
             
              
        
阅读(1160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~