上线了 建立网站/网络服务有哪些
目录
MPU机制与实现详解
Partition元素-MPU
Partition实现元素OSApplication
Partition元素-RTE
MPU机制与实现详解
1、freedom from interference
此概念来自ISO26262-1:多个元素之间没有可能导致违反安全目标的级联故障,称之为免于干涉。
在左侧的设计中,ASIL A的软件模块不可能影响ASIL C的模块,因此ASIL C模块对ASIL A模块免于干涉。
在右侧的设计中,存在从ASIL A到ASIL C系统的数据/控制流 。结果,至少在没有任何进一步分析的情况下,ASIL C系统无法实现对于ASIL A软件模块的免于干涉。ASIL C系统可能会受到ASIL A系统的影响。在这种情况下,需要采取进一步的设计或验证措施,以免受到干扰。例如,ASIL C系统可以首先检查ASIL A系统数据的正确性。考虑到这一措施,ASIL C组件将实现免于干涉。
2、Separation in Memory
Vector 的MICROSAR OS将TASK ISR IOC等集合成OS Application,以便将不同的应用划分到不同的内存区间。针对软件进行的模块化和分区可以提高软件系统的康故障鲁棒性。
同一安全等级的软件或实现同一个安全目标的软件划分到同一个模块或者OS Application。当故障发生时,可以很好的防止出现错误级联,从而实现freedom form interference.
SC3 SafeContex OS中必须具备整个软件中最高的 安全等级,例如软件中最高等级的模块位ASIL C,那么OS必须要具备ASIL C等级,才能保证软件模块的安全等级。
SC3 SafeContex OS会运行在Supervisor Mode,保证运行在系统的最高权限。通过Memory Partition,将各个模块在内存访问上的操作进行隔离。如果需要附加模块之间的访问安全机制,可以有效的达到各个不同安全等级模块之间的freedom from interference.
3、Partitioning Options
Davinci 针对Memory Partitionning 有两种解决方案:
1、 BSW运行在Non-Trusted,或者QM-partition,配合Safe WDG的时间监控(deadline)以及OS Scalability Class 3/4。这种情况适合与ECU Software中只有一小部分的软件是功能安全目标实现模块,另外较大一部分是QM。与底层的BSW交互较多。这种交互不需要跨越partition,SafeWDG作为有安全等级的模块出现,且由于其功能是监控软件运行,一般作为软件中最高安全等级。
2、BSW所有模块选择safety 等级模块,与ECU中safety等级的其他功能模块安全等级一致。可以设置为最高安全等级或者QM的其他安全等级,最好与那些BSW交互较多的软件模块设置成一致的安全等级。这样可以有效降低跨越partition所带来的OS切换消耗时间。这种方案适合与有一大部分软件模块都是safe-related模块的ECU。
除此之外,MCAL和外设模块与BSW模块之间的交互也需要评估,与BSW有交互的模块需要划分到BSW同级的模块,并且需要具备该安全等级。
4、Memory Protection
Davinci Safe提供了针对software partition的memory protection,是实现同一个ECU中具备不同安全等级的软件模块时必须要实现的freedom form interference 方法。
Partition元素-MPU
1、MPU介绍
Memory Protection 的实现需要配合硬件MPU。通过MPU配置,各个软件模块将具备对不同memory区域的不同访问权限,主要包括RAM ROM,以及外设寄存器的访问权限。例如,配置低安全等级软件模块无法对高安全等级软件模块的flash RAM段进行访问,(需要配合编译器,将软件模块编译到不同到区域)即可有效防止低安全等级的软件模块在故障产生时对高安全等级模块发生级联醒错误。
MPU的配置是通过设置多个MPU region来实现的,每个MPU region的可配置选项包括: 被保护的起始地址,访问权限,所属硬件MPU分类,Region Owner 以及有效ID等。
一般来讲,MPU分为两类:
System Memory Protection Uint:SMPU
SMPU主要存在于多核系统中,用于对各个BUS设定内存访问权限。一般来讲,SMPU由OS在启动时设定好,在软件运行过程中不会被重新设置,不会在软件中动态的更改BUS对内存的访问权限。
Core Memory Protection Uint:CMPU
CMPU一般负责多核的内存保护,一般每个内核都具备一定数量的CMPU,可以为运行在该内核上的OS Application TASK ISR等分别设定不同的内存区域以及外设地址的访问权限,从而实现软件模块的分区。
CMPU的访问权限包括读、写、执行权限,可以根据内存区域存储内容设定,CMPU在OS的运行过程中是可以更改权限的。当各个OS Application的权限被设定好之后,OS会在OS Application切换时对MPU相关寄存器进行重重新初始化,并设置位即将切换到的OS Application权限。当出现访问超过MPU权限允许范围时,MCU exception会被出发并进入其相应的OS 处理函数,用户可以根据情况 Shutdown OS或者选择进入安全模式,从而有效阻止了软件访问故障的发生。
在OS SC3/SC4中OS Application分为两类,具备最高安全等级的OS Application设定位Tusted Application, 其他不具备Trusted属性的Application 属于Non-Trusted Application,OS和Trusted Application 运行在Supervisor Mode下,Non-Trusted Application则运行在User模式下。推荐为Truesd Application 设定除Stack区域以外的所有地址方位的读、写、执行权限,包括外设地址。
为Non-Trusted Application设定属于其私有的CFlash 和RAM段的访问权限,以及共享数据区域的读写权限。
用户可以根据ECU软件各个模块的安全等级情况,将软件划分的到多个OS Application 中,依据MCU资源设定MPU,进而实现不同安全等级的软件模块的协同工作,并把故障级联的概率降到允许范围内的需求。
2、SMPU和CMPU
2.1、SMPU特性
用于核之间的安全隔离,实现免于干涉SMPU限制核对某些内存空间或者MCU上通过总线访问的外部资源,一般只限制写权限在OS初始化时被初始化,运行过程不会改变。
配置步骤
2.2、CMPU特性
同一核上OS Application Task ISR之间的安全隔离
在启动代码或者运行中设置,限制权限包括读、写、执行权限
配置步骤:
2.3、Static MPU Regions特性
对MPU Regions不指定具体的Owner,对所有软件模块都生效
系统启动时设定好,可以是SMPU 或者CMPU,运行过程中不会改变
2.4、Dynamic MPU Regions特性
对MPU Regions 指定Owner,Owner可以是OS Application TASK ISRS
根据Owner 运行与否,代码运行过程中进行enable/disable
2.5、Optimized /Fast Core MPU Handing
利用Memory Protection Identifiers值的变化,选择性使用MPU Regions,在不重新初始化MPU寄存器的情况下,OS切换到某线程,同时具备PID MPU Region ,实现Dynamic MPU切换。
3、MPU的配置
在常见的软件设计中,由于将软件整体开发到相同的ASIL等级会耗费大量的资源。一般情况下只有一部分软件会开发生ASIL等级,其他模块开发成相对较低的安全等级,为了达到freedom from inerference,需要限制低等级模块对高等级模块的访问。下面举例说明MPU配置的常见思路。
-
从Safety方面,高等级的软件模块可以访问其Memroy以及安全等级较低的软件模块Memory。
-
从工具方面,MPU可以被配置为各个OS Application TASK ISR 分别独立具备访问范围,工具并不会因为软件模块安全等级的高低而对OS RTE有区别配置,而只是采用模块间的隔离策略。隔离机制不会生成在RTE中。
-
从系统角度,整体软件至少需要一个Trusted部分(以OS Application为单位划分),并且Trusted部分是安全等级最高的模块,可以访问其他模块的Memory。
-
总结,使用MemMap机制,将各个OS Application所占用Code Data资源进行良好整齐的存放基础上,MICROSAR 的推荐MPU配置为:
-
设置软件中等级最高的软件模块为Trusted Os Application,同时设置位privilege。并设置Memory Region,允许该Application访问呢所有Memory段和外设。
-
其他每个安全等级模块各设定至少一个OS Applcaiton,并设置为Non-Trusted,针对其设定允许对整个Memory的读权限,和模块代码的执行权限,以及Stack的写权限,共享数据区域的读或者读写权限。
-
关于Stack,不需要用户自己设定,OS会占用一个Memory Region进行Stack设置,因此需要留一个Memory Region给到OS。
-
共同使用Static MPU 和Dynamic MPU,配合OsAppMemoryProtectionIdentifier的作用,尽量减少MPU在代码运行过程中的重新初始化,这样可以降低OS contex切换的时间。
配置思路:
3.1、MPC MPU硬件特性及配置
以MPC5744 单核为例介绍,硬件资源如下:
-
16个SMPU,24个CMPU,12个data 6个instruction 6个 shared
-
2个supervisor ,3种访问权限
-
6个可以选择的SMPU访问对象,即6个master ID,分别对应MCU总线上的外设单元
在配置工具中查看硬件资源:
针对OS Application /TASK /ISR设定Memory Region,依次设置其参数并关联到需要生效的OS Application TASK ISR。根据需要对SMPU进行配置,如果所有MPU都没有使用SMPU,OS会在初始化时禁止 Gloabl SMPU Control Bit,SMPU将不会生效。同理CMPU,即使OS 设定为SC3,不设置任何MPU Region,那么MPU会被disable。
MPU配置如下图所示,其中被标注蓝色框的选项是必须设置的选项:
MPC系列的特殊配置:
Memory Region Bus Master:设置允许访问MPU设置地址的Master,仅针对SMPU有效
Memory Region Flag :访问行为的属性,可以参数硬件手册
当出现MPU错误时,代码会进入
Os_Hal_Exception_Machine_MCSRR
Os_Hal_Exception_Data
Os_Hal_Exception_Instrcution
Partition实现元素OSApplication
3.1、OS/OsApplication权限以及访问的权限切换
硬件MCU支持两种访问模式,Privileded 和Non-privileded。其中前者具有比较高的权限,有一部分寄存器需要在前者模式下才能被访问,详细可以参考RM手册。OS会运行在Privilege Mode,具有最高的访问权限,可以访问所有寄存器。
在采用不同的功能安全等级的软件模块协调工作的的系统软件中,需要利用MPU单元防止低安全等级的模块对硬件寄存器进行访问,同时限制除最高安全等级模块之外的其他软件模块的Memory访问。
3.1.1、 OS/OsApplication权限
OS 具备最高权限 Privilege Mode Trusted
Trusted OS Application - Privileged Mode Trusted,一般将软件按照安全等级划分,并分别归属到不同的OsApplication中,其中安全等级最高的部分设置为Trusted,属于可信度最高的模块。目前建议Trusted OsApplication具备其他Application Stack的所有区域访问权限。
3.1.2 MCAL模块Protected Registers 访问
系统初始化时,进行MPU初始化,在此之前MPU处于Disable状态,一般在OS启动初始化MCAL模块,此时可以访问Protected Register。在OS初始化以后,如果MCAL模块需要在Privilege Mode运行时,基本可以分为以下几类:
1、Vector Modules,例如CAN/LIN ETH等通讯模块,一般CAN需要勾选CanUserPeripheralAccessApi,并根据PROTED AREA中的定义相应的OsApplication,CAN将会调用OS接口进行privilege权限的获取。
2、MCAL模块一般需要开启User Mode,例如FlsEnableUserModeSupport,勾选以后,MCAL会采用privilege Mode进行访问。
3.1.3 OsShutdown的实现
AUTOSAR要求只有在Trusted OsApplication才可以进行OsShutdown,否则将无法shutdown成功。可以通过Event的方式通知Trusted Task调用OsShutdown Api。但是需要设置一个高优先级/不可抢占/拓展类的TASK,代码示例如下:
在向FBL跳转以及系统最后的Reset务必使用Mcu_PrefromReset,这样才可以disable MPU,否则可以使用代码disable MPU之后,在调用对应的API进行Reset操作。
3.2 、Trusted/Non-Trusted 配置举例
不同等级的OsApplication之间互相调用时涉及到安全问题,需要做安全访问的权限转换。
1.Trusted Funtion
Trusted OS Application供给其他Application调用的函数,应在Privilege Mode下执行。用于Non-Trusted OsApplication调用Trusted OsApplication内部函数,举例如下:
2.Non-Trusted Funtion
Non-Trusted OsApplication供给其他Application调用的函数,应在User Mode下执行,用于其他OsApplication调用Non-Trusted OsApplication 内部函数。配置方式与上面类似。
3.3、MemMap机制与OS数据的存放
MPU需要限制各个OsApplication Task ISR对各个地址的访问权限,所以明确并整理好各个软件模块的代码数据存放位置是关键。通过MemMap机制,和Link文件。可以将各个模块的代码和数据存放到指定的区域,从而实现MPU保护。如下图,MemMap的作用。
当发生MPU错误时,OS会进入ProtectionHook,并返回E_OS_PROTECTION_MEMORY或者E_OS_PROTECTION_EXCEPTION。
Partition元素-RTE
RTE 作为动态配置的虚拟总线模块,负责 OS application 之间的数据交互和访问,在具备 Memory。
partition 的系统中, OS application 之间的访问会存在跨越安全等级的情况, RET 具备一定的免于干扰的。
机制,分别针对各 OS application 产生代码和变量,在后续的软件分区过程中分别将 RET 生成的对应各。
OS application 的 memory 内容分别归其所属。由于大部分的机制由 RTE 自动完成,需要用户设置的主要。
有以下几点:
-
为 OS application 分别关联 ECUC partition
-
生成代码,按照 RTE 段的内容分别归属到相应的 OS application,并各自设置访问权限的允许,
-
公共的 RTE code(如 RTE_START_SEC_CODE) 需要对所有的 OS application 开放访问权限。
-
尤其针对跨越 OS application 的访问,分别做好 runnable 的 task mapping,确保调用端和被调用端
-
分别 mapping 到对应 task。
-
RTE 端口尽量不要出现悬空状态,或链接不处理数据的状态
相关文章:

MPU机制与实现详解
目录 MPU机制与实现详解 Partition元素-MPU Partition实现元素OSApplication Partition元素-RTE MPU机制与实现详解 1、freedom from interference 此概念来自ISO26262-1:多个元素之间没有可能导致违反安全目标的级联故障,称之为免于干涉。 在左侧的…...

pom文件冲突引起的Excel无法下载
问题一:之前生产环境上可以进行下载Excel的功能突然不能用了 报错提示信息: NoClassDefFoundError: Could not initialize class org.apache.poi.xssf.usermodel.XSSFWorkbook, 在最开始初始化的时候找不到对应的类,虽然我的Libr…...

【HarmonyOS4.0】第十篇-ArkUI布局容器组件(二)
三、层叠布局容器(Stack) 堆叠容器组件 Stack的布局方式是把子组件按照设置的对齐方式顺序依次堆叠,后一个子组件覆盖在前一个子组件上边。 注意:Stack 组件层叠式布局,尺寸较小的布局会有被遮挡的风险, …...

PLECS如何下载第三方库并导入MOSFET 的xml文件,xml库路径添加方法及相关问题
1. 首先xml库的下载,PLECS提供了一个跳转的链接。 https://www.plexim.com/download/thermal_models 2. 下载一个库(以最后一个Wolfspeed为例,属于CREE的SiC MOSFET) 下载这个就行,都包含了。不信自己可以试试再下载…...

