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.
工具/软件: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