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.

[参考译文] TMS320F280049C:调用 DEVICE_DELAY_US 函数时调试失败

Guru**** 2348500 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1124725/tms320f280049c-debug-fails-when-calling-device_delay_us-function

器件型号:TMS320F280049C
Thread 中讨论的其他器件:SysConfigC2000WARE

您好!

我正在使用 SysConfig 执行我的第一个项目。 我对整个过程非常满意、做得很好。

但是、我要进入调试阶段、程序立即失败。

到目前为止,该程序只是一个主程序,其中包含 SysConfig 生成的代码和一个空中断:  

#include "board.h"
#include "driverlib.h"

void main(void)
{
	Board_init();

	for(;;)
	{

	}
}



int cmpt = 0;
interrupt void RunInt(void)
{
	cmpt++;
	Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
	return;
}

程序编译正确,但当我启动调试时,程序停止,并出现以下错误:  

No source available for "_system_post_cinit() at xxxxx"

在 SysConfig 生成的代码中、在函数 adc_init()期间、特别是在调用函数 device_delay_US (500)时、程序会失败;

我在这里有点迷路了。 我不知道问题所在的位置、因为这一切都在 driverlib/CSysConfig 生成的代码中、我几乎无法控制。

提前感谢您的帮助、

Adrien

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

    您需要与 Board_init()一起使用其他几行代码!

    我们将更新空项目模板以包含这些模板! 将 main()更改为:

    void main(void)
    {
    
        //
        // Initialize device clock and peripherals
        //
        Device_init();
    
        //
        // Disable pin locks and enable internal pull-ups.
        //
        Device_initGPIO();
    
        //
        // Initialize PIE and clear PIE registers. Disables CPU interrupts.
        //
        Interrupt_initModule();
    
        //
        // Initialize the PIE vector table with pointers to the shell Interrupt
        // Service Routines (ISR).
        //
        Interrupt_initVectorTable();
    
        //
        // Configure ePWM1, ePWM2, and TZ GPIOs/Modules
        //
        Board_init();
    
        //
        // Enable Global Interrupt (INTM) and real time interrupt (DBGM)
        //
        EINT;
        ERTM;
    
        // Enter code here
    
        //
        // IDLE loop. Just sit and loop forever (optional):
        //
        for(;;)
        {
            // Enter code here
        }
    }

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

    谢谢。 我 按照您的建议更改了 main.c。

    但是、不幸的  是、问题仍未解决、le debug 仍会在器件_DELAY_US (XX)或 SYSCTL_DELAY (XX)时停止。  

    该错误与以下错误不同:

    Break at address "0x3fbd92" with no debug information available, or outside of program code.

    我已经尝试过 timer_ex1_cputimers 示例、即使经过 SYSCTL_DELAY (XX)函数、它也能正常运行。  

    -->我的项目中是否可能缺少关键文件,或者项目配置不正确?

    我在我的项目中包含了 C2000ware 的所有"driverlib"文件夹(用于相关器件)+ device.c /.h 项目配置很小(几乎所有都有默认值)。  

    如果项目有用、我可以发送项目、但不会保密。  

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

    你好、Nima、

    请在 此处 (TI 内部链接)查找客户的项目。 这可能有助于您的调查。 谢谢你。


    此致、
    François μ A。

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

    感谢 Adrien 和 Francois 分享这一信息。 我会来看看! 我们还可以并行检查另一件事。 调试器本身是否停止、或者您是否暂停并看到它位于您上面提到的位置?  

    因为您可能在 delay 函数中、而调试器不会向您显示 delay 函数的源代码!

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

    感谢 Adrien 和 Francois 分享这一信息。 我会来看看! 我们还可以并行检查另一件事。 调试器本身是否停止、或者您是否暂停并看到它位于您上面提到的位置?  

    因为您可能在 delay 函数中、而调试器不会向您显示 delay 函数的源代码!

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

    遗憾的是、调试器自行暂停。

    如右下角所示、反汇编命中 ESTOP0指令。 我只启动了一个调试设置按压播放、在这里我不会暂停或添加任何种类的断点。

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

    Adrien 能否向我发送 main()函数内容以及对延迟的调用? 抛出错误的情形。 它不在您发送的 CCS 项目中。

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

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

    你好、Nima、

    这是失败的代码/项目。

    在 Device_init()>  sysctl_setclock (device_setclock_CFG)> sysctl_selectOscSource (oscSource)> sysctl_selectXTA ()> sysctl_pollX1Counter ()> sysctl_delay (2000);(sysctl.c 文件,第89行)期间当前发生故障

    在我之前的项目中(仅使用 Board_init()和无限循环),它在 Board_init()> ADC_init()> device_delay_US (500)期间失败;(file board.c,行102)。

    如果有用、我将使用未经修改的 F280049C Lauchpad。

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

    非常完美、我刚拿到了 F280049c launchpad。 我将运行测试。

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

    我刚才复制了它。 很奇怪 闪存不足?  

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

    是的:)我认为这是问题! 让我添加一个条目来设置闪存 WAITSTATE 和其他相关项、看看它是否能解决!

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

    您需要:

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

    它不再停止!

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

    你好、Nima、

    非常感谢。 阿德里安现在是 ooo、他不会马上回应、但你似乎已经解决了这个问题。 很棒!

    附带问题:SysConfig 是否应该执行有关创建_flash 符号的任何操作、以便处理等待状态和您提到的其他相关项目?


    此致、
    François μ A。

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

    Francois、  

    因此、下一个版本将在 SysConfig 中包含一个闪存模块。

    添加闪存模块后、等待状态将在 GUI 中进行配置。

    我们将在稍后的版本中添加要由 SysConfig 生成的 device.c 和 device.h。

    NIMA

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

    你好、Nima、

    很好,谢谢。


    此致、
    François μ A。

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

    非常感谢 Nima。 很不错!  这是一个简单的地方,但是很难找到!

    很抱歉、由于我在度假、我无法更早地进行测试。