EDN China > 其它文章 > 微处理器与DSP > DSP应用 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

在TMS320F28XXX DSP上实现从flash拷贝整个程序到ram运行的方法探讨

作者:zealane?? 2008年04月10日 ?? 收藏0
EDN博客精华文章??作者:zealane

  
?????? 1. 前言

  TMS320F28XXX DSP 里,代码从内部flash里运行,比从内部RAM里运行要慢30%左右,所以对运行时间苛刻的程序直接在flash里运行,往往不能满足要求。故而,需要将代码拷贝到RAM以提高运行速度。TI文档只提供了部分代码从flash拷贝到RAM中的方法。然而,在一些应用中,需要将整个代码段都拷贝到RAM中执行,以提高整体运行速度。本文通过对TMS320F28XXX 的启动代码研究,来探讨如何在从FLASH启动后将整个代码段拷贝到RAM中,然后在RAM中运行的方法。

  2. F28XXX 启动过程

  F28XXX启动代码固化在内部ROM中。当F28XXX上电或者热复位后,首先由芯片本身将一些寄存器初始化:

  PIE disabled(ENPIE=0,VMAP=1,OBJMDE=0,AMODE=0,MOM1MAP=1),

  然后dsp会对XMPNMC管脚采样,根据采样值的高低,来决定启动模式是“微处理器模式”还是“微计算机模式”。当XMPNMC=0时,为“微计算机模式”,此时,启动ROM存储器被使能而XINTF Zone 7被禁止。复位向量从内部启动ROM获取,启动ROM在复位期间一直被使能。

  启动ROM里的复位向量(位于0x3FFFC0)指向InitBoot函数(位于0x3FFC00)。在完成器件初始化(InitBoot)之后,Boot loader将检查GPIO管脚的状态,然后再决定选用的启动模式。启动模式有4种:跳转到flash,跳转到H0 SARAM,跳转到OTP或者调用片上启动程序。

  InitBoot Function 所做工作有:1.初始化状态寄存器;2.将堆栈指针设为0x400;3.读CSM密码保护部分;4.调用SelectBootMode;5.调用ExitBoot

  在完成选择启动模式过程之后,根据选择的启动模式,dsp会跳到相应的启动入口。也可以自己选择启动入口。这些入口地址都在这之前已经被dsp定义好的。

  如果从flash启动,那么我们的管脚状态应该是

  

GPIOF4

GPIOF12

GPIOF3

GPIOF2

?

(SCITXDA)

(MDXA)

(SPISTEA)

(SPICLK)

?

内部上拉

无内部上拉

无内部上拉

无内部上拉

Mode Selected

1

x

x

x

Jump to Flash address 0x3F 7FF6

??????? 3. 搬移思路

??????? 将搬移代码烧在flash上,从flash启动之后,搬移代码会被执行。搬移代码做的工作就是将烧在flash其他区的代码拷贝到内部RAM,然后经过初始化环境,PC指针指向RAM里代码部分首地址,开始执行程序。这样,你的程序就在RAM中运行起来了。也就是说,我们需要两个程序,一个是搬移程序,启动时运行,用来拷贝代码到RAM中;一个就是主程序,从flash里被搬移到RAM后在RAM中运行。这样flash里应该存有两个程序的代码。我们还要做的工作就是,把主程序烧写到flash里的某一块,这个块又不会影响flash启动时运行搬移程序。完成这个烧写过程的程序,我们称之为flash烧写程序。

这样,完成整个搬移过程,一共需要三个程序。两个程序被固化到flash里,一个程序在仿真器里运行完成烧写任务即可。  

?????? 4. 搬移方法  

??????1)首先你要用的主程序必须编译通过,并且通过仿真器在RAM里运行无问题。将主程序的CMD文件进行改写,保证程序段(.text段)分配在连续的存储空间。程序从flash启动,所有初始化段链接在非易失存储器里,而非初始化段必须链接在易失存储器。我们可以把初始化段都放在一个连续的内部RAM空间,而非初始化段放在另一个内部RAM空间。如果你的代码不是很大,也可以都放在连续的RAM空间。但在实际项目中,通常你会遇到存储空间不够的问题。这时就要考虑将无关紧要的段放在另外的非程序空间了。


上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

.cinit

Flash

.cio

RAM

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

TMS320F28XXX? DSP?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