转自:http://blog.csdn.net/alada007/article/details/7700125

如果从根本上说起的话应该从Intel的处理器芯片与其它的芯片的不同说起,与这两个函数相关的是对 I/OPort与内存的寻址方式,intel的处理器中内存与外部IOPort是独立编址与寻址的,这就有了两种地址空间分别是内存地址空间与IO地址空间,访问IO地址空间需使用不同的指令。与intel不同的是有些处理器(如PowerPC等)就只有一个地址空间,即内存空间,在这种情况下,外设的I/OPort物理地址就需要被映射到内存地址空间才能被访问,这主就是所说的Memery-Mapped, 而Intel的把I/OPort物理地址映射到I/O地址空间中就是所说的IO-Mapped。

要使用I/OPort内存则需先申请再映射,即先调用request_mem_region,内核发现这样的函数调用会将该I/OPort地址标记为以被使用,如其它人再来申请则告之其该内存已使用。调用申请函数之后可以放心的映射(ioremap)了,当然不调用申请函数直接映射该I/OPort地址到虚拟空间也是可以的,但鬼才知道一个I/OPort地址指向多个虚拟空间什么发生什么事情! 把I/OPort地址映射到虚拟地址空间还有一个好处就是访问I/OPort可以虚拟地址上加一偏移就O啦。

request_mem_region 与 ioremap【转】的更多相关文章

  1. request_mem_region,ioremap 和phys_to_virt()

    转载: request_mem_region,ioremap 和phys_to_virt()   Linux在头文件include/linux/ioport.h中定义了三个对I/O内存资源进行操作的宏 ...

  2. 内核request_mem_region 和 ioremap的理解

    request_mem_region仅仅是linux对IO内存的管理,意思指这块内存我已经占用了,别人就不要动了,也不能被swap出去.使用这些寄存器时,可以不调用request_mem_region ...

  3. 内核request_mem_region 和 ioremap的理解【转】

    转自:http://blog.csdn.net/skyflying2012/article/details/8672011 版权声明:本文为博主kerneler辛苦原创,未经允许不得转载. 几乎每一种 ...

  4. linux内存操作--ioremap和mmap学习笔记

    最近做一些相关的视频输出,对于保留framebuffer内存使用情况不是很清楚,现在找了一些资料整理出,准备使用.if (希望看到使用)  goto   用法: 对于一个系统来讲,会有非常多的外设,那 ...

  5. linux内存操作--ioremap和mmap

    最近在做视频输出相关的东西,对于预留给framebuffer的内存使用不是很清楚,现在找到一些资料整理一下,以备使用.if (想看使用方法)  goto   使用方法: 对于一个系统来讲,会有很多的外 ...

  6. 详解Linux2.6内核中基于platform机制的驱动模型 (经典)

    [摘要]本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型.首先介绍了Platform总线的基本概念,接着介绍了platform device和platform dri ...

  7. cat /proc/iomem

    在proc目录下有iomem和ioports文件,其主要描述了系统的io内存和io端口资源分布. 对于外设的访问,最终都是通过读写设备上的寄存器实现的,寄存器不外乎:控制寄存器.状态寄存器和数据寄存器 ...

  8. Linux 驱动框架---dm9000分析

    前面学习了下Linux下的网络设备驱动程序的框架inux 驱动框架---net驱动框架,感觉知道了一个机器的大致结构还是不太清楚具体的细节处是怎么处理的,所以今天就来以dm9000这个网上教程最多的驱 ...

  9. Linux内核访问外设I/O--动态映射(ioremap)和静态映射(map_desc) (转载)

    [转](转)Linux内核访问外设I/O资源的方式-静态映射(map_desc)方式 Linux内核访问外设I/O资源的方式 Author: Dongas Date: 08-08-02 我们知道默认外 ...

随机推荐

  1. BFS例题:A计划

    ContribContrib/a11y/accessibility-menu.js 关于 BFS要点: 1.若为可化为的坐标系图形,可用结构体存储其x值,y值和步数.(一般开now 和 next ,n ...

  2. python使用网易邮箱发邮件

    # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText import email.mime.multip ...

  3. Dapper基础增删查改、事务和存储过程

    1.前言 Dapper是一个轻量级的orm框架,上手也非常的简单,它可以实体映射,所以先准备实体如下: public class Couser { public int id { get; set; ...

  4. loj2174 「FJOI2016」神秘数

    先考虑一下一个集合怎么用 \(O(n)\) 时间求出来,然后用主席树推广到一个序列就可以了.大致思想就是考虑一个数的权值和它前面的数的和的关系. #include <algorithm> ...

  5. Windows下使用Nginx+tomcat配置负载均衡

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口 ...

  6. Java设计模式-----装饰者

    对方法做增强,并不能添加新的接口方法.

  7. jenkins调用pom.xml文件

    对于测试人员来说,大部分代码维护在本地,因此在用jenkins做持续集成时,我们只需要用Jenkins去直接调用pom.xml文件去执行我们的项目 这里主要是正对创建自由风格的工程来讲解的 一.Jen ...

  8. 操作App.config的类(转载)

    http://www.cnblogs.com/yaojiji/archive/2007/12/17/1003191.html 操作App.config的类 public class DoConfig  ...

  9. UVa 1326 - Jurassic Remains(枚举子集+中途相遇法)

    训练指南p.59 #include <cstdio> #include <cstring> #include <cstdlib> #include <map& ...

  10. python 常见的错误类型 和 继承关系

    BaseException +-- SystemExit #系统结束 +-- KeyboardInterrupt #键盘中断 ctrl+D +-- GeneratorExit #主动结束 +-- Ex ...