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

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,可伸缩的类型 )。各等级支持的功能如下:

相关文章:

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

写在前面: 入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!! 1.功能概述 以TC397芯片为例,英飞凌芯片集成了MPU模块, MPU模块采用了硬件机…...

题单:冒泡排序1

题目描述 给定 n 个元素的数组(下标从 1 开始计),请使用冒泡排序对其进行排序(升序)。 请输出每一次冒泡过程后数组的状态。 要求:每次从第一个元素开始,将最大的元素冒泡至最后。 输入格式…...

多目标优化策略之一:非支配排序

多目标优化策略中的非支配排序是一种关键的技术,它主要用于解决多目标优化问题中解的选择和排序问题,确定解集中的非支配解(也称为Pareto解)。 关于什么是多目标优化问题,可以查看我的文章:改进候鸟优化算法之五:基于多目标优化的候鸟优化算法(MBO-MO)-CSDN博客 多目…...

Go学习:字符、字符串需注意的点

Go语言与C/C语言编程有很多相似之处,但是Go语言中在声明一个字符时,数据类型与其他语言声明一个字符数据时有一点不同之处。通常,字符的数据类型为 char,例如 :声明一个字符 (字符名称为 ch) 的语句格式为 char ch&am…...

Linux文件原生操作

Linux 中一切皆文件,那么 Linux 文件是什么? 在 Linux 中的文件 可以是:传统意义上的有序数据集合,即:文件系统中的物理文件 也可以是:设备,管道,内存。。。(Linux 管理的一切对象…...

解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(7)(其他Hint)

10.5.3. 常用hint 10.5.3.7. 其他Hint 1)cardinality:显式的指示优化器为SQL语句的某个行源指定势。该Hint具体语法如下所示。 SQL> select /*+ cardinality([@qb] [table] card ) */ ...; --注: 1)这里,第一个参数(@qb)为可选参数,指定查询语句块名;第二个参数…...

JavaScript系列(50)--编译器实现详解

JavaScript编译器实现详解 🔨 今天,让我们深入探讨JavaScript编译器的实现。编译器是一个将源代码转换为目标代码的复杂系统,通过理解其工作原理,我们可以更好地理解JavaScript的执行过程。 编译器基础概念 🌟 &…...

大数据相关职位 职业进阶路径

大数据相关职位 & 职业进阶路径 📌 大数据相关职位 & 职业进阶路径 大数据领域涵盖多个方向,包括数据工程、数据分析、数据治理、数据科学等,每个方向的进阶路径有所不同。以下是大数据相关职位的详细解析及其职业进阶关系。 &#…...

基础项目实战——学生管理系统(c++)

目录 前言一、功能菜单界面二、类与结构体的实现三、录入学生信息四、删除学生信息五、更改学生信息六、查找学生信息七、统计学生人数八、保存学生信息九、读取学生信息十、打印所有学生信息十一、退出系统十二、文件拆分结语 前言 这一期我们来一起学习我们在大学做过的课程…...

C++,STL,【目录篇】

文章目录 一、简介二、内容提纲第一部分:STL 概述第二部分:STL 容器第三部分:STL 迭代器第四部分:STL 算法第五部分:STL 函数对象第六部分:STL 高级主题第七部分:STL 实战应用 三、写作风格四、…...

【Rust自学】15.3. Deref trait Pt.2:隐式解引用转化与可变性

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 15.3.1. 函数和方法的隐式解引用转化(Deref Coercion) 隐式解引用转化(Deref Coercion)是为函数和方法提供的一种便捷特性。 它的原理是…...

密码强度验证代码解析:C语言实现与细节剖析

在日常的应用开发中,密码强度验证是保障用户账户安全的重要环节。今天,我们就来深入分析一段用C语言编写的密码强度验证代码,看看它是如何实现对密码强度的多维度检测的。 代码整体结构 这段C语言代码主要实现了对输入密码的一系列规则验证&a…...

arkts bridge使用示例

接上一篇:arkui-x跨平台与android java联合开发-CSDN博客 本篇讲前端arkui如何与后端其他平台进行数据交互,接上一篇,后端os平台为Android java。 arkui-x框架提供了一个独特的机制:bridge。 1、前端接口定义实现 定义一个bri…...

LINUX部署微服务项目步骤

项目简介技术栈 主体技术:SpringCloud,SpringBoot,VUE2, 中间件:RabbitMQ、Redis 创建用户 在linux服务器home下创建用户qshh,用于后续本项目需要的环境进行安装配置 #创建用户 useradd 用户名 #设置登录密…...

zsh安装插件

0 zsh不仅在外观上比较美观,而且其具有强大的插件,如果不使用那就亏大了。 官方插件库 https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins 官方插件库并不一定有所有的插件,比如zsh-autosuggestions插件就不再列表里,下面演示zs…...

网站如何正式上线(运维详解)

因为平台原因,不能有太多链接,所以下文中链接都删除了,想访问的去原文链接:https://www.zhoudongqi.com/ TIPS 这篇文章是我自己运营运维的wordpess站点的经验总结,可以说十分详细,域名,服务器和…...

SQL server 数据库使用整理

标题:SQL server 数据库使用整理 1.字符串表名多次查询 2.读取SQL中Json字段中的值:JSON_VALUE(最新版本支持,属性名大小写敏感) 1.字符串表名多次查询 SELECT ROW_NUMBER() OVER (ORDER BY value ASC) rowid,value…...

【Rust自学】17.2. 使用trait对象来存储不同值的类型

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 17.2.1. 需求 这篇文章以一个例子来介绍如何在Rust中使用trait对象来存储不同值的类型。 …...

初始化mysql报错cannot open shared object file: No such file or directory

报错展示 我在初始化msyql的时候报错:mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解读: libaio包的作用是为了支持同步I/O。对于数据库之类的系统特别重要,因此…...

2025年1月22日(网络编程)

系统信息: ubuntu 16.04LTS Raspberry Pi Zero 2W 系统版本: 2024-10-22-raspios-bullseye-armhf Python 版本:Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习…...

Jetson AGX Orin到手后,第一件事不是装CUDA,而是先搞定这个源(附nvidia-l4t-apt-source.list配置)

Jetson AGX Orin开发板开箱必做:正确配置软件源的深度指南 当你第一次拿到Jetson AGX Orin这款强大的边缘计算设备时,兴奋之余可能会迫不及待地想要安装CUDA、cuDNN等AI开发环境。但很多开发者都会在这里踩到一个"坑"——直接运行sudo apt ins…...

别再混淆了!给数据科学新手的平稳性、自相关性核心概念白话图解

时间序列分析入门:用生活化类比理解平稳性与自相关性 刚接触时间序列分析时,你是否曾被"平稳性"和"自相关性"这些术语搞得一头雾水?就像第一次学游泳时,教练说的"打腿节奏"和"换气时机"一…...

干货版《算法导论》04:渐近复杂度与序列接口实战

干货版《算法导论》04:渐近复杂度与序列接口实战Bilibili 同步视频✨ 开篇引言一、为什么要做「算法问题精讲」?二、渐近复杂度:函数增长排序的终极法则1. 核心增长关系(必背!)2. 解题通用方法3. 阶乘与二项…...

基于帕尔贴效应的智能冷饮机制作:从热电制冷原理到嵌入式控制实践

1. 项目概述与核心思路在炎热的夏天,没有什么比一杯冰镇饮料更让人舒爽的了。但传统的加冰方式往往会稀释饮料的风味,而市面上的小型制冷设备要么体积庞大,要么价格不菲。作为一名热衷于将电子技术与生活创意结合的爱好者,我一直在…...

保姆级教程:手把手教你将VisDrone数据集转成MOT格式,适配MOTR等模型训练

保姆级教程:手把手教你将VisDrone数据集转成MOT格式,适配MOTR等模型训练 在计算机视觉领域,多目标跟踪(MOT)一直是研究热点之一。而VisDrone作为无人机视角下的经典数据集,其丰富的场景和挑战性的标注使其成为MOT研究的理想选择。…...

Taotoken CLI工具安装与一键配置全模型环境指南

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken CLI工具安装与一键配置全模型环境指南 对于需要接入多个大模型服务的开发团队而言,统一管理API密钥、模型配置…...

基于CircuitPython与BLE的智能振动腕带:从硬件选型到代码实现

1. 项目概述:打造你的智能触觉腕上伴侣如果你和我一样,经常被淹没在手机通知的海洋里,或者在专注工作时完全忘记了时间,那么这个项目可能就是为你量身定做的。今天,我们来动手制作一个基于CircuitPython和蓝牙低功耗&a…...

别再只会用StegSolve了!深入理解LSB隐写原理,手写Python脚本提取隐藏信息

从像素到秘密:手写Python脚本破解LSB隐写的核心技术 当你面对一张看似普通的图片,是否曾想过它可能隐藏着重要信息?在CTF竞赛和数字取证领域,LSB(最低有效位)隐写术是最基础却最常被忽视的技术之一。大多数…...

使用Taotoken CLI工具一键配置团队开发环境与统一模型端点

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken CLI工具一键配置团队开发环境与统一模型端点 当团队需要统一接入多个大模型时,为每位成员手动配置API密钥…...

Wwise音频处理完整指南:从游戏音效解包到个性化替换的终极方案

Wwise音频处理完整指南:从游戏音效解包到个性化替换的终极方案 【免费下载链接】wwiseutil Tools for unpacking and modifying Wwise SoundBank and File Package files. 项目地址: https://gitcode.com/gh_mirrors/ww/wwiseutil 还在为游戏音频文件无法编辑…...