当前位置: 首页 > news >正文

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

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

内存保护_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 );

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

相关文章:

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

上一篇 | 返回主目录 | 下一篇 内存保护_1:Tricore芯片MPU模块介绍1 何为MPU2 MPU相关的硬件子系统2.1 基于地址范围保护逻辑说明2.1.1 地址范围寄存器2.1.2 读、写、执行权限寄存器2.1.3 保护集设置位2.1.4 内存保护功能使能位2.1.5 核的内存保护范围获取说明2.1.6…...

Vue3 -- PDF展示、添加签名(带笔锋)、导出

文章目录笔锋签名方案一实现要点实现过程组件引用页面元素添加引用实现代码效果展示缺点方案二修改页面元素替换引用修改代码效果展示完整代码地址实现功能的时候采用了两个方案,主要是第一个方案最后的实现效果并不太理想,但实现起来比较简单&#xff0…...

行测-判断推理-图形推理-样式规律-属性规律-曲直性

左边的图全是由曲线构成的选C1 3 5全是由曲线构成的2 4 6全是由直线构成的第三行的图形有曲有直选A1 3 5有曲有直2 4 6全是直线选D图形有曲有直,排除B D外曲内直->内曲外直->外曲内直->内曲外直->外曲内直->内曲外直所以问号出的图形应该是内曲外直选…...

idea集成Alibaba Cloud Toolkit插件

idea集成Alibaba Cloud Toolkit插件 ​ 使用该插件主要是简化打包、上传、启动服务的相关操作。 ​ 很早之前的方式是使用开发工具(eclipse,idea),使用maven命令完成项目打包(这里指jar),然后通过shell工…...

Win11 文件夹打开慢或卡顿解决方案

问题 目前是 2023/2/27, 我的 Win11 系统点开一个文件夹要等待 2-3 秒才能加载出来, 使用体验极差。网上查阅大量资料, 有些人在系统更新后这个情况就消失了, 但是我这一直存在, 系统也是当前的最新版, 没有修复。 目前得出的结论是, 因为 Win11 的工具栏占用了过多的资源, 需…...

【PostgreSQL的idle in transaction连接状态】

在平时查询pg_stat_activity这个视图的时候,每一行包含了一个进程的相关信息,包含当前正在执行的SQL,或者会话的状态等等,state字段表示当前进程的状态。在PostgreSQL数据库里,其实代码里总共定义了7种BackendState&am…...

cityengine自定义纹理库资源

背景 cityengine虽然可以将shp生成带纹理的三维模型,但是纹理不一定满足我们的要求,这时候我们就想用我们自己制作的纹理 粗略了解规则文件 了解Building_From_Footprint.cga这个规则文件,具体文件位置默认在 “C:\Users[电脑用户名:如Administrator]\Documents\CityEng…...

taobao.top.secret.bill.detail( 服务商的商家解密账单详情查询 )

¥免费必须用户授权 服务商的商家解密账单详情查询,仅对90天内的账单提供SLA保障。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient…...

2023软件测试金三银四常见的软件测试面试题-【抓包和网络协议篇】

八、抓包与网络协议 8.1 抓包工具怎么用 我原来的公司对于抓包这块,在App的测试用得比较多。我们会使用fiddler抓取数据检查结果,定位问题,测试安全,制造弱网环境; 如:抓取数据通过查看请求数据,请求行&…...

vue脚手架多页自动化生成实践

