包虫病

首页 » 常识 » 常识 » 浅谈linux地址映射iorema
TUhjnbcbe - 2021/5/21 17:48:00

概述

对于嵌入式处理器而言,访问外设均是通过以地址指针的方式访问,不过在嵌入式系统中,因为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

左右滑动

1
查看完整版本: 浅谈linux地址映射iorema