当前位置: 首页 > 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 为执行脚本的第二个参数,…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展,企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心,成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统,它不仅支持跨平台应用,还能提供丰富…...