【简介】
在S32K3 应用核和HSE进行数据交互时通常会使用memory 来进行数据交互。但是使用内存和 HSE 进行交互数据时,M7 core 是支持Cache 特性的而 M0 的HSE core 是不支持cache 特性直接访问物理内存的。如果M7 写入的数据还在cache line 中没有更新到物理内存中,这时使用memory 来通讯就会出现两面看到的内存数据不一致的问题。内存一致性的问题可以通过使用no cachable 属性的memory 通讯来解决,或者直接使用DTCM 来通讯的方式来解决。 DTCM 是M7核心独有的memory 区域HSE核如果访问DTCM?

以下是上图的HSE访问DTCM 的访问路径M2->S3->AHBS->DTCM

从上述图可以看出HSE/EMAC/eDMA 通过S3端口通过AHBS连接到CM7内核从而访问DTCM,因为 DTCM 的的地址使用同一个地址每个核使用相同的DTCM地址编码访问DTCM,每个DTCM 的地址均为0x20000000~0x2001FFFF。

因为每个核心的DTCM 的地址范围都是一样的,HSE 通过AHBS 访问指定的核心的DTCM 的资源,实际是对每个核的DTCM进行地址编码加上对应的offset 的backdoor地址访问DTCM资源。

有了上述的概念,如果需要和HSE 通过DTCM 来通讯需要把对应的backdoor 地址发送到HSE核,HSE 通过backdoor地址就能访问对应的DTCM的数据,以下代码是CM70 核心和HSE 交互时使用DTCM将DTCM 的backdoor 地址发送给HSE 核心通讯的过程。

我要赚赏金
