请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: AM6442
我是应用程序中的运行时对象视图、当我将 Heap 段保留到 NoLoad 内存区域中时、它会抛出 Expection。

注意:该问题特定于基于 CCS Eclipse 的 IDE (CCS v12.8.1)。
请参阅以下错误消息。

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.
器件型号: AM6442
我是应用程序中的运行时对象视图、当我将 Heap 段保留到 NoLoad 内存区域中时、它会抛出 Expection。

注意:该问题特定于基于 CCS Eclipse 的 IDE (CCS v12.8.1)。
请参阅以下错误消息。

出现上述错误的原因是调试器无法读取位置 0x70100de0 处的存储器地址。 用于读取此存储器的 ROV 代码会使用 fetchArray 函数、该函数 无法 读取存储器内容、因为其未初始化或损坏。 请参阅上述错误消息。
我们需要修改 ROV 的代码、以使用 fetchFromAddress API 而不是 fetchArray API。
修改 getTaskFreeStackSize 传递函数 ${MCU+SDK}/source/kernel/freertos/rov/FreeRTOS.rov.js 包含以下提供的代码。
function getTaskFreeStackSize(stackBase, currentTaskSP)
{
let skipSize = 128;
/*
* We don't know the size of the task stack, so look every n bytes :(
*/
let stackData = Program.fetchFromAddr(stackBase, "uint32_t");
let index = stackBase;
/*
* Find the first non-0xa5.
*/
while ((stackData == 0xa5a5a5a5) &&
(index < currentTaskSP)
) {
index += skipSize;
stackData = Program.fetchFromAddr(index, "uint32_t");
}
if (stackBase >= index)
{
return "STACK OVERFLOW";
}
else {
return index - stackBase;
}
}
完成上述修改后、重新打开 ROV 视图、然后它应按预期工作。