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.

[参考译文] MSP430FR2675:在中断服务例程内使用`断言`安全吗?

Guru**** 2512785 points
Other Parts Discussed in Thread: MSP430FR2675

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1040713/msp430fr2675-is-use-of-assert-safe-inside-interrupt-service-routines

器件型号:MSP430FR2675

我使用的是 MSP430FR2675和 CCS 10.3.1。  由于 CCS 实现了一个尝试写入调试控制台的复杂断言、因此在 ISR 内部使用是否安全?  如果在 ISR 中使用不安全、TI 建议在给定条件失败时停止调试编译中的程序执行什么?

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

    您好!

    让我检查一下这个。

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

    hhi pcpro178、

    我无法跟踪任何能够提供确切答案的人。  请让我再休息一天、以便跟踪有经验的人、并可以发表评论。

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

    hhi pcpro178、

    很难找到您问题的答案。  让我继续看。

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

    谢谢。

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

    hhi pcpro178、

    下面 是一个帖子、可能会对您的问题提供部分答案。

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

    根据建议的帖子,在 ISR 中使用出厂提供的`assert()`的唯一缺点是它会占用大量内存。

    TI 编译器 MSP430运行时库中的 assert 函数最终调用 fprintf、以输出错误字符串、其中包含断言失败的文件名和行号。 这对于 PC 程序来说是可以的、但在 MSP430器件中需要过多的代码/数据存储器。

    我的理解是、fprintf 等函数根据具体实现情况、可以通过调用`malloc()`来动态分配内存、而 malloc 不一定是线程安全的。   我看到断言的 CCS 工具实现使用 fputs。  您能不能谈一谈 TI 在 ISR 内部实现 fputs 和 malloc 的用法?

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

    我上次查看时、printf "内核"(_TI_printfi ())未使用 malloc。 我不知道 I/O 函数。