桂林建网站,石家庄市建设工程信息网,深圳宝安企业网站建设,上海做网站 公司写在前面#xff1a; 入行一段时间了#xff0c;基于个人理解整理一些东西#xff0c;如有错误#xff0c;欢迎各位大佬评论区指正#xff01;#xff01;#xff01; 1.功能概述
以TC397芯片为例#xff0c;英飞凌芯片集成了MPU模块#xff0c; MPU模块采用了硬件机…写在前面 入行一段时间了基于个人理解整理一些东西如有错误欢迎各位大佬评论区指正 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~SC4SC: Scalability Class可伸缩的类型 。各等级支持的功能如下