内存保护_1:Tricore芯片MPU模块介绍

news2024/9/30 1:37:23

上一篇 | 返回主目录 | 下一篇

内存保护_1:Tricore芯片MPU模块介绍

  • 1 何为MPU
  • 2 MPU相关的硬件子系统
    • 2.1 基于地址范围保护逻辑说明
      • 2.1.1 地址范围寄存器
      • 2.1.2 读、写、执行权限寄存器
      • 2.1.3 保护集设置位
      • 2.1.4 内存保护功能使能位
      • 2.1.5 核的内存保护范围获取说明
      • 2.1.6 保护使能基本机理
    • 2.2 外设寄存器操作及指令执行保护
      • 2.2.1 用户模式设置状态位(PSW程序状态寄存器)
      • 2.1.2 用户模式下指令及寄存器访问权限设置(SYSCON系统控制寄存器)
    • 2.3 错误处理机制
    • 2.4 寄存器操作指令说明
      • 2.4.1 相关寄存器操作指令
      • 2.4.2 写入指令(MTCR)
      • 2.4.3 读出指令(MFCR)

1 何为MPU

  • MPU(Memory Protection Unit),即存储保护单元,它是位于存储器内部的一个可编程的区域,定义了存储器的属性和存储器的访问权限。用于检测系统访问非法地址或者访问无许可的地址,在触发错误后,会进入硬件错误异常(通过Trap可对错误进行识别,并进行相应的处理)。

  • 在如下的情况中使得系统更加安全:
    1)、避免应用任务破坏其他任务或者OS内核使用的栈或数据存储器。
    2)、避免非特权任务访问对系统可靠性和安全性很重要的外设。
    3)、将SRAM或RAM定义为不可执行的(永不执行,XN),可以防止代码注入攻击。

2 MPU相关的硬件子系统

2.1 基于地址范围保护逻辑说明

注意: 每个核存在各自独立的寄存器,不可认为共用相关寄存器

2.1.1 地址范围寄存器

数据地址范围寄存器:用于限制数据的读取、写入地址范围
DPRx_L:定义数据范围对x的下地址边界
DPRx_U:定义数据范围对x的上地址边界

备注:
a)、D: Data,P: Protection, R: Range, L: Lower
b)、范围存在一个最小粒度,即最小的保护范围(如下图寄存器说明,最低3位为不可写入,所以粒度为8)

代码地址范围寄存器:用于限制代码执行地址范围
CPRx_L:定义代码范围对x的下地址边界
CPRx_U:定义代码范围对x的上地址边界

备注:
a)、C: Code,P: Protection, R: Range, L: Lower
b)、范围存在一个粒度,即最小的保护范围(如下图寄存器说明,最低5位为不可写入,所以粒度为32)

2.1.2 读、写、执行权限寄存器

DPWE_x(数据保护写使能寄存器,x为保护集编号):定义保护集对各个数据范围寄存器的写入权限是否使能

备注:
a)、D: Data,P: Protection, W: Write, E: Enable,x:保护集编号

DPRE_x(数据保护读使能寄存器,x为保护集编号):定义保护集对各个数据范围寄存器的读出权限是否使能

备注:
a)、D: Data,P: Protection, R: Read, E: Enable,x:保护集编号

CPXE_x(代码保护执行使能寄存器,x为保护集编号):定义保护集对各个代码范围寄存器的执行权限是否使能

备注:
a)、C: Code,P: Protection, X: Execute, E: Enable,x:保护集编号

2.1.3 保护集设置位

PRS(保护寄存器集位):用于设置当前核的使能的保护集编号

备注:
a)、P: Protection,P: Register, S:Set

2.1.4 内存保护功能使能位

PROTEN(内存保护使能位):用于使能内存保护功能

备注:
a)、PROT: Protection,E: Enable

2.1.5 核的内存保护范围获取说明

  • 根据核使能的保护集编号,可以知道相应的读、写及执行权限相关寄存器
  • 根据读、写及执行相关寄存器中,关于范围寄存器的范围是否使能,得到单个范围
  • 将所有是能的范围取并集,即可得到当前核的保护范围

2.1.6 保护使能基本机理

  • SYSCON寄存器中的保护启用位(SYSCON. PROTEN)
  • 设置保护寄存器地址范围设置(DPRx_L、DPRx_U,CPRx_L、CPRx_U)
  • 设置访问权限寄存器(DPWE_x、DPRE_x、CPXE_x)
  • 选择保护集(PSW.PRS)

2.2 外设寄存器操作及指令执行保护

