Autosar-Os是怎么运行的?(内存保护)

写在前面:
入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!!


1.功能概述

以TC397芯片为例,英飞凌芯片集成了MPU模块, MPU模块采用了硬件机制,可实现用户指定的内存范围免受未经授权地数据读取、数据写入和指令访问;在配置MPU的过程,就是赋予一些对象对一些内存区域一定的数据和代码访问权限,当一些对象访问了一些未经授权的代码和数据时,就会产生MPU Trap。 

2.硬件实现 

对于MPU都有哪些元素?

2.1Protection Ranges

MPU保护的内存范围有两种,一个是数据,一个是指令,每个内存范围有低地址和高地址,从而实现特定范围。

以TC397芯片为例,TC397芯片有六个Core,每个Core有18个DataMemoryProtectionRanges,10个CodeProctectionRanges。

  • 每个CPU内核可设置的数据和代码的保护范围有多个,数量从4到32个不等,不同的系列芯片有所不同;
  • 数据内存保护范围的起始地址和结束地址是8字节对齐的,所以可以看到相应寄存器的低3位是Reserve的。
  • 指令内存保护范围的起始地址和结束地址是32字节对齐的,所以可以看到相应寄存器的低五位是Reserve的。
2.2Access Permission

MPU针对每个设定的内存范围,数据有读和写的权限设置,指令有执行的权限设置。

  • DPRE和DPWE的各位控制了对应的数据内存范围的读和写的权限,(DATA)
  • CPXE的各位控制了对应的指令内存范围的执行权限。(Code)
2.3Protection Sets
  • 每个CPU内核有保护集的概念,保护集的数量从1-8个不等,不同系列的芯片有所不同,TC397有6个;
  • 每个保护集都有DPRE/DPWE/CPXE这三个寄存器,可以实现特定的内存保护策略;
  • 保护集允许了不同保护策略的快速切换,当更换权限模式和用户任务时。
  • 可以视为一个任务集合,在Application配置界面可以选择当前Application执行哪个等级的ProtectionSet。实现不同保护策略的快速切换。
2.4PSW.PRS
  • 程序运行状态字寄存器PSW的位域PRS控制了此时有效的保护集;

2.5SYSCON.PROTEN
  • 系统配置寄存器SYSCON的PROTEN位用来使能当前核的内存保护功能。

3.功能实现

3.1Protection Sets

Protections Sets和Code/Data Protection Type在Davinci Configurator的SIP包中根据定制的芯片类型以及预定义好的,只要使用的在配置Protection Range的时候引用就行。

3.2MemoryRegions

相关配置在OS-MemoryProtection-MemoryRegions路径下

3.2.1CodeMemoryRegions

Code-MPU只能添加PSx_X权限。

3.2.2DataMemoryRegions

添加PSx_R权限(read读权限)。若尝试在该memory区写flash会触发MPU hook。

在当前界面配置内存保护区域的起始地址和结束地址,以及其他核通过MemoryRegionProtectionUnit以及哪种ProtectionSets访问当前空间的资源。

MemoryRegionProtectionUnit配置该Protection Range属于哪一个Core的Data/Code MPU Protection Ranges。

举个例子:如果这块区域想要实现只有Core1有Write权限,其他Core只有Read权限。那么6个核都需要分别创建一个DataMemoryRegions,对应MemoryRegionProtectionUnit依次选择0-6。

MemoryRegionAccessRights配置这块区域不同Protection Set的R/W权限。

3.3App Memory Protection identifier

在Application界面可以通过App Memory Protection identifier配置当前Application执行的规则。

举个例子,我在DataMemoryRegions中MemoryRegionAccessRights配置了PS2_R,由于上图中Application配置App Memory Protection identifier = 2,那么当程序运行时,MPU会判断该Application是否执行W的操作,如果是,会触发MPU Hook。

3.4Scalability Class

Os-OS配置项中的Scalability Class选择SC3。

Autosar OS可分为四个等级:SC1~SC4)(SC: Scalability Class,可伸缩的类型 )。各等级支持的功能如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是Maxscript?为什么要学习Maxscript?

MAXScript是Autodesk 3ds Max的内置脚本语言,它是一种与3dsMax对话并使3dsMax执行某些操作的编程语言。它是一种脚本语言,这意味着您不需要编译代码即可运行。通过使用一系列基于文本的命令而不是使用UI操作,您可以完成许多使用UI操作无法完成的任务。 Maxscript是一种专有…

(一)QT的简介与环境配置WIN11

目录 一、QT的概述 二、QT的下载 三、简单编程 常用快捷键 一、QT的概述 简介 Qt(发音:[kjuːt],类似“cute”)是一个跨平台的开发库,主要用于开发图形用户界面(GUI)应用程序,…

vim交换文件的作用

