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.

[参考译文] TM4C1294NCPDT:malloc /新的执行级别

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/589650/tm4c1294ncpdt-malloc-new-executiton-level

器件型号:TM4C1294NCPDT

大家好、

我在 C++中开发一些应用程序、其中我不使用 RTOS、只使用 C++标准库和 TivaWare 库。 我!!!假设!!!!!当我调用一些需要重新分配内存块的 C++容器操作时、它将禁用中断(例如:cpsid)。 这些操作仅在主函数中进行、除此之外、我需要处理中断函数(如 PWM)中的一些实时任务。

我的问题是、我能否调整内存分配的执行级别、例如:将其设置为中断优先级0xE0、而我的实时中断发生在优先级0x00上。 我愿意接受任何想法。

此致、

Norbert

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

    [引用 user="Norbert Toth"]i!!!假设!!!!!当我调用一些需要重新分配存储块的 C++容器操作时、它将禁用中断(例如:cpsid)。 TI 编译 器 RTS (运行时支持库)将存储器分配函数视为非可重入函数、不应从中断调用非可重入函数。 请参阅 RTS (运行时支持库) Wiki 条目中的非重入函数。

    默认情况下、RTS 函数不会禁用中断、它们采用单线程运行模式。 如  编译器用户指南的处理可重入性(_register_lock ()和_register_unlock ()函数)部分所述、RTS 提供了一些函数、可用于围绕 RTS 的关键段安装某种信标保护、以便在 SYS/BIOS 等多线程环境中使用。

    如果您使用的是单线程程序、即没有任何 RTOS、则当 main 执行动态内存分配中断时、不会禁用中断。

    如果您查看 \ccsv7\tools\compiler\ti-cgt-arm_ lib\src\_lock.c 源文件为保护 RTS 的关键段而调用的默认锁定/解锁操作是一个空的_nop 函数。

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

    感谢您的回复。 我有另外一个应用、在这里我必须使用 FreeRTOS (来自 TI 提供的 TivaWare 示例集合)。 只是为了兴趣:他们如何解决这种情况下的可重入问题? 到目前为止、我还没有遇到任何挂钩安装、上面提到的链接。

    此致、
    Norbert