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:在 VISION_APP 环境中、MCAN 演示触发中断意外

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1195475/tda4vm-mcan-demo-trigger-interrupt-unexpectedly-in-vision_app-environment

器件型号:TDA4VM

我们以 SBL 方式在 PDK 封装中运行 mcan 示例演示、它在 mcu1_0中运行良好。

但是、在我们将演示移动到 VISION_APP 目录并尝试以 SPL 方式运行后、中断在 mcu1_0中意外触发。

当 Tx 完成发送数据时,中断 仍 在  mcu1_0中连续触发,并且  MCAN_IR 的值不能被清除。

以下是问题日志:

    

e2e.ti.com/.../soc_5F00_2023_2D00_02_2D00_10_5F00_20_2D00_29_2D00_40.log        

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

    您好!

    您能否分享一些有关您如何在视觉应用中集成此演示的信息? 您是否在视觉应用中启用 mcu1_0并在 mcu1_0上运行 openvx 框架?  

    我看到您正在访问0xe331001a 的 irqstatus 位置、它的位置是否正确? 还是 IRQ 状态? 您是否也采用了同样的方法来清除中断?  

    此致、

    Brijesh

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

    感谢您回答我的问题。  

    我们以"

    TI-PROCESSOR-SDK-RTOS-j721e-EVM-08_04_00_06/PDK_Jacinto_08_04_00_21/packages/ti/CSL/example/mcanEvmLoopback/mCAN_EVM_loopback _app_main_K3"更改为"

    TI-processor-sdk-rtos-j721e-evm-08_04_00_06/vision_apps/platform/j721e/rtos/mcu1_0"、并将引导方式从 SBL 更改为 SPL。 我们在视觉应用中启用了 mcu1_0、但未在 mcu1_0上运行 openvx 框架、只需添加模块"mCAN_EVM_loopback_app_main_K3"

       我不知道为什么生成  irqstatus 0xe331001a、只读该位置中的 IRQ 状态会生成 0x80000。 我 已经清除 了中断,但 中断不能被清除。

       下面附加了中断处理、

    静态空 App_mcanIntr0ISR (uintptr_t arg)

    uint32_t intrStatus;
    CAN_MSG_FIELD_T *信息;
    uint32_t intrStatus_test;
    MCAN_ProtocolStatus protStatus;

    MCAN_getProtocolStatus (gMcanModAddr、&protStatus);
    APP_PrintConsolef ("CAN:来自 gMcanModAddr 的 App_mcanIntr0ISR、lastErrCode = 0x%x、dlec = 0x%x \n"、protStatus.lastErrCode、protStatus.dlec);


    intrStatus = MCAN_getIntraStatus (gMcanModAddr);
    APP_PrintConsolef ("CAN:App_mcanIntr0ISR、来自 gMcanModAddr、intrStatus = 0x%x \n",intrStatus);
    MCAN_clearIntStatus (gMcanModAddr_lpbk、intrStatus);
    intrStatus_TEST = MCAN_getIntraStatus (gMcanModAddr);
    APP_PrintConsolef ("CAN:App_mcanIntr0ISR、来自 gMcanModAddr、inStatus_Test= 0x%x ",intrStatus_TEST);

    IF (MCAN_INTR_SRC_TRANS_COMPLETE =
    (状态内部和 MCAN_INTR_SRC_TRANS_COMPLETE)

    gMcanIsrIntr0Flag = 0U;

    IF (MCAN_INTR_SRC_Dedicated RX_bux_MSG =
    (状态内部和 MCAN_INTR_SRC_Dedicated RX_缓冲 器_MSG)

    gMcanIsrIntr1Flag = 0U;

    intrStatus = MCAN_getIntraStatus (gMcanModAddr_lpbk);
    APP_PrintConsolef ("CAN:App_mcanIntr0ISR、来自 gMcanModAddr_lpbk、inStatus = 0x%x \n",intrStatus);
    MCAN_clearIntStatus (gMcanModAddr_lpbk、intrStatus);
    intrStatus_test = MCAN_getIntraStatus (gMcanModAddr_lpbk);
    APP_ConsolePrintf ("CAN:App_mcanIntr0ISR、来自 gMcanModAddr_lpbk、inStatus_TEST = 0x%x ",intrStatus_TEST);

    IF (MCAN_INTR_SRC_TRANS_COMPLETE =
    (状态内部和 MCAN_INTR_SRC_TRANS_COMPLETE)

    gMcanIsrIntr0Flag_lpbk = 0U;

    IF (MCAN_INTR_SRC_Dedicated RX_bux_MSG =
    (状态内部和 MCAN_INTR_SRC_Dedicated RX_缓冲 器_MSG)

    gMcanIsrIntr1Flag_lpbk = 0U;

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

    尊敬的 Renf shi:

    “yqq :app……”的作用是什么 在日志中表示? 我在上述代码中看不到该部件。 您能否分享更多详细信息?

    [引用 userid="533392" URL"~/support/processors-group/processors/f/processors-forum/1195475/tda4vm-mcan-demo-trigger-interrupt-unexpectedly-in-vision_app-environment/4516437 #4516437"]

    MCAN_getProtocolStatus (gMcanModAddr、&protStatus);
    APP_PrintConsolef ("CAN:来自 gMcanModAddr 的 App_mcanIntr0ISR、lastErrCode = 0x%x、dlec = 0x%x \n"、protStatus.lastErrCode、protStatus.dlec);


    intrStatus = MCAN_getIntraStatus (gMcanModAddr);
    APP_PrintConsolef ("CAN:App_mcanIntr0ISR、来自 gMcanModAddr、intrStatus = 0x%x \n",intrStatus);
    MCAN_clearIntStatus (gMcanModAddr_lpbk、intrStatus);
    intrStatus_TEST = MCAN_getIntraStatus (gMcanModAddr);
    APP_PrintConsolef ("CAN:App_mcanIntr0ISR、来自 gMcanModAddr、inStatus_Test= 0x%x ",intrStatus_TEST);

    [/报价]

    如果 调用 ISR、则必须执行所有打印操作、但我只看到一个打印操作、然后跳过、这不应该发生。

    使用 JTAG 调试器,请保留一个断点并单步执行  App_mcanIntr0ISR,如果您编写,最好使用内存浏览器

    进入 MCAN_IR 地址并 检查是否清除。

    此致

    Tarun Mukesh

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

    我‘m "yqq:app"日志 被 "CAN:app"替代。

     现在、我再次捕捉日志、 下面是问题日志和源代码。

    e2e.ti.com/.../5_5F00_2023_2D00_02_2D00_21_5F00_20_2D00_12_2D00_20.loge2e.ti.com/.../canManage_5F00_byd.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="547969" URL"~/support/processors-group/processors/f/processors-forum/1195475/tda4vm-mcan-demo-trigger-interrupt-unexpectedly-in-vision_app-environment/4517013 #4517013"]使用[/quot]

     我使用了 JTAG 调试器,无法清除 MCAN_IR,该值    很快就会变为其原始状态

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

    您好!

    日志中的观察结果:

    LEC = 0x2,表示格式错误,有关详细信息,请参阅此常见问题解答

     https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_02_00_05/exports/docs/pdk_jacinto_08_02_00_21/docs/userguide/jacinto/faq/faq_can.html

    因此在 ISR 中, intrStatus = 0x80000 。 第27位被置位、 MCAN_INTR_SRC_Dedicated RX_buff MSG 是使 gMcanIsrIntr1Flag = 0所需的第19位。 但从未感到满意。

    因为 gMcanIsrIntr1Flag 不会变为零  

    while (gMcanIsrIntr1Flag)
    {}
     
    在  app_mcanRxTest()中继续运行。
    但是为什么显示这些值的 MCU_MCAN1 IR 寄存器在这里仍然不清零?
    此致
    Tarun Mukesh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我知道您所说的,我的问题是"ti-processor-sdk-rtos-j721e-evm-08_04_00_06/vision_apps/platform/j721e/rtos/mcu1_0"中的配置有错误 ,但"ti-processor-sdk-rtos-j721e-evm-08_vision_apps/platform/j721e/mcoos/mcu1/mc01_0004/mcoopdk_pru1/mcy_pru0_pru/mcum_0001/mcoopdk_pru0_pru/mcum_0004 中的配置正常,      并且不能在主循环中持续停止运行,并且不能在另一个中断/mc000_mcum_mc0_mc0_mc0_m

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

    您好!

     

    您能否分享您在视觉应用中作为补丁所做的更改?  

    [引用 userid="533392" URL"~/support/processors-group/processors/f/processors-forum/1195475/tda4vm-mcan-demo-trigger-interrupt-unexpectedly-in-vision_app-environment/4516437 #4516437"]

    TI-PROCESSOR-SDK-RTOS-j721e-EVM-08_04_00_06/PDK_Jacinto_08_04_00_21/packages/ti/CSL/example/mcanEvmLoopback/mCAN_EVM_loopback _app_main_K3"更改为"

    TI-processor-sdk-rtos-j721e-evm-08_04_00_06/vision_apps/platform/j721e/rtos/mcu1_0"、并将引导方式从 SBL 更改为 SPL。 我们在视觉应用中启用了 mcu1_0、但未在 mcu1_0上运行 openvx 框架、只需添加模块"mCAN_EVM_loopback_app_main_K3"

    [/报价]

    了解 API 从视觉应用中的 main.c 到 mca_evm_loopback _app_main.c 中的 API 的流程

    并确认以下几点

    1) 1) PDK CAN 示例和 VISION Apps CAN 示例是否在同一环境中运行 ?  

      

      选择了接收器测试(选项2) 、如视觉应用的日志中所示。  外部 CAN 仿真器(其他节点)配置与 PDK 相同或不同

      和  视觉应用 

    2) 2)您是否在 其他内核上运行任何其他功能? 即 ,是否还有任何内核配置 CAN 模块?

    3) 3)将 PDK CAN 迁移到 Vision Apps 后,整个 SDK 是编译的还是仅编译 Vision Apps? 如果您只能使用视觉应用、请执行整个 SDK 全新构建

    请告诉我 

    此致

    Tarun Mukesh