2.2.1 用户模式设置状态位(PSW程序状态寄存器)

IO:用于设置当前的用户模式(仅在非可信应用集中会设置为User,与SYSCON的U1_IED、U1_IOS配合使用)

  • 00B : User-0 Mode :禁止访问具有外设空间属性的内存区域,并导致PSE或MPP陷阱
  • 01B : User-1 Mode :定期访问外围。允许访问没有特殊保护的常见外围设备,包括对串行I/O端口的读/写访问,对计时器的读访问,以及对大多数I/O状态寄存器的访问。这个级别的任务可以禁用中断。(该模式的默认行为可能会被系统控制寄存器覆盖,即可设置)
  • 10B : Supervisor Mode :允许访问所有外围设备。它允许对核心寄存器和受保护的外围设备进行读写访问。这个级别的任务可以禁用中断

2.1.2 用户模式下指令及寄存器访问权限设置(SYSCON系统控制寄存器)

  • U1_IOS:控制外设寄存器访问权限(User_1 Mode)
  • U1_IED:指令访问/执行权限使能(User_1 Mode)

2.3 错误处理机制

在违背内存保护范围进行访问相应地址时(或者其他行为),会触发相应的Trap(内存保护属于其中的class 1)。在此基础上存在TIN(Trap Identification Number),用于定位更具体的错误原因,如图所示

注意:
基于范围的存储保护系统(MPU)产生三个陷阱,每个陷阱对应三个保护模式寄存器位:

  • MPW trap = WE bit (MPW = memory protection write)
  • MPR trap = RE bit (MPR = memory protection read)
  • MPX trap = XE bit (MPX = memory protection execute)

2.4 寄存器操作指令说明

2.4.1 相关寄存器操作指令

如图所示 ,内存保护寄存器、PSW以及SYSCON这些与内存保护相关寄存器属于特殊功能寄存器(CSFRs),并且此类寄存器操作需要特殊指令(MTCR:写入指令、MFCR:读出指令)

2.4.2 写入指令(MTCR)

MTCR(Move To Core register): 数据写入寄存器
该指令包含两个参数:

  • 寄存器地址(从芯片手册获取)
  • 写入的值
    例:MTCR(RegAddr, RegVaule);

2.4.3 读出指令(MFCR)

MFCR(Move From Core register) 从寄存器读出数据
该指令包含一个参数:

  • 寄存器地址(从芯片手册获取)
    例:RegVaule = MTCR(RegAddr );

上一篇 | 返回主目录 | 下一篇

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

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

相关文章

【Proteus仿真】【STM32单片机】粮仓温湿度控制系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用声光报警模块、LCD1602显示模块、DHT11温湿度模块、继电器模块、加热加湿除湿风扇等。 主要功能: 系统运行后,LCD1602显示…

Atlassian Server用户新选择 | 数据中心产品是否适合您的企业(2)?

2024年2月,也就是一年不到,Atlassian将终止对Server产品及插件的所有支持。 此公告发布后,许多用户需要了解怎样的前进方向才是最适合企业的。为此,Atlassian提供了本地部署的数据中心(Data Center)版&…

如何基于MLServer构建Python机器学习服务

文章目录前言一、数据集二、训练 Scikit-learn 模型三、基于MLSever构建Scikit-learn服务四、测试模型五、训练 XGBoost 模型六、服务多个模型七、测试多个模型的准确性总结参考前言 在过去我们训练模型,往往通过编写flask代码或者容器化我们的模型并在docker中运行…

我要测网2022优秀检测机构评选活动举办,径硕科技分享数字营销趋势

2023年2月17号,由我要测网主办的「数字营销韧性增长|2023TIC营销人开年报告」圆满举办。来自南京市产品质量监督检验院、中国检科院测试评价中心、径硕科技JINGdigital等企业的3位“重量级”嘉宾进行了精彩纷呈的分享,为在低谷中前行的检测机…

svg和D3.js

一、svg绘制图形 像素图由一个个像素块组成&#xff0c;矢量图由多个数学公式绘制曲线组成&#xff0c;这样即使我们缩放&#xff0c;数学公式会重新计算&#xff0c;所以矢量图不会出现失真。 <!DOCTYPE html> <html lang"en"><head><meta ch…

日本知名动画公司东映动画加入 The Sandbox 元宇宙

与 Minto 合作将东映动画的 IP 呈现在元宇宙。 The Sandbox 很荣幸能与东映动画合作&#xff0c;与 Minto 携手在 The Sandbox 元宇宙中创建基于东映动画 IP 的相关体验。 作为日本动画的先驱&#xff0c;东映动画制作了日本最大和世界领先的动画作品&#xff0c;包括《龙珠》、…

