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/EK-TM4C123GXL:CCS v6.2:使用 F6和 F8执行代码会挂起代码执行。

Guru**** 2479285 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/693867/ccs-ek-tm4c123gxl-ccs-v6-2-executing-code-with-f6-and-f8-hangs-the-execution-of-code

器件型号:EK-TM4C123GXL
主题中讨论的其他器件:TM4C123

工具/软件:Code Composer Studio

如果我们使用 F5 (Step-Into)执行、但使用 F8 (Resume)和 F6 (Step-over)执行、则与 UARTStudio 库一起使用的 UART printf 函数工作正常、代码仅在 printf (仅打印15个字符甚至打印更多字符串)后挂起、而执行 F5、F6按钮仅为 freez。 使用的微控制器是 TM4C123GH6PMI。

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

    您的代码是什么样的。 我的示例(随附)似乎可以正常工作。

    /cfs-file/__key/communityserver-discussions-components-files/908/EK_2D00_hello_2D00_long.zip

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

    [引用 user="Gurudev Prasad"]UARTStudio 库使用的 UART printf 函数如果我们使用 F5 (Step-Into")执行、 但是、对于 F8 (Resume)和 F6 (Step-over)、代码会在 printf (仅打印15个字符、甚至打印更多的字符串)后挂起、而 F5、F6按钮只会自由运行。根据问题说明、可能是 CCS 调试器禁用了中断。  

    在 程序/存储器加载选项 调试属性中、CCS 可设置为在以下条件下禁用中断:

    -组装步进时。
    -源步进时。
    -运行时。

    在调试属性上、尝试取消勾选禁用中断的选项。

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

    我尝试取消勾选选项、但行为仍然相同。 是否由于使用 F5执行具有 F6/F8所没有的足够延迟、这会导致问题? 为什么 F6/F8只有15个字符、而 F5不会发生挂起?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gurudev Prasad 您好,
    您从未回复过我的帖子。 您是否解决了问题? 我为您提供了一个函数 UARTprintf()打印长字符串的示例。 您是否能够导入和执行该项目? 您使用的代码有何不同?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Gurudev Prasad"]为什么 F6/F8仅使用15个字符而 F5不会发生挂起? TM4C123 UART 具有16个字符的发送 FIFO。 当 uartstdio.c 配置为缓冲模式时、当定义 UART_buffered 宏时、 然后、当使用"long"字符串调用 UARTprintf 时、前16个字符将写入 UART 发送 FIFO、剩余的字符存储在软件缓冲区中、供 UART 中断处理程序传输(当 UART 发送 FIFO 中有可用空间时)。

    当您描述了传输15个字符的问题时、我认为传输中断因某种原因而停止时会出现问题。

    您能否确认 uartstudio.c 是否在缓冲模式下使用、并提供显示故障的示例项目?

    我自己没有看到过这样的失败、因此不知道根本原因是不是:

    a)程序中的竞态条件、仅在 CCS 调试器中步进时才会显示。

    b) CCS 调试器导致中断处理不正确。

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

    我尝试导入您发送的项目文件。 我收到了下面提到的错误、
    a)在链接期间遇到#10010错误;未构建"EK-hello-long.out"
    b)#10234-D 未解析符号保留
    c) gmake:***[EK-hello-long.out]错误1.
    d) gmake:目标"全部"不会由于错误而重新生成。
    e)未解析的符号 UARTprintf、首先在./hello.obj 中引用
    f)未解析的符号 UARTStdioConfig、首先在./hello.obj 中引用

    我尝试对其进行同样的调试。

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

    这可能是因为您有较旧版本的 TivaWare、或者您的 TivaWare 安装在不同的目录中。 此项目包含文件"uartstdio.c"作为链接。

    右键单击文件并选择"属性"、您可以看到文件所在的位置:

    如果您没有在目录"C:\ti\TivaWare_C_Series-2.1.4.178"中安装 TivaWare 版本2.1.4.178、Code Composer 将找不到此文件、并且 UARTprintf 和 UARTStudioConfig 的符号将不会被解析。

    一种解决 方案是在 C:驱动器的默认位置安装最新版本的 TivaWare。 另一种解决方案是找到"uartstdio.c"和"uartstdio.h"文件、并将其复制到"ek-hello-long"项目中。

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

    您指定的项目已成功构建并加载。 它可以与 F5、F6和 F8正常配合使用。 但我所做的项目却没有这样做。 但是、当我对.bin 文件和引导加载程序进行编程时、代码工作正常(器件模式)。 我可以打印长字符串以及引用的数据(如%d 等)。 感谢您的支持。

    此致、
    Gurudev