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:代码在调试模式下工作、不在发布模式下工作

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1338601/tms320f28379d-code-works-in-debug-mode-and-doesn-t-work-in-release-mode

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

期号 :代码在调试器模式下执行正确,但在释放模式下会遇到问题。

观察结果 :当在调试程序环境中执行时,代码看起来像预期的那样起作用。
不过、在转换到释放模式时、 会出现意外行为、例如输出不稳定、未能完成所需的任务。

请告诉我、如果有其他详细信息、我可以帮助您更好地了解情况。

我热切地等待你的答复,并期待你协助解决这一问题。

此致

萨达姆

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

    你好 Saddam:

    然而,转换到释放模式时, 出现意外行为,例如输出不稳定,无法完成所需任务。

    您能否提供您所看到的具体问题的具体信息? 您是否曾尝试过 比较调试和释放模式下从闪存和 RAM 运行的执行情况? 在调试模式下、您是选择"恢复"还是单步执行代码? 如果您使用闪存、是否已尝试在释放模式下使用最大闪存等待状态?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否提供您所看到的具体问题的详细信息?

    ->我们正在使用3个计时器中断(32ms,32ms,50ms),每个计时器 ISR 都有许多函数同时运行,现在当我添加了更多的函数,那么它不能正常工作  

    在调试模式下,您是选择恢复还是单步执行代码?

    ->我们选择了恢复,但我们也尝试了步进。 我们已尝试过两者都在调试模式下工作、

    如果您正在使用闪存,是否已尝试在释放模式下使用最大闪存等待状态?

    ->你能告诉我,我必须为它写代码或我必须修改属性,你能帮助如何做到吗?

     供参考的文件的 PFA

    e2e.ti.com/.../map_5F00_and_5F00_command_5F00_files.rar

    此致、

    萨达姆

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

    你好 Saddam:

    只是为了验证一点、在调试模式下、您是否在优化关闭的情况下执行?

    ->您能告诉我,我必须为它编写代码,或者我必须在属性中修改代码吗?

    您可以使用 driverlib 函数 Flash_setWaitstates 来设置闪存等待状态。 此函数修改 FRDCNTL 寄存器:

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

    您好、Omer:

    只是为了验证一点、在调试模式下、您是否在优化关闭的情况下执行?

    [/报价]

    ->是的、在两种模式下、即调试和释放模式下、优化都已关闭。

    ->在 while (1)之前的主文件中调用了此函数"Flash_setWaitstates (FLASH0CTRL_BASE、DEVICE_FLASH_WAITSTATES);"(DEVICE_FLASH_WAITSTATES = 15)、但问题没有解决。

    此致

    萨达姆

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    期号 :代码在调试器模式下执行正确,但在释放模式下遇到问题。

    我假设您指的是"调试"和"发布"构建配置。

    唯一不同的是构建选项。 请注意、编译配置是可自定义的且高度可变的、因此对于"调试"和"发布"的作用没有设定规则。 它真的是完全可变的,并依赖于创建原始项目的人。

    请指定调试和发布版本构建的完整构建输出。 进行重建以确保先进行清洁。 可以将每个编译输出复制并粘贴到文本文件并将其附加到该主题中。

    谢谢

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

    你好 Ki

    我假设您指的是"调试"和"发布"构建配置。

    [/报价]

    ->否。

    我指的是下面的解释:  

    a) Debug Mode:代码加载时连接了调试器,单击"Play"按钮,代码运行正常。

    b)释放模式: 代码加载了调试器,点击播放按钮,调试器被删除,系统被重置,代码被卡住。

    注意:我们仅在构建配置中使用调试。

    此致

    萨达姆

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    b)释放模式: 代码加载了调试器,点击播放按钮,删除了调试器,系统被重置,代码被卡住。

    "调试器被移除"的意思是什么。 您是终止调试会话还是只执行"自由运行"并断开调试探针?

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

    Ki、您好!

    您的意思是"调试器被删除了"。 您是终止调试会话还是只执行"自由运行"并断开调试探针?

    是的、我只需点击播放按钮(绿色)、几秒钟后终止调试会话、然后断开调试探针、并通过关闭电源再打开系统复位即可。 我这么做只是为了将代码下载到控制器中。

    起初我认为代码中有一个错误、但如果有一个错误、那么代码是如何在调试模式下运行的(即、当调试器连接时、我正在进入代码)、我找不到实际的问题。

    注意:Build Configuration 处于调试模式。

    此致

    萨达姆

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,我只需单击播放按钮(绿色)即可自由运行即可[/报价]

    绿色播放按钮不能进行"自由运行"。 它会执行标准调试运行。  

    请参阅此部分有关自由运行的内容(该部分底部的注释):

    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html#after-launch

    此选项将运行目标、然后正确 断开调试器对目标的访问。 标准运行不会执行此操作、因为调试器将在目标运行时持续轮询目标、如果适用、还会进行任何实时调试访问。 此时、您可以在调试器仍在运行时从目标上物理断开调试探针。

    请尝试执行此操作、但暂时不要终止调试会话。 查看其是否按预期工作。 然后尝试终止调试会话。 结果是什么?

    谢谢

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

    你好 Ki

    1)理解我要将代码(即 CCS 工程)加载到微控制器中的一件事、如上所述、我不会使用 Uniflash 等任何外部工具来执行该任务。

    2)如何在不使用 uniflash 的情况下在微控制器中加载代码?

    回答:我将通过 JTAG 引脚把调试器连接到微控制器,在 CCS 中,通过单击"错误符号"启动代码,视图从 CCS Edit 更改为 CCS Debug,然后单击"恢复"按钮(绿色)进行调试运行。

    2a)、直到调试运行代码正常工作、但当我删除调试器并重新启动系统(即控制器)时、代码会卡住。

    3)直到现在,每次代码运行在"调试运行"和"调试运行+重新启动系统后"相同。

    备注:我认为如果上述我在答复中提到的问题不清楚,我认为应该安排网上会议,因为我展示的问题比解释要容易得多。

    此致

    萨达姆

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    2a)直到调试运行代码正常工作,但当我删除调试器并重新启动系统(即控制器)时,代码会卡住。

    感谢您的澄清。 这是关键点。 您可以使用 CCS 调试器刷写、然后运行目标。 它都能正常工作。 然后终止调试器、重新启动系统(未连接到调试会话)、代码会卡住。

    重新启动系统时(我假设是下电上电或重置)、环境发生了变化。 请注意、当您使用 CCS 启动调试会话时、调试器通常在连接到目标时进行一些目标初始化。 这通常通过启动 GEL 文件来完成。 为了使目标处于正确运行的正确状态、可能需要执行这些操作。 当您重新启动系统并在没有调试会话的情况下运行代码时、将错过这些步骤。 您对此有何解释?

    在任何情况下、这不是 CCS 问题、而是更属于环境问题。 我将提请 C2000专家注意此事、以便进一步评论。

    谢谢

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

    您好!

    但这些都是相同的条件,我以前应用,为什么这些问题现在发生,通过添加更多的函数我的代码?

    此致

    萨达姆

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但这些都是我之前应用的相同条件,为什么现在出现这些问题,通过在我的代码中添加更多的函数?

    增益值。 我将在这方面听从 C2000专家的意见。

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

    Saddam,

               当代码与已连接的调试器一起工作时、但不处于独立模式、这可能是因为 RAM 中存在已初始化常量。 请检查您的项目中是否存在任何。 以下帖子提供了有用的提示:

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/878674/faq-flash---how-to-modify-an-application-from-ram-configuration-to-flash-configuration 

    即将到来的周末是在美国的一个漫长的周末。 请在下周早些时候收到回复。

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

    您好!

     

    在我们的项目中、我们已经使用了闪存链接器 cmd 文件、并将引导引脚配置为闪存引导。

    所有初始化的段都映射到基于闪存的链接器命令文件中的闪存存储器、您可以看到我在之前的响应中在.zip 文件中提供了这些内容。

    TI 的虚拟会议有助于解决该问题。

    此致

    萨达姆

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

    你好 Saddam:

    2a)直到调试运行代码正常工作,但当我删除调试器并重新启动系统(即控制器)时,代码会卡住。

    当您说代码卡滞时、您是否能够验证它卡滞在何处? 您是否尝试过重新连接调试器、而只是在不加载代码的情况下连接至器件(即、启动目标配置 ccxml 文件并连接至目标而不加载代码)?

    但这些都是我之前应用的相同条件,为什么现在出现这些问题,通过在我的代码中添加更多的函数?

    您能否说明您添加的代码使该程序有所不同?

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

    您好!

    当您说代码被卡住时,您是否能够验证它被卡住的位置?

    ->不对、因为代码不是在独立模式下工作、而是在调试模式下工作、所以我找不到它在哪里卡住。

    您能说明您添加的具体代码使该程序与众不同吗?

    ->我可以在联机会议中向您展示代码。

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

    你好 Saddam:

    我已向您发送朋友请求、请接受、我们可以发送有关协调会议的消息。

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

    完成

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

    现在离线继续、如果有任何新信息、我会作出回应。

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

    嗨、大家好!

    对于 x49c MCU 几乎有相同的问题、两个运行情况中的版本都进行调试、而不是发布。 建议启用 CCS 内存映射视图以确定在 SRAM 中加载任何#pragma 段的位置、开发人员可能必须组合这些段来隔离问题。 其次、删除之后添加的 ISR 函数、直到锁定停止、识别导致锁定问题的函数或 ISR。 带有 JTAG 仿真器的调试仿真器执行代码的速度与没有 JTAG 控制的 CPU 运行的独立 C 代码的速度相类似。   

    此致、