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/TMS320F28069:在调试模式下、程序在一段特定的持续时间后停止

Guru**** 2609895 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/686540/ccs-tms320f28069-program-stops-after-a-certain-duration-in-debug-mode

器件型号:TMS320F28069

工具/软件:Code Composer Studio

你(们)好

 我们将28069电路板(其原理图以28069 Launchpad 为基准)用于 GSM 应用。  

GSM 模块(Fibocom G610)连接到 UART (SCIB)。 除了这个 CAN 外、还使用了 PWM 和 ADC 外设。

在启动 GSM 接口之前、所有应用程序都运行良好。

包含用于发送 AT 命令的 GSM 函数后、程序会在特定的持续时间后停止(有时会立即停止、有时会说10分钟后停止)

程序在意义上停止、在观察窗口中没有变量被更新。 甚至在 ADC ISR 中也更新的变量。 它表示 CPU 本身已停止。

程序在 中间自行停止的可能原因是什么?

当同一代码在独立模式下运行时... 停止程序后,每次停止后多次重新启动!!

请告诉我们这些问题的可能原因.

谢谢

Lenin。

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

    您是否知道问题发生时代码在哪里? 听起来好像它可能已发生非法中断、这通常意味着提取了无效的操作码。 如果是、可能有许多原因:阵列溢出、堆栈相关...许多其他原因。 在您的 GSM 构建中、您是否启用在调试场景中处于非活动状态的中断?

    我并没有真正关注"当同一代码在独立模式下运行时... 停止程序后,每次停止后多次重新启动!!"。 这是否意味着在未连接 GSM 模块的情况下运行正常?

    如果是、请查看 SCI 引脚和电源电压、以确保一切都在指定的限制范围内。 有时、电压干扰可能会使 PC 受到干扰、并导致类似您所见的情况。

    此致、

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

    你(们)好 Richard

     感谢您的回答。

    您是否知道问题发生时代码在哪里?

    到目前为止,我们已经删除了所有其他函数,在 while (1)循环中只有一个函数,即 send_at ()函数。 除此之外、ADC 中断发生@ 0.2ms。 我怀疑代码在执行以下函数时会停止。 停止时是否有办法找出程序计数器的位置?

    空 scib_xmit (int a)

    while (ScibRegs.SCIFFTX.bit.TXFFST!= 0){
    if (CAN_TimerTimeout>500)//对应于100ms

    SCI_Transmission _卡滞= 1;
    中断;

    其他
    SCI_Transmission _卡滞=0;


    ScibRegs.SCITXBUF=A;

    听起来好像它可能已发生非法中断、这通常意味着提取了无效的操作码。 如果是、可能有许多原因:阵列溢出、堆栈相关...许多其他原因。 在您的 GSM 构建中、您是否启用在调试场景中处于非活动状态的中断?

       实际上、SCI TX 和 RX 中断已启用、尽管我们不使用该中断。 但是、我们禁用了这些中断并进行了检查、但问题仍然存在。

    我并没有真正关注"当同一代码在独立模式下运行时... 停止程序后,每次停止后多次重新启动!!"。

    我的意思是28069的独立模式(只需使用5V 为 Launchpad 加电)。 我们将蓝牙连接到另一个 UART SCIA、并发送了一些消息(在代码开头以及 send_at ()函数内)以检查代码停止的位置。  在蓝牙中接收了一段时间的预期消息、之后它突然停止、并且开始消息再次出现。

    MSG ="\r\n\n\n 程序启动\n";
    scib_msg (msg);

    IER |= M_INT1;//启用 CPU 中断1

    //--启用中断
    SetDBGIER (IER);//配置 DBGIER 以进行实时调试
    asm (" CLRC INTM、DBGM");//启用全局中断和实时调试


    while (1)  


    // count1++;
    sendAT();

    这是否意味着在未连接 GSM 模块的情况下运行正常?

     实际上、如果 GSM 模块被移除、程序将继续运行、而不会出现任何问题。 如果 GSM 被蓝牙 HC-05取代、它甚至可以工作。 发送的任何命令都将在蓝牙终端中打印。

    谢谢

    Lenin。

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

    您好、Lenin、

    当仿真器在闪存之外运行时、您是否能够与它建立连接? 如果是、您应该能够在问题发生时停止调试器、并查看反汇编窗口以查看 PC 的位置。

    您是否在连接 GSM 模块的情况下检查了器件上的 SCI 信号和电源电压? 故障的随机性质以及仅发生在一种类型的模块中的事实似乎意味着硬件来源。

    此致、

    Richard

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

    你(们)好 Richard

     是的、事实证明这是一个硬件问题。 实际上、我们还通过 launchpad 的5V 引脚为 GSM 模块供电(该引脚由 USB 端口供电、电流限制为500mA)。   但是、GSM 模块本身根据其技术规格消耗大约450mA。 这似乎是个问题。

     为 GSM 提供单独的电源后、代码工作正常。

    谢谢

    Lenin。

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

    您好、Lenin、

    很高兴知道您发现了问题、并感谢您告知我们。

    此致、

    Richard