This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在寻找应用程序如何注册和使用 ESM_ApplicationCallback()的一些详细说明或示例。
例如、在执行故障注入测试时、应用程序如何使用 ESM 回调来完成测试? 我知道 ESM_ApplicationCallback()会检查并确定错误的原因,但一旦完成,接下来应该发生什么? 如何使用 param1、param2和 paramM3?
Guy、
这完全取决于应用设计人员。 根据特定应用中任何错误的严重程度、应用程序可以选择系统响应。 例如、如果 DMA RAM 上出现奇偶校验错误、则可以选择将 DMA 奇偶校验错误地址作为参数传递给回调函数。 然后、应用程序可以决定只写回和读回这个位置、或者在 DMA RAM 上运行 PBIST 来检查它是瞬态故障还是导致检测到奇偶校验错误的永久故障。
定义了多个参数、以便为发送给 ESM 的所有错误提供所需的信息。
此致、Sunil
谢谢、Sunil。 这是我需要澄清的部分:
" 例如、如果 DMA RAM 上出现奇偶校验错误、则可以选择将 DMA 奇偶校验错误地址作为参数传递给回调函数"
这是否意味着我从回调函数内部调用我的应用函数? 我认为回调函数是一个提供挂钩的函数、用于对我的应用函数进行异步调用、例如中断驱动或事件驱动程序的工作方式。 但是、通过提供的 ESM 回调函数示例、回调函数在设置参数1、2、3和标记后退出、而不指示其如何挂钩到我的应用程序函数中。
例如、在以下代码段中:
否则((ESM_Grp2_MASK =((grp_channel&ESM_Grp2_MASK)))&&(ESM_G2ERR_B0TCM_Uncorr =(grp_channel & 0x0000fful)) ){ callbkParam1 = 1; //清除错误 PIN 和标志* ESM_R_B0tCM_RESM= 真正 ESM_RM_RM_RM_RM_RM_TR_RM_RM_1;RMES_TR_TR_EN_TR_RMES_TR_TR_RMES_TR_TR_TR_0_RMES_TR_TR_TR_RMES_TR_TR_TR_RMES_TR_TR_ENTR_RMES_TR_RMES_TR_TR_TR_TR_RMES_RMES_TR_TR_TR_RMES_TR_TR_TR_ENTR_TR_TR_TR_TR_
我的应用程序如何访问 callbkParam1? 我的目的是使用 doSomethingInApplication (callbkParam1、SRAM_radecode_diagnostics_app_callback)等类似方法从该块中调用我的应用程序函数、或者我应该在其他地方寻找一些触发器/挂钩?
Guy、
ESM 中断服务例程可根据一个组1或者组2错误来执行、此错误信号被发送给 ESM。 组2错误会导致高级中断请求、该请求在 Hercules 处理器上配置为 FIQ (启用后不可屏蔽)。 组1错误可以根据应用程序的选择生成低/高电平中断。
这些中断服务例程将需要有关生成中断的错误输入的任何可用信息。 可以使用 callbkParam*全局变量将其传送到 ISR。
此致、Sunil