【ARM】SMMU系统虚拟化(2)_转换页表的配置方式boot_code.s

news2024/12/23 8:01:49

#工作记录#

拖了非常久的页表转换整理,补坑!废话不多说开整。

MMU相关的知识点可以参考我之前的博客,这篇博客主要介绍如何在boot_code.s中配置页表。

目录

1.boot_code.s简介

2. MMU配置相关

2.1系统寄存器

2.2 ttb0_base的配置


1.boot_code.s简介

在ARMv8架构中,boot_code.s是一个特殊的汇编语言源文件,通常用于编写启动代码。启动代码是系统启动时首先执行的代码,负责初始化系统环境,设置堆栈,以及跳转到操作系统的启动例程。

以下是boot_code.s的一些常见用途和特点:

  1. 初始化堆栈:在系统启动时,需要设置一个初始堆栈,以便程序可以正常执行函数调用和返回。

  2. 设置BSS段:BSS段(Block Started by Symbol)是未初始化的全局变量和静态变量的区域。启动代码通常需要将这个区域清零。

  3. 设置控制寄存器:启动代码可能需要设置一些控制寄存器,以配置处理器的工作模式和行为。

  4. 跳转到操作系统启动例程:一旦系统环境被初始化,启动代码会跳转到操作系统的启动例程,通常是操作系统内核的入口点。

  5. 异常处理:启动代码可能需要处理一些早期的异常,例如内存访问错误或非法指令。

  6. 平台特定配置:不同的硬件平台可能需要不同的启动代码来配置硬件,例如设置时钟、初始化I/O设备等。

  7. 安全性:在一些系统中,启动代码还负责设置安全特性,如安全启动模式,以确保系统的安全性

2. MMU配置相关

2.1系统寄存器

系统寄存器用于控制和管理CPU的操作模式、特权级别、内存管理、中断处理等关键系统功能。主要的系统寄存器包括:

  1. SCTLR_ELx(System Control Register):系统控制寄存器,用于控制和配置处理器的系统级特性,如内存保护、缓存策略等。
  2. TTBR0_ELx(Translation Table Base Register):转换表基地址寄存器,用于定义页表的基地址,支持内存地址转换和虚拟内存管理。
  3. MAIR_ELx(Memory Attribute Indirection Register):内存属性指示寄存器,用于定义不同内存区域的属性,如缓存策略、访问权限等。
  4. TCR_ELx(Translation Control Register):转换控制寄存器,用于控制地址转换的行为和特性,如地址范围、页大小等。
  5. ESR_ELx(Exception Syndrome Register):异常综合症寄存器,用于存储异常发生时的状态信息,帮助调试和错误处理。

这些系统寄存器根据不同的异常级别(EL0, EL1, EL2, EL3)有不同的实例,如SCTLR_EL1, SCTLR_EL2等,分别对应用户态、内核态、虚拟化和安全态的控制。

以EL3为例:

1.首先配置SCTLR_EL3无效化CPU内部的L1 cache

mrs x0,SCTLR_EL3
and x0, x0, #12
msr SCTLR_EL3, x0

2.初始化页表信息配置tcr,mair系统寄存器

ldr x1,=0x80803520
msr tcr_el3,x1
ldr x1,=0xccee77bb0444ff00
msr mair_el3,x1
ldr x0,=ttb0
msr ttbr0_el3,x0

tcr_el3各bit含义如下

这个T0SZ又把我引到计算页表大小的章节了,继续探索一下这个到底是怎么个事。

由文档描述可以知道T0SZ用来描述输入address的size,那假设当我们输入的地址范围是44bits的时候,是不是我们输入的地址T0SZ就配置成44呢?

根据文档当我们地址范围为44bits的时候,需要将T0SZ配置为20。

mair_el3寄存器

设置不同的memory attribute属性。共可以配置成8种类型,后面由table translation descriptor 来选择使用哪个attribute。

上例中的ttb0_base在后面会描述,这里只是一个传参的作用,传递配置给ttbr0_el3。

ttbr0_el3寄存器

3.开启mmu和cache

