鸿蒙轻内核源码分析:MMU 协处理器
摘要:本系列首先了解下 ARM CP15 协处理器的知识,接着介绍下协处理器相关的汇编指令,最后分析下 MMU 相关汇编代码。
本文分享自华为云社区《鸿蒙轻内核A核源码分析系列六 MMU协处理器》,作者:zhushy。
1、ARM C15 协处理器
在 ARM 嵌入式应用系统中, 很多系统控制由 ARM CP15 协处理器来完成的。CP15 协处理器包含编号 0-15 的 16 个 32 位的寄存器。例如,ARM 处理器使用 C15 协处理器的寄存器来控制 cache、TCM(Tightly-Coupled Memory)和存储器管理。CP15 的各个寄存器的概要信息如下图,图片来自官方资料《ARM® Cortex™-A Series Version: 4.0 Programmer’s Guide》。
在这些 C15 寄存器中和 MMU 关系较大的有 C2、C7、C17 寄存器,这些寄存器的作用,从上图可以看出,分别是:
CP15 C2 寄存器
Memory protection and control registers,内存保护和控制寄存器,包含 Translation Table Base Register 0 (TTBR0)、Translation Table Base Register 1 (TTBR1)和 Translation Table Base Control Register (TTBCR)。TTBR0、TTBR1 是 L1 转换页表的基地址,TTCR 控制 TTBR0 和 TTBR1 的使用。
CP15 C7 寄存器
Cache and branch predictor maintenance functions、Data and instruction barrier operations 用于高速缓存和写缓存控制。
CP15 C13 寄存器
Context ID Register (CONTEXTIDR)、Software thread ID registers 用于保存进程标识符(asid 地址空间编号)。
2、ARM C15 协处理器汇编指令
访问 CP15 寄存器的指令主要是 MCR 和 MRC 这两个指令。本小节详细介绍下这 2 个汇编指令。先看下指令的含义,MCR 是 ARM 处理器寄存器到协处理器寄存器的数据传送指令,英文为 Move CPU register to coprocessor register,MRC 是协处理器寄存器到 ARM 处理器寄存器的数据传送指令,英文为 Move from coprocessor register to CPU register。这 2 个指令的语义格式如下,可以看出语义格式是一样的,但是读取写入含义会有差异。MCR 是读取 Rt 寄存器写入协处理器寄存器 CRn、CRm,而 MRC 是读取协处理器寄存器 CRn、CRm 写入 Rt 寄存器。
MCR 详细的语义介绍如下:
MRC 详细的语义介绍如下:
3、MMU 汇编代码
在 arch\arm\arm\include\arm.h 文件中,封装了 CP15 协处理器相关的寄存器操作汇编函数。我们主要看下 MMU 相关的部分。
3.1 CP15 C2 TTBR 转换表基地址寄存器
代码比较简单,结合下图,自行查看即可。该图来自《ARM Cortex-A9 Technical Reference Manual r4p1》CP15 system control registers grouped by CRn order 部分。
3.2 CP15 C7 高速缓存寄存器
代码比较简单,结合下图,自行查看即可。该图是 C7 寄存器的部分截图。
3.3 CP15 C13 进程标识符寄存器
代码比较简单,结合下图,自行查看即可。
4、MMU 上下文切换
在之前的系列,我们了解到每个用户进程都有独立的进程空间。在进程切换时,MMU 上下文也会切换,相应的函数为 LOS_ArchMmuContextSwitch()。快速分析下该函数的代码。
⑴处读取 TTBCR 寄存器的状态值,如果传入参数 archMmu 不为空,执行⑵使能 TTBR0,否则执行⑶使其失能 TTBR0。⑷处把内核地址空间的进程空间标识符 asid 写入 C13 寄存器。⑸处更新 TTB 页表基地址和 TTB 状态信息到相应寄存器。⑹处把进程空间的进程标识符写入 C13 寄存器。
小结
本文介绍了 ARM CP15 协处理器的知识,接着介绍下协处理器相关的汇编指令,最后分析下 MMU 相关汇编代码。感谢阅读,有什么问题,请留言。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/f9e977bbffebd31ccb4a94c41】。文章转载请联系作者。
评论