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.

[参考译文] MCU-PLUS-SDK AM273X:多核应用的调试不可靠

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1388589/mcu-plus-sdk-am273x-unreliable-debugging-of-multicore-applications

器件型号:MCU-PLUS-SDK AM273X
Thread 中讨论的其他器件:AWR2243BOOSTUNIFLASHAM2634

工具与软件:

您好!

我正在使用与 AWR2243BOOST 电路板连接的 AM273x 评估模块、并且正在运行可视化工具演示应用。 我们也使用了演示项目的叉子。

我需要解决的问题是调试非常不可靠。 从 ROM 运行应用时不会发生这种情况(使用 uniflash 刷写)。

 `、在五个调试运行中、大约有两个运行会导致在` HwiP_undefined_handler `m或`Hwip_data_abort_handler`/`HwiP_DATA_abort_handler_const`中提前(甚至在登陆` ain () 之前)执行程序着陆。 这是随机的、也会在其他应用中发生、无论是单核应用(例如仅从 R5F0运行;我已经尝试从 MCU + SDK 运行 UDP 客户端和 TCP 客户端)还是多核应用(例如 R5F0 + C66、如可视化工具演示中所示)。 这个过程非常麻烦、因为调试大型程序时、我需要多次重新加载程序、而且一次程序加载已经花费了很多时间。 为什么调试如此不稳定? 如果能让它更可靠、我真的很感谢大家的支持。

2.调试多核应用程序时分组不能正常工作。 根据本指南  ,我正在尝试创建一个"永久组"来同时启动核心。 问题是点击组上的"Resume":

会导致 C66无法运行。 "Debug"视图声称它正在运行:

但它不是,就像当我"暂停"它,那么它仍然在 main ()条目:

我可以逐个单独运行这些内核、但在这种情况下、 可视化工具演示应用会不同步、从而导致崩溃。

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

    我想您可能 遇到了我在 AM2634上遇到的同样的问题。

    程序加载后、其中一个内核(在本例中仅为 R5_2)可以随机处于拇指模式。 这会产生一个 UNDEF 异常、后跟 DABT。  AM2634:DevBoot 后、Cortex_R5_2有时处于 Thumb 模式。 导致 UNDEF 异常。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid="614970" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1388589/mcu-plus-sdk-am273x-unreliable-debugging-of-multicore-applications 调试多核应用时的分组无法正常工作

    我可以重现该问题。 它似乎特定于 C66x。  

    我为此提交了一个错误。 跟踪链接: https://sir.ext.ti.com/jira/browse/EXT_EP-11832

    对于#1、这将需要由器件专家进行研究。 我将提请他们注意该线程。

    谢谢

    Ki

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

    尊敬的 Kacper:

    出现此问题的可能原因有两种:1:

    1. SOC 的初始化

    2. R5F 内核的 MPU 设置  

    关于1的问题:

    如何初始化 AM273x SOC? GEL 文件或 SBL_NULL?

    您的应用的 MPU 设置是什么?

    此致、

    Ming

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

    我使用 GEL 文件。 但是、何时以及如何使用 SBL_NULL? 我找不到任何相关文档。

    MPU 配置:

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

    谢谢你

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

    尊敬的 Kacper:

    请参阅以下 URL: AM273x MCU+ SDK:Additional Details

    部分 SOC 初始化使用 QSPI 存储器中刷写的二进制文件进行、以使用 SBL_NULL 初始化 SOC。

    此致、

    Ming

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

    关于问题1、您是否可以禁用自动运行、以便 PC 从0x0开始:

    然后检查 CPSW。 T 字段。 如果它是== 1 ,就在 UNDEF 异常发生之前,那么你和我有相同的问题。

    [报价 userid="1502" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1388589/mcu-plus-sdk-am273x-unreliable-debugging-of-multicore-applications/5310763 #5310763"]

    出现此问题的可能原因有两种:1:

    1. SOC 的初始化

    2. R5F 内核的 MPU 设置  

    [报价]

    如果 Kacper 的问题1与  (+) AM2634中描述的我的问题(TBC)相同:在 DevBoot 之后、Cortex_R5_2有时处于 Thumb 模式。 导致 UNDEF 异常。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    那么 会发生问题1:

    • ...before _mpu_init ()被调用。 因此、它不能是一个 MPU 配置问题。
    • ...大约20%的时间,因此它不可能是一个配置问题。

    由于 Kacper 的问题在 QSPI 模式下不会发生、因此原因 必须仅限于 GEL 脚本的行为。

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

    尊敬的 Kier:

    同意您的分析。 我想是 SOC 初始化问题。 这就是我建议使用 SBL_NULL 来初始化 SOC 的原因。

    此致、

    Ming  

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

    我没有使用 SBL_NULL 进行调试。 从闪存运行应用后、我绝不会刷写 SBL_NULL。 让我在通过 RAM 进行调试时使用 SBL_NULL、并回来报告这是否解决了不稳定调试的问题。

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

    使用 SBL_NULL 无法解决我的所有问题。 自从我开始使用`BL_NULL`以来、我还没有得到`SHwip_undefined_handler`、但是断点不会被命中。程序加载也会在开始时随机失败、等等。

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

    尊敬的 Kacper:

    这些问题是在所有内核上发生还是仅在一个内核上发生?

    它是否到达 main()?

    您在哪里设置断点(无法到达哪个断点)?

    当程序加载失败时、它会显示什么错误?

    此致、

    Ming