工具/软件:
我正在调试一个令人讨厌的错误、该错误看似随机的数据损坏会导致基于 AM6548的电路板在测试实验室环境中崩溃。
数据损坏始终发生在半可预测的位置:
- 我们运行的是市面上出售的实时操作系统
- 数据损坏总是发生在内核任务状态中的某个位置
- 当操作系统的调度程序正在执行任务切换时、此状态用于存储器地址计算。 这会导致非法的内存访问、使内核崩溃。
- 数据损坏似乎不是在崩溃前源于代码:这很可能是来自其他地方(操作系统内核本身、另一个内核任务、甚至是设备驱动程序)的恶意内存访问。
- 幸运的是、数据损坏值在大多数情况下似乎是相同的(0xfffdffff -有效值为0xffffffff (-1)或小整数)。
- 请注意、相关内存字段在正常操作中更新非常频繁-数据损坏和随后的崩溃仅在运行几个小时后发生。
这听起来 是获取条件观察点的不错选择:通过监视对可预测的存储器位置的任何存储器写入、并对写入的值有条件、我们应该能够指出哪段代码导致损坏。 遗憾的是、我根本无法创建条件观察点!
通过搜索该论坛、Code Composer Studio (我使用的是 v12.8.1.00005)应该在"Breakpoint properties..."下有一些相关选项、但我在我的系统上看不到它们。 这是 ARM 限制吗? 我将使用 Blackhawk USB200 JTAG 仿真器连接到 A53内核。
我还直接使用 ARM 调试观察点寄存器进行了研究、但我无法找到除观察点控制(DBGWCR)之外的任何相关内容 )和观察点值(DBGWVR )寄存器。
其他任何可以帮助我解决这个问题的工具吗?