TC397的MPU资源
TC397芯片有5个Core,每个核有18个Data Memory Protection Ranges,10个Code Protection Ranges。
TC397的MPU访问权限:
通过MPU配置内存保护机制,把芯片的Memory划分为位若干(有大小限制)Region区域,一个Region是指被硬件划分出来并可以独立设置访问权限的内存区域。
每个Region可以配置读(Data Read)、写(Data Write)、执行(Code Fetch)权限。使能MPU后,如果访问某个内存区域但是改内存区域没有配置对应的权限,就会产生MPU Trap。
Protection Sets(PS)是给每个Core配置Access Permissions,
Protection Range是基于芯片每个Address Range,根据每个Core的ASIL等级对地址范围进一步划分,形成新的Region。
举例:
通过MPU对内存空间进行ASIL,QM,Kernel分区,不同级别的TASK放在不同的ASIL分区中,防止QM任务干扰ASIL任务,一般ASIL,Kernel是同一级别,是可Trusted的,QM是不可Trusted的。
下图是不同级别Trusted进程所占用的Memory Protection ID标识,这个标识符的主要用途是实现内存访问的控制和隔离(定义了哪些任务或中断服务例程(ISR)可以访问哪些内存区域),Identifier帮助OS识别哪些应用可以执行哪些操作,确保Non-Trusted APP应用不会访问Trusted APP的敏感或关键的内存区域。
QM用于访问ASIL任务的方法,通过创建一个Trusted进程即可访问QM任务,又可以访问ASIL的任务
关于Core0的内存分区,在Core0的SRAM内存中定义了Core0_QM和Core0_ASILB的MPU要保护的Address Range,以及其他核通过MemoryRegionProtectionUnit以及哪种Protection Sets(PS)访问Core0的资源。
参看上下图,根据MPU的好处,可以发现在多核的时候,可以防止其他核对ASIL级别TASK的数据进行篡改
通过FLASH运行APP时,在调用栈的时候,调用其他核的栈,也就实现了跨核访问。
对比单核MCU的MPU机制,Region分优先级,当出现Region3高优先级覆盖Region2低优先级时,则Region3的设置会生效,覆盖Region2的权限设置。