ioremap_nocache函数说明

NAME

ioremap_nocache - 把内存映射到CPU空间  

SYNOPSIS

void __iomem * ioremap_nocache (unsigned long phys_addr, unsigned longsize);  

ARGUMENTS

phys_addr
要映射的物理地址 
size
要映射资源的大小  

DESCRIPTION

ioremap_nocache进行一系列平台相关的操作使得CPU可以通过readb/readw/readl/writeb/writew/writel等IO函数进行访问。
返回的地址不保证可以作为虚拟地址直接访问
[译者按:在译者的使用过程种并没有出现不能作为虚拟地址直接访问的情况,可能是某些平台下的不可以吧。译者的使用平台是x86和ixp425]

这个版本的ioremap确保这些内存在CPU是不可缓冲的,如同PCI总线上现存的缓冲规则一样。注:此时在很多总线上仍有其他的缓冲和缓存。在某些特殊的驱动中,作者应当在PCI写的时候进行读取。
这对于一些控制寄存器在这种不希望复合写或者缓冲读的区域内时是非常有用的
返回的映射地址必须使用iounmap来释放。

一直被这个CPU的高速缓冲困扰,好不容易找到这个函数,总算是解决问题了.
用于确保每次数据都写到内存中了





ioremap_nocache函数

注解ioremap_nocache

ioremap_nocache 把内存映射到CPU空间

void __iomem * ioremap_nocache (unsigned longphys_addr, unsigned longsize);

phys_addr
要映射的物理地址
size
要映射资源的大小

调用ioremap_nocache()函数之后,返回一个线性地址,此时CPU 可以访问设备的内存(已经将其映射到了线性地址空间中了),此时CPU可以使用访问内存的指令访问设备的内存空间(host bridge 判断访问物理内存还是设备中的内存),此时我们就可以像访问内存一样来访问设备的内存(寄存器)。

ioremap是为一段高端的物理内存建立映射(即增加相关的页表内容),驱动常用
mmap是为可能不连续的一系列逻辑上相关的(如整体是一个文件)物理内存段建立映射,
并呈现一个连续的虚拟地址空间,应用程序常用
mmap是系统调用,只能应用程序用。
ioremap是kernel提供的函数,只能在kernel里用









  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值