大家好、
我在 C++中开发一些应用程序、其中我不使用 RTOS、只使用 C++标准库和 TivaWare 库。 我!!!假设!!!!!当我调用一些需要重新分配内存块的 C++容器操作时、它将禁用中断(例如:cpsid)。 这些操作仅在主函数中进行、除此之外、我需要处理中断函数(如 PWM)中的一些实时任务。
我的问题是、我能否调整内存分配的执行级别、例如:将其设置为中断优先级0xE0、而我的实时中断发生在优先级0x00上。 我愿意接受任何想法。
此致、
Norbert
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.
大家好、
我在 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 函数。