2391439_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2391439_zh-CN

2391439_zh-CN

S32K328:CM7_0 访问 CM7_2 DTCM 后门导致总线故障不精确
您好,NXP团队,

 

我们正在使用 S32K328 和 RTD 7.x。

 

软件设置:
- CM7_0 运行引导加载程序。
- CM7_1 被第二个应用程序使用。
- CM7_2 不用于执行应用程序代码。
- 我们正在评估 CM7_0 是否可以通过 TCM 后门/AHBS 路径使用 CM7_2 DTCM 作为系统内存。

 

参考手册内容:
“内存映射”章节指出,其他主设备(包括其他 Cortex-M7 内核和 eDMA)可以通过 32 位 AHBS 接口访问 ITCM/DTCM。
“TCM 作为系统内存”部分指出,已启用的核心可以在以下情况下使用已禁用/等待的核心的 TCM:
1. 启用目标核心 TCM 控制器时钟:
MC_ME PRTN2_COFB2_CLKEN[REQ64] 适用于 Cortex-M7_2
2. 设置目标核心 CPUWAIT:
DCM_GPR DCMRWF4[CM7_2_CPUWAIT]
3. 启用目标内核时钟/访问路径:
MC_ME PRTN0_CORE4_PCONF[CCE]

 

我们尝试了:
1. 设置 DCM_GPR DCMRWF4[CM7_2_CPUWAIT]。
2. 设置 MC_ME PRTN2_COFB2_CLKEN[REQ64]。
3. 设置 MC_ME PRTN2_PUPD[PCUD]。
4. 应用 MC_ME CTL_KEY 序列。
5. 等待 PRTN2_PUPD[PCUD] 清除。
6. 读取 PRTN2_COFB2_STAT 并观察到 bit0/BLOCK64 处于活动状态。
7. 设置 MC_ME PRTN0_CORE4_PCONF[CCE]。
8. 设置 MC_ME PRTN0_CORE4_PUPD[CCUPD]。
9. 应用 MC_ME CTL_KEY 序列。
10. 等待 PRTN0_CORE4_STAT[CCS] 变为 1。
11. 为进行实验,暂时禁用了 MPU。
12. 尝试向 CM7_2 DTCM 后门地址进行一次 32 位写入。

 

观察到的结果:
- PRTN2_COFB2_STAT 表示 TCM 控制器时钟请求处于活动状态。
- PRTN0_CORE4_STAT[CCS] 变为 1。
- 首次向 CM7_2 DTCM 后门区域写入 32 位数据会导致不精确的 BusFault 升级为 HardFault。

 

问题:
1.对于 S32K328,从 CM7_0 可访问的正确 CM7_2 DTCM 后门/系统地址范围是什么?
2. 当 CM7_2 处于 CPUWAIT 状态时,是否支持从 CM7_0 访问 CM7_2 DTCM 后门?
3.除了 MC_ME 和 DCM_GPR 设置之外,是否还需要任何 XRDC 配置才能允许 CM7_0 写入 CM7_2 DTCM 后门?
4. 即使在测试中暂时禁用 MPU,是否也需要任何 MPU 区域?
5. 使用 TCM 后门路径之前是否需要进行任何 MSCM/MCM/XBIC/ENEDC 设置?
6.PRTN2_COFB2_STAT[BLOCK64] 是否是确认 CM7_2 TCM 控制器时钟是否活动的正确状态位?
7. PRTN0_CORE4_STAT[CCS] 是否是确认 CM7_2 时钟/访问路径是否处于活动的正确状态位?
8. 对于通过后门访问进行 DTCM ECC 初始化,从 CM7_0 写入 32 位是否足够?
9. 如果第一次后门写入导致不精确的总线故障,应该检查哪些故障/XRDC 寄存器来确定故障是由于 XRDC、互连还是未映射地址引起的?

 

当前目标:
我们只想验证一个最基本的冒烟测试:
- 对 CM7_2 DTCM 后门进行一次 32 位写入,
然后回读,
在考虑任何生产用途之前。

 

谢谢!
Re: S32K328: CM7_0 access to CM7_2 DTCM backdoor causes imprecise BusFault

你好@krishna_Bugudi

1.

请参阅 S32K3xx_memory_map.xlsx 文件,DTCM_2 后门位于 0x21800000

2.

3.

4.

5.

6.

是的,请参阅 RM 第 3.4 节 TCM,即系统内存。

7.

8.

是的,请参阅 RM,表 102。内存 ECC 初始化摘要

9.

