F2812程序从Flash搬到RAM中运行
发布时间:2020-12-15 18:18:25 所属栏目:百科 来源:网络整理
导读:F2812程序从Flash搬到RAM中运行 【非本人原创】 第一步: // Functions that will be run from RAM need to be assigned to // a different section. ? This section will then be mapped using // the linker cmd file. #pragma CODE_SECTION(EPwm1_timer_i
F2812程序从Flash搬到RAM中运行
【非本人原创】
第一步:
// Functions that will be run from RAM need to be assigned to
// a different section. ?
// the linker cmd file.
#pragma CODE_SECTION(EPwm1_timer_isr,"ramfuncs");
#pragma CODE_SECTION(EPwm2_timer_isr,"ramfuncs");
MAIN()
{
// These are defined by the linker (see F2808.cmd)在CMD里面定义的变量
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
User specific code,enable interrupts:
// Copy time critical code and Flash setup code to RAM
// This includes the following ISR functions: EPwm1_timer_isr(),EPwm2_timer_isr()
// EPwm3_timer_isr and and InitFlash();
// The ?
// symbols are created by the linker. Refer to the F2808.cmd file.
?
// Call Flash Initialization to setup flash waitstates
// This function must reside in RAM
?
}
第二步:将要从FLASH里面加载到RAM的函数定义到"ramfuncs"
// Functions that will be run from RAM need to be assigned to
// a different section. ?
// run address using the linker cmd file.
#pragma CODE_SECTION(InitFlash,"ramfuncs");
第三步:
CMD文件:
MEMORY
{
?
?
?
?
}
SECTIONS
{
?
?
?
?
?
?
}
总结:在MAP文件里:从FLASH加载到RAM运行的程序会有二个实际的存储空间,一个在FLASH里面,另一个在RAM里。ramfuncs ?
?
?
?
?
MAP文件里的表现:
SECTION ALLOCATION MAP
ramfuncs ?
?
?
?
.cinit ?
?
?
?
GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name?
003f6623 ?
003f65d6 ?
00008000 ?
GLOBAL SYMBOLS: SORTED BY Symbol Address?
00008000 ?
0000801b ?
0000801f ?
00008035 ?
003f65d6 ?
003f6623 ?
003f6623 ?
003f6623 ?
程序运行上的表现:只要程序一运行到上面的三个函数,CCS程序PC指针就会指向相应RAM地址上运行。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |