(帖子的内容已经转成PDF格式放在附件里)
本人学习28335 有一段时间了,每次都有这样的感觉:“讲解F28335的资料太少了!”。特别是在使用F28335遇到困难时,往往要调动百度, google 等各大搜索引擎,方能寻觅点零星的资料。店面上出售的TI C2000 系列DSP 中文资料以2407 和2812 为多,全部讲解的28335 的中文资料没有(不知道是不是我没有发现,有的同志,麻烦您给我留个言啊)。我现手上有一本参考书:<<TMS32x28xxx 原理与开发>>,电子工业出版社,这里面讲到了28335 的几个模块,刚开始学习的同志可以借鉴下。
学习的方法主要有2 种,理论学习和实践学习。在正式讲述本节内容之前我先强调下,我写这些文字没有很复杂的理论知识介绍,也没有很详细的原理讲述,我传递的只是一种方法,能够帮你解决问题的方法。当然,我不是强调理论知识不重要,因为这里如果理论也介绍,方法也介绍,恐怕每个方面都讲不清楚,而且看起来也比较费劲,理论知识总让我想起一串串复杂的公式。本节就是教会你怎样将F28335在FLASH 里面运行的程序搬移到RAM里面运行。
使用过TI DSP 或正在使用的人都知道,DSP 程序可以放在RAM 里面运行,也可以放在FLASH 里面运行。两者有一定的区别:
(1)前者程序运行时,连接着仿真器,后者脱离仿真器;
(2)前者断电程序丢失,后者不会;
(3)前者程序运行速度快,后者慢;
(4)二者空间大小可能不一样(取决于芯片型号);
(5)前者没有烧写次数的限制,而后者有;
所以在RAM 里面运行适合项目的初期调试,方便快捷,当最终程序全部调试完后,做成产品销售时,将程序烧写到FLASH 里面(特殊场合,比如在做高压的实验时,可以考虑将程序烧写到FLASH 里面调试)。
在上面5 点当中,第3 点我加了强调,在一个实际的项目里面,程序的运行速度是很受关注的,我曾对F28335在FLASH 里运行程序和在RAM 里面运行程序做过对比,相同的代码在FLASH 和RAM 里面运行时间如下表:
表1 FLASH 和RAM 里程序运行区别表
一段程序代码 运行时间 RAM 里运行 5us FLASH 里运行 25us
从上表可以看出,RAM 里面运行程序比FLASH 里面运行程序快近5 倍(只对F28335,其它芯片不一定适用),所以寻找一种可以提高程序在FLASH 里运行速度的方法,对提高程序总体性能很有帮助。
通过很多前辈们的努力,终于寻找到一种方法:将程序烧写到FLASH 里面,上电时将程序搬移到RAM 里面运行。这即满足了掉电程序不丢失,又满足了程序运行速度高的要求,可谓一箭双雕。
本人在遇到这个问题以后,对这种方法很感兴趣,想尝试一下,找了很多资料(包括理论和实践),摸索了一天一点头绪都没有,用TI FLASH 例程也能够烧进去,但程序执行不对。开始有点灰心了,但又不死心。继续研究了一天,发现TI 给的例程和网上一些热心网友们给的例程都是将指定的代码搬移到FLASH 里面,可以通过:
#pragma CODE_SECTION(函数名, "存储器入口地址");语句完成,感觉很简单,但就是调试不出来。最后,突然想起来,可不可以不这样做,找一个能够将所有程序均搬移到RAM 里面的方法。
……
中间省略号就是本人奋斗的过程,开始之前就讲了,写这些文字是将一种方法分享给大家,至于研究奋斗的过程就不详细描述,不然恐怕说几十页纸都讲不清楚。接下来就一步步教大家如何建立一个能够将FLASH 里面程序上电时搬移到RAM 里面运行的工程。
1、 建立一个工程;(怎么建立省略)
2、 将工程里面源文件(source)的“DSP2833x_SysCtrl.c”、“DSP2833x_usDelay.asm”和“DSP2833x_CodeStartBranch.asm”文件(如果用的是TI 提供的文件就是这四个文件) 分别替换成“ DSP28xxx_SysCtrl.c ”、“ DSP28xxx_usDelay.asm” 和“DSP28xxx_CodeStartBranch.asm” 。
另外,在将“DSP28xxx_SectionCopy_nonBIOS.asm”文件添加到工程里面;
备注: “ DSP28xxx_SysCtrl.c ” 、“ DSP28xxx_usDelay.asm ” 、
“DSP28xxx_CodeStartBranch.asm”和“DSP28xxx_SectionCopy_nonBIOS.asm”
我已经放在附件里面上传了。
3、 添加CMD:“DSP2833x_Headers_nonBIOS.cmd”和“F2833x_nonBIOS_flash.cmd”。
如果工程里面已经有了CMD,要换成这2 个。
备注:“DSP2833x_Headers_nonBIOS.cmd”和“F2833x_nonBIOS_flash.cmd”也
已经放在附件里。
4、 编译烧写。
大功告成了,各位可以试试,做个对比,看下不用这种方法和用这种方法程序分别执行的时间,差别很惊人哦!如果按照以上教你的步骤还是不行,可以给我留言!当然,能够成功烧写也可以留言哈!
就此搁笔!愿君安好!^_^
DSP28xxx_CodeStartBranch.asm
3.37 KB, 下载次数: 228
DSP28xxx_SectionCopy_nonBIOS.asm
3.25 KB, 下载次数: 198
DSP28xxx_SysCtrl.c
11.77 KB, 下载次数: 205
DSP28xxx_usDelay.asm
2.65 KB, 下载次数: 184
DSP2833x_Headers_nonBIOS.cmd
8.24 KB, 下载次数: 194
F2833x_nonBIOS_flash.cmd
7.02 KB, 下载次数: 190
F28335学习系列一___FLASH搬移到RAM里运行实现方法.pdf
93.03 KB, 下载次数: 360
http://www.hellodsp.com/bbs/forum.php?mod=viewthread&tid=35032&highlight=F28335
分享到:
相关推荐
F28335学习系列一___FLASH搬移到RAM里运行实现方法
在DSP28335中,我们一般先下载到RAM中运行调试,调试完之后下载到flash中,然后flash启动,但是要将flash的内容搬到ram中运行的话,速度会快很多,本人在研一的时候就遇到过这样的问题,很容易在论坛看到了这样的...
TMS320F28335 flash搬运到ram里运行的实现方法 内涵详细步骤和所用到的资源
该文档详细描述了,如何将F28335的运行代码从Flash中迁移到RAM中运行,加快程序的运行速度。
从flash搬移到ram中运行(代码例程),是关于28335的,有文档说明,有兴趣的可以了解下
该文章详细地讲述了如何固化DSP代码到Flash中去,再如何将代码从Flash中搬移到RAM的过程步骤
基于CCS6.0开发环境,并且基于TMS320F28335平台,一个简单的BUCK闭环程序。 实现了程序的搬移。
如何搬移dsp中的flash中的程序到RAM中执行
适合管家婆辉煌2008系列的搬移工具。 《内部资料》
管家婆366系列搬移工具 解压到安装目录使用
基于LPCC谱包络的一种频谱搬移方法,余美荣,尹强,频谱包络转换是语音转换中的一项重要内容,基于双线性转换函数进行频谱搬移的方法可以有效的进行谱包络转换,并且基于小语料库训
该程序是复数傅里叶变化和汉明窗参数的产生已经频谱搬移,程序简单易懂。
免费的 管家婆辉煌8.1系列搬移工具,使用方法:解压后放到相应的软件安装目录下面才可以打开使用...........
S3C2410被配置成从NAND闪存启动,上电后,S3C...根据U-BOOT的执行流程图,可知要实现从NAND闪存中启动U-BOOT,首先需要初始化NAND闪存,并从NAND闪存中把U-BOOT搬移到RAM中,最后需要让U-BOOT支持NAND闪存的命令操作。
傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数。
SPL,即Second Program Loader,是2010年之后才出现的一个模块,它是U-Boot第一阶段执行的代码,...当SPL本身被搬移到内部RAM中运行时,它会从nandflash,SDCARD等外部介质中搬移U-Boot第二阶段的代码到外部内存中。
最新版366系列的搬移工具向外提供,需要的朋友赶快下载吧!(放心下载吧,绝对能用) 《内部资料》
matlab 仿真AM DSB LSSB频谱搬移
2008系列适用搬移工具
超级终端上开始3秒倒计时,3秒内不动键盘,提示加载操作系统,模拟操作系统的闪灯程序运行,可观察到LED等一闪一灭 3. 重启开发板,3秒内按下任意键,可看到有T-Boot#提示符,程序进入Shell模式 4. 输入help,可...