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.

[参考译文] TM4C129XNCZAD:PC/IRP 损坏(在代码地址上)

Guru**** 2414260 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/996399/tm4c129xnczad-pc-irp-corrupted-over-the-code-address

器件型号:TM4C129XNCZAD
主题中讨论的其他器件:UNIFLASH

你(们)好

我在 Tiva 上有一个非常大的代码(950KB、未进行优化、830、已进行大小优化)。 闪存的高16K 用作闪存 RAM。

最近我看到程序计数器(和大多数中断的 IRP)超过0x100、000 (例如0x108a16)。

我没有看到任务堆栈上有任何压力、也没有例外、实际上、高优先级任务正在正常运行。 其中一个任务没有调用堆栈、并在获得 CPU 时转到此伪地址。

所有这一切仅在我从调试器加载代码时发生、但从 DFU 或 Uniflash 加载时不会发生

registers

tasks

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="316322" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/996399/tm4c129xnczad-pc-irp-corrupted-over-the-code-address "]最近我看到程序计数器(以及大多数中断的 IRP)超过0x100,000 

    寄存器的屏幕截图显示了 PC 值0x1008a16。 该地址实际上位于 器件的片上 ROM 中、如果您的程序调用 TivaWare 中的 ROM_(或可能的 MAP_)函数、则该地址也是有效地址。

    请注意、数据表电流显示了一个针对片载 ROM 的错误起始地址。 请参阅 CCS/EK-TM4C1294XL:存储器映射阻止读取0X01009B7C

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

    我看到 GEL 文件是 correct5、但无法跟踪或理解我在该区域代码中的位置

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="316322" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/996399/tm4c129xnczad-pc-irp-corrupted-over-the-code-address/3681026 #36101026"]我看到 GEL 文件是正确的5,但无法跟踪或了解我在该区域代码中的位置

    您的代码是否通过调用 ROM_functions 或 map_functions 显式调用片上 ROM 中的任何 TivaWare 函数?

    [引用 userid="316322" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/996399/tm4c129xnczad-pc-irp-corrupted-over-the-code-address "]

    其中一个任务没有调用堆栈、并在获得 CPU 时转到此伪地址。

    [/报价]

    任务是否停止正确运行、或者当您在调试器下运行时对调用栈进行采样时、您会在对片上 ROM 中的函数的调用中看到代码?

    对于片上 ROM 的内容、CCS 调试器没有符号信息、如果不进行测试、不确定调试器或 ROV 是否能够显示没有符号信息的调用栈。

    您是否使用 TI 或 GNU ARM 编译器?

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

    谢谢、Chester。
    我的代码 调用   ROM_AND MAP_函数。

    代码 停止 正确运行-指向此地址的任务处于永久循环中。 上面的所有任务都正常运行、包括中断。

    我使用的是 TI CCS。 只有当调试器使用 JTAG 加载代码时、问题才会发生。 我想知道我是否以某种方式限制了代码加载。

    供参考:我使用的是 CCS 7.4 Tivaware 2.2.111

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

    这是您正在使用的 CCS 的旧版本。 最新版本为10.3、可从以下网址获取: https://www.ti.com/tool/CCSTUDIO-TM4X#downloads

    我不再有 CCS 7.4版本。 您可以使用 CCS 和 JTAG 加载程序、然后连接 UNIFLASH 并  执行"验证映像"以查看两种方法之间的闪存内容是否相同。

    我相信您没有记录您正在使用的 TivaWare 的正确版本。 最新版本为2.2.0.295