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.

[参考译文] TMS320F2812:调试器是否覆盖了 L0存储器值?

Guru**** 2546020 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/984148/tms320f2812-l0-memory-values-overwritten-by-debugger

器件型号:TMS320F2812


我将脚本环境与 XDS560v2调试器结合使用。 我将一个程序加载到 RAM H0区域、以读取 L0区域并将其从器件传输出去。 我加载程序、运行不涉及传输的所有代码(在设定的断点处停止)、我暂停 CPU 并让 XDS560v2写入 L0区域、然后运行代码的其余部分。 但是、一旦我允许 CPU 运行代码来从器件上传输数据、该区域中的一些地址总是被修改为相同的错误值(特别是0x8856地址)。 我让调试器在运行所有代码后读回整个区域、并验证这些地址是否已更改。


这是使用 XDS560的结果吗?

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

    感谢您访问 E2E 论坛。

    您能建议您在0x8856处看到什么值吗?  

    如果您看到0x7625、这是 ESTOP0指令的操作码、CCS 放置该操作码来创建 SW 断点。  一旦您准备好导出数据、如果清除断点、它将在您将该指令扫描出来之前从存储器中删除该指令。

    另一种可能是堆栈也位于 L0中、您可以检查链接器文件(.cmd)以查看堆栈的放置位置。  通常情况下、它位于 M0或 M1中、但检查它不会损坏。  您可以根据内存可用性对其进行重新定位。

    请告诉我以上内容、我们可以根据需要进行调试。

    最棒的

    Matthew

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

    您好、Matthew、

    我看到值0x911b。 连续地址也会改变、其值 为0x0000。

    只需清除、L0仅是数据。 程序与堆栈一起加载到 H0。  

    Kevin

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

    Kevin、

    只是为了说明您将 DSS 用作脚本环境?  我不知道调试探针或 DSS 会向存储器区域写入内容以支持脚本服务。  我从操作码 POV 中查看了0x911B、这对于插入 CPU 使其执行某项操作来说没有任何意义。

    是否可以共享 DSS 脚本?  如果我的几位同事知道这种行为、我也会问他们。

    最棒的
    Matthew