如何将flash中的程序搬到ram中执行
来源:互联网 发布:华为云计算平台 编辑:程序博客网 时间:2024/05/16 10:14
转自:http://blog.sina.com.cn/s/blog_afdc25690101cuzt.html
首先使用添加C:\ti\controlSUITE\device_support\f2833x\v133\DSP2833x_common\cmd\F28335.cmd。此文件即为配置代码到flash中的TI官方配置文件。
然后参考C:\ti\controlSUITE\device_support\f2833x\v133\DSP2833x_examples_ccsv4\flash_f28335。添加以下代码:
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);将一些在内存中运行的代码从flash复制到内存中,然后程序才能正常运行。
5.写好的代码再ram中能正常运行但是烧写到flash中后,函数DSP28x_usDelay()不能正常运行为什么?
因为在DSP2833x_usDelay.asm中有.sect "ramfuncs",即把该函数定义在段"ramfuncs"中, 而此段需要在内存中运行,故需要使用函数
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);将ramfuncs段复制到内存中然后运行。只算以这样设计是因为函数DSP28x_usDelay()精准运行对运行速度有要求故必须放在段"ramfuncs"中。参考:http://blog.sina.com.cn/s/blog_9388c4140100vs0r.html
6.cmd中以下代码如何解释?
第1行表示该段的装载在PAGA0的FLASHD中
第2行表示该段的运行地址在PAGE0的RAML0中
LOAD_ START(_RamfuncsLoadStart)令编译器创建了一个变量RamfuncsLoadStart,该变量指向段ramfuncs的装载地址的首地址(LOAD_ START为编译伪指令,请见CCS的帮助文档);
LOAD_ START(_RamfuncsLoadEnd)令编译器创建了一个变量RamfuncsLoadEnd,该变量指向段ramfuncs的装载地址的末地址(LOAD_ END为编译伪指令,请见CCS的帮助文档);
LOAD_ START(_RamfuncsRunStart)令编译器创建了一个变量RamfuncsRunStart,该变量指向段ramfuncs的运行地址的首地址(LOAD_ START为编译伪指令,请见CCS的帮助文档);
从第1和2行可以看出,段ramfuncs中的函数DSP28x_usDelay()的装载地址和运行地址是不同的,本程序中装载在Flash的块FLASHD中,而在SARAM L0中运行,这只是目标,实际运行时DSP并不会自动将Flash中的代码拷贝到SARAM中,因此需要手动添加代码来完成。
在C函数中,为了使用变量RamfuncsLoadStart、RamfuncsLoadEnd和RamfuncsRunStart,必须先声明,本工程在文件DSP2833x_GlobalPrototypes.h中做了如下声明:
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
然后就可以使用了。在Main.c中,使用MemCopy()函数将段ramfuncs中的函数DSP28x_usDelay()的代码从装载地址RamfuncsLoadStart—RamfuncsLoadEnd拷贝到RamfuncsRunStart开始的SARAM空间中。之后在程序运行时,只要调用DSP28x_usDelay()函数,都会自动地指向SARAM中相应的函数入口地址,这一点是自动完成的。MemCopy()函数原型在MemCopy.c中,DSP2833x_GlobalPrototypes.h声明。
7.如何将一个函数放到ram中运行?
参考TI公司头文件中自带InitFlash函数,这些函数会以CODE_SECTION申明。如:#pragma CODE_SECTION(InitFlash, "ramfuncs");
- 如何将flash中的程序搬到ram中执行
- F2812程序从Flash搬到RAM中运行
- F2812程序从Flash搬到RAM中运行(调试过程)
- TMS320F28335将程序从FLASH搬移到RAM中运行详细步骤
- 将程序从Flash搬运到RAM中运行总结(转载)
- DSP程序Flash程序下载到RAM中运行
- DSP TMS320FF28335程序从FLASH中拷贝到RAM中的两种方法及FLASH烧写方法
- 将Ul1中的li搬到Ul2中的li中
- bootloader---13.将程序搬到sdram中
- 将DSP的flash里面的函数转移到ram中的步骤
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行 .
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- DSP28335—把TMS320F28XXX的程序段从flash复制到ram中运行
- DSP28335—把TMS320F28XXX的程序段从flash复制到ram中运行
- TMS320F28027将程序下载到flash中运行
- Tomcat环境变量配置
- Check failed: axis_index < num_axes() (1 vs. 1) axis 1 out of range for 1-D Blob with shape
- Ubuntu下SSH安装或设置
- 百度地图1,2,3面
- 6.7-Django-笔记--ORM解释--未完!
- 如何将flash中的程序搬到ram中执行
- jQuery异步请求
- Mysql 服务 在服务列表里丢失解决办法
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- swift3.0项目Cocoapods导入的库头文件在Bridging-Header.h中导入报错
- linux定时任务管理cron设置
- JVM-内存管理及创建对象
- SSH问题:系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常
- 23种设计模式之迭代器模式