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.

[参考译文] TMS320F28379D:调试错误"试图在0xFFFFFFFE @数据"处读取内存末尾

Guru**** 2609845 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1067914/tms320f28379d-debug-error-attempted-to-read-past-the-end-of-memory-at-0xfffffffffffffffe-data

部件号:TMS320F28379D
“线程:测试”中讨论的其它部件

您好,

我尝试使用 CPU2的 CLA,但在尝试启动调试会话时遇到一些奇怪的错误。 调试会话启动后,我在与 CPU2相关的调试窗格中收到以下错误:“_args_main() at args_main.c (发生错误:试图读取内存末尾的数据时出现0xFFFFFFFE @Data)”。 此外,如果我尝试在 CPU2中运行 main,大多数变量值将解析为类似的错误,声明:“已尝试读取内存结束…”。

我创建了一个简化的“沙盒项目”,在 CPU2上实施 CLA,但没有出现这些错误,似乎运行良好。 我已将该沙盒项目中的代码(主要来自 CPU1,主要来自 CPU2,带有任务的.CLA 文件和 cmd 链接器文件)复制到当前项目中,但仍看到错误发生。 我比较了每个项目的所有项目配置设置和调试配置设置,它们都匹配。 我尝试删除所有工作区和项目文件并重新构建所有文件,但这也不起作用。 但是,由于完全相同的代码在一个项目上有效,但在另一个项目上却不起作用,我认为它可能是某种配置? 看了这篇文章 ,https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/918298/ccs-tms320f28388d-debug-error-attempted-to-read-past-the-end-of-memory-at-0xfffffffffffffffe-data,我尝试将调试 dwarf 版本从3更改为4,并尝试将浮点模式从放松更改为严格,但这两种方式都没有帮助,程序似乎无法在主站点找到入口点。

我使用的是 CCS 版本“10.2.0.00009”,编译器版本“TI v20.2.LTS”。 我不会对.args 部分或 c_args _SYMBOL 执行任何操作。 我附上了有关错误的屏幕截图。 如屏幕截图所示,我通过使用0xA5填充整个堆栈内存空间并重置程序来测试堆栈溢出。 在我运行程序后,我可以看到堆栈没有靠近溢出的位置。 ‘由鼠标指向的地址0xB004是变量“platformCoreConfig”的实际位置,上面的窗口显示该变量为0xFFFFFFF6。

谢谢

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

    您好,Braden,

    您的屏幕截图未通过。  请重新发送。  此外,为了进行调试,您能否在连接到目标之前关闭所有打开的内存,寄存器和变量视图窗口。  让我们知道您观察到的情况。  

    谢谢,

    克利须那

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

    克利须那,你好!  

    已立即附加屏幕截图。 我关闭了所有内存,寄存器和变量窗口,重新启动调试器,并看到了相同的结果。 此外,为了提供更多信息,如果我只运行 CPU2,我可以成功到达 CLA 中的断点并逐步完成 CLA 代码。 但如果我尝试设置断点或暂停 CPU2,则由于 “试图读取内存结束后的数据…”,我无法读取任何变量 错误。 我的程序被设置为基于 eCAP 中断触发 CLA,我有一个测试信号被输入 eCAP 输入引脚,因此程序似乎成功地切换 eCAP 中的测试 GPIO 引脚和读数,以在运行时触发 CLA,但我是 由于内存错误,无法执行任何调试。  

     

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

    布拉登,  

    感谢您的反馈。  在断开 CLA2连接的情况下,您是否能够设置 BP,单步并对 CPU2执行正常调试操作?   

    此致,

    克利须那

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

    否,我仍然看到内存错误,如以下屏幕截图所示。 我看到 CPU2“正常”操作的唯一方法是在.CLA 文件中注释任务。

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

    请详细说明.CLA 文件。  您的意思是评论屏幕截图中显示的行吗?

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

    是的,如果我评论一下 Cla1Task1 ISR,我就会看到 CPU2的作用。 但是,我再次可以在另一个项目上运行完全相同的代码,并看到它在完成 ISR 未注释的任务时工作正常,因此不确定正在进行什么。

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

    您好,Braden,

    请仔细检查链接器命令文件,查看是否有任何地址奇怪或意外的变量。  对地图文件执行相同操作。   

    此致,

    克利须那

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

    您好,Braden,  

    我们尚未收到回复,并假设您已能够解决您的问题。  我们将根据这一理解关闭这一职位。  如果情况并非如此,请随时重新打开或提交新帖子,并提供所请求的信息。  此致,克利须那

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

    克利须那,你好!

    很抱歉耽误你的时间。 在做了一些额外的测试后,我发现了项目的中断点,但我不知道为什么。

    我看到 CLA 成功运行的测试沙盒项目本身没有其他类(仅从自定义静态库链接的类)。 我的另一个项目复制了沙盒项目内容,该项目给出了错误,该项目中有几个类,似乎会破坏代码。 我删除了项目中的所有其他类,并看到 CLA 代码成功运行。 然后,我创建了一个带有空构造函数的虚拟类,可以看到它破坏了代码。 即使我没有将班级包括在主课中,我也会遇到上述错误。 您有什么想法会导致此问题?

    谢谢,

    布拉登

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

    布拉登,

    听起来您的项目有一个出现问题的截止版本。  这是正确的吗?  如果是,您是否能够共享此项目?  根据你的解释,我们没有什么可以指出的。   

    如果您仍然无法共享代码,您可能需要查看分解视图,并在装配体中逐步使用和不使用虚拟类来查看是否可以观察到任何差异。

    您还可以在这两种情况下查看生成的地图文件,并查看不同之处。

    此致,

    克利须那

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

    是的,我的项目的剪切版本(完全删除所有本地类) 不会出现问题。 然后,如果我添加具有空构造函数的本地类,我可以看到问题再次出现。 似乎任何本地类的编译都导致了该问题,因为如果我创建空的虚拟类,甚至不将其包括在项目中,就会出现该问题。 我无法共享该代码,但我在反汇编过程中通过了 c_init00(),无法确定任何差异。 我还比较了这两个地图文件,没有区别。

    项目是否可能变得足够复杂,从而导致出现类似的调试器问题? 因为,如果我不使用调试器而让程序自由运行,那么一切似乎都可以正常运行。 我已经采取了删除所有本地类并在主代码中测试特定于 CLA 的代码的方法,然后将所有本地类重新添加到中,只需在没有调试器的情况下运行该程序。  

    谢谢,

    布拉登

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

    您好,Braden,

    我们需要一些可重现的测试案例来进一步调查。 这是否可能提供? 我无法用我在这里尝试的例子再现。

    我不需要您的实际代码。 您可以尽可能地减少(实际上,这使我们更容易进行调查)。 只要它能重现问题,这就是我们所需要的。

    如果您想与我分享,请开始与我进行私人 E2E 对话。

    谢谢

    Ki