0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >计算机及配件 > 一种基于TMS320C6000系列的多DSP程序动态加载方案

一种基于TMS320C6000系列的多DSP程序动态加载方案

来源: 维库电子网
2021-11-23
类别:计算机及配件
eye 10
文章创建人 拍明

原标题:一种基于TMS320C6000系列的多DSP程序动态加载方案

  摘 要:本文提出在PC 机远程控制下利用一片FLASH 存储器实现多DSP 系统对多份用户代码加载并有选择的重新载入用户程序的方法。在分析了DSP 自举加载的步骤之后给出了系统硬件电路框图,并结合TI 公司的DSP 芯片TMS320C6416,介绍了它的装载流程和通过PC 机远程控制动态加载DSP 的过程。

  关键词:DSP;动态加载;Bootloader

  1. 引言

  随着电子系统的任务量日益庞大,对系统的数据处理能力越来越高,其中包括处理大容量的数据、运行高度复杂的算法以及进行实时运算等。这些日益增长的需求,对数据处理器提出了更高的要求,在研究DSP 算法的同时,大量研究者也对DSP 系统的加载、重载进行深入的研究,从而使DSP 系统能快速变化DSP 算法来完成复杂多变的信号处理需求。盛九朝等在文献中就提出了信号处理程序的动态加载,通过程序的动态加载可以在不改动系统硬件的情况下方便的升级DSP 系统。也有大量的文献对DSP 的自举加载技术进行了研究。

  人们为了优化DSP 的加载,想到了利用扩张FLASH 的方法来增强DSP 动态加载的灵活性。由于各个DSP 系列的产品特性也不尽相同,往往在加载方式方面也有所不同,所以对不同系列的DSP 芯片进行分别研究也是非常值得关注的。

  一般的 DSP 系统只是在每个DSP 芯片上单一的运行一种算法程序,由多个DSP 分别做不同的算法再融合各个算法处理后的数据来完成大量数据的处理工作。而针对多DSP系统的多份用户程序的加载方案却研究的很少,为此,本文提出了一种PC 机远程控制动态加载程序的方法,在采用TMS320C6416 进行项目设计实践后,在项目的硬件系统平台基础上详细介绍了硬件及软件设计方案。

  2. 硬件系统介绍

  TMS320C6000是TI公司TMS320系列产品中的新一代高性能DSP芯片,共分为两大系列。其中定点系列为TMS320C62xx 和TMS320C64xx;浮点系列为TMS320C67xx。

  本文采用 32 位定点数字信号处理器TMS320C6416 为例设计了如图1 所示的硬件系统平台,DSP1 为主DSP,DSP2 和DSP3 为从DSP。在此系统中,选用了Xilinx 公司的SpartanIII 系列XC3S4000 芯片作为FPGA,它通过EMIFA 总线与各个DSP 连接,控制各个DSP的复位。选用CYPRESS 公司的CY7C0852V 作为外接RAM 存储器,其容量为128K×36bit,它一端与主DSP 的EMIFA 总线连接,另一端的数据线、地址线和控制线与FPGA 的用户定义I/O 口直接相连。主DSP 通过EMIFB 总线与DSP 程序固化单元Flash S29GL512N(512M)连接,用于读写Flash 中的程序;通过EMIFA 总线与外部存储单元SDRAM K4S511632D(64M)连接,用于缓存DSP 处理器的程序以及那些需要进行处理的数据和处理结果等;通过HPI 总线与其余两片从DSP 连接,用于加载这两片DSP 的用户程序。选用CY7C68013AUSB 接口芯片来完成PC 机与FPGA 之间的命令报文交互。

系统硬件

  3.多DSP 程序动态加载方案设计

  本文提出的多 DSP 程序动态加载方案的主要设计思想是主从DSP 分别加载,在确定主从DSP 后按照一定的逻辑顺序和PC 机控制分别加载各个DSP,下面将对整个方案进行详细介绍。

  3.1 主DSP 引导方式的选择

  在上电或复位引导过程中,首先加载主DSP,则需要将固化在Flash 中的程序拷贝到指定区域中运行。在C6000 系列中,有3 种引导方式:

  ①不加载:CPU 直接开始执行地址0 处的存储器中的指令;②ROM 加载:位于外部CE1 空间的ROM 中64K 的程序首先通过DMA 被搬入地址0,然后开始执行地址0 处的指令;③主机(HPI)引导:外部主机通过主机口初始化CPU 的存储空间,初始化完成后,将主机口控制寄存器中的DSPINT 位设置为1,结束引导过程,开始执行地址0 处的指令。

  本文中的主 DSP 采用第二种引导方式,而采用这种模式的大多数C6000 系列的DSP 芯片只能从CE1 向地址0 处搬移1K bytes 的代码,当应用程序代码超过1K bytes 时就需要进行两次代码搬移。在这种情况下,必须由一段引导代码使原本存放在ROM 中的代码到指定的位置中,以使系统程序能够正确运行。这段引导代码一般称之为Bootloader,由于Bootloader 代码一般不超过1KB,因此常利用汇编语言编写。实际上,Bootloader 程序的设计是主DSP 软件的一个重要部分,整个主DSP 软件的设计被分为Bootloader 程序、用户管理程序和用户程序三部分,他们被分别固化在Flash 中的不同位置。其中Bootloader 程序用来加载用户管理程序,用户管理程序的作用是根据PC 机指令有选择性的加载用户代码,用户程序用来加载从DSP 的程序和进行DSP 算法。通常情况下,Bootloader 程序存放在ROM的起始地址处,使得DSP 在上电或硬复位时通过EDMA 自动地从EMIF 接口的CE1 空间把它搬移到内部RAM 的地址0 处。搬移完成后,CPU 便自动跳转到地址0 开始执行Bootloader程序。Bootloader 程序将用户管理程序从外部存储器搬移到内部RAM 中,并且在代码搬移完后跳转到程序入口地址c_int00 处开始执行用户管理程序。类似的,用户管理程序将用户程序从外部存储器搬移到内部RAM 中,并且在代码搬移完后跳转到程序入口地址c_int00处开始执行用户程序。用户程序再分别搬移DSP2 和DSP3 的程序到它们的内部RAM 中并让它们从地址0 处运行,然后运行自己内部RAM 中的DSP 算法。基于图1 的硬件平台,加载DSP 程序的流程分为次上电程序加载流程和DSP 系统重载流程,下面将分别详细介绍这两个加载流程。

  3.2 DSP 次上电程序加载流程

  次上电后 DSP 加载首先从主DSP 开始,随后依次由主DSP 引导从DSP 完成所有DSP 的次加载。加载流程如图2 所示。

