鸿蒙轻内核A核源码分析系列六 MMU协处理器(1)

在前面系列分析虚实映射时,涉及到了一些MMU协处理器与相关的汇编代码没有深入讲解。本文来专门分析那些协处理器与汇编代码。

本文中所涉及的源码,以OpenHarmony LiteOS-A内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。如果涉及开发板,则默认以hispark_taurus为例。MMU相关的操作函数主要在文件arch/arm/arm/src/los_arch_mmu.c中定义。

本系列首先了解下ARM CP15协处理器的知识,接着介绍下协处理器相关的汇编指令,最后分析下MMU相关汇编代码。

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{cond} coproc, #opcode1, Rt, CRn, CRm{, #opcode2}
MRC{cond} coproc, #opcode1, Rt, CRn, CRm{, #opcode2}

MCR详细的语义介绍如下:

Syntax
MCR{cond} coproc, #opcode1, Rt, CRn, CRm{, #opcode2}

where:
cond
is an optional condition code. 可选的条件码。
coproc
is the name of the coprocessor the instruction is for. The standard name is pn, where n is an integer in the range 0 to 15.协处理器的名称,标准名称为pn,其中n为0-15,例如p14、p15。
opcode1
is a 3-bit coprocessor-specific opcode. 3位的操作码。
opcode2
is an optional 3-bit coprocessor-specific opcode.可选的3位操作码。
Rt
is an ARM source register. Rt must not be PC. 要读取的ARM寄存器,不能为PC寄存器。
CRn, CRm
are coprocessor registers.要写入的协处理器寄存器。

MRC详细的语义介绍如下:

Syntax
MRC{cond} coproc, #opcode1, Rt, CRn, CRm{, #opcode2}

where:
cond
is an optional condition code.  可选的条件码。
coproc
is the name of the coprocessor the instruction is for. The standard name is pn, where n is an integer in the range 0 to 15.协处理器的名称,标准名称为pn,其中n为0-15,例如p14、p15。
opcode1
is a 3-bit coprocessor-specific opcode.3位的操作码。
opcode2
is an optional 3-bit coprocessor-specific opcode.可选的3位操作码
Rt
is the ARM destination register. Rt must not be PC.要写入的ARM寄存器,不能为PC寄存器。
Rt can be APSR_nzcv. This means that the coprocessor executes an instruction that changes the value of the condition flags in the APSR. Rt也可以为APSR_nzcv。
CRn, CRm
are coprocessor registers.要读取的协处理器寄存器。

如果大家想更加深入的学习 OpenHarmony 开发的内容,不妨可以参考以下相关学习文档进行学习,助你快速提升自己:

OpenHarmony 开发环境搭建:https://qr18.cn/CgxrRy

《OpenHarmony源码解析》:https://qr18.cn/CgxrRy

  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……

系统架构分析:https://qr18.cn/CgxrRy

  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

OpenHarmony 设备开发学习手册:https://qr18.cn/CgxrRy

在这里插入图片描述

OpenHarmony面试题(内含参考答案):https://qr18.cn/CgxrRy

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:https://qr21.cn/FV7h05

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 15:38:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 15:38:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 15:38:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 15:38:03       20 阅读

热门阅读

  1. 软件版本库管理工具

    2024-06-13 15:38:03       8 阅读
  2. odoo15 与odoo16的一个小更新add_sign

    2024-06-13 15:38:03       8 阅读
  3. 重温react-03

    2024-06-13 15:38:03       9 阅读
  4. C语言从头学20——指针

    2024-06-13 15:38:03       10 阅读
  5. 【江湖】离职经验之人在江湖

    2024-06-13 15:38:03       11 阅读
  6. LLM 加速

    2024-06-13 15:38:03       9 阅读
  7. Oracle数据库查询常用语句

    2024-06-13 15:38:03       5 阅读
  8. c++分辨读取的文件编码格式是utf-8还是GB2312

    2024-06-13 15:38:03       6 阅读
  9. MySQL为root用户添加IP地址连接权限

    2024-06-13 15:38:03       8 阅读