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.

TMS320F28027退出Debug时锁死

Other Parts Discussed in Thread: TMS320F28027, CONTROLSUITE

您好,我使用TMS320F28027时自己参照资料画了一块控制板,最前端使用稳压源供5V,由板载AMS1117-3.3V得到DSP供电,程序烧录在Flash中,正常Debug结束后多次反复上电均无异常,DSP正常运行(通过中断翻转IO,观察LED闪烁判断)。

但是偶尔在停止Debug时程序会突然中断(正常Dubug结束,DSP未掉电程序会继续运行,LED闪烁;发生异常的现象是结束Dubug时DSP停止运行,此时LED停止闪烁,/XRS引脚恒定为0.4V左右)。

重新上电后发现DSP没有工作,重新Debug时依次出现JATG无法连接、低功耗模式及DSP锁死等问题,在Debug期间一直用示波器监视3.3V电源未发现异常,DSP外围参数也未发现异常,cmd文件使用controlSUITE中提供的F28027和nonBIOS,多次更换DSP后问题任然存在。换上新的DSP后前几次Debug都没有问题,到第五次左右就会出现以上问题,来来回回已经换了近10块DSP了,现象可重复。

附上DSP原理图、报错截图及工程使用的文件截图,恳请各位帮忙查看!

谢谢!

