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

时间:2011-06-17

  DSP芯片(数字信号处理器)已成为人们日益关注并得到迅速发展的具有前沿技术的一种集成电路,并且得到越来越广泛的应用。TI公司推出的5000系列DSP具有高性能、低功耗等优良性能,一推出就受到了用户的欢迎。正由于其快速的数字信号处理能力,5000系列DSP被广泛应用于电信、雷达、仪器仪表、图像处理等许多方面,与单片机一起完成数字信号的处理和控制。其应用范围的广泛性决定了必须有灵活多样的加载方式与之相适应。正因为如此,它的加载方式也较单片机的加载要复杂得多。

  为充分利用DSP快速运行的优点,通常希望用户程序能在DSP中高速运行,这就需要运用DSP自举引导功能。本文以'C5402为例,说明自举引导的特点及自举表建立的步骤。

  1 几种自举引导方式

  1.1 自举引导方式简介

  众所周知,欲获得全速的DSP运行速度,方法之一是在DSP芯片出厂前将用户程序掩膜在其片内的ROM上。这种方法对大部分应用场合并不适用,且成本很高。对大多数用户而言,可行的方法是利用DSP自举引导功能。

  Bootlooader(自举引导程序,也称引导装载程序)是在出厂前固化在DSP芯片内ROM中的一段程序代码,其主要功能是在上电或复位时将用户程序从外部加载至程序存储器(片内RAM或扩展的RAM)中,以便实现高速运行。因此,用这种方法可以以较低成本实现高速运行。不同型号的DSP,其Bootlooader也不同。如TMS320C54X系列的DSP提供了四种自举引导方法[2]:并行EPROM、并行I/O口、串行口及主机接口HPI自举引导方式,它们适用于不同的应用场合。

  1.2 '5402 DSP自举引导方式

  新近推出的'5402 DSP片内ROM掩膜的Bootlooader程序与TMS320C54X系列的其它DSP有较大的不同,它包括以下五种自举引导方式:主机接口HPI、并行口、标准串行口、8位串行EEPROM及I/O口自举引导方式。

  DSP上电复位后,首先检查其MP/MC引脚,如果该引脚为高电平,说明DSP被设置为微处理器工作方式,即从外部程序存储器0FF80h地址开始执行用户程序;若该引脚为低电平说明DSP被设置为微计算机工作方式,即从片内ROM的0FF80h起执行程序。'C5402 DSP片内4K ROM掩膜了TI设计的几段程序,其中包括自举引导程序,具体内容如表1所示[3]。因此,为利用自举引导功能,必须将DSP设置为微计算机工作方式,即MP/MC=0。

  由表1可见,从片内ROM的0FF80h地址开始存放的是中断向量表,它实为一条分支转移指令(BD 0F800h)。该指令使程序跳转至0F800h,并从此开始执行自举引导程序。

  在执行自举引导搬移程序之前,首先进行初始化,其程序片段如下:

  从以上程序可看出,初始化的内容主要包括:

  ①关闭所有可屏蔽中断(INTM=1);

  ②将片内DARAM映射至程序/数据存储空间(OVLY=1);

  ③将程序、数据及I/O存储空间均设置为7个等待状态(SWWSR=07FFFh)。

  初始化完成后,根据外部设定的条件,选择不同的自举引导方式,判断条件是有先后顺序的,其流程如图1的示。

  图1中各种自举引导方式各有特点:

  ① 主机接口HPI自举引导方式

  欲执行的程序代码通过HPI(主机接口总线)由外部主处理器加载至片内存储器中。一旦主处理改变了被加载代码的起始地址(存放于内存007Fh处),便开始执行程序。

  ②8位串行EEPROM自举引导方式

  自举引导程序通过一串联的EEPROM读取自举表,并按照自举表中指定的方式加载代码。该EEPROM与设置为clockstop模式的多通道缓冲串口McBSP1相连接。

  ③并行自举引导方式

  自举引导程序通过外部并行接口总线读取存放于数据存储空间中的自举表。自举表的内容包括:欲加载的各段代码、各代码段长度、各代码段存放的目标地址、程序入口地址及其它配置信息。

  ④标准串行口自举引导方式

  自举引导程序通过被设置为标准模式的多通道缓冲串口McBSP0读取自举表,并按照自举表中指定的方式加载代码。McBSP0及McBSP1分别支持16位及8位串行接收方式。

  ⑤I/O自举引导方式

  自举引导程序通过外部并行接口总线从地址为0h的I/O口读取自举表。该外部并行接口总线使用了异步握手协议(利用XF及BIO引脚),使数据传输速度可按外部设备的要求设置。

  2 并行自举引导方式

  在'C5402的五种自举引导方式中,并行自举引导广度划常用的一种。欲加载的各代码段存放在字宽为8位或16位的外部存储器中,在自举引导时,通过外部并行接口总线将这些代码从数据存储空间传送到程序存储空间。

  在并行引导方式中,由于可重新设置SWWSR及BSCR寄存器的内容,所以当从快速的外部存储器EEPROM引导用户程序时,可采用较少的软件等待状态(默认为7个等待状态)。

  并行自举引导方式流程图如图2所示。从图2可知,自举表首地址既可从地址为0FFFFh的I/O口读取,也可从地址为0FFFFh的数据存储器获得。两种方式中,后者更为方便,因在单片的外部存储器EPROM或FLASH中可同时包含自举表内容及自举表存放的首地址。对'C5402而言,有效的外部数据存储器的地址范围为04000h~0FFFFh。

  并行自举引导程序片段如下:

  3 自举表的建立

  自举表内容不仅包括了欲加载的各段代码,而且包括各段代码长度、各代码段存放的目标地址、程序入口地址等信息。因此若想利用自举引导功能,首先必须正确建立自举表。自举表可由hex500格式转换器自动生成。Hex500实际为一通用程序,它将公共目标文件格式——COFF文件转换成各种EPROM或FLASH的编程格式。因此,在使用hex500工具之前,首先必须对DSP的汇编语言、C语言或两者的混合编程语言进行汇编、编译、链接,生成COFF格式的。out文件,然后再通过设置适当的选项生成用户所要求的自举表。

  为了书写及修改方便,可将hex500的所有选项及输入输出文件名以。cmd批处理命令文件的形式保存。下面以一个DSP汇编语言程序example.asm为例,说明建立'C5402自举表的具体步骤。

  步:对example.asm进行编译,生成example.obj文件。不论是用Windows环境下的CCS(Code Composer Studio),还是用DOS环境下的asm500命令文件,编译时必须加选项一v548,且DOS的asm500版本必须在1.2以上,否则无法生成正确的'C5402自举表。

  第二步:链接,生成example.out文件。

  第三步:使用hex500格式转换工具,将example.out文件转换成example.hex文件,命令格式如下:

  C:>hex500 example.emd

  注:在上面的命令行中,example的扩展名cmd一定要加上。

  以下是命令文件example.cmd的内容:

  如果example.asm是一个简单的求乘法累加运算,程序内部如下:

  则生成的example.hex文件的内容如表2所示。

 

  如果将example.hex的内容烧写至16位EPROM中,则其数据存储器内部组织结构如表3所示。

  由表3的EPROM数据组织结构可看出,在0FFFFh地址处存放的是自举表首地址8000h。从8000h处开始是16位自举表的内容。自举表的个字是16位自举标记10AA,第二、三个字分别为寄存器SWWSR及BSCR的内容。从第四个字开始分别是程序入口地址、各代码段长度、存放各代码段的目标地址及各段代码(本例含有程序段及数据段),为块结束标志0000h。这样,一个正确的自举表就建立起来了。

  'C5402 DSP芯片为用户提供了丰富灵活的自举引导方式,用户可根据各自的需求选择不同的引导方式,其中并行自举是常用的引导方式之一。正确建立自举表是充分利用自举引导功能的前提及关键。


  
上一篇:AMD明日发布新款APU 大幅提升笔记本续航能力
下一篇:恩智浦推出智能汽车钥匙单芯片NCF2970

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料