Chinaunix首页 | 论坛 | 博客
  • 博客访问: 530098
  • 博文数量: 26
  • 博客积分: 509
  • 博客等级: 下士
  • 技术积分: 809
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-15 18:01
文章分类

全部博文(26)

文章存档

2015年(1)

2013年(6)

2012年(19)

分类: 嵌入式

2012-06-10 22:19:33

 

以下内容是我参考资料后整理的。现在对dsp的自举稍微明白点了,分享给大家吧!!

为充分利用DSP快速运行的优点,通常希望用户程序能在DSP中高速运行,这就需要运用DSP自举引导功能。

欲获得全速的DSP运行速度,方法之一是在DSP芯片出厂前将用户程序掩膜在其片内的ROM上。这种方法对大部分应用场合并不适用,且成本很高。对大多数用户而言,可行的方法是利用DSP自举引导功能。 Bootlooader(自举引导程序,也称引导装载程序)是在出厂前固化在DSP芯片内ROM中的一段程序代码,其主要功能是在上电或复位时将用户程序从外部加载至程序(片内ROM或扩展的RAM)中,以便实现高速运行。这就是自举过程。因此,用这种方法可以以较低成本实现高速运行。不同型号的DSP,其Bootlooader也不同。C5402 DSP在片内ROM有自带的bootloader程序提供自举,包括以下五种自举引导方式:主机接口HPI、并行口、标准串行口、8位串行EEPROMI/O口自举引导方式

DSP上电复位后,首先检查其MP/ 引脚,如果该引脚为高电平,说明DSP被设置为微处理器工作方式,即从外部程序存储器0FF80h地址开始执行用户程序,不存在引导问题;若该引脚为低电平,说明DSP被设置为微计算机工作方式,内部ROM映射在程序空间,PC指向内部ROM的中断向量表中的复位终端,即从片内ROM0FF80h起执行程序。C5402 DSP片内4K ROM掩膜了TI设计的几段程序,高2K的内容如下,其中包括自举引导程序。因此,为利用自举引导功能,必须将DSP设置为微计算机工作方式。

从片内ROM0FF80h地址开始存放的是中断向量表。在0FF80h地址处存放了一条分支转移指令(BD 0F800h)。该指令使程序跳转至0F800h,并从此开始执行自举引导程序。(中断向量表是由用户自己写的,如vectors.asm文件。如果不需要自举可以不用加BD 0F800h;如果需要就加上。)

自举引导程序的目的就是实现代码的搬移。过程是:首先上电时判断DSP芯片的MP/ 引脚(必须是低电平),然后检测INT2信号、BSR信号,执行各自的引导程序搬移代码等。

0F800h地址处存放这样的代码。在执行自举引导搬移程序之前首先进行初始化:

0000F800

SSBX INTM                             ; INTM=1,使中断失效
  STM #0FFFFhIFR                  ; 清除IFR标志
  LD #0hDP                              ; DP=0,数据存储器页指针为0
  ORM #02B00hST1                  ; XF=INTM=OVM=SXM=1
  ORM #020hPMST                  ; OVLY=1
  STM #07FFFhSWWSR           ; SWWSR=07FFFh
  STM #07DhSP                       ; SP=07Dh

主要完成:关闭所有可屏蔽中断;将片内DARAM映射至程序/数据存储空间(OVLY=1);将程序、数据及I/O存储空间均设置为7个等待状态(SWWSR=07FFFh

初始化完成后,根据外部设定的条件选择不同的自举引导方式。判断条件有先后顺序。如果某种引导方式的条件满足就执行相应的引导程序实现代码的搬移。

其中并行自举引导方式是最常用的一种。欲加载的各代码段放在字宽为8位或16位的外部存储器中,在自举引导时,通过外部并行接口总线将这些代码从数据存储空间传送到程序存储空间(上面的存储空间是指地址范围。数据存储空间就是数据存储空间的地址范围,外接的存储器是EEPROMFLASH。)。并行自举引导方式的过程为:自举程序通过外部并行接口总线读取存放于数据存储空间中的自举表。根据自举表来实现代码搬移。

并行引导程序是可以从地址为0FFFFhI/O口读取,也可从地址为0FFFFh的数据存储器获得。两种方式中后者更为方便。对C5402而言,有效的外部数据存储器的地址范围是4000h~0FFFFh。这需要通过DSPPMST寄存器的DROM位来设置这个地址范围是在片外寻址。(由于复位时DROM位为0,即片外寻址所以不需要修改)

这正代码搬移的时候还需要自举表。自举表的内容不仅包括了欲加载的各段代码,而且包括各段代码长度、各代码段存放的目标地址、程序入口等信息。因此若想利用自举引导功能,首先必须正确建立自举表。

自举表可由hex500格式转换器自动生成。hex500实际为一通用程序,它将公共目标文件格式——COFF文件转换成各种EPROMFLASH的编程格式。因此,在使用hex500工具之前,首先必须对DSP的汇编语言、C语言或两者的混合编程语言进行汇编、编译、链接,生成COFF格式的.out文件,然后再通过设置适当的选项生成用户所要求的自举表。

为了书写及修改方便,可将hex500的所有选项及输入输出文件名以.cmd 批处理命令文件的形式保存。

建立自举表的具体步骤:

一、编译各文件,生成.OBJ文件

二、链接,生成.OUT文件

三、使用hex500格式转换工具,将.OUT文件转换成.hex文件。

注:在.cmd文件中包含了自举表的详细信息。如程序的入口地址、存放自举表的首地址、ROM字宽等。

最后将.hex文件烧到EPROM中就可以了。

 

 

摘自:《C5402 DSP自举引导方法的分析与研究》

       DSP的自举引导方法的应用研究》

TMS320C54x DSP引导应用的研究》

阅读(4162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~