包虫病

注册

 

发新话题 回复该主题

浅谈linux地址映射iorema [复制链接]

1#

概述

对于嵌入式处理器而言,访问外设均是通过以地址指针的方式访问,不过在嵌入式系统中,因为MMU(MemoryManagementUnit)的存在,不管是内核程序还是应用程序都不允许直接访问外设的物理地址。

注意

1、MMU(MemoryManagementUnit)内存管理单元,主要完成虚拟地址和物理地址的映射。

2、操作系统启动之前都会初始化MMU,设置好内存映射。

3、CPU访问的地址均是虚拟地址。

接口

在linux中使用ioremap/iounmap完成物理地址到虚拟地址的映射,映射后访问虚拟地址就等价于直接访问对应的物理地址。

/*ioremap用于物理地址到虚拟地址的映射,iounmap用于解除映射*/externvoid__iomem*__ioremap(phys_addr_tphys_addr,size_tsize,pgprot_tprot);externvoid__iounmap(volatilevoid__iomem*addr);#defineioremap(addr,size)__ioremap((addr),(size),__pgprot(PROT_DEVICE_nGnRE))#defineiounmap__iounmap

左右滑动

分享 转发
TOP
发新话题 回复该主题