在enable mmu之前可以使用mmu了
在enable mmu之前可以使用mmu吗? 很多人也许都没用思考过这个问题,或者认为太简单了,这不废话吗,在enable mmu之前,怎么可能使用mmu呢…
其实这就是大家的一个误区。事实上只要Core一上电,MMU就可以使用的,只不过是如果你没用开启SCTLR.M
比特,PE发起的读写不会自动经过MMU翻译,当然这个时候你是可以手动执行AT
指令进行翻译的,在翻译的时候如果你没用配置也页表、基地址、TCR等寄存器,MMU在翻译也会报错。
下面我们以optee os代码为例,展示一下在enable MMU之前,就使用了地址翻译的这种情况:
void core_init_mmu_regs(struct core_mmu_config *cfg){uint64_t ips = get_physical_addr_size_bits();uint64_t mair = 0;uint64_t tcr = 0;cfg->ttbr0_el1_base = virt_to_phys(l1_xlation_table[0][0]);cfg->ttbr0_core_offset = sizeof(l1_xlation_table[0][0]);mair = MAIR_ATTR_SET(ATTR_DEVICE, ATTR_DEVICE_INDEX);mair |= MAIR_ATTR_SET(ATTR_IWBWA_OWBWA_NTR, ATTR_IWBWA_OWBWA_NTR_INDEX);cfg->mair_el1 = mair;tcr = TCR_RES1;tcr |= TCR_XRGNX_WBWA << TCR_IRGN0_SHIFT;tcr |= TCR_XRGNX_WBWA << TCR_ORGN0_SHIFT;tcr |= TCR_SHX_ISH << TCR_SH0_SHIFT;tcr |= ips << TCR_EL1_IPS_SHIFT;tcr |= 64 - CFG_LPAE_ADDR_SPACE_BITS;/* Disable the use of TTBR1 */tcr |= TCR_EPD1;/** TCR.A1 = 0 => ASID is stored in TTBR0* TCR.AS = 0 => Same ASID size as in Aarch32/ARMv7*/cfg->tcr_el1 = tcr;}
在enable mmu之前可以使用mmu了相关推荐
- [mmu/cache]-ARM MMU的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...
- [mmu/cache]-ARMV8 MMU内存管理中的Memory attributes和Cache policies
快速链接: .
- [mmu/cache]-ARM MMU/TLB的学习笔记和总结
快速链接: .
- 内存管理单元——MMU
一.基本概念介绍 MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PM ...
- 【嵌入式开发】 ARM 关闭 MMU ( 存储体系 | I/D-Cache | MMU | CP15 寄存器 | C1 控制寄存器 | C7 寄存器 | 关闭 MMU )
一. MMU 概念 1. ARM 存储 (1) ARM 的存储体系 (2) Cache 由来 (3) Cache 定义 2. MMU (1) 虚拟地址 与 物理地址 (2) MMU 作用 及 关闭原因 ...
- CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析
CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析 以下为SMDK开发板startup.s部分启动代码. ;------------------------------- ...
- Linux内存管理:MMU那些事儿
<ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <Linux内存管理:分页机制> <Linux内存管理:内 ...
- 深入了解Linux内核MMU管理机制
MMU:存储器管理单元 *虚拟内存空间到物理存储空间的映射.在ARM中采用了页式虚拟内存管理.它把虚拟地址空间分为一个个大小固定的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页.页的大小可 ...
- 04.ARM-mini2440-内存管理单元(MMU)
ARM-mini2440-内存管理单元MMU 建立映射 程序解析 04.ARM-mini2440-内存管理单元(MMU) 图中第1种没有使用MMU 图中第2种使用MMU Created with Ra ...
最新文章
- static_cast
- 14、ORACLE下的基本SQL操作
- Java 主流垃圾收集器
- java 假设当前时间_Java中与日期和时间相关的类和方法
- 川菜中,你觉得哪道菜能称为“经典之菜”呢?
- template.js的用法
- python中run函数作用_python3多线程中如何改写run()函数?
- oracle用户权限管理
- vector容器,容量和大小的操作
- 手机怎么在线拍照翻译英语?这个方法不能不知道
- 深度ip转换器手机版app_优优手机管家app手机版-优优手机管家免费下载v1.0.0
- 在windows10上安装texlive的参考文档
- 驱动启动时遇到:打开服务失败(错误码=6):句柄无效 解决方案
- [爬虫笔记01] Ajax爬取今日头条文章
- Altium Designer入门学习笔记和快捷键整理
- 使用Java动态数组的实现
- 三种批量插入数据的方法
- 数据库mysql---NUMERIC数据类型
- 开关电源补偿环路设计(1):基础部分-以Buck 为例
- learining user's intrinsic and extrinsic interests for point of interest recommendation IJCAI17
热门文章
- 64位java怎么安装使用_如何在64位Windows计算机上安装rJava与64位R一起使用?
- 如何利用传感器控制数据中心能耗
- AI:2020年6月23日北京智源大会演讲分享之智能信息检索与挖掘专题论坛——09:55-10:40刘兵教授《Open-World AI and Continual Learning》
- Python语言学习之打印输出那些事:python输出图表和各种吊炸天的字符串或图画、版权声明(如README.md)等之详细攻略
- DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略
- BigData之matplotlib:爬虫2018年福布斯中国富豪榜进行数据统计分析,大数据告诉你一些不可思议的事情
- C# List的使用
- iview area 遇到的坑
- ubuntu14.04LS中安装sogouPingyin
- HDU 4630 No Pain No Game 树状数组+离线操作