前言 在前端开发过程中,常常面对多种业务场景。到目前为止,前端对于不同场景的处理通常会采用不同的渲染方案来组合处理,常见的渲染方案包括:CSR(Client Side Rendering)、SSR(Server Side Rendering)、SSG(Static Site Generati…...

【SQL语句优化】

SQL语句优化是提高数据库查询性能的重要手段之一,下面是几种常见的SQL语句优化方法和案例: 减少查询的数据量 减少查询的数据量:使用 WHERE 子句和索引来限制检索行数,只检索需要的行,避免检索全部行数据。 例子&am…...

阿里P8:做测试10年我的一些经验分享,希望你们少走弯路

我是在2015年毕业的,当时是读的普通本科,不上不下的专业水平,毕业的时候,恰好遇到了金融危机。校园招聘里阴差阳错的巧合,让我走上了软件测试工程师的道路。 入职第一天,来了个高大上的讲师,记…...

栈在括号匹配中的应用(栈/链栈 纯C实现)

目录 1 问题背景 2 具体思路 3 代码实现 3.1 顺序栈实现 3.2 链栈实现 1 问题背景 栈的括号匹配问题是指在给定一个字符串(包含多种括号),判断其中的括号是否能够正确匹配,即每个左括号是否有一个对应的右括号与之匹配&#x…...

C语言Switch语句用法

C switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。 语法 C 语言中 switch 语句的语法: switch(expression){case constant-expression :statement(s);break;…...

Curl编码请求参数,API接口请求示例参数

请求参数请求参数:num_iid610947572360 参数说明:num_iid:1688商品ID sales_data:&sales_data1 获取近30天成交数据 agent:&agent1 获取1688分销代发价格数据请求示例 测试入口 Curl PHP PHPsdk JAVA C# Python-- 请求示例 url 默认请求参数已经…...

【C/C++】类型限定符extern、const、Volatile、register

1、extern: 声明一个变量,extern声明的变量没有建立存储空间。 extern int a ; //变量在定义的时候创建存储空间。 ①当我们在编译器中试图运行以下代码,系统会报错。 错误原因是“无法解析外部符号_a”.系统认为变量a是没有开辟内存空间的…...

day54【代码随想录】二刷数组

文章目录前言一、二分查找(力扣724)二、移除元素(力扣27)【双指针】三、有序数组的平方(力扣977)【双指针】四、合并两个有序数组(力扣88)五、长度最小的子数组(力扣209&…...

哪个品牌蓝牙耳机性价比高?性价比高的平价蓝牙耳机推荐

现如今,随着蓝牙技术的进步,蓝牙耳机在人们日常生活中的便捷性更胜从前。越来越多的蓝牙耳机品牌被大众看见、认可。那么,哪个品牌的蓝牙耳机性价比高?接下来,我给大家推荐几款性价比高的平价蓝牙耳机,一起…...

揭秘关于TFRcord的五脏六腑

揭秘关于TFRcord的五脏六腑 前言:本篇文章将演示如何创建、解析和使用tf.Example消息,以及如何在.tfrecord文件之间对tf.Example消息进行序列化、写入和读取。 教程讲解使用的都是结构化数据,文章最后还会演示如果将图片写成.tfrecord文件&am…...

【Shell学习笔记】3.Shell 传递参数及数组

前言 本章介绍Shell的传递参数和数组。 Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,…...

【终结Bug】ModuleNotFoundError: No module named ‘cv2’

解决方案: 打开 cmd键入 pip install opencv_python -i https://pypi.tuna.tsinghua.edu.cn/simple...

SQL Server2008详细安装步骤(保姆式教程)

安装包下载 链接:https://pan.baidu.com/s/1Rjx4DHJBeCW2asC_4Kzo6Q?pwdchui 提取码:chui 安装过程 1.解压后使用管理员身份打开安装程序 2.选择全新安装或向现有安装添加新功能 3.确认 4.输入产品密钥(上方网盘安装包里有&#xff0…...

Linux常用操作

Linux常用操作 前言常用命令:一些操作命令:前言 本文是笔者在使用cadence的过程中,操作linux的笔记,仅记录个人常用,持续更新 常用命令: (1)高频:会了这几个就能在文件…...

Golang 处理parquet文件实战教程

Parquet是Apache基金会支持的项目,是面向列存储二进制文件格式。支持不同类型的压缩方式,广泛用于数据科学和大数据环境,如Hadoop生态。 本文主要介绍Go如何生成和处理parquet文件。 创建结构体 首先创建struct,用于表示要处理…...

腾讯TIM实现即时通信 v3+ts实践

目录 初始化sdk 功能描述 初始化 准备 SDKAppID 调用初始化接口 监听事件 发送消息 创建消息 创建文本消息 登录登出 功能描述 登录 登出 销毁 登录设置 获取会话列表 功能描述 获取会话列表 获取全量的会话列表 历史消息 功能描述 拉取消息列表 分页拉取…...

华为OD机试 - 回文字符串(Java JS Python)

题目描述 如果一个字符串正读和反渎都一样(大小写敏感),则称它为一个「回文串」,例如: leVel是一个「回文串」,因为它的正读和反读都是leVel;同理a也是「回文串」art不是一个「回文串」,因为它的反读tra与正读不同Level不是一个「回文串」,因为它的反读leveL与正读不…...

APP测试的7大注意点。

1. 运行 1) App安装完成后的试运行,可正常打开软件。 2) App打开测试,是否有加载状态进度提示。 3) App⻚面间的切换是否流畅,逻辑是否正确。 4) 注册 同表单编辑⻚面 用户名密码⻓度 …...

