2059|0

6587

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

F28335 学习系列一——FLASH 搬移到 RAM 运行实现方法 [复制链接]

本人学习 28335 有一段时间了,每次都有这样的感觉:“讲解 F28335 的资料太少了!”。特别是在使用 F28335 遇到困难时,往往要调动百度,  google 等各大搜索引擎,方能寻觅点零星的资料。店面上出售的 TI C2000 系列 DSP 中文资料以 2407 和 2812 为多,全部讲解的28335  的中文资料没有(不知道是不是我没有发现,有的同志,麻烦您给我留个言啊)。我现手上有一本参考书:<>,电子工业出版社,这里面讲到了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、 编译烧写。

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表