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.

[FAQ] [参考译文] 【常见问题解答】如何在编写自定义 DM R5F 固件时避免 DM R5F 崩溃

Guru**** 2422790 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1546608/faq-how-to-avoid-crashing-the-dm-r5f-when-writing-custom-dm-r5f-firmware



主题中讨论的器件:  AM62x、AM62Ax、AM62Dx、AM62Px

设备管理 (DM) R5F 内核的主要作用是运行 DM 任务。  但是、在某些器件(并非所有器件!)上、TI 支持编写自定义代码以在 DM R5F 上运行、同时支持 DM 任务。

在 DM R5F 上运行的非 DM 代码不应以任何方式干扰 DM 任务。 这意味着非 DM 任务不应使 DM R5F 内核崩溃、阻止 DM 任务运行、损坏 DM 存储器等 如果 DM 任务崩溃、 设备管理 (DM) 和电源管理 (PM) 请求将失败。 这 会使 器件无法运行、直到下电上电复位 DM R5F。

以下是为在 DM R5F 上运行编写自定义代码的客户提供的最佳实践。

其他资源

此信息计划添加到 MCU+ SDK 文档中的 Developer Guides > Developing applications on Device Manager/Wake-up R5 core(开发人员指南>在器件管理器/唤醒 R5 内核上开发应用)下。 文档更新后、我们将使用链接更新此常见问题解答。

以下是  RE 的辅助常见问题解答:【常见问题解答】DM R5F 在某些情况下可能崩溃:AM62x、AM62Ax、AM62Dx、AM62Px、AM67、 AM67A  问题“我们正在编写定制 DM R5F 固件。 我们的设计会受到影响吗?“

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

    非 DM 代码不应导致 DM R5F 内核崩溃

    以下是一个非 DM 代码如何导致 SDK 11.1 及更低版本中的 DM R5F 内核崩溃的示例:

    函数 DebugP_ASSERT() 用于冻结内核的操作并在检测到错误时保留状态。 但是,这意味着 DebugP_assert () 会停止包括 DM 任务在内的整个 DM R5F 内核。 在大多数情况下,对于非 DM 任务,我们建议使用不同于 DebugP_assert () 的不同错误处理机制。

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

    非 DM 代码不应阻止 DM 任务运行

    DM 任务应始终是 DM R5F 上运行的最高优先级任务。 这可确保其他任务不会阻止 DM 任务使用 while () 循环、if () 条件等运行

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

    非 DM 代码不应损坏 DM 存储器

    可以使用静态分析工具和其他方法来捕获潜在的存储器问题。

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

    系统恢复

    如果您要对 DM R5F 进行编程、建议添加一种方法、在 DM R5F 锁定或以其他方式进入错误状态时让系统恢复。 请记住、如果 DM 任务无法正常工作、通常用于恢复的代码可能无法正常工作(例如,Linux shutdown 命令)。 DM R5F 看门狗计时器是一个恢复工具。 MCU+ SDK 中有一个看门狗示例、位于 examples/drivers/watchdog/watchdog_interrupt