将程序从Flash搬运到RAM中运行总结(转载)
发布时间:2020-12-15 19:55:02 所属栏目:百科 来源:网络整理
导读:转自:?http://www.cnblogs.com/kwang-cai/articles/5620411.html 在CMD文件中配置相应的段,如 ramfuncs??????????? : LOAD = FLASHJ,? PAGE = 0 ??????????????????? RUN = RAMH0,? PAGE = 0 ??????????????????? LOAD_START(_RamfuncsLoadStart), ???????
转自:?http://www.cnblogs.com/kwang-cai/articles/5620411.html
ramfuncs??????????? : LOAD = FLASHJ,? PAGE = 0
??????????????????? RUN = RAMH0,? PAGE = 0
??????????????????? LOAD_START(_RamfuncsLoadStart),
??????????????????? LOAD_END(_RamfuncsLoadEnd),
??????????????????? RUN_START(_RamfuncsRunStart)
secureRamFuncs??? :?? LOAD = FLASHP,?? PAGE = 0????????? /* Used by InitFlash() in SysCtrl.c */
???????????????????????? RUN =? RAMH0,?? PAGE = 0
???????????????????????? LOAD_START(_secureRamFuncs_loadstart),
???????????????????????? LOAD_END(_secureRamFuncs_loadend),
???????????????????????? RUN_START(_secureRamFuncs_runstart)
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
extern Uint16 secureRamFuncs_runstart;
extern Uint16 secureRamFuncs_loadstart;
extern Uint16 secureRamFuncs_loadend;
在用户程序中,使用pragma将函数映射到上一步中定义的段中;
#pragma CODE_SECTION(eva_timer1_isr,"
ramfuncs");
#pragma CODE_SECTION(eva_timer2_isr,"
ramfuncs");
#pragma CODE_SECTION(evb_timer3_isr,"
ramfuncs");
把要初始化的
flash控制寄存器函数定义到段secureRamFuncs
#pragma CODE_SECTION(InitFlash,"secureRamFuncs");?????????????????? //该部分在DSP2833x_SysCtrl.c文件中,TI官方的定义为#pragma CODE_SECTION(InitFlash,"ramfuncs")。因此如果运行InitFlash而不调用MemCopy时,应该将该句注释掉;调用MemCopy时,该句注释掉表示InitFlash在Flash中运行,不注释掉表示程序在RAM中运行。
void InitFlash(void);
// 声明中断函数 interrupt void eva_timer1_isr(void); interrupt void eva_timer2_isr(void); interrupt void evb_timer3_isr(void);
InitSysCtrl();
memcpy(&secureRamFuncs_runstart,&secureRamFuncs_loadstart,&secureRamFuncs_loadend - &secureRamFuncs_loadstart);??????????? //先拷贝InitFlash函数
InitFlash();???????????????????????????????????????? //调用InitFlash函数,优化flash运行
memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,&RamfuncsLoadEnd- RamfuncsLoadStart);
注意:memcpy(&RamfuncsRunStart,&RamfuncsLoadEnd- RamfuncsLoadStart)位于RTS library中;使用MemCopy函数时,函数的原型为void MemCopy(Uint16 *SourceAddr,Uint16* SourceEndAddr,Uint16* DestAddr);该函数位于DSP2833x_MemCopy.c中。使用两个函数都可以,但是需要注意的是变量要对应。
参考资料
http://www.hellodsp.com/bbs/forum.php?mod=viewthread&tid=1489&highlight=flash%2Bram
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- A Simple Review Of 《Query Languages for Grap
- c# – 当使用mvc自定义TextWriter时,OutputStrea
- c# – Build不会在asp.net mvc中的View中捕获错误
- 我们连站都站不好--从Taylor Swift的脖子说起
- React实现限制checkBox的点击个数
- 《设计模式之禅》之责任链模式
- Failed to load admin-sidebar.xml file from Op
- VUE-Table上绑定Input通过render实现双向绑定数据
- FlexPaper+SWFTools 实现仿百度文库及一些小问题
- 聚合函数&groupby&having
热点阅读