次上电程序加载流程图

  ①上电后主DSP 自动加载1K 的Bootload 程序到其内部的RAM 中,放在从0 地址开始的位置,接着从0 地址开始执行Bootload 程序。Bootload 程序从Flash 的前1K 字节以后的一定长度的用户管理程序搬运到用户管理程序工程中的CMD文件指定的位置并运行用户管理程序;②用户管理程序通过标志位判断为次上电加载流程,将从Flash 对应的位置读取默认的用户程序到DSP1 内存空间并运行用户程序;③用户程序通过标志位判断为次上电加载流程,从Flash 中读出DSP2 的用户程序到外部存储器SDRAM 中缓存,然后通过HPI 总线加载到DSP2 的内存空间中并向DSP2 的HPIC 寄存器的DSPINT 位写1 将DSP2 从复位状态唤醒,跳转到DSP2 的用户程序入口处运行DSP2 的用户程序,接着用同样的方法加载DSP3 的用户程序并运行。如果系统中还有更多的从DSP 也可用相同的方法加载并且主DSP 分别加载从DSP 程序的顺序可以调换。

  3.3 DSP系统重载流程

  程序次启动完成后,当需要对某个DSP中的算法进行替换时,就需要进行这个DSP重载,重载采用PC机远程控制DSP 重新载入的方式。基于这种重载方式系统中需要对每个DSP定义的编号来区别是重载哪个DSP的用户程序,这里定义主DSP编号为1,从DSP依次为2和3。特别要注意的是各个DSP程序应该固化在FLASH 中的不同位置。

  PC机通过USB接口芯片来与DSP硬件系统通信,用户通过数据报文控制某个DSP重新载入。数据报文中应包括待加载的DSP编号、在FLASH中的扇区数、在此扇区中的偏移地址和需要重载的用户代码长度四个信息。PC机将封装好的重载命令数据报文发送到FPGA,FPGA接收数据报文并将其存储到双口RAM中然后通知主DSP取数据报文。详细的加载流程如图3所示。

重载流程图

  ①主DSP从双口RAM中取出数据报文并解析出重载的DSP编号为n、程序在Flash中的扇区数、偏移地址和代码长度四个信息。

  ②如果DSP编号n为1则表示对主DSP的用户程序重载,主DSP就将程序在Flash中的扇区数、偏移地址和代码长度三个信息保存到双口RAM中,然后将重载标志位设为有效并通过触发FPGA的复位标志位通知FPGA对主DSP复位。如果DSP编号n不为1则表示对从DSP的用户程序重载,n为2表示对DSP2的用户程序重载,n为3表示对DSP3 的用户程序重载。从DSP的用户程序重载方式跟次上电程序加载类似,由主DSP根据步解析出的信息将从DSPn的用户代码搬移到SDRAM 中缓存,然后主DSP 通过触发FPGA的复位标志位通知FPGA对从DSPn复位。

  ③FPGA查询到主DSP复位标志位有效,对主DSP复位。复位结束后,主DSP跟次上电程序加载一样又自动加载1K的Bootload程序到其内部的起始地址为0 的RAM 中并开始执行Bootload程序。Bootload程序从Flash的前1K字节以后的一定长度的用户管理程序搬运到用户管理程序工程中的CMD文件指定的位置并运行用户管理程序。用户管理程序通过标志位判断为重载流程,从双口RAM相应的地址中读出重载相关信息,根据这些信息从Flash对应的位置读取主DSP 的用户程序到主DSP 内存空间并运行。主DSP用户程序也通过标志位判断为重载流程,直接就进行算法程序。如果FPGA查询到从DSPn复位标志位有效,对从DSPn复位。复位结束后,主DSP通过HPI总线将SDRAM中缓存的从DSPn的用户程序搬移到从DSPn内存空间中并运行。

  4.结束语

  通过本文提供的加载方案,在所有程序都在线调试好并固化到一片Flash中的基础上,用FPGA作为PC机与底层DSP之间的选通连接,使用PC机远程控制多DSP 系统的多份用户程序的动态加载,在不断电的情况下,使得多个DSP能够被合理的使用并能实时切换用户程序来完成不同的系统任务,增强了系统处理各种不同数据源的能力,利用PC机远程控制的方法也提高了系统调试的灵活性。经过实践验证,该方法准确可靠,灵活性、扩展性及实用性强。本文的分析思路同样适用于其他C6000系列的DSP,对DSP应用系统的设计具有一定的参考价值。


责任编辑:

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