关于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才有效?
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