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.

[参考译文] CCStudio:实时发生未知内存问题或闪存内存损坏

Guru**** 2614265 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/643053/ccstudio-unknown-memory-issue-or-flash-mem-corruption-occurring-in-real-time

部件号:CCStudio

大家好,  

我正在使用CCSV6版本OMAP.TI 0.0.0048万 编译器版本C6000 - 6.2 8.2 版本1  平台OMAPL137

如果使用编译器版本 C6000 - TI 8.1 v3.0,我会遇到一个特殊的内存损坏问题,它会在运行一 段时间后冻结系统。

UART停止传输。

如果我倾向于在运行期间使用较小的堆内存分配,或者使用UART TX/Rx的RS232连接而不是USB,则问题就会消失。

但是,如果我想使用更多堆分配,并且还使用USB UART,我必须使用编译器版本8.2。1,我了解到,在分配内存时,在内存映射上使用较小孔的可能性很大。

当我的同事使用编译器版本8.1 6.2 8.2 时,问题以不同的形式出现。0 CCS v SPI.0,使用6.1 写入程序i lib来刷新代码,以实时测试CCSPI.0,TI-SPI生成的输出文件。1.

代码在一段时间后停止工作,并且闪存损坏。

在代码/文本内存部分增加了相当多的容量后,问题开始出现,尽管在内存映射上,它 仍在SDRAM的限制范围内

我正在尽力解决这个问题,我相信有一些潜在的mem问题,在某些情况下,它只是假装消失,如果使用的版本是8.1 ,它会更突出。

如有任何帮助,我们将不胜感激。

当遇到问题时,我使用调试器在CCS GUI上使用RTOS分析器检查堆栈溢出或堆溢出,并且一切都在提供的限制范围内

运行时没有堆损坏。

我还想知道EVMOMAP或仅仅OMAP选项在CCS项目->属性->常规->变体中的变体上的区别

为什么CCS版本6.2 中不再使用EVMOMAP , 我问这个问题是因为,如果我导入在6.2 中的6.1 0中创建的代码,它会抱怨EVMOMAP不存在

 

提前感谢您的所有帮助。

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

    感谢您对我们设备的关注。 我需要一些时间在实验室中收集数据。 请给我几天时间,我会给您回复

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

    您好 ,Tsvetolin Shulev:  

    感谢您的回答。是否有任何关于此问题的发现?

    我已尝试搜索论坛上与我在系统中看到的mem问题相关的所有问题,但我尚未找到任何答案。

    如果你能告诉我任何 有助于修复此错误的小事情,我将不胜感激。

    此致,

    NJ

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

    由于这与编译器相关,我已将其移至TI编译器论坛以获取更多信息。

    为了进一步了解,您是否可以为不同版本的编译器提供编译器选项,并告诉我们是否有一种简单的方法来重现该问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是编译器问题,也可能不是,但编译器团队调试此问题的可能性几乎为零。 熟悉该应用程序的人员需要将故障缩小到更具体,可重现的区域。 我可能建议您检查每个内存分配调用,确保它们都不返回NULL。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    考古学家,您好!  

    感谢您的回复,我同意您的说法。

    我也不会完全怀疑编译器的版本,当然还有一些基本的mem问题,这些问题刚刚被较新的编译器版本推迟了。

    请帮我缩小问题范围以修复错误。

    当代码大小增加 (仍在SDRAM限制内)时,内存故障或闪存损坏的潜在原因是什么?  

    因为旧版软件运行起来毫无困难,代码行比新版本的代码少。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Rahul,
    抱歉,我不确定是否可以在测试台上复制。
    我没有对编译器选项进行任何更改,但使用较新的版本,在属性中添加了信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚检查了编译器版本8.1 .........0和8.2 .1上的boot.c,它们与完全不同
    不同的mem对齐。在将输出文件闪存到板上时,由spidwriter调用。
    (在两个属性上设置的输出格式为General (常规)-> Output format (输出格式)-> EABI (EABI)))
    默认情况下,8.1 v.0的EABI部分代码在boot.c上被禁用,其中AS v.8.2 .1在默认情况下定义了_TMS320C6700,因此使用EABI的浮点寄存器和配置集,并且还有预初始化函数调用。

    如果我从v 8.2 1编译器创建输出并在SPI写入器上使用v 8.1 0编译器版本,调用在闪存后初始化,我认为这可能会在实时工作方式上造成一些差异。

    是否有人能证实这是真的? 它是否会实时影响代码的行为?
    如果是的话,哪一个是最佳解决方案?去8.1 v.0或8.2 v.1?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,  

    是否有人对此问题有任何意见,我仍在遇到内存损坏。没有解决问题的线索。

    我们非常感谢您的帮助。

    此致,

    Nancy