本帖最后由 lightorang 于 2011-7-12 11:04 编辑
相关配置代码:
1、
DSP280x_SysCtrl.c
#pragma CODE_SECTION(InitFlash, "secureRamFuncs");
将InitFlash由FLASH移至RAM中,RAM的具体地址由CMD文件定义
2、
配置CMD文件
F2808.cmd
secureRamFuncs
: LOAD = FLASHB,
RUN = RAML0,
LOAD_START(_secureRamFuncs_loadstart),
LOAD_END(_secureRamFuncs_loadend),
RUN_START(_secureRamFuncs_runstart),
PAGE = 1
注意,务必确保运行的RAM区间为RAML0或者RAML1,因为Flash控制寄存器由Code Security Module(CSM)保护。如果CSM被保护起来了,那么必须从被保护的RAM(例如:L0或者L1 SARAM)运行Flash控制寄存器的初始化代码,否则Flash控制寄存器的初始化代码无法访问Flash控制寄存器。
3、
Main.c
memcpy(&secureRamFuncs_runstart,&secureRamFuncs_loadstart,&secureRamFuncs_loadend - &secureRamFuncs_loadstart);
//搬运FLASH至RAM
InitFlash();
确保InitFlash在memcpy之后进行,即保证InitFlash函数已经运行在RAM中再开始FLASH初始化工作 |