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.

[参考译文] AM2634-Q1:DebugP_assert 的函数的用途和#39

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1457977/am2634-q1-what-s-the-function-for-debugp_assert

器件型号:AM2634-Q1

工具与软件:

尊敬的专家:

我们的 DebugP_ASSERT 将判断输入参数是否为合理的值、如果不是、则会跳转到无限循环、因此我的客户会问这个问题:

1. 为什么 将 DebugP_ASSERT 设计设置为无限循环? 他们认为、如果输入参数大于合理值、则可以限制为最大值、然后代码不会卡在此循环中。

2.  DebugP_ASSERT 是否 会在未来发生变化?

BRS

Shuqing

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

    大家好、Shuqing、

    1. DebugP_ASSERT 函数旨在识别传递给函数的错误参数或从函数返回的值。  如果 EXPRESSION 评估为0、则该函数会永远禁用中断和循环。 虽然对于某些模块、将参数值限制为最大/最小可能是可行的解决方案、但总体而言、该逻辑可能不适用于所有模块。 在某些情况下、驱动程序或应用程序 功能可能会损坏。 如果满足 DebugP_ASSERT、用户的预期是修复代码。 用户可以根据自己的要求修改设计(记录一些信息、修改无效值等)。 一般来说、断言函数用于中止代码、而不是修复和继续执行程序。 断言功能主要是预防性的"检查"、以避免不一致的行为、而不是用于避免不一致的"代码校正"。

    2.由于这是 SDK 中使用的通用 DPL 层 API、该行为在不久的将来可能不会改变。 我在这里看到了两个选项、客户可以在应用程序中启用这些检查以查看参数是否有效(如果无效、请将其值限制为某些最小值或最大值)、然后调用 DebugP_assert 检查、否则在 source/kernel/DPL/和 DebugP.h source/kernel/{OS}/common/DebugP_log.c 文件中修改现有的 DebugP_assert ()函数并重新构建库。 我不建议使用后者、因为它可能会破坏其他驱动程序/模块/应用程序功能。

    此致、
    Shaunak