[kernel 启动流程] (第六章)第一阶段之——打开MMU

本文详细介绍了Linux Kernel启动过程中打开MMU的步骤,包括配置CP15协处理器的c1、c2和c3寄存器,以及如何通过设置c1寄存器的bit0来启用MMU。同时,分析了__v7_setup、__enable_mmu和__turn_mmu_on等关键代码段,讲解了打开MMU前的寄存器设置和页表配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[kernel 启动流程]系列

建议参考文档

================================================

零、说明

本文是《[kernel 启动流程] (第一章)概述》的延伸,
阅读本文前建议先阅读《[kernel 启动流程] (第一章)概述》

1、kernel启动流程第一阶段简单说明

arch/arm/kernel/head.S

  • kernel入口地址对应stext
ENTRY(stext)
  • 第一阶段要做的事情,也就是stext的实现内容

    • 设置为SVC模式,关闭所有中断
    • 获取CPU ID,提取相应的proc info
    • 验证tags或者dtb
    • 创建临时内核页表的页表项
    • 配置r13寄存器,也就是设置打开MMU之后要跳转到的函数。
    • 使能MMU
    • 跳转到start_kernel,也就是跳转到第二阶段

本文要介绍的是“使能MMU”的部分。

2、疑问

主要带着以下几个问题去理解

  • 如何打开MMU?
  • 打开MMU前的一些寄存器设置?

一、MMU控制

MMU的配置操作都是通过操作CP15协处理器来实现的。

1、CP15协处理器寄存器说明

寄存器说明请参考《ARM的CP15协处理器的寄存器》。
表格如下

寄存器编号 基本作用 在 MMU 中的作用 在 PU 中的作用
c0 ID 编码(只读) ID 编码和 cache 类型
c1 控制位(可读写) 各种控制位
c2 存储保护和控制 地址转换表基地址 Cachability 的控制位
c3 存储保护和控制 域访问控制位 Bufferablity 控制位
c4 存储保护和控制 保留 保留
c5 存储保护和控制 内存失效状态 访问权限控制位
c6 存储保护和控制 内存失效地址 保护区域控制
c7 高速缓存和写缓存 高速缓存和写缓存控制
c8 存储保护和控制 TLB 控制 保留
c9 高速缓存和写缓存 高速缓存锁定
c10 存储保护和控制 TLB 锁定 保留
c11 保留

重点从MMU的功能方面说明如下几个寄存器

(1)c1,MMU的控制寄存器

<
bit 15 14 13 12 11 10 9 8 7 6 5 4
实现了对ARM920T中MMU的启用 地址转换过程 1. 从CP15寄存器C2得到一级页表的基地址 2. 将虚拟地址[31:20]作为页表的索引,得到页表中该虚拟地址的描述符。 3. 判断该描述符是否为段描述符,如为段描述符,将该描述符[31:20]和虚拟地址[19:0]作为偏移量组成一个32位的物理地址进行访问。 4. 如为粗页表描述符,则将该粗页表描述符[31:10]作为二级页表的基地址,并将虚拟地址[19:12]位作为索引得到在二级页表中该虚拟地址的描述符。 判断二级页表符的类型 ① 为极大页描述符表将该描述符[31:16]作为基地和虚拟地址[15:0]作为偏移量得到该虚拟地址的32位物理地址进行访问。 ② 为小页描述符表将描述符[31:12]作为基地和虚拟地址[11:0]作为偏移量得到该虚拟地址的32位物理地址进行访问。 5. 如为细页表描述符,将该组页表描述符[31:12]作为二级页表的基地址,并将虚拟地址[19:10]位作为索引得到在二级页表中该虚拟地址的描述符。 判断二级页表符的类型 ① 为大页描述符表将该描述符[31:16]作为基地和虚拟地址[15:0]作为偏移量得到该虚拟地址的32位物理地址进行访问。 ②为小页描述符表将该描述符[31:12]作为基地和虚拟地址[11:0]作为偏移量得到该虚拟地址的32位物理地址进行访问。 ③为小极页描述符表将描述符[31:10]作为基地和虚拟地址[9:0]作为偏移量得到该虚拟地址的32位物理地址进行访问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值