工具与软件:
大家好、我已经检查了在 R5 SPL 中启用 DDR ECC 时它可以正常工作(如 本教程的第3.1.9.1.1.1点所示 、并在 u-boot 中使用 ddrss ecc_err 程序进行了测试)。
我想启用 DDR ECC、并在 R5中具有一个2个函数处理程序、当发生可纠正或不可纠正的错误时、ESM 模块将调用该函数处理程序 、如 DDR ECC 测试主 ESM 示例中所示:
esm1.$name = "CONFIG_ESM0"; esm1.bClearErrors = true; esm1.esmNotifier.create(2); esm1.esmNotifier[0].$name = "CONFIG_ESM_NOTIFY0"; esm1.esmNotifier[0].errorNumber = 6; esm1.esmNotifier[0].setIntrPriorityLvl = "LOW"; esm1.esmNotifier[0].notify = "DDR_secHandler"; esm1.esmNotifier[1].$name = "CONFIG_ESM_NOTIFY1"; esm1.esmNotifier[1].errorNumber = 69; esm1.esmNotifier[1].notify = "DDR_dedHandler";
在上述 syscfg 配置中、DDR_secHandler ()和 DDR_ddr_dedHandler ()分别被调用为可纠正和不可纠正的错误。
问题是尝试重复使用上述配置(在一起而不改变 R5 SPL)以及以下任一配置:
- Linux 内核加载(可能在加载 R5固件的瞬间)或
- 在仿真错误时、我遇到以下内核异常之一(为了仿真错误、我重复使用了从同一示例复制的函数):
- 堆栈空间不足、无法处理异常!
- 无法处理从虚拟地址 ffff000000000000处的不可执行内存执行的内核执行
- 无法处理虚拟地址 ffff800000a3ba38处只读内存的内核写入
在我们的架构中、我们在 A53上使用 Linux、在 R5端使用 FreeRTOS。
你知道我的错了吗? 有什么建议吗?
提前感谢您