TI DSP 64XX 加载模式设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TI DSP bootlooder 设计

数字信号处理技术广泛应用于雷达、通信、图像处理等领域,其中有些信号处理运算量很大、算法结构复杂,且要求高速实时、高性能、灵活地完成各种处理任务。近年来,以数字信号处理器(DSP)为基础的通用信号处理模块[1~5]的研制受到人们的重视,它的研制成功满足了信号处理系统实时性和通用性的要求。由于在DSP程序运行前,都有程序加载的问题,尤其当信号处理模块由多DSP构成时,要充分考虑到上位机与DSP间、主DSP与从DSP间的加载关系,DSP也提供了多种灵活的加载方式以满足应用要求。因此在设计通用信号处理模块前,有必要研究DSP的多种加载方式[6~8]。

TMS320C6455是世界上最大的DSP(数字信号处理)芯片商—TI(德州仪器)新推出的高端DSP芯片,也是目前单片处理能力最强的定点DSP。与另一DSP芯片商ADI的高端产品TigerSHARC系列TS201相比:TS201时钟频率为600MHz,16位定点处理能力为4800MMAC/s;TMS320C6455时钟频率为1.2GHz,16位定点处理能力为9600MMAC/s。可见,单片DSP的定点处理能力,TMS320C6455强于TS201。另外,ADI逐渐把精力投入到Blackfin系列DSP[9],TigerSHARC系列DSP不再升级;TI却仍在不断打造自己的高端市场,TMS320C6455后续产品也在不断跟进。ADI的TigerSHARC系列DSP拥有独特的link口,适合于构建多处理器平台。在推出TMS320C6455以前,TI的DSP单片处理能力较强,但是芯片间的数据传输问题没有解决,构建多处理器平台比较复杂[10]。但是新推出的TMS320C6455,采用了Serial RapidIO 接口技术,互连速率每秒高达25Gbits,很好的解决了芯片间的数据传输问题,搭建多处理器平台变得简单方便。RapidIO互连规范已成为ISO/IEC DIS 18372标准,RapidIO Trade Association已经囊括了世界主要半导体芯片供应商、通信系统OEM和计算机系统制造商。link口虽然也可以实现高速数据传输,但link口是ADI自定义总线。所以link口应用范围狭窄,而RapidIO技术将有广阔的发展前景。可以预见,TMS320C6455(以下简称C6455)将在雷达、通信、图像处理等领域得到广泛应用。基于C6455的通用信号处理模块也在研制之中。本文在完成C6455评估板的基础上,深入研究并实现了C6455的多种加载(引导)模式。这些模式几乎囊括了目前DSP的所有加载方式,也可作为实现其他DSP加载的参考。

1、加载模式分类

在TMS320C6455的地址空间0x00100000到0x00107FFF间集成了32K的内部ROM。此ROM中固化了一段叫作“boot loader”的引导代码,它的主要作用是在DSP上电时,对DSP进行必要的配置,以便辅助HPI/PCI/SRIO等接口进行加载;另外,它还可以将代码从外部存储器读到内部L2 SRAM,以完成代码加载。

TMS320C6455复位和上电时的引导模式主要有:NO BOOT模式、主机(HPI/PCI接口)引导模式、FLASH引导模式、主I2C引导模式、从I2C引导模式、SRIO引导模式。采用哪种引导模式,由复位或上电时采样管脚来决定。

2 数据格式转换及boot table

用TI的编程工具CCS(Code Composer Studio)编译连接生成后缀为.out可执行文件,此目标文件格式被称作通用目标文件格式(COFF)。COFF按照模块化思想对程序进行管理,它的最小单位称为段(section)。段是占据一个连续空间的代码块或者数据块,与其他段一起在存储器映射图内。但各个段是分开的,各有特色。对于C语言文件,编译器生成的代码段分配在.text段中,全局变量和静态变量分配在.bss 段中,而局部变量或寄存器变量分配到.stack段,还有其他段和自定义段,可以查询TI的有关文档。

连接器生成的可执行COFF文件(后缀为.out),含有一些定位符号和文件头等信息,这些信息能够被

仿真器识别,仿真器可以从COFF文件中提取有用的程序,并把提取的程序加载到DSP的L2 SRAM。但是,如果我们采用FLASH、PCI或SRIO等加载时,COFF文件中的一些信息不能被识别,而且由于含有的无效信息较多,COFF文件比较大,因此,我们首先应该对COFF文件进行提取和精简处理。这就需要用到TI提供的十六进制转换工具(Hex6x.exe)。十六进制转换工具可以把COFF文件转换成以下文件格式:ASCII-HEX格式、扩展的Tektronix(泰克)格式、Intel MCS-86(英特尔)格式、Motorola Exorciser(摩托罗拉-S)格式、Texas Instruments SDSMAC(TI-Tagged)格式。

Boot table主要由三部分构成,如图1所示。第一个32位数据是程序的入口地址;最后一个32位数据0x00000000,它是boot table的结束标志;中间部分是主体部分,由程序中的若干section构成。所有的section 都有一个统一的结构,以section i 为例,第一个32位数据是此section的大小,以字节为单位;第二个32位数据是此section在L2 SRAM中的存放首地址;剩下部分是此section的数据内容。

3、FLASH加载

对于TMS320C6455来说,固化在DSP内部ROM中的“boot loader”会在系统上电时将FLASH ROM 的前1K空间的内容复制到片内L2 SRAM的0x800000到x8003FF地址空间,复制完成后DSP会从0x800000地址处开始运行。因为需要搬到内存中运行的应用程序的向量表、初始化段等往往超过1K大小,为了能在系统上电时自动引导应用程序运行,就需要在引导的1K代码中编写引导代码,此引导代码的工作就是把待加载的代码复制到L2 SRAM中,复制完成后跳转到程序初始化入口处(_c_int00),从而实现二次加载。

FLASH引导模式需要进行二次引导,因此需要编写二次引导代码。此二次引导代码实现三个功能:配置EMIFA端口为异步读模式,总线宽度为8-bit;将FLASH空间起始地址0xB0020000的代码装载到L2 SRAM中;拷贝完成后,程序跳转到程序初始化入口处(_c_int00)。假设待加载程序为跑马灯测试程序。在开发板上通过DSP的GPIO控制小灯的熄灭,当GPIO输出电平为高时,小灯被点亮,当GPIO输出电平为低时,小灯熄灭。此测试程序控制多个小灯,让其轮流熄灭。测试通过后,生成了myled.out文件,此程序就是待加载到DSP中的程序,首先必须对myled.out文件按照上节所述过程进行格式转换,生成小段模式、二进制形式的boot table。

因为需要进行二次引导,在上面编写点灯程序时需要把二次引导代码链接进去。此二次引导代码在编译链接时需要被分配到L2 SRAM的0x800000到0x8003FF地址空间。经过转换后,二次引导代码被转换成boot table中的section 1,在此称它为boot section。为了便于在线烧写,将此boot table做进一步的转换,生成一个新boot table和二次引导代码段。将此二次引导代码段烧写到0xB0000000到0xB00003FF FLASH 地址空间,将新的boot table烧写到起始地址为0xB0020000的FLASH地址空间。图2详细阐述了格式转换和烧写流程。

上电后,固化在DSP内部ROM中的“boot loader”将FLASH ROM的前1K空间的二次引导代码复制到片内L2 SRAM的0x8000000到x8003FF地址空间。复制完成后DSP从0x800000地址处开始运行,也就是说DSP运行二次引导,此时,DSP将FLASH空间起始地址为0xB0020000的数据按照section指定的地址复制到片内L2 SRAM,复制完成后,二次引导代码跳转到程序初始化入口处(_c_int00),加载过程结束。

4、主机加载

主机加载包括HPI和PCI接口的加载。在主机加载模式下,DSP处于等待状态,上位机直接将代码和数据写入DSP内部存储空间,此时不使用boot table。当上位机完成所有代码和数据的写入后,将产生一个主机中断(HPI/PCI),DSP将开始执行加载入的程序。HPI接口的加载很简单,DSP被当作存储器。PCI 接口的加载需要考虑地址映射,复杂一些。下面就以PCI接口的加载来说明主机加载模式。

相关文档
最新文档