我正在尝试对 MPC5644A 芯片组进行核心测试。
我目前使用的环境是 Eclipse 和 Wind River。
我下载了制造商的库 e200Zx_ICST_RTMC_3.0.0,其中包含几个汇编源 (.s) 文件。
其中,vle 编译成功。
但是 book_e 和 spe 编译失败。
编译过程中,各种汇编指令(如 bc、bcl、bclr、xoris、bclrl 和 bcctrl)出现错误。我打开了 book_e 和 spe 汇编文件的属性,并将 -tPPCE200Z4NEG:simple 添加到 C/C++ 版本 --> 设置 --> Diab 汇编器 --> 其他 --> 其他选项和标志中,并成功完成了编译。然而,在调试过程中,我到达了 `fsl_self_test_icst.c` 中的 `Fsl_call_test_execution_icst` 之前,而这部分实际上执行的是核心测试。如果我继续进行下一步,就会陷入无限循环。
通过 Eclipse 的反汇编检查,我发现当我单步进入地址 0x51518(紧接在 `SPE_ICST_int_logical_test` 开始之后)时,它会立即跳转到 0x3f2b90(一个空白空间)。
我应该怎么办?我不知道从哪里开始。
你好,
SCST 仅支持 MPC56xx 系列中的以下设备:
由于 MPC5644A 和 MPC564xB 共享相同的 e200z4 CPU 内核,因此 SCST 库中以 CPU 为中心的部分可以进行调整。但是,所有整合方面都必须进行审查:
实际的 CPU 测试算法应该具有很强的可移植性,因为它们针对的是相同的 e200z4 架构。
NXP 没有为旧款 MPC5644A 设备提供官方的 SCST 库。然而,由于 MPC5644A 与 MPC564xB 系列使用相同的 e200z4 内核,因此在审查特定设备的集成细节后,或许可以采用 MPC564xB 解决方案中以 CPU 为中心的自检例程。或者,可以使用 MCU 的内置功能安全机制(ECC、CRC、看门狗、MPU、异常处理)开发自定义启动诊断实现,以满足项目特定的功能安全要求。
我应该怎么办?我不知道从哪里开始。
如果代码在 0x51518 处进入 SPE_ICST_int_logical_test(),然后立即跳转到 0x3F2B90(看起来像是空内存),我首先怀疑的不是 CPU 故障,而是链接器/库集成问题。
对于 SCST 库而言,这通常意味着以下情况之一:
1. 函数指针或分支表未正确链接
2. 缺少库对象
3. 内存模型错误/虚拟环境不匹配
4. 为另一台设备构建的 SCST 库
5. MMU/TLB 翻译问题
顺祝商祺!
Peter