使用emu8086实现——子程序的设计
一、实验目的 学习子程序的结构、特点,以及子程序的设计和调试方法 二、实验内容 1、从字符串中删除一个字符,并存储到寄存器AX中。 代码及注释: data segmentstring db exas ;字符串内容leng dw $-string ; 字符串长度key db x …...

快速排序、归并排序、希尔排序(2023-12-25)
参考文章 十大经典排序算法总结整理_十大排序算法-CSDN博客 推荐文章 算法:归并排序和快排的区别_归并排序和快速排序的区别-CSDN博客 package com.tarena.test.B20; import java.util.Arrays; import java.util.StringJoiner; public class B25 { static i…...

Qt SDL2播放Wav音频
这里介绍两种方法来实现Qt播放Wav音频数据。 方法一:使用QAudioOutput pro文件中加入multimedia模块。 #include <QApplication> #include <QFile> #include <QAudioFormat> #include <QAudioOutput>int main(int argc, char *argv[]) {…...

[ACM学习] 动态规划基础之一二三维dp
课内学习的动态规划 有记忆的迭代 优化解的结构:原始问题的一部分解是子问题的解 三要素:1.子问题 2.状态的定义 3.状态转移方程 定义 线性dp的一道例题 dp[i]表示以位置 i 结尾的方案总数,dp[4]2,因为:首先只放一…...

Qt点击按钮在其附近弹出一个窗口
效果 FS_PopupWidget.h #ifndef FS_POPUPWIDGET_H #define FS_POPUPWIDGET_H#pragma once#include <QToolButton> #include <QWidgetAction> #include <QPointer>class QMenu;class FS_PopupWidget : public QToolButton {Q_OBJECTpublic:FS_PopupWidget(QW…...

Springboot注解@Configuration和@Bean注解作用,生命周期
简介: Configuration 类是定义 bean 配置的地方,而 Bean 方法是具体创建 bean 实例的方法。 Configuration 作用: Configuration 注解用于定义配置类,表明该类包含一个或多个 bean 定义的方法。Spring 容器在启动时会自动扫描这些…...

30天精通Nodejs--第十五天:Websocket
引言 这里我们将继续深入探讨另一项强大且实时性极高的网络通信技术——WebSocket。通过本篇文章,将全面了解如何在Node.js环境中利用WebSocket实现服务端与客户端之间双向、低延迟的数据传输,并掌握其基础用法以及一些高级应用场景。 基础用法 安装WebSocket库 在Node.j…...

C++深入学习之STL:2、适配器、迭代器与算法部分
适配器概述 C标准模板库(STL)中提供了几种适配器,这些适配器主要用于修改或扩展容器类的功能。STL中的适配器主要包括以下几种: 1、迭代器适配器:迭代器适配器提供了一种机制,可以将非迭代器对象转换为迭代器对象。比如back_ins…...

Tiktok/抖音旋转验证码识别
一、引言 在数字世界的飞速发展中,安全防护成为了一个不容忽视的课题。Tiktok/抖音,作为全球最大的短视频平台之一,每天都有数以亿计的用户活跃在其平台上。为了保护用户的账号安全,Tiktok/抖音引入了一种名为“旋转验证码”的安…...

【Java 设计模式】设计原则
文章目录 ✨单一职责原则(SRP)✨开放/封闭原则(OCP)✨里氏替换原则(LSP)✨依赖倒置原则(DIP)✨接口隔离原则(ISP)✨合成/聚合复用原则(CARP&#…...

Druid连接池工具公式化SQL附踩坑记录
1. 需求 使用Druid连接池工具格式化sql用于回显时候美观展示 2. 代码示例 2.1 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version> </dependency> 2.2 ParseUtils…...

Linux内核--网络协议栈(二)UDP数据包发送
目录 一、引言 二、数据包发送 ------>2.1、数据发送流程 三、协议层注册 ------>3.1、socket系统调用 ------>3.2、socket创建 ------>3.3、协议族初始化 ------>3.4、对应协议的socket创建 ------>3.5、协议注册 四、通过套接字发送网络数据 --…...

基于深度学习的时间序列算法总结
1.概述 深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法,近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元&a…...

nginx中多个server块共用upstream会相互影响吗
背景 nginx中经常有这样的场景,多个server块共用一个域名。 如:upstream有2个以上的域名,nginx配置两个server块,共用一个upstream配置。 那么,如果其中一个域名发生"no live upstreams while connecting to ups…...

基于信号完整性的一些PCB设计建议
最小化单根信号线质量的一些PCB设计建议 1. 使用受控阻抗线; 2. 理想情况下,所有信号都应该使用完整的电源或地平面作为其返回路径,关键信号则使用地平面作为返回路径; 3. 信号的返回参考面发生变化时,在尽可能接近…...

《BackTrader量化交易图解》第8章:plot 绘制金融图
文章目录 8. plot 绘制金融图8.1 金融分析曲线8.2 多曲线金融指标8.3 Observers 观测子模块8.4 plot 绘图函数的常用参数8.5 买卖点符号和色彩风格8.6 vol 成交参数8.7 多图拼接模式8.8 绘制 HA 平均 K 线图 8. plot 绘制金融图 8.1 金融分析曲线 BackTrader内置的plot绘图函…...

什么是欧拉筛??
欧拉筛(Eulers Sieve),又称线性筛法或欧拉线性筛,是一种高效筛选素数的方法。它的核心思想是从小到大遍历每个数,同时标记其倍数为合数,但每个合数只被其最小的质因数标记一次,从而避免了重复标…...

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑩
单元测试 一、任务要求 题目1:根据下列流程图编写程序实现相应处理,程序根据两个输入参数iRecordNum和IType计算x的值并返回。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足基路…...

使用WAF防御网络上的隐蔽威胁之SSRF攻击
服务器端请求伪造(SSRF)攻击是一种常见的网络安全威胁,它允许攻击者诱使服务器执行恶意请求。与跨站请求伪造(CSRF)相比,SSRF攻击针对的是服务器而不是用户。了解SSRF攻击的工作原理、如何防御它࿰…...

Redis基础系列-哨兵模式
Redis基础系列-哨兵模式 文章目录 Redis基础系列-哨兵模式1. 引言2. 什么是哨兵模式?3. 哨兵模式的配置4. 哨兵模式的启动和验证4.1 主master宕机,看会出现什么问题4.2 重启6379主机 5. 哨兵模式的工作原理和选举原理5.1. SDown主观下线(Subj…...

【angular教程240112】09(完) Angular中的数据请求 与 路由
【angular教程240112】09(完) Angular中的数据请求 与 路由 目录标题 一、 Angular 请求数据简介0 使用Angular内置模块HttpClientModule和HttpClientJsonpModule:1 Angular中的GET请求:2 Angular中的POST请求:3 Angular中的JSONP请求:4使用Axios进行数据请求: 二、 详解 Angul…...

go中拷贝文件操作
一. 拷贝文件内容到另一个文件位置 // 拷贝文件内容到另一个文件里面 func copyContent() {filepath1 : "d:/abc.txt"filepath2 : "e:/eee.txt"// 读取内容data, err : os.ReadFile(filepath1) // 使用os.ReadFile函数读取指定路径的文件内容if err ! nil…...

未来气膜体育馆的发展趋势是什么?
未来气膜体育馆的发展趋势是多方面的,以下是其中几个方面的趋势。 起初,随着人们对体育运动的需求不断增加,气膜体育馆的建设和使用将成为一种趋势。气膜体育馆具有灵活性和可移动性的特点,可以快速搭建和拆除,能够适…...

通信扫盲(五)
系列文章目录 1 通信扫盲(一): 通信的本质、通信发展史-各代移动通信的多祉技术、5G、6G应用场景/愿景、LTE是什么?3GPP是什么? 链接:通信扫盲(一) 2 通信扫盲(二&…...

nbcio-boot项目的文件上传与回显处理方法
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…...

《动手学深度学习》学习笔记 第9章 现代循环神经网络
本系列为《动手学深度学习》学习笔记 书籍链接:动手学深度学习 笔记是从第四章开始,前面三章为基础知识,有需要的可以自己去看看 关于本系列笔记: 书里为了让读者更好的理解,有大篇幅的描述性的文字,内容很…...