您提到XRDC已被禁用。因此,XRDC 不会报告此问题。

你要写什么地址?


此致,

丹尼尔


Re: S32K328: CM7_0 access to CM7_2 DTCM backdoor causes imprecise BusFault
你好,丹尼尔,

 

谢谢你的确认。

 

我们已更新测试,使其完全按照 RM/NXP 的顺序执行,但仍然看到商店挂起。

 

已确认地址:
我们写信给:

 

0x21800000

 

这与 S32K3xx_memory_map.xlsx 匹配:

 

DTCM_2 后门:
起始地址:0x21800000
- 结束地址:0x2181FFFF
- S32K328 实现大小:128 KB

 

内存映射表还显示 PRAM2_TCM_XBIC 位于 S32K328 的以下位置:
0x40408000 - 0x4040BFFF

 

并将其描述为:
“横杆完整性检查器(PRAM2 和 TCM 后门 AHB 分线器)”

 

TCM_XBIC 位于 0x40400000,标记为 S32K328 保留。

 

最新测试序列:

 

1. 设置 MC_ME PRTN2_COFB2_CLKEN[REQ64]。
2. 设置 MC_ME PRTN2_PUPD[PCUD]。
3. 应用 MC_ME CTL_KEY 序列。
4. 等待 PRTN2_PUPD[PCUD] 清除。
5. 读取 PRTN2_COFB2_STAT。

 

观察到:
PRTN2_COFB2_STAT = 0x00000039

 

6. 设置 DCM_GPR DCMRWF4[CM7_2_CPUWAIT]。
回读确认:
DCMRWF4 = 0x00080000

 

7. 将 MC_ME PRTN0_CORE4_ADDR 设置为安全循环地址。
回读:
PRTN0_CORE4_ADDR = 0x00402408

 

8. 设置 MC_ME PRTN0_CORE4_PCONF[CCE]。
9. 设置 MC_ME PRTN0_CORE4_PUPD[CCUPD]。
10. 应用 MC_ME CTL_KEY 序列。
11. 等待 PRTN0_CORE4_STAT[CCS] 变为 1。

 

观察到:
PRTN0_CORE4_STAT = 0x00000001

 

12. 暂时禁用 CM7_0 MPU 进行隔离。
禁用前的 MPU_CTRL = 0x00000003

 

13. 尝试一次 32 位写入操作:

 

*(volatile uint32_t *)0x21800000 = 0u;

 

最新面包屑日志:

 

[CORE2_DTCM_SMOKE] S4B:WORD0 写入开始地址=0x21800000

 

商店之后的下一个面包屑导航:

 

[CORE2_DTCM_SMOKE] S4B1:WORD0 存储于 DSB 之前

 

因此,商店本身似乎在执行到以下指令之前就停滞不前或未能完成。在最新的测试中,DSB 并未达到。

 

问题:
既然你已经确认了这一点:
- 0x21800000 是正确的 DTCM_2 后门地址,
- 当 CM7_2 处于 CPUWAIT 状态时,支持对 CM7_0 的访问,
- 无需额外的 XRDC/MPU/MSCM/MCM/XBIC/ENEDC 设置,
- PRTN2_COFB2_STAT[BLOCK64] 是正确的状态位,
- PRTN0_CORE4_STAT[CCS] 是正确的状态位,
- 32 位写入对 DTCM ECC 初始化有效,

 

什么原因会导致第一次 32 位存储到 0x21800000 的操作在完成前停滞?

 

我们是否应该检查 S32K328 上 0x40408000 处的 PRAM2_TCM_XBIC 是否存在 TCM 后门 AHB 分路器错误?

 

如果可以,请您提供以下信息:
1.要读取的 PRAM2_TCM_XBIC 状态/错误寄存器。
2. DTCM_2 后门交易失败的预期错误指示。
3. 在重试访问之前是否需要任何错误清除序列。
4. 当存储操作未完成时,应捕获的任何其他 MC_ME/DCM/MSCM/XBIC/故障寄存器。

 

此致,
克里希那
Re: S32K328: CM7_0 access to CM7_2 DTCM backdoor causes imprecise BusFault

你好,克里希纳,

Copilot 说:我已经测试过了,只有当项目中启用默认 MPU(在 system.c 中配置)时才会出现此错误。由 S32DS RTD 项目生成)。能否导出 MPU 寄存器,以验证您的项目中是否禁用了 MPU?


此致,

丹尼尔

Tags (1)
No ratings
Version history
Last update:
yesterday
Updated by: