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.

[参考译文] TMS320F28335:独立系统不能正常工作

Guru**** 2589280 points
Other Parts Discussed in Thread: TMS320F28335

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1207509/tms320f28335-standalone-system-does-not-work-properly

器件型号:TMS320F28335

尊敬的专家:

我一直在研究用于逆变器应用的 TMS320F28335。 通过按照 C2000教学 ROM 中的指令、这个算法已经在闪存上成功实现。 但是,我面临着几个问题。

1.一旦程序被刻录在闪存上,设备(三相逆变器)达到了它的稳态值,第一次将程序加载到闪存中就像梦一样工作。 不过、重置后、它不会像应该像独立系统那样工作。 但是、LED 闪烁的频率为1秒钟、表示程序正在运行、我可以保证它在复位后闪烁。 换言之、程序将按照算法执行、但由于高电流、装置会跳闸。 我确信此算法没有问题、因为它在加载到闪存中后能够正常工作。 唯一的问题是、在后续 CPU 复位并启动系统后、它不起作用。 我怀疑控制器正在计算的逆变器系统所使用的变量没有得到复位、并且这些变量仅在程序从 CCS 再次加载时初始化为零。

2。我面临的第二个问题是、尽管看门狗定时器已初始化、但在物理干扰或电源波动时、微控制器会挂起。

此致、

伯恩·拉杰什

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

    尊敬的 Rajesh:

    我现在负责审核您的帖子。   

    1. Flash 插件可能正在初始化一些模块,比如时钟, Flash 等等  此外、GEL 文件可能会进行一些配置。  您的应用程序可能会遗漏您所需的配置。  请检查。  由于您说过该应用在下电上电后闪烁、我认为已为闪存引导正确配置了引导模式引脚。   

    2.关于变量的初始化,您的应用程序中是否包含 codestartbranch.asm ? 这将调用 c_init 例程来初始化全局变量。   

    3.当您说"挂起"时,是否意味着设备正在复位?  如果物理干扰或功率波动导致器件在数据表列出的工作条件之外运行、器件将执行复位。  请监控电压线路、以确保它们始终处于运行条件下。

    如果上述问题无法解决、我将请我们的 F28335专家进一步为您提供帮助。

    谢谢。此致、
    Vamsi

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

    尊敬的 Vamsi:

    正如您提到的 codestartbranch、它已经被添加到程序中、但我不确定是否必须在程序的某些部分中调用它。 如果您查看该程序、会发现有些变量不是全局初始化的、但有些变量是在主程序中调用的名为"Init_adc"的子程序中初始化的。 可以这样做吗?  

    此外、我对于是否进行链接感到困惑  headers_nonBIOS.cmd F28335.cmd 上的 "Properties"-> General

    在我最初提出的关于"挂起"的问题中、微控制器实际上不会复位、但尽管已启用看门狗定时器、所有 GPIO 都会变为高电平并保持在该状态。

    我附加了代码和程序的屏幕截图、以便了解添加到程序中的文件。 不过、与算法相关的程序与该算法无关、因此会从 ADC 中断子例程中省略。

    此致、

    伯恩·拉杰什

    #include "DSP2833x_Device.h"
    
    #define GLOBAL_Q 24
    
    
    
    
    #include "IQmathLib.h"
    
    #define PI 6.2831853f
    
    
    
    
    _iq iq,jq,kq=0;
    
    _iq cons,kr,ky,kb,sr,sy,sb,t,tr,ty,tb,t1,t2=0;
    
    _iq sino,coso=0;
    
    _iq a1,a2,a3,b2,b3,c1,c2=0;
    
    _iq vr_a,vy_a,vb_a=0;
    
    _iq valpha_act,vbeta_act,vd_a,vq_a=0;
    
    _iq ir_a,iy_a,ib_a=0;
    
    _iq vd_set,vq_set=0;
    
    _iq ialpha_act,ibeta_act,id_a,iq_a=0;
    
    _iq vd_ref,vq_ref,valpha_ref,vbeta_ref=0;
    
    _iq vr_ref,vy_ref,vb_ref=0;
    
    _iq id_ref,iq_ref=0;
    
    _iq P1,I1,P2,I2=0;
    
    _iq vd_e,vd_e1,vq_e,vq_e1=0;
    
    _iq id_ref1,iq_ref1=0;
    
    _iq vd_ref1,vq_ref1=0;
    
    _iq id_e,iq_e,id_e1,iq_e1=0;
    
    _iq id_af,id_af1,id_a1=0;
    
    _iq iq_af,iq_af1,iq_a1=0;
    
    _iq vd_af,vd_af1,vq_af,vq_af1,vd_a1,vq_a1=0;
    
    _iq EvdL,EvqL=0;
    
    _iq F1,F2,F3=0;
    
    _iq VH,VL,IH,IL,EdL,EqL=0;
    
    
    
    
    #define AdcBufLen 39
    
    extern void InitPieVectTable(void);
    
    extern void InitPieCtrl(void);
    
    extern void InitSysCtrl(void);
    
    extern void InitAdc(void);
    
    extern void InitFlash(void);
    
    
    
    
    // external symbols for section ramfuncs
    
    extern unsigned int RamfuncsLoadStart;
    
    extern unsigned int RamfuncsLoadEnd;
    
    extern unsigned int RamfuncsRunStart;
    
    
    
    
    
    
    
    void Gpio_Select(void);
    
    void Init_Timer0(void);
    
    void Init_PWM(void);
    
    void Init_ADC(void);
    
    
    
    
    
    
    
    interrupt void adc_eos_seq1_int(void);
    
    interrupt void timer0_int(void);
    
    interrupt void pwm4_ctr_0(void);
    
    
    
    
    
    
    
    float VR,VY,VB,IR,IY,IB,VDC,IDC=0;
    
    float VRa,VYa,VBa,IRa,IYa,IBa,Idca=0;
    
    float vref_r,vref_y,vref_b=0;
    
    int i=0;
    
    float srf,syf,sbf=0;
    
    float disp1,disp2,disp3=0;
    
    float vdref=0;
    
    int index=0;
    
    int Buf1[AdcBufLen];
    
    int Buf2[AdcBufLen];
    
    int Buf3[AdcBufLen];
    
    
    
    
    void main(void)
    
    {
    
    	
    
     InitSysCtrl();
    
     memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, &RamfuncsLoadEnd - &RamfuncsLoadStart);
    
     InitFlash(); // Speed up FLASH memory
    
    
    
    
     DINT; // disable all interrupts
    
     Gpio_Select();
    
     InitPieCtrl(); // basic setup of PIE table; from DSP2833x_PieCtrl.c
    
     InitPieVectTable(); // default ISR's in PIE
    
     InitAdc(); //TI provided function
    
     Init_ADC(); 
    
     Init_Timer0();
    
     Init_PWM();
    
    	
    
     EALLOW;
    
     PieVectTable.TINT0 = &timer0_int;
    
        PieVectTable.SEQ1INT = &adc_eos_seq1_int;
    
        PieVectTable.EPWM4_INT = &pwm4_ctr_0;
    
        EDIS;
    
        
    
        PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
    
     PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
    
     PieCtrlRegs.PIEIER3.bit.INTx4 = 1;
    
    
    
    
     IER |= 5; //00000101
    
     EINT;
    
     ERTM;
    
    
    
    
     EALLOW;
    
        SysCtrlRegs.WDCR= 0x002F; // enable the watchdog
    
        EDIS;
    
    	
    
     CpuTimer0Regs.TCR.bit.TSS = 0; // GO!!!
    
    	
    
     while(1)
    
     {
    
      EALLOW; //reset watchdog
    
      SysCtrlRegs.WDKEY = 0x55;
    
      SysCtrlRegs.WDKEY = 0xAA;
    
      EDIS;
    
    
    
    
     }
    
    }
    
    
    
    
    void Gpio_Select(void)
    
    {
    
     EALLOW;
    
     GpioCtrlRegs.GPAMUX1.all = 0;  
    
     GpioCtrlRegs.GPAMUX2.all = 0;  
    
     GpioCtrlRegs.GPBMUX1.all = 0;  
    
     GpioCtrlRegs.GPBMUX2.all = 0; 
    
     GpioCtrlRegs.GPCMUX1.all = 0; 
    
     GpioCtrlRegs.GPCMUX2.all = 0; 
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; //EPWM1A DSUB PL4
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; //EPWM1B
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; //EPWM2A
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; //EPWM2B
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; //EPWM3A
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; //EPWM3B
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1; //PWM4A pin as GPIO for generating SOC to ADC
    
    
    
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO12= 1; //TZ1
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO13= 1; //TZ2
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO14= 1; //TZ3
    
    	
    
    
    
    
    
    
    
     GpioCtrlRegs.GPADIR.all = 0;
    
     GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0; //PWM4B as GPIO
    
     GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;
    
    
    
    
    
    
    
    
    
    
     GpioCtrlRegs.GPADIR.bit.GPIO21 = 1; //LED7 o/p
    
    
    
    
    	
    
     GpioCtrlRegs.GPBDIR.all = 0; //(GPIO 48, GPIO 49, GPIO 50, GPIO 51)-External Contacts, GPIO 34 (Thermal trip)
    
     GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1; //Relays (Check Relays RL 1-4)
    
     GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;
    
     GpioCtrlRegs.GPBDIR.bit.GPIO62 = 1;
    
     GpioCtrlRegs.GPBDIR.bit.GPIO63 = 1;
    
     GpioCtrlRegs.GPCDIR.all = 0; 
    
     EDIS;
    
    }
    
    
    
    
    void Init_Timer0(void)
    
    {
    
     CpuTimer0Regs.PRD.half.LSW = 0x0008;
    
     CpuTimer0Regs.PRD.half.MSW = 0x0022;
    
     CpuTimer0Regs.TPR.bit.TDDR = 0x0010;
    
     CpuTimer0Regs.TCR.bit.TIE = 1;
    
     CpuTimer0Regs.TCR.bit.TRB = 0; //reload after counter is zero
    
     CpuTimer0Regs.TCR.bit.TSS = 1; //stop timer; Enable when SET GO!!!
    
     CpuTimer0Regs.TCR.bit.FREE = 0;
    
    }
    
    
    
    
    void Init_PWM(void)
    
    {
    
    	
    
     EPwm1Regs.TBCTL.all = 0x0000;
    
     EPwm1Regs.TBCTL.bit.CTRMODE = 2;
    
     EPwm1Regs.TBCTL.bit.PRDLD = 0;
    
     EPwm1Regs.TBCTL.bit.SYNCOSEL = 1; // Master
    
     EPwm1Regs.TBCTL.bit.HSPCLKDIV = 1;
    
    	
    
    
    
    
     EPwm1Regs.TBPRD = 7212; //Fsw = 5.2KHz
    
     EPwm1Regs.AQCTLA.all = 0x0060;
    
     EPwm1Regs.AQCTLB.all = 0x0090;
    
     
    
     EPwm1Regs.TBPHS.all = 0;
    
                   
    
               //Dead Band
    
     EPwm1Regs.DBCTL.bit.IN_MODE=0;
    
     EPwm1Regs.DBCTL.bit.POLSEL=2;
    
     EPwm1Regs.DBCTL.bit.OUT_MODE=3;
    
     EPwm1Regs.DBRED = 100;
    
     EPwm1Regs.DBFED = 100;
    
    
    
    
     //EPwm2Regs.TBCTL.all = 0x2086; //00 1(UP after SYNC) 000(CLK/1) 001(CLK/1) 0() 00(EPWM1 SYNCI Source) 0(Load @ CTR =0) 1(CTR = TBPHS on SYNCI Signal) 10(UP-DOWN counter)
    
     EPwm2Regs.TBCTL.all = 0x0000;
    
     EPwm2Regs.TBCTL.bit.CTRMODE = 2;
    
     EPwm2Regs.TBCTL.bit.PRDLD = 0;
    
     EPwm2Regs.TBCTL.bit.SYNCOSEL = 0; // Slave
    
     EPwm2Regs.TBCTL.bit.HSPCLKDIV = 1;
    
    	
    
     EPwm2Regs.AQCTLA.all = 0x0060;
    
     EPwm2Regs.AQCTLB.all = 0x0090;
    
     EPwm2Regs.TBPRD = 7212;
    
     EPwm2Regs.TBPHS.all = 0;
    
    	
    
     //Dead Band
    
     EPwm2Regs.DBCTL.bit.IN_MODE=0;
    
     EPwm2Regs.DBCTL.bit.POLSEL=2;
    
     EPwm2Regs.DBCTL.bit.OUT_MODE=3;
    
     EPwm2Regs.DBRED = 100;
    
     EPwm2Regs.DBFED = 100;
    
    
    
    
    
    
    
    
    
    
    
    
    
     //EPwm3Regs.TBCTL.all = 0x2086; //0010 0000 1000 110
    
     EPwm3Regs.TBCTL.all = 0x0000;
    
     EPwm3Regs.TBCTL.bit.CTRMODE = 2;
    
     EPwm3Regs.TBCTL.bit.PRDLD = 0;
    
     EPwm3Regs.TBCTL.bit.SYNCOSEL = 0; // Slave
    
     EPwm3Regs.TBCTL.bit.HSPCLKDIV = 1; // SYSCLK/(2*1) 150M/2
    
    
    
    
     EPwm3Regs.AQCTLA.all = 0x0060;
    
     EPwm3Regs.AQCTLB.all = 0x0090;
    
     EPwm3Regs.TBPRD = 7212;
    
    
    
    
    
    
    
     //Dead Band
    
     EPwm3Regs.DBCTL.bit.IN_MODE=0;
    
     EPwm3Regs.DBCTL.bit.POLSEL=2;
    
     EPwm3Regs.DBCTL.bit.OUT_MODE=3;
    
     EPwm3Regs.DBRED = 100;
    
     EPwm3Regs.DBFED = 100;
    
    
    
    
     //ADC-EPWM4A
    
     EPwm4Regs.TBCTL.all = 0x0000;
    
     EPwm4Regs.TBCTL.bit.CTRMODE = 2;
    
     EPwm4Regs.TBCTL.bit.PRDLD = 0;
    
     EPwm4Regs.TBCTL.bit.SYNCOSEL = 0; // Slave
    
        EPwm4Regs.TBCTL.bit.HSPCLKDIV = 1;
    
    
    
    
        EPwm4Regs.TBPRD = 2403; //=Fsw/3
    
     EPwm4Regs.TBPHS.all = 0;
    
    
    
    
     EPwm4Regs.ETSEL.bit.INTSEL = 1; //Interrupt @ CTR = 0
    
     EPwm4Regs.ETSEL.bit.INTEN = 1; // Interrupt Enable
    
     EPwm4Regs.ETSEL.bit.SOCAEN = 1;
    
     EPwm4Regs.ETSEL.bit.SOCASEL = 1; //SOCA @ CTR = 0
    
     EPwm4Regs.ETPS.bit.SOCAPRD = 1;
    
     EPwm4Regs.ETPS.bit.INTPRD = 1;
    
    }
    
    
    
    
    
    
    
    void Init_ADC(void)
    
    {
    
     AdcRegs.ADCTRL1.all = 0;
    
     AdcRegs.ADCTRL1.bit.SEQ_CASC =1; // 1=cascaded sequencer
    
     AdcRegs.ADCTRL1.bit.CPS = 0; // divide by 1    
    
     AdcRegs.ADCTRL1.bit.ACQ_PS = 6; // 6 ADC clock cycles HOLD
    
    	
    
     AdcRegs.ADCTRL2.all = 0;  
    
     AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 =1; // 1=SEQ1 start from ePWM_SOCA trigger 
    
     AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 1=enable SEQ1 interrupt 
    
     AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0; // 0= interrupt after every end of sequence
    
    	
    
     AdcRegs.ADCTRL3.bit.SMODE_SEL = 1;
    
    	
    
     AdcRegs.ADCTRL3.bit.ADCCLKPS = 6; //In the InitiSystem function, HISPCP is initialized as "0". which means the clk to the ADC peripheral is 150MHz.
    
     AdcRegs.ADCREFSEL.bit.REF_SEL = 0x0;
    
    	
    
     AdcRegs.ADCMAXCONV.all = 5; // (no. of conversions + 1) as simultaneous sampling is 2*2
    
     AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; //A0 - 0, B0 -1
    
     AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; //A1 - 2, B1 -3
    
     AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 2; //A2 - 4, B2 -5
    
     AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 3; //A3 - 6, B3 -7
    
     AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 7; //A4 - 8, B4 -9
    
     AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 5; //A5 - 10,B5-11
    
     AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 6; //A6 -12, B6- 13
    
     AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 4; //A7 -14, B7 -15 //pot on A7
    
    
    
    
     cons = _IQ(39); // 39 sets the fundamental frequency 400
    
    
    
    
        a1 = _IQ(0.66666667);
    
        a2 = _IQ(0.33333333);
    
        a3 = _IQ(0.33333333);
    
    
    
    
        b2 = _IQ(0.5773503);
    
        b3 = _IQ(0.5773503);
    
    
    
    
        c1 = _IQ(-0.500000);
    
        c2 = _IQ(0.8660254);
    
    
    
    
        //PI voltages constants
    
        P2 = _IQ(0.1000);
    
        I2 = _IQ(0.09998);
    
    
    
    
        //PI current constants
    
        P1 = _IQ(0.1002);
    
        I1 = _IQ(0.09985);
    
    
    
    
        vd_set = _IQ(18.00);
    
        vq_set = _IQ(0.00);
    
        // low pass filter (Tustin method)
    
        F1 = _IQ(0.00745);
    
        F2 = _IQ(0.985);
    
        F3 = _IQ(0.007495);
    
    
    
    
        VH = _IQ(40.0000); //limit to the voltage references at the end
    
        VL = _IQ(-20.0000);
    
        IH = _IQ(30.0000); //limit for current reference
    
        IL = _IQ(-25.0000);
    
    
    
    
    
    
    
    }
    
    #pragma CODE_SECTION(adc_eos_seq1_int, "ramfuncs");
    
    void adc_eos_seq1_int(void)
    
    {
    
    algorithm 
    
      EALLOW;
    
      SysCtrlRegs.WDKEY = 0x55;
    
      SysCtrlRegs.WDKEY = 0xAA;
    
      EDIS;
    
    
    
    
     }
    
    
    
    
    
    
    
      IR = AdcMirror.ADCRESULT0; //A0
    
      IY = AdcMirror.ADCRESULT2; //A1
    
      IB = AdcMirror.ADCRESULT4; //A2
    
      IDC= AdcMirror.ADCRESULT6; //A3
    
    
    
    
      VR = AdcMirror.ADCRESULT1;//B1
    
      VY = AdcMirror.ADCRESULT3;//B2
    
      VB = AdcMirror.ADCRESULT5;//B3
    
      
    
    
    
    
      Idca= IDC*79/4095;
    
     EALLOW; //reset watchdog
    
     SysCtrlRegs.WDKEY = 0x55;
    
     SysCtrlRegs.WDKEY = 0xAA;
    
     EDIS;
    
    //reset the gpio7 for latency check
    
      GpioDataRegs.GPACLEAR.bit.GPIO7 = 1;
    
    }
    
    
    
    
    #pragma CODE_SECTION(timer0_int, "ramfuncs");
    
    void timer0_int(void)
    
    { 
    
    
    
    
      GpioDataRegs.GPATOGGLE.bit.GPIO21 = 1;
    
      CpuTimer0Regs.TCR.bit.TIF = 1;
    
      
    
    
    
    
      PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
    
    
    
    
      EALLOW; //reset watchdog
    
      SysCtrlRegs.WDKEY = 0x55;
    
      SysCtrlRegs.WDKEY = 0xAA;
    
      EDIS;
    
    }
    
    
    
    
    #pragma CODE_SECTION(pwm4_ctr_0, "ramfuncs");
    
    void pwm4_ctr_0(void)
    
    {
    
    
    
    
     GpioDataRegs.GPASET.bit.GPIO7 = 1;
    
    
    
    
    
    
    
      EPwm4Regs.ETCLR.bit.INT = 1;
    
      PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
    
    
    
    
      EALLOW; //reset watchdog
    
      SysCtrlRegs.WDKEY = 0x55;
    
      SysCtrlRegs.WDKEY = 0xAA;
    
      EDIS;
    
    }

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

    尊敬的 Rajesh:

    如果包含 codestartbranch.asm、并且您的链接器命令文件具有映射到闪存入口点(begin)的 codestart、那么您应该可以调用 c_init 例程。

    您说过已启用看门狗->您的应用程序是否对看门狗进行服务?  否则、看门狗会引起复位。   

    抱歉、我可能无法查看您的代码。  只要变量在使用前被初始化、我认为就应该很好。

    看看这是否对您有帮助: https://www.ti.com/lit/pdf/spra958  

    谢谢。此致、
    Vamsi

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

    正在对看门狗进行维护。 但我不明白为什么微控制器会挂起、为了使其正常、我必须将其关闭然后再打开。 此外、由于仿真器断开连接、我无法在运行期间查看任何变量。

    此致、

    伯恩·拉杰什

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

    尊敬的 Rajesh:

    您说过您必须执行下电上电(关闭/打开)才能使器件脱离挂起状态。  一旦您重启电源、会出现什么情况?  下电上电后、应用是否按预期工作?

    谢谢。此致、
    Vamsi

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

    可以! 确实上升了

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

    尊敬的 Rajesh:

    只需确认: 在连接调试器的情况下、程序运行完成后、应用程序立即运行正常。  当您在连接调试器的情况下发出复位命令时(您给出了什么复位? 调试程序复位?)。  但是、如果在未连接调试器的情况下进行下电上电、则它可以正常工作。

    总结是否正确?

    谢谢。此致、
    Vamsi

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

    尊敬的 Vamsi:

    我已经观察到、当仿真器连接到板上时、会出现此条件(挂起)。 关于独立问题、我假设此时已经解决了该问题。 实际上、它已经开始工作了 F28335.cmd 文件链接在替换的属性页中 headers_nonBIOS.cmd 文件。

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

    尊敬的 Rajesh:

    感谢你的评分

    我将请我们的 F28335专家进一步帮助您。

    谢谢。此致、
    Vamsi

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

    展望未来!

    谢谢!

    伯恩·拉杰什

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

    Rajesh

    我想知道我们是否运行在代码安全模块中、您提到 JTAG 在运行时会断开连接、如果 CSM 已激活、并且我们尝试单步执行安全存储器(所有闪存和 L0-L3存储器)、则将中断 JTAG 连接。  即使您尚未编写密码、也仍需要虚拟读取 CSM 密码地址以取消激活安全性。

    非安全区域中的 I CODE 尝试直接读取安全区域、它将返回全部0x0000s、这可能会导致代码出现一些问题。   

    您是否能够确认在代码开始位置附近有读取到地址0x33 FFF8 -0x33 FFFF 来禁用 CSM?  即使我们要在最终产品中使用 CSM、我也要将其从潜在的问题列表中移除。

    另一个选择是、当连接仿真器时、我们将使用 GEL 文件、该文件会执行 Brom 通常会执行的一些前期工作。  如果您在连接调试器的情况下执行重置、在我们失去连接或在跳转到"main"之前、您是否能看到单步执行后所获得的精度有多高?

    此致!

    Matthew