设计模式-第4章(装饰模式)

装饰模式装饰模型装饰模式示例商场收银程序(简单工厂策略装饰模式实现)装饰模式总结装饰模型 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为…...

【算法设计-分治】快速幂与龟速乘

文章目录1. 快速幂2. 龟速乘3. 快速幂取模4. 龟速乘取模5. 快速幂取模优化1. 快速幂 算法原理: 计算 311: 311 (35)2 x 335 (32)2 x 332 3 x 3仅需计算 3 次,而非 11 次 计算 310: 310 (35)235 (32)2 x 332 3 x 3仅需计算…...

基于新一代kaldi项目的语音识别应用实例

本文是由郭理勇在第二届SH语音技术研讨会和第七届Kaldi技术交流会上对新一代kaldi项目在学术及“部署”两个方面报告的内容上的整理。如果有误,欢迎指正。 文字整理丨李泱泽 编辑丨语音小管家 喜报:新一代Kaldi团队三篇论文均被语音顶会ICASSP-2023接…...

建设行业网站平台的瓶颈/网站收录软件

题目 本题是谭浩强《C程序设计课后习题》题8.11。 题目: 在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输 出这10个已排好序的字符串。 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。—…...

黄岩城乡住房和建设局网站/网络推广产品要给多少钱

1、字符串判断 str1 str2     当两个串有相同内容、长度时为真 str1 ! str2    当串str1和str2不等时为真 -n str1       当串的长度大于0时为真(串非空,变量) -z str1       当串的长度为0时为真(空串) str1        当串str1为非空时…...

淘宝客做网站好还是建群号/自动优化句子的软件

一、编辑Grafana配置文件,设置发件人 docker安装的Grafana: vim /home/monitor/grafana/config/grafana.iniyum安装: vim /etc/grafana/grafana.ini在[smtp] 标签下 修改配置 # 配置邮件服务器 [smtp] enabled true # 发件服务器 host s…...

做微商卖产品在哪个网站销量能好点/千峰培训出来好就业吗

用rmoutliers()函数即可移除数据组中的离群值,可作数据清洗的初步方法。如果是移除一类数据,可以用方差分析、主成分析、相关性分析、皮尔逊相关系数等方法。 语法 最简单的用法是第一个,其中A是输入的数据,B是输出的数据。 B …...

福田工作招聘/济南seo整站优化招商电话

在开始使用Ajax辅助方法前,必须在页面中载入jQuery以及jquery.unobtrusive-ajax.js文件才能正常执行。 为了让网站载入适当的JS函数库,必须先让Layout页面载入适当的JS文件,在MVC4模板中,默认已将Jquery文件加入,代码如…...

珠海移动app开发公司/什么是搜索引擎优化推广

2011-06-18 回答这个程序所用的文件名可以直接从命令行给出,例如生成了a.exe文件,那么:a.exeb.txt执行这个命令行,程序就会统计b.txt.文件中的字母数量。学习编程就像学数学,最重要的就是自己独立思考,像这…...