j建设网站,网站建设公司权威排名,承德市住房和城乡建设局官网,个人备案网站内不能出现什么内容目录
1.内存管理概述
2. 内存保护功能
2.1 SPID
2.2 Slave Guard
3.小结 1.内存管理概述
为了讲清楚U2A 在各种运行模式、特权模式下的区别#xff0c;其实首先应该搞清楚不同模式下可以操作的寄存器有哪些。
但是看到这个寄存器模型就头大。 再加上之前没有研究过G4MH…目录
1.内存管理概述
2. 内存保护功能
2.1 SPID
2.2 Slave Guard
3.小结 1.内存管理概述
为了讲清楚U2A 在各种运行模式、特权模式下的区别其实首先应该搞清楚不同模式下可以操作的寄存器有哪些。
但是看到这个寄存器模型就头大。 再加上之前没有研究过G4MH的内核所以这里暂且留个坑。
我们还是来看看继续往下看先来看看内存管理。
U2A是没有MMU的那么它是如何实现虚拟化所需要的MMU机制的呢?
MPU大家见得多了memory protection unit用于防止未授信程序、突发异常事件等访问系统资源来保证整个MCU的正常运行。
在U2A的虚拟化模式中MPU还被细分成了三个块内容如下 Layered Memory Protection Memory Protection Setting Bank Function Memory Protection Setting High Speed Save and Return Function 2. 内存保护功能
我们这里先来看看功能安全44章节功能安全 44.5 memory protection了解常规模式下面memory protection的功能。 Memory访问控制 通过设置保护区域的上下边界进行访问控制 CPU运行模式的访问管理 通过CPU中的几个状态位用于控制对资源的访问并且根据每个程序的可靠性级别将这些位组合使用以执行适当的保护 通过SPID进行保护 使用SPID (system protection identifier)来检查区域是否匹配。 根据芯片手册介绍Memory Protection整体架构如下 该内存保护架构由几部分组成SPID模块、每个核里的MPU、外设的Slave Guard以及memory的Slave Guard。 MPU所有CPU均通过MPU进行访问权限控制它们不会发起访问MPU禁止的地址的相关请求Slave Guard在总线层面上保护指定的memory或者外设防止未授权访问可以看到针对不同外设、memory有不同的guard。例如PE Guard针对CPU内部RAM的保护、CRG(针对Cluaster RAM保护)、针对外设的PG。SPIDSystem Protection identifier是一种软件任务的标识符它分两种情况一种主机内部自带SPID寄存器可以直接配置例如DMA、CPU(也叫PEproces element)另一种是在SPID模块里配置。 2.1 SPID
我们首先来看SPID有如下功能 每个总线主机的SPID可以软件灵活配置一个SPID可以分配给一个主机或者多个主机通过SPIDMASK来限制主机的使用SPID的配置可以上锁冷复位或系统复位解锁就和英飞凌SMU一样配好了就锁住。 那么具体应该怎么使用呢先看框图 SPID寄存器用于配置bus master比较分散的是CPU、DTS/DMAC和MAU等主机的SPID寄存器配置是在自己模块内部配置如Gb Ether等SPID值的配置就是在在SPID模块内部如上图所示。
首先我们来看总共有多少个寄存器可以用于配置SPID。我们继续来看示例
在默认情况下每一个Bus Master的SPID值如下 注意最左侧这一列就相当于给主机分配一个ID值这个与英飞凌TC3xx固定Master Tag ID还是有所区别。从上图我们可以看到在U2A中作为master看待的外设、内核总计15个总计32个寄存器可以配置ID值默认状态下Reserved的是4-16、18、20、21、30共计17个寄存器
但是可不可以把这些reserved分配给其他同一个主机呢答案是肯定的如下 进一步可不可以把一个SPID分配给多个外设呢当然也是可以的如下图 上图中RHSIF0\FlexRay\Ether均使用了24这个SPIDCPU2占据了FlexRay1 22这个SPID。 那么要给Bus Master分配 SPID需要按照如下步骤 设置SPIDKCPROT寄存器使能SPID寄存器配置功能设置SPID掩码寄存器(BMnSPIDMSK)定义每个bus master可以定义的SPID值设置SPID掩码锁存寄存器保证SPID掩码寄存器不被修改根据SPID掩码寄存器设置SPID寄存器的值设置SPIDKCPROT寄存器关闭SPID寄存器配置功能配置内存保护/保护设置以防止由SPID和其他标识符识别的错误访问。 那么配置了SPID是不是就可以保证访问限制。不然还需要Slave Guard的配置。
2.2 Slave Guard
从系统架构图我们可以看到不同种类的Guard Type。 PEG PE Guard用于每个PE(Process Element)控制Local RAM和INTC1是否可以被其他bus master访问 CRG Cluster RAM Guard用于 Inter-VM 通信或者Cluster RAM的访问 PG Peripheral Guard用于保护外设访问保护 那么需要slave guard属性配置如下
优先级保护属性内容HighSEC使能后禁止non-secure主机访问...DBG使能后允许debug主机访问目标slave↓UM该属性关闭后user mode下所有主机都不能访问slaveSPID[m]使能后与该slave定义的SPID相等的master SPID就可访问该slaveWG使能后master就可以写目标slaveLowRG使能后master就可以读目标slave 具体每个Slave Guard我们后面再讲。
3.小结
可以看到U2A的内存保护设计还是很灵活的目前在用法上仅仅使用了MPU。
后续如果有用到SPID了我再详细描述。