DSP

关于CCS5.3 Flash加载Ram的问题

2019-07-13 18:46发布

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/51331.aspx


您好!        我用的芯片是TMS320F28335 ,在CCS5.3版本下,Flash加载RAM有问题。请给予解决方法。   主要外部表征: 1、主函数中MemCopy和InitFlash放置按照TI例程,子函数中未设置   FlashRegs.FPWR.bit.PWR = FLASH_STANDBY; 则程序不能有效在RAM中执行。 2、主函数中MemCopy和InitFlash放置在系统设置之后,程序第一次下载,能在RAM中执行(通过GPIO输出查看加载RAM与不加载的时间对比),如果不掉电,程序能够继续在RAM中执行,但如果DSP掉电后,重新上电,则程序执行时间明显较长,可以看出不在RAM中执行。     加载方法: 1、flash加载至ram的方法为:
      CMD文件采用的CCS3.3下的标准F28335.cmd,DSP2833x_Headers_nonBIOS.cmd
      通过查map文件,可以看到需要的程序段和变量已经加载到RAM区,并且程序运行过程中程序段已经处于RAM中。            main函数初始化时加入,且在最初系统初始化以后放置: void main(void)    {      InitSysCtrl();
     EALLOW;
     SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*1)   = 75.0 MHz
     SysCtrlRegs.LOSPCP.all = 1;   // LOPCLK = SYSCLKOUT/2 = 150/(2*1) = 75.0 MHz
     EDIS;
     MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
     InitFlash();
     ............. }       然后我将想要加载至RAM中的函数在定义前加入
    #pragma CODE_SECTION(函数名,"ramfuncs");
      通过查看例程DSP2823x_examples_ccsv4flash_f28235,在中断函数中有以下设置。     // Put the Flash into standby
    FlashRegs.FPWR.bit.PWR = FLASH_STANDBY;
   是否CCS5.3中必须设置此项,才能激活待机模式,Flash加载RAM才有效?