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.

[参考译文] CCS:CCSv7:更改后重建时程序不重新加载

Guru**** 2553450 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/583614/ccs-ccsv7-program-does-not-reload-on-rebuild-after-changes

主题中讨论的其他部件:TMS320F2.8335万

工具/软件:Code Composer Studio

CCS团队,

我正在使用CCDS510USB与7.0 F2.8335万器件,0.0.0042万 仿真器。  我有一个项目只使用内部RAM。  我依靠CCS为我加载程序。  当我第一次进入调试模式时,项目将加载并运行。  但是,如果我更改程序并重建(在连接到目标的调试模式下),它不会重新加载。

这不是CCS设置问题。  我实际上配置了CCS以提示我在生成时重新加载,它确实提示我。  但程序不会重新加载。  如果我执行“运行->加载->重新加载程序”,则程序将重新加载。  我可以通过在内存视图中查看我更改的程序部分来查看此内容(是的,我也刷新了窗口。  这不是刷新问题)。  或者,我可以更改 类似LED闪烁速率的内容,并且可以看到运行程序时闪烁速率没有变化。

这是一个已知问题吗?

此致,

David

附录,2017年3月23日至24日PM EDT -

问题似乎与闪存编程器有关。  我在闪存中有一个常量表,其余的程序链接到RAM。  闪存设备后,编程器似乎没有重新加载RAM。  之前,我已移除表,但重新加载失败已卡住。  即使没有闪存表,CCS在修改和重建程序后也不会重新加载程序。  此后,我重新启动了CCS,但该行为似乎不会继续。  如果我删除闪存表,则重新加载正在工作。

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

    David,

    我怀疑您的问题与此已知错误 https://jira.itg.ti.com/browse/CCDSK-2466有关

    虽然您的使用案例不涉及CLA,但错误的根本原因是IDE记住了对文件执行的最后一个操作,而只在重新加载时执行该操作。这与您的情况似乎相同。  

    该错误的目标是在7.2 中修复。  

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

    您好,Aarti:

    我不相信这是同一个问题。  可能是,但很难辨别。  我看到的问题是在程序加载时,闪存编程器在对闪存编程后无法加载RAM。  这是在RAM和闪存中已初始化部分的项目中出现的问题(仅在调试情况下,但有效的方案也是如此)。  在程序加载时,会对闪存进行编程,但不会加载RAM。

    解决方法是对闪存进行编程,然后将闪存编程屏幕更改为"RAM Load Only (仅RAM加载)",然后再次加载程序。

    我认为应该有人调查问题,以确保问题得到纠正。  如果需要,我可以提供测试用例。

    顺便提一下,我今天试用了CCS v 7.1 .0.0.0016万。  问题仍然存在。

    此致,

    David

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

    如果您可以提供一个很好的测试案例。 我将提交另一个错误报告,以确保它得到查看和解决,以防它与我提到的问题不同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Aarti,

    附件为7.1 2.8335万的0.0.0016万 项目。  out文件位于/Debug文件夹中。  您不需要导入项目。  您只需 连接到目标(任何F2.8335万板),然后执行“运行”->“加载”->“加载程序”并浏览到.out文件。  这将加载闪存,但不加载RAM。  您可以打开内存窗口以寻址0x0000/0x0001。0001。  正确值为0040 8761 (硬地址的长分支)。  但您在加载后将看到0000。  这是因为RAM加载失败。  如果您执行“Tools”(工具)->“on-Chip_Flash ”(芯片上快擦写),并将快擦写工具设置为“Load RAM only”(仅加载RAM),然后重新加载程序,您将看到正确的内容40.8761万。  在.zip文件中,还有一个视频,说明了我刚才描述的重现问题的内容。

    e2e.ti.com/.../CCS_5F00_RAM_5F00_Load_5F00_Issue.zip

    此致,

    David

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

    David,

    我可以复制此信息,但我想在提交错误之前检查一个详细信息。  

    具体来说,我看到的问题是地址0x0 (code_start)没有正确加载,正如您所提到的那样。 因此,如果项目的入口点设置为code_start,则代码不会在main()处停止,也不会按预期运行。 将片上闪存设置更改为“仅加载RAM”并重新加载程序可解决该问题。  

    但是,您之前提到过,在重新加载代码后,更改某些代码(如LED闪烁速率)也不会反映出来。 我无法再现这一部分。 例如,如果我在DefaultIsr_nonBIOS.c: IF (GPIO32_COUNT++>1250)中更改了此行, 我会看到代码在重新加载时已更改(即使不需要“仅加载RAM”变通办法)。  

    您能否确认重新加载时是否收到代码更改?

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

    您好,Aarti:

    我可能混淆了两 个不同的问题。  最初我在项目中仅使用RAM。  我注意到,如果我更改了程序并重建了它,程序就不能重新加载(即使我启用了自动重新加载)。  我必须特意执行重新加载程序才能加载新构建的代码。  那是7.0 的。  在调查该问题的过程中,我转到了7.1 .0.0.0016万 ,问题似乎不再出现(我刚刚检查过)。  我当时配置了一些有趣的东西,或者在7.0 中导致问题的任何东西都在v 7.1 中得到了解决。

    另一个问题是,当您在项目中有闪存和(初始化的) RAM时,闪存编程器在刻录闪存后无法加载RAM。  查看RAM中的地址0x0000只是检测此情况的一种方法。  我碰巧在该地址初始化了RAM。

    此致,

    David

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

    今天我多看了一点。 有一点很好:闪存编程器在闪存设备后似乎正在加载RAM,但并未加载所有RAM。 我已在多个地址(包括0x0000)初始化RAM,然后程序的大部分位于0x8000的RAM块中。 0x8000处的块在刷新后加载,但0x0000处的代码未加载。 只是想指出这一点。

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

    感谢您的澄清。 我为此问题提交了错误号CCBT-2077。