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.

[参考译文] CCS/RM48L952:在 b prefetchEntry 处的调试停止

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/814062/ccs-rm48l952-debug-stop-at-b-prefetchentry

器件型号:RM48L952

工具/软件:Code Composer Studio

您好!

我正在 项目中使用 FreeRTOS 和 FreeRTOS TCP、并希望启用动态堆栈溢出检查。 我使用的是 TI ARM C/C++编译器版本 v18.12.1.LTS。

运行代码时的示例。

如果 我只在项目中添加 FreeRTOS 代码、我可以 使用函数'pvPortMalloc'来分配内存空间。

但是在我添加 FreeRTOS 和 FreeRTOS-TCP 代码后, 一个用于 分配必需空间的定义'pvPortMallocSocket ',默认情况下它还指向 FreeRTOS 函数'pvPortMalloc()'

代码不会超过 prefetchEntry。

在 FreeRTOS-TCP 中、应用 程序必须 使用 heap_4或 heap_5内存分配器、因此 我选择文件'heap_4.c'。

我不知道如何避免它。

你能给我 一些建议吗?

在 FreeRTOS,中、以下代码经过 prefetchEntry。

在 FreeRTOS 和 FreeRTOS-TCP,中,以下代码不会超过 PrefetchEntry。

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

    您好!

    当发生预取中止时、CPU 会将预取指令标记为无效、并且所有的 p-aborts 都是精确的中止。 请检查链接寄存器(r14_pabt)中的值以确定哪个指令生成了中止。  

    您还可以使用 CP15_Instruction _Fault_address 寄存器(CCS->Registers ->CP15)来确定哪个指令导致了中止:

    有关 IFAR 的更多信息、请参阅 Cortex-R4F TRM 修订版本 r1p3的第133页。