将程序从Flash搬运到RAM中运行总结(转载)
来源:互联网 发布:华为云计算平台 编辑:程序博客网 时间:2024/06/08 08:37
转自: http://www.cnblogs.com/kwang-cai/articles/5620411.html
- 在CMD文件中配置相应的段,如
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)
- 定义全局变量,方便主程序中调用MemCopy函数;
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);
// 声明中断函数
interrupt void eva_timer1_isr(void);
interrupt void eva_timer2_isr(void);
interrupt void evb_timer3_isr(void);
- 在主程序中调用MemCopy(memcpy)函数和InitFlash函数(前者用于拷贝代码,后者用于优化flash运行),注意这两个函数在InitSysCtrl后调用比较合理
InitSysCtrl();
memcpy(&secureRamFuncs_runstart,&secureRamFuncs_loadstart, &secureRamFuncs_loadend - &secureRamFuncs_loadstart); //先拷贝InitFlash函数
InitFlash(); //调用InitFlash函数,优化flash运行
memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,&RamfuncsLoadEnd- RamfuncsLoadStart);
注意:memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,&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
阅读全文
0 0
- 将程序从Flash搬运到RAM中运行总结(转载)
- TMS320F28335将程序从FLASH搬移到RAM中运行详细步骤
- F2812程序从Flash搬到RAM中运行
- F2812中程序从Flash中搬运到SRAM中运行加快速度
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行 .
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- F2812程序从Flash搬到RAM中运行(调试过程)
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- DSP28335—把TMS320F28XXX的程序段从flash复制到ram中运行
- DSP28335—把TMS320F28XXX的程序段从flash复制到ram中运行
- DSP程序Flash程序下载到RAM中运行
- 如何将flash中的程序搬到ram中执行
- 在TMS320F2812上实现从flash拷贝整个程序到RAM上运行的方法探讨
- 在TMS320F2812上实现从flash拷贝整个程序到RAM上运行的方法探讨
- 在TMS320F28XXX DSP上实现从flash拷贝整个程序到ram运行的方法探讨
- S5PV210 构建最小linux系统(1)---->搬运代码到ram中运行
- JVM-内存管理及创建对象
- SSH问题:系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常
- 23种设计模式之迭代器模式
- 程序在flash中还是ram中运行
- TypeError numpy.float64 object cannot be interpreted as an index
- 将程序从Flash搬运到RAM中运行总结(转载)
- 健身健美补剂之蛋白粉
- Centos 6.5 Samba 服务器的搭建
- php 设计模式
- Material Design控件Button,CheckBox的使用
- alsa/asoundlib.h: No such file or directory
- 1.JavaScript深入之从原型到原型链
- PHP缓存技术
- Linux下yum安装及常用命令