mrs x0, s3_1_c15_c2_1
orr x0, x0, #(0x1<<6)
msr s3_1_c15_c2_1, x0

s3_1_c15_c2_1可以参考下面这个博客。

ARMv8架构u-boot启动流程详细分析(2)_armv8 atf+bootloader-CSDN博客

2.2 ttb0_base的配置

对于ttb0_base的配置就是需要进行页表的配置,将地址与attribute带上分配好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你打造Vue2项目中的自定义折叠组件

场景 产品&#xff1a;新增表单页面过长&#xff0c;操作不便捷&#xff0c;增加折叠功能。前端&#xff1a;OK&#xff01;&#xff01;&#xff01;PS&#xff1a;前端就是这么好说话o(*&#xffe3;︶&#xffe3;*)o废话一 本文将带领大家了解如何在Vue2项目中创建一个自定…

简单的docker学习 第7章 docker网络

第7章 Docker 网络 7.1Docker 网络理论基础 Docker 网络中的相关命令非常少&#xff0c;但需要掌握的底层原理相对较多。 首先使用busybox创建两个容器&#xff0c;方便后续使用 # 之后使用ctrl p q 退出&#xff0c;保持后台运行 docker run --name bb1 -it busybox /bi…

【楚怡杯】职业院校技能大赛 “Python程序开发”赛项样题六

模块一&#xff1a;网络爬虫&#xff08;20分&#xff09; 任务一&#xff1a;获取网站数据 【任务说明】 数据是很多企业的生命&#xff0c;没有数据就没有一切。企业首先要解决的问题就是数据问题&#xff0c;那么获取数据的手段有很多种&#xff0c;其中爬虫就是性价比最…

市值1.3亿的厂房,1.8万就被捡漏了 究竟是馅饼还是陷阱

建筑总面积达9550.64平方米 市场价为1.3亿元的厂房 被1元钱起拍变卖 最终成交价仅有1.8万元 每平方米房价不足2元 究竟是馅饼还是陷阱 2024年8月5日&#xff0c;北京市西城区人民法院的一个价值1.3亿元的厂房以18162.97元的最高价竞成交。 7 月 7 日起&#xff0c;北京市西…

【初阶数据结构题目】12.环形链表I

环形链表I 点击链接做题 思路&#xff1a;快慢指针 代码&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ typedef struct ListNode ListNode; bool hasCycle(struct ListNode *head) {//快慢指针…

【机器学习】BP神经网络基本结构

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 BP神经网络基本结构1. 引言2. BP神经网络的基本概念2.1 什么是BP神经网络2.2 BP…

性价比高的蓝牙耳机推荐?分享我的2024年开放式耳机选购指南

2024年快到下旬了&#xff0c;市场上的蓝牙耳机价格也是差不多都沉淀起来了。所以就性价比高的蓝牙耳机的入手时间来说&#xff0c;那确实是年底左右的时间挑选入手会比较好一点。 而挑选性价比高的蓝牙耳机类型呢&#xff0c;我会首选开放式耳机。因为就开放式耳机而言&#…

yarn insntall 报错,显示 @achrinza/node-ipc@9.2.2 不支持现在的node版本

最近执行yarn install 时&#xff0c;突然遇到这样一个段报错 error achrinza/node-ipc9.2.2: The engine "node" is incompatible with this module. Expected version "8 || 10 || 12 || 14 || 16 || 17". Got "18.10.0" error Found incompa…

中创算力:以知识产权转化运用促进高质量发展

创新是引领发展的第一动力&#xff0c;保护知识产权就是保护创新。为深入实施知识产权公共服务普惠工程&#xff0c;促进知识产权公共服务更好服务高水平科技&#xff0c;国家知识产权局发布关于全面提升知识产权公共服务效能的指导意见。 在政策落地过程中&#xff0c;如何精…

《Milvus Cloud向量数据库指南》—Milvus Cloud赋能Ivy.ai:解锁大数据潜力,加速AI创新

引入Milvus Cloud:Ivy.ai的大规模全托管向量数据库解决方案新篇章 在人工智能驱动的数字化时代,数据成为了企业最宝贵的资产之一,而如何高效地管理和利用这些数据,则是决定企业能否在竞争中脱颖而出的关键因素。对于Ivy.ai这样致力于提升高等教育、医疗保健和公共部门沟通…

BM1反转链表[栈+头插法]

题目要求如下: 问题比较简单,就是将链表中的值进行反转即可。 一种比较简单的方式是使用栈链表的方式来实现,下面是相应的代码: #include <stdio.h> #include <stdlib.h> int arr[10001] {0}; struct ListNode* ReverseList(struct ListNode* head ) {if (head …

【数据结构】——介绍树

树 树的概念和结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09;个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;⽽叶朝下的。 • 有⼀个特殊的结点&#xff0c;…

韩国裸机云站群服务器是什么?有什么优势

韩国裸机云站群服务器是什么&#xff1f;韩国裸机云站群服务器是一种提供多IP地址分配和高性能网络服务的云计算解决方案。这种服务器结合了裸机服务器与云端技术&#xff0c;具有高性能、高可靠性和灵活可扩展性的特点。它广泛应用于需要多IP管理和高稳定性的网络应用&#xf…

unity项目语言设置成中文

步骤一&#xff1a;安装简体中文包 操作&#xff1a;在unity hub界面点击安装&#xff0c;然后在安装的unity版本中点击添加模块 操作&#xff1a;选择简体中文安装包进行安装 步骤二&#xff1a;切换简体中文包 操作&#xff1a;创建一个项目&#xff08;或者打开已经创建过…

从0开始的算法(数据结构和算法)基础(五)

哈希表 哈希表是什么&#xff1f; 哈希表&#xff08;Hash Table&#xff09;是一种数据结构&#xff0c;用于快速存储和查找数据。它通过将键&#xff08;key&#xff09;映射到数组中的索引位置来实现高效的查找、插入和删除操作。 乍一看不明白很正常&#xff0c;如果你学过…

国外一个免费的PDF转图片的网站,WPS VIP才能享受的大量功能,这里都有了。

国外一个免费的PDF转图片的网站&#xff0c;WPS VIP才能享受的大量功能&#xff0c;这里都有了。https://imagestool.com/ 免费PDF转图片 等WPS收费功能 【慧哥开源充电桩平台】下载源码地址 https://liwenhui.blog.csdn.net/article/details/134773779?spm1001.2014.3001.55…

入侵检测技术

课程目标 了解需要入侵检测技术的原因 熟知入侵检测系统&#xff08;IDS&#xff09;的概念、结构、分类及作用 掌握入侵检测技术及其应用 目录 Why 为什么要学习IDS 1.防火墙不能保证绝对的安全 网络边界的设备 自身可以被攻破 对某些攻击保护很弱 不是所有的威胁来自…

分而治之?如何高效提炼大型语言模型的推理能力

人工智能咨询培训老师叶梓 转载标明出处 虽然大模型&#xff08;如GPT-4&#xff09;在开放域问答&#xff08;ODQA&#xff09;、数学、科学以及自主智能体等领域展现出了非凡的推理能力&#xff0c;但是这些模型在进行复杂推理时&#xff0c;往往需要处理大量的参数&#xff…

项目管理中,项目经理有哪些优势?

项目经理在项目管理中扮演着至关重要的角色&#xff0c;他们的优势主要体现在以下几个方面&#xff1a; 一、计划与组织能力 超强的计划能力&#xff1a;项目经理需要制定各种计划&#xff0c;因此更擅长制定精确、合理的项目计划。他们能够有效地分解项目任务&#xff0c;排…

Elastic 基于 RAG 的 AI 助手:使用 LLM 和私有 GitHub 问题分析应用程序问题

作者&#xff1a;来自 Bahubali Shetti 作为 SRE&#xff0c;分析应用程序比以往任何时候都更加复杂。你不仅必须确保应用程序以最佳方式运行以确保出色的客户体验&#xff0c;而且在某些情况下还必须了解内部工作原理以帮助排除故障。分析基于生产的服务中的问题是一项团队运动…