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/LAUNCHXL-CC2640R2:ROV View stackPeak 和内部错误

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/741987/ccs-launchxl-cc2640r2-rov-view-stackpeak-and-internal-error

器件型号:LAUNCHXL-CC2640R2

工具/软件:Code Composer Studio

您好、论坛、

关于运行时对象视图、我有两个问题:

1)在 ROV 中、我的 stackPeak 有时高于显示的值、并快速返回到较低的值、该值不会在很长的时间(1到5分钟)内发生变化。 我认为 stackPeak 代表运行时以来使用的最大堆栈、这是我的假设、但这是错误的。 是否有可能获得该值、也是最高值? 或者、您是否也进行尝试和错误操作、并根据经验获得最佳堆栈大小?

2) 2)在我的应用中有4个任务。 在5..10min 中发生 ROV->task->deteded->blockedOn 出现红色标记“内部错误”消息。 这意味着什么?

提示2):在另一个时间、它以白色/或黄色(更改的)显示正常的"blockedOn 信标:0x20002288"。 应用程序具有正常功能、运行良好、 不要挂断。

此致、

布恩

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

    你好、布恩、

    1.为了确定堆栈峰值、使用0xbebebebe 值初始化堆栈。 然后、ROV 从堆栈顶部开始(器件的低地址)、并开始搜索第一个非0xbebebe 值。 一旦它找到它、这就是峰值。 例如、让我们假设这是堆栈

    0x1000:0xbebebebe

    0x1004:0xbebebe

    0x1008:0xbebebebe

    0x100C:0x20043234

    0x1010:0xWWWWWWWW // 任意值

    0x1014:0xXXXXXXXX // 任意值

    0x1018: 0xYYYYYYYY // 任意值

    0x101C:0xZZZZZZZZ //任何值

    ROV 开始查看0x1000。 由于它具有0xbebebebe (对于您的器件、它一次查看一个字符而不是32位)、因此它会查看下一个地址、依此类推。 在地址0x100C 处、比较失败、因此栈峰值为20字节。

    因此、除非堆栈上有设置为0xbe 的内容、否则 ROV 峰值永远不会随时间的推移而下降。 注意:我假设您没有删除任务(或让其退出)并重新创建任务。 在这种情况下、它基本上是一项具有全新堆栈的新任务。

    2.您是否在目标运行时更新 ROV。 有时这会导致 ROV 中出现垃圾。 ROV 可以简化读取目标上的存储器、然后智能地显示数据。 如果目标正在运行(或在关键指令动作中暂停)、则从 ROV 的角度来看、数据可能处于无效状态。 例如、如果 HeapMem 的自由译员在下一个指针更新时被检查、但不检查 PRV、则可能会导致 ROV 问题。 目标代码正常。 因此、如果您在目标运行时每隔几分钟就会看到这种情况、并且应用程序似乎没有任何问题(例如 UART 仍在运行、堆栈仍在运行等)、我不会担心。

    Todd

x 出现错误。请重试或与管理员联系。