Python实现贝叶斯优化器(Bayes_opt)优化LightGBM分类模型(LGBMClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景贝叶斯优化器(BayesianOptimization) 是一种黑盒子优化器&#xff0c;用来寻找最优参数。贝叶斯优化器是基…

Spring Cloud融合Nacos实现服务的注册与发现 | Spring Cloud 4

一、前言 服务发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事&#xff0c;而且也不利于服务的动态扩缩容。 Spring Cloud Alibaba Nacos Discovery通过自动配置以及其他Spring 编程模型的…

独立产品灵感周刊 DecoHack #049 - 开发者如何学习UI设计

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. method.ac 这个…

一文读懂账号体系产品设计

一、账号体系的概念及价值账号体系是用户在各平台上的通行证。平台给与用户可持续的服务&#xff0c;用户在平台上获取价值&#xff0c;中间的媒介&#xff0c;便是账号体系。阿境将其理解为维系用户与平台之间的枢纽。注&#xff1a;本文中&#xff0c;账号账户&#xff0c;二…

《Python机器学习》基础代码2

&#x1f442; 逝年 - 夏小虎 - 单曲 - 网易云音乐 目录 &#x1f44a;Matplotlib综合应用&#xff1a;空气质量监测数据的图形化展示 &#x1f33c;1&#xff0c;AQI时序变化特点 &#x1f33c;2&#xff0c;AQI分布特征 相关性分析 &#x1f33c;3&#xff0c;优化图形…

Python实现GWO智能灰狼优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景灰狼优化算法(GWO)&#xff0c;由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优…

Linux和Windows环境下配置Redis开机自启动

Linux和Windows环境下配置Redis开机自启动前言Linux服务器上设置开机自启动前置条件配置开机自启动启动的配置文件添加脚本的设置Windows设置开机自启其他简单命令前言 rt&#xff0c;没怎么接触过服务器还要摊上这么档子事&#xff0c;面试的时候也没说要跟服务器打交道啊。。…

【前端】JS异步加载

文章目录为什么要异步加载如何实现异步加载参考为什么要异步加载 两个原因其实是一个意思。 原因1&#xff1a; JS是单线程的语言&#xff0c;它会同步的执行代码&#xff0c;从上往下执行 但是&#xff0c;一旦网络不好&#xff0c;或要加载的js文件过大的话&#xff0c;会…

记一次真实liunx挖矿病毒处理

在一个周末的晚上&#xff0c;收到了群里一个学弟的消息&#xff1a;话不多说开始应急&#xff1a;发现新增用户包括计划任务&#xff0c;包括使用率为百分百的cpu&#xff0c;可以确定是被入侵且植入了挖矿病毒。后门用户&#xff1a;计划任务&#xff1a;top查看进程信息&…

2.27 junit5常用语法

一.了解junitjunit是一个开源的java单元测试框架,java方向使用最广泛的单元测试框架.所需要的依赖<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium&l…

敏捷测试需要遵循的原则

摘要&#xff1a;与传统的阶段性测试不同的是&#xff0c;敏捷测试能够将测试集成到整个软件开发过程中&#xff0c;尽早、及时地发现缺陷&#xff0c;帮助交付有价值的高质量产品。 传统测试与敏捷测试的比较大的区别在于&#xff1a; 在瀑布方法中&#xff0c;测试只能在开发…

400G光模块知识大全

400G光模块是目前高速传输领域中的一种先进产品&#xff0c;被广泛应用于高性能数据中心、通信网络、大规模计算、云计算等领域。本文将从400G光模块的定义、技术、产品型号、应用场景以及未来发展方向进行详细介绍。一、什么是400G光模块&#xff1f;400G光模块是指传输速率达…

PCI子系统

很多网络接口卡都是外围组件互联&#xff08;Peripheral Compaonent Interconnect&#xff09;设备&#xff0c;必须与Linux PCI子系统协同工作&#xff0c;并非所有的网络接口都是PCI设备&#xff0c;很多嵌入式设备的网络接口连接的就不是PCI总线&#xff0c;这些设备的初始化…

学习 Python 之 Pygame 开发魂斗罗(六)

学习 Python 之 Pygame 开发魂斗罗&#xff08;六&#xff09;继续编写魂斗罗1. 创建碰撞类2. 给地图添加碰撞体3. 让人物可以掉下去4. 实现人物向下跳跃5. 完整的代码继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗&#xff08;五&#xff09;中&#xff0c;我…