原理图及报错截图.rar
  • 你说的这种情况是出现问题后 , 永远不能用了吗?

  • 出现这种情况后的DSP上电不运行程序,用示波器测量XRS引脚约为0.4V,输入电流在0.16A左右跳动,甚至会到0.22A(手册给的正常工作电流不会超过0.15A),Debug时总提示dsp在低功耗模式或者dsp已锁,我觉得应该是flash损坏或锁死额,同换了电路板和dsp后前几次也是正常的,偶尔又出现这种情况,可重复,仔细核对各种版本的硬件电路未发现问题,软件有bug会导致这种现象呢?

    以前用28335和28069的时候从未遇到过类似的情况,现在正在查看代码是否有问题,如果需要的话可以提供代码工程文件!

    谢谢!

  • 建议检查一下电源和复位引脚外部电路配置和之前使用F28069的有什么差别,特别是需要的电容是否有按要求增加。

  • 这个已经检查过了,原理图种的参数便是核对后板上的参数。3.3V单电源供电,3.3VIO和3.3VA外部先是10uF陶瓷电容,然后就近DSP引脚放置了2.2uF陶瓷电容,使用内部稳压器得到内核供电,就近VDD引脚防止2.2uF旁路电容,  /XRS引脚通过2.2k电阻上拉到3.3V电源(推荐值2.2k-10k),同时并联10nF电容到DGND用作滤波(推荐值小于100nF)

  • 没打开你的原理图,所以如果真是你描述的那样,那应该没有问题。

    另外两点:

    1,供电电源的电流是多大?是否足够芯片正常运行?

    2,你提到怀疑代码,那么比较容易排查,可以使用TI的基于FLASH的例程测试一下。

  • 另外,芯片出问题后上电不运行,好像是没有成功复位,是否可以更换一下RC电路确保电阻电容器件没有问题(这个问题应该只在一个板子上出现?)。

    同时,可以在出问题后同时测量一下电源3.3v,1.8v和复位信号的电平状态,然后在更换芯片后持续监控它们,特别是抓取一下出问题瞬间的状况了解根源在哪里。

  •     两块板件都出现相同的问题,在推荐范围内改变/XRS引脚的上拉电阻和滤波电容大小无任何改善;

        电源的问题之前也排查过了,Debug和DSP启动的整个过程一直在用下降沿捕捉板载3.3V电源,测量内核电压在1.9V左右,期间也未出现电源跌落的现象(使用的1A的板载LDO),现在能确定的是问题是在DSP损坏都是发生在Debug结束时,在CCS中点击STOP按钮后dsp程序就停止运行了(此时DSP与仿真器均未断电,正常情况下程序应该继续运行),再次Debug就会出现上述问题,拿掉仿真器直接给DSP上电也无法启动,这种现象在两块最小系统的电路板上都出现,刚更换的DSP即便是同一个程序前几次Debug都不会有问题,大概在第三次到第五次就会复现相同的问题。

        现在我更怀疑是程序的问题,请问cmd文件或者其他寄存器配置出错会出类似现象么?

        非常感谢您的回答!

  • 这个现象确实比较奇怪了,只在第三五次才出现问题。

    电源看上去不应该异常,因为硬件你已经排查过了,而且1A的LDO应该是足够电流的,当然前提是它只给F28027供电。

    cmd文件或寄存器配置理论上也不应该出现这种现象,你的程序在这个过程中应该是一直没有更改的吧?

    另外,你自己确定没有给芯片加密?你可以尝试查看CSM相关的寄存器查看SECURE位的值。

    如果怀疑程序问题,那么只能建议使用TI的基于FLASH的例程进行测试。

  • 我也觉得硬件应该没问题额,只能再看一下代码是否异常了,这是controlSUITE中给的cmd文件F28027.cmd,其中

       /* Allocate program areas: */

    .cinit : > FLASHA | FLASHC | FLASHD, PAGE = 0
    .pinit : > FLASHA | FLASHC | FLASHD, PAGE = 0
    .text : >> FLASHA | FLASHC | FLASHD, PAGE = 0
    codestart : > BEGIN PAGE = 0

    CMD中FLASHA/C/D取或会不会有问题呢?另外第三行.text后面两个>>是什么情况啊?以前从来没见过这样的写法呢,编译也没有报错

    /* Allocate uninitalized data sections: */
    .stack : > RAMM0 PAGE = 1
    .ebss : > DRAML0 PAGE = 1
    .esysmem : > DRAML0 PAGE = 1
    .sysmem : > DRAML0 PAGE = 1
    .cio : >> RAMM0 | RAMM1 | DRAML0 PAGE = 1

    中第四行和第五行.sysmem   和  .cio是什么呢?

    之前其他型号的dsp我都是用的controlSUITE中给的cmd文件,都没有上述的两个问题,能否确认一下是否是cmd文件有误?

    不胜感激!

  • 多个flash取或没有问题,段分配时就应该使用>>而不是>,它的意思是这个段被分配时,可以分成几部分映射到FLASH里。

    .sysmem和.cio是用于动态内存分配和的上位要用于操作下位机的IO信息的段,你可以在spru513和spru514两个编译器手册中了解,同时你也可以在生成的.map文件里查看是否有生成这两个段。

  • 1.

    C28xx: Failed CPU Reset: (Error -1139 @ 0x0) Lost debug connection to device. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.641.0)

    C28xx: Trouble Reading Register PC: (Error -1138 @ 0x0) Device refused to allow debug mode. Power-cycle the board. If error persists, confirm configuration and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.641.0) 

    2.

    C28xx: Error occurred during flash operation: CPU Reset failed with error code 1

    C28xx: Failed CPU Reset: (Error -1138 @ 0x0) Device refused to allow debug mode. Power-cycle the board. If error persists, confirm configuration and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.641.0)

    3.

    C28xx: Error: (Error -1156 @ 0x0) Device may be operating in low-power mode. Do you want to bring it out of this mode? (Emulation package 5.1.641.0)

    C28xx: Power Failure on Target CPU

    C28xx: Error occurred during flash operation: Could not read 0x0000800E@Data: target is not connected

    C28xx: Error occurred during flash operation: Could not write 0x00008009@Data: target is not connected

    C28xx: Error occurred during flash operation: Could not write 0x00008008@Data: target is not connected

    C28xx: Error occurred during flash operation: Failed to run target while trying to execute FlashAPIInterface2802xV2_00.out

    从第三次Debug之后就会出现这几种报错额,能否由此判断是代码有问题导致的呢?

  • 不能,相反,可能更像是硬件问题,比如电源不稳定,或者电流大小不够,或者时钟有问题等,当然也可能仿真器异常。

  • 电压很稳定,仿真器现在在28335和28069的控制板上使用也没有问题,我买了新的评估板,换新的仿真器、使用6.1.2版本的ccs做简单的I/O翻转,使用外部时钟,debug几次后还是出现了下面的问题,能够load,但是点击运行后会报错:

    C28xx: Error: (Error -1135 @ 0x3F60FF) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 6.0.14.5)
    C28xx: Unable to determine target status after 20 attempts
    C28xx: Failed to remove the debug state from the target before disconnecting. There may still be breakpoint op-codes embedded in program memory. It is recommended that you reset the emulator before you connect and reload your program before you continue debugging

    #include "DSP2802x_Device.h"
    void delay(Uint16 j)
    {
    Uint16 i;
    for(;j>0;j--)
    for(i=0;i<1100;i++);
    }

    void InitSysCtrl(void) ;
    void InitPieCtrl(void) ;
    void main(void)
    {
    // Uint16 counter;
    InitSysCtrl() ;
    InitPieCtrl() ;
    EALLOW;
    GpioCtrlRegs. GPAMUX1.all= 0; //选择 GPIO34 为普通 IO 口模式
    GpioCtrlRegs. GPAMUX2.all= 0; //选择 GPIO34 为普通 IO 口模式
    GpioCtrlRegs. GPADIR. all= 0xffffffff; //方向输出
    GpioCtrlRegs. GPBMUX1.all= 0; //选择 GPIO34 为普通 IO 口模式
    GpioCtrlRegs. GPBMUX2.all= 0; //选择 GPIO34 为普通 IO 口模式
    GpioCtrlRegs. GPBDIR. all= 0xffffffff; //方向输出
    EDIS;
    while(1)
    {
    // counter++;
    // if(counter>1000)
    // {
    // counter=0;
    // }
    delay(400);
    GpioDataRegs. GPADAT.all= 0;
    GpioDataRegs. GPBDAT.all= 0;
    delay(400);
    GpioDataRegs. GPADAT.all= 0xffffffff;
    GpioDataRegs. GPBDAT.all= 0xffffffff;
    }
    }

    项目开始很久了,其他部分都已经完成,现在就在dsp最小系统上耽搁了半个多月,烧了很多dsp都没有找到问题

    感觉还是代码或者是配置有问题呢?麻烦您帮我检查一遍工程文件可以么?

    谢谢!

  • 我没有看出大的问题,还有几点建议给你确认一下:

    1,如果使用TI的F28027的FLASH的例程,会怎么样?

    2,外部JTAG connector部分电路是如何设计的?

    3、以上程序中GPIO输出控制使用SET/CLEAR/TOGGLE,而不是DAT会有差别吗?

  • 你好,我现在正在使用28027,和你遇到一模一样的问题,请问您最后怎么解决的?
  • 最终也没找到具体原因,重新设计PCB布局走线后正常使用,可能是芯片对走线要求比较高。