1.数据恢复:因为vim异常的退出,使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑:vim检测到交换文件的存在,会给出提示,以避免一个文件同时被多人编辑。 (vim交换文件的工作原理:vim交换文件的工作…

SpringCloudGateWay和Sentinel结合做黑白名单来源控制

假设我们的分布式项目,admin是8087,gateway是8088,consumer是8086 我们一般的思路是我们的请求必须经过我们的网关8088然后网关转发到我们的分布式项目,那我要是没有处理我们绕过网关直接访问项目8087和8086不也是可以&#xff1…

将多目标贝叶斯优化与强化学习相结合用于TinyML

论文标题 Combining Multi-Objective Bayesian Optimization with Reinforcement Learning for TinyML 作者信息 Mark Deutel, Friedrich-Alexander-Universitt Erlangen-Nrnberg, Germany Georgios Kontes, Fraunhofer IIS, Fraunhofer Institute for Integrated Circuits …

Big Bird:适用于更长序列的Transformer模型

摘要 基于Transformer的模型,如BERT,已成为自然语言处理(NLP)中最成功的深度学习模型之一。然而,它们的一个核心限制是由于其全注意力机制,对序列长度的二次依赖(主要是在内存方面)…

26_DropDown使用方法

创建下拉框DropDown 其中样板Template 是展示的选项框 其中Caption 是选中某个选项之后 展示的内容(Caption Text 说明文字/Caption Image 说明图示) 修改其 说明文字Caption Text 创建一个说明图示Image 设置为居左 而Item是 展示的选项框所展示的文字与…

【redis进阶】redis 总结

目录 介绍一下什么是 Redis,有什么特点 Redis 支持哪些数据类型 Redis 数据类型底层的数据结构/编码方式是什么 ZSet 为什么使用跳表,而不是使用红黑树来实现 Redis 的常见应用场景有哪些 怎样测试 Redis 服务器的连通性 如何设置 key 的过期时间 Redis …

AI大模型开发原理篇-1:语言模型雏形之N-Gram模型

N-Gram模型概念 N-Gram模型是一种基于统计的语言模型,用于预测文本中某个词语的出现概率。它通过分析一个词语序列中前面N-1个词的出现频率来预测下一个词的出现。具体来说,N-Gram模型通过将文本切分为长度为N的词序列来进行建模。 注意:这…

Linux工具使用

1.gcc/g的使用 1.1程序翻译的过程 ①预处理:展开头文件,替换宏,调节编译,去注释。 ②编译:将代码变成汇编语言 ③汇编:将汇编代码变成二进制不可执行的目标文件。 ④链接:将多个我写的多个…

后端token校验流程

获取用户信息 前端中只有 await userStore.getInfo() 表示从后端获取数据 在页面中找到info对应的url地址,在IDEA中查找 这里是getInfo函数的声明,我们要找到这个函数的使用,所以点getInfo() Override public JSONObject getInfo() {JSO…

Python 梯度下降法(二):RMSProp Optimize

文章目录 Python 梯度下降法(二):RMSProp Optimize一、数学原理1.1 介绍1.2 公式 二、代码实现2.1 函数代码2.2 总代码 三、代码优化3.1 存在问题3.2 收敛判断3.3 函数代码3.4 总代码 四、优缺点4.1 优点4.2 缺点 Python 梯度下降法&#xff…

excel如何查找一个表的数据在另外一个表是否存在

比如“Sheet1”有“张三”、“李四”“王五”三个人的数据,“Sheet2”只有“张三”、“李四”的数据。我们通过修改“Sheet1”的“民族”或者其他空的列,修改为“Sheet2”的某一列。这样修改后筛选这个修改的列为空的或者为出错的,就能找到两…

2024年数据记录

笔者注册时间超过98.06%的用户 CSDN 原力是衡量一个用户在 CSDN 的贡献和影响力的系统,笔者原力值超过99.99%的用户 其他年度数据

7层还是4层?网络模型又为什么要分层?

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、为什么要分层 \quad 网络通信的复杂性促使我们需要一种分层的方法来理解和管理网络。就像建筑一样,我们不会把所有功能都混在一起…

JxBrowser 8.2.2 版本发布啦!

JxBrowser 8.2.2 版本发布啦! • 已更新 #Chromium 至更新版本 • 实施了多项质量改进 🔗 点击此处了解更多详情。 🆓 获取 30 天免费试用。

论文阅读(十五):DNA甲基化水平分析的潜变量模型

1.论文链接:Latent Variable Models for Analyzing DNA Methylation 摘要: 脱氧核糖核酸(DNA)甲基化与细胞分化密切相关。例如,已经观察到肿瘤细胞中的DNA甲基化编码关于肿瘤的表型信息。因此,通过研究DNA…

【综合决策模型】考虑生命周期评估LCA 与多目标优化MOO的综合决策模型MOOLCA

目录 1. 概念和目的1.1 生命周期评估 (LCA, Life Cycle Assessment)1.2 多目标优化 (MOO, Multi-Objective Optimization)1.3 MOOLCA 的目标2. MOOLCA 的组成2.1 生命周期评估模块2.2 优化模块2.3 决策支持模块参考Life Cycle Assessment with Multi-Objective Optimization (M…

系统思考—蝴蝶效应

“个体行为的微小差异,可能在系统中引发巨大且不可预测的结果。” — 诺贝尔经济学得主托马斯谢林 我们常说,小变动带来大影响,这种现象,在复杂系统理论中被称为“蝴蝶效应”:即使极小的变化,也能在动态系…

设计模式Python版 适配器模式

文章目录 前言一、适配器模式二、适配器模式实现三、适配器模式在Django中的应用 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&…