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.

[参考译文] TDA4VM-Q1:SDL 版本 1.0.0 ESM 实施和示例

Guru**** 2013480 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1228133/tda4vm-q1-sdl-ver-1-0-0-esm-implementation-and-examples

器件型号:TDA4VM-Q1

您好、TI 专家!

我最近正在开发 SDL (软件诊断库)版本。 1.0.0在我们的系统上,在 ESM 的开发过程中我有一些问题显示在下面。  

我在 MCU1_0 Autosar OS 上部署了 SDL 提供的 ESM 示例(MCU&Wake-up 域)、发现 VTM 事件没有通过调试器进行观察来立即触发 ESM 中断。

 

换言之,useCaseTrigger()在不中断的情况下从索引 i=0执行到 i=2,然后触发 ESM 中断,调用回调函数。(然而,现在的全局变量 currTestCase 为3 ,这将影响回调函数的性能,然后测试用例失败)。

从我的角度来看,它应该是这样的:useCaseTrigger (0)-> ESM 中断和回调函数-> currTestCase++-> useCaseTrigger (1)  -> ESM 中断和回调函数-> currTestCase++->……

如果我独立运行测试用例、它们都能正常工作(currTestCase 是正确的)。 所以, 在 useCaseTrigger()中的 VTM 触发函数 vtmTriggerTh1()有可能没有立即报告该事件吗?  设置新的温度阈值需要时间、因此 ESM 中断一次不启动?

2. 提供 SDL ESM API SDL_ESM_interruptHandler()来处理 ESM 事件,它会不断读取中断源直到 ESM 寄存器中没有事件(脉冲和电平):

Fullscreen
1
2
3
4
5
6
7
8
9
10
/* Check on the highest priority event and handle it */
do {
(void)SDL_ESM_getGroupIntrStatus((uint32_t)esmInstBaseAddr,
(uint32_t)esmIntrPriorityLvlType,
&localEsmGroupIntrStatus);
intSrc1 = localEsmGroupIntrStatus.highestPendPlsIntNum;
SDL_ESM_processInterruptSource((uint32_t)esmInstBaseAddr, esmIntType, intSrc1);
intSrc2 = localEsmGroupIntrStatus.highestPendLvlIntNum;
SDL_ESM_processInterruptSource((uint32_t)esmInstBaseAddr, esmIntType, intSrc2);
} while ((intSrc1 != (uint32_t)(NO_EVENT_VALUE)) || (intSrc2 != (uint32_t)(NO_EVENT_VALUE)));
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ESM 事件列表中有很多错误无法恢复、因此、在这些情况下、我们无法执行任何操作来处理中断源和退出中断、但可以复位系统。 无论如何、我们仍然需要将这些错误事件记录到非易失性存储器中。

SDL 是否提供任何 API 或解决方案、在 ESM 中断处理程序内启用 NVM 中的事件记录、以便我们在断电复位后仍然可以读回它们?

非常感谢您的耐心。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能否提供有关您的构建设置的更多详细信息? 您是否正在使用作为最新 SDK 版本一部分提供的 SDL、或者 SDL 是否正在从某处下载并与某个应用程序集成?

    SDL 是否提供任何 API 或解决方案来在 ESM 中断处理程序内的 NVM 中启用事件记录、以便我们在断电复位后仍能读回这些 API 或解决方案?

    不可以、SDL 没有将 ESM 错误事件记录在非易失性存储器中的 API。 您可以根据 ESM 回调或处理程序(如果需要)手动记录它们。

    谢谢。

    约西塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Josietaa:

    感谢您的答复。

    我下载了 SDK 8.05、并在 SDK 8.05中找到了 SDL。 然后、我将 SDL 集成到我们的系统中、在 MCU1_0上运行自动加载程序操作系统。

    我尝试运行 SDL 版本中提供的 ESM 示例。 1.0.0并可了解提供的测试用例。 我运行 VTM 测试用例(用例 UC-1、UC-2、UC-3)。

    但是我发现从 useCaseTrigger()到 SDL_ESM_applicationcallbackFunction()有一些延迟,这些延迟表明注册的 ESM 中断在每个用例被触发后都不会发出信号。 但 ESM 中断和回调函数可以在所有 useCaseTrigger()最终运行后触发。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* Trigger each use Case */
    for (i = 0; i < USE_CASES; i++) {
    retValue = useCaseTrigger(i);
    if (retValue != 0) {
    UART_printf("\nERR: Use Case Trigger for use Case %d failed \n",
    retValue);
    break;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     

    TI 是否实际测试了 SDL ESM 示例? 它是否遵循预期的顺序?

    useCaseTrigger (0)-> ESM 中断和回调函数-> currTestCase++-> useCaseTrigger (1)->   ESM 中断和回调函数-> currTestCase++->...

    由于 SDL ESM 示例应在非操作系统(裸机)环境中运行,因此我不确定操作系统是否重要。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这些是我在 SDK 8.5上运行 ESM_wkup_mcu_app 时获得的日志。

    e2e.ti.com/.../esm_5F00_wkup_5F00_mcu_5F00_app_5F00_logs.txt

    在按照预期的顺序对每个用例进行测试时、会发生 ESM 回调。 您也会观察到这些日志吗?

    谢谢。

    约西塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Josietaa:

    当我运行每个 VTM 用例时、它的工作方式与您在上面给出的日志完全一样! 但是、似乎仍然有一些延迟。 换而言之、在运行该用例时、中断和应用程序回调函数不会立即被调用、而是等待一段时间完成以下函数。

    当我以  

    对于(I = 0;I < use_cases;I++){
    retValue = useCaseTrigger (I);

    我的站点中的顺序如下所示:

    useCaseTrigger (0)-> useCaseTrigger (1)-> useCaseTrigger (2)->为案例1调用的 ESM 回调函数->为案例2调用的 ESM 回调函数->为案例3调用的 ESM 回调函数->……

    如果光照环境工作正常、我认为这是自动加载操作系统问题。  

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    当我运行每个 VTM 用例时,它的工作方式就像你上面给出的日志一样,完美无缺!

    裸机示例应用程序似乎按预期工作。

    如果光伏环境工作正常,我猜是自动操作系统问题。  [/报价]

    我无法确认问题是否是由自动加载程序操作系统问题引起的、因为我无法重现问题。

    谢谢。

    约西塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Josietaa:

    感谢您的回复。

    至于断电记录问题、由于 SDL 不提供任何解决方案、您有什么想法、我们可以在重置之前在内存中记录一些内容吗?

    我从我的同事那里听说过 PSRAM 在这种情况下是否可用、我可以参考有关其使用的任何文档?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    在复位模块前、您可以手动更改 ESM 回调中的代码来记录 ESM 事件。 我们目前没有任何示例代码或文档。

    谢谢。

    约西塔