Dsp芯片的内核动态切换方法及控制系统的制作方法

文档序号:6398965阅读:243来源:国知局
专利名称:Dsp芯片的内核动态切换方法及控制系统的制作方法
技术领域
本发明涉及嵌入式应用领域,特别是涉及DSP芯片的内核动态切换方法及控制系统。
背景技术
在嵌入式系统开发中,DSP芯片以其高效的运算能力而被广泛应用。由于不同的运算功能需求,经常需要在同一块DSP芯片上运行多个不同的DSP内核程序,现有技术一般有两种方式达到这个目的,即DSP内核程序重新加载或者不重新加载而采用多任务的处理方式。对于DSP内核程序重新加载方式,常见的方法是使用ARM芯片或其它器件来动态加载DSP内核程序,这样做的缺点在于:1)软硬件结构复杂,需要增加一块专用芯片来控制程序加载,程序运行过程过分依赖于其它器件,在用户对系统需求不是很复杂的情况下增加了设计难度;2)由于DSP芯片被重新加载,被重新加载的DSP内核程序无法被保存加载前的运行环境,造成数据丢失。对于多任务方式,其缺点也很明显,首先软件代码量会比较大,因为要把各种功能编译到一起,也很不利于某个功能模块的升级(因需要全部重新编译);其次每个任务切换时都要保护好其运行环境,势必会导致定义大量的全局变量和结构体,从而大大降低模块的可移植性。

发明内容
基于此,有必要针对上述问题,提供一种DSP芯片的内核动态切换方法及控制系统,能够在不增加系统软硬件复杂性的前提下,仅依靠DSP芯片本身来实现多个DSP内核程序的动态切换。一种DSP芯片的内核动态切换方法,包括:根据预配置的DSP内核程序的数目,划分该DSP芯片内部的存储空间及相应的地址映射;按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表;通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置。相应地,一种DSP芯片的内核动态切换控制系统,包括:内存划分单元,用于根据预配置的DSP内核程序的数目,划分该DSP芯片内部的存储空间及相应的地址映射;与所述内存划分单元相连的程序编译单元,用于按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表;与所述程序编译单元相连的状态检测单元,用于通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置。
实施本发明,具有如下有益效果:本发明采用的多程序动态切换方法相比以上传统方式,仅需借助芯片自带的加载程序完成芯片启动,并通过在内核线程中动态进行程序指针的跳转实现程序运行状态的切换操作,该技术可以同时克服以上两种传统方法的缺点,并且多内核程序之间切换效率高。因为各个内核程序在上电初期就被加载到了芯片RAM内部,仅通过程序指针的跳转来实现程序动态切换,无论在流程还是速度上都优于以上两种方式。采用该方法升级方便,程序升级只需替换FLASH中不同的段即可,工程无需整体重新编译。同时,这也非常有利于移植,由于各个程序升级都是直接替换FLASH中对应位置的二进制文件,不需要重新编译生成完整的out文件。


图1为本发明DSP芯片的内核动态切换方法的流程图;图2为本发明DSP芯片的内核动态切换方法的示意图;图3为本发明DSP芯片的内核动态切换方法的实施例流程图;图4为本发明DSP芯片的内核动态切换控制系统的示意图;图5为本发明DSP芯片的内核动态切换控制系统的实施例示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。图1为本发明DSP芯片的内核动态切换方法的流程图,包括:SlOl:根据预配置的DSP内核程序的数目,划分该DSP芯片内部的存储空间及相应的地址映射;S102:按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表;S103:通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置。在脱机运行的DSP系统中,用户代码往往都需要在上电后自动装载运行,目前,大多数DSP内部都有固化的引导装载(BootLoader),它能够在系统加电时,自动将一段存储在FLASH的程序代码移植到内部的高速存储单元里面去执行。本设计方法就是针对DSP芯片BootLoader的这个特性,在DSP芯片上使用DSP/B10S操作系统,将DSP芯片的RAM分成多个独立的运行区域,并通过对DSP芯片的输入输出管脚的控制操作来实现DSP内核程序的无缝切换,使得程序的动态切换不依赖于其它芯片的支持,简化了系统的软硬件设计的同时,有效地保护了切换前后每个程序的运行环境。本发明采用的多程序动态切换方法相比以上传统方式,仅使用芯片自带的BootLoader完成芯片启动,并通过在IDLE线程中动态进行程序指针的跳转进行程序运行状态的切换操作,该方法可以同时克服以上两种传统方法的缺点,并且多程序之间切换效率高,由于程序在上电初期就被加载到了芯片RM内部,仅通过程序指针的跳转来实现程序动态切换,无论在流程还是速度上都优于以上两种方式。采用该方法升级方便,程序升级只需替换FLASH中不同的段即可,工程无需整体重新编译。同时,这也非常有利于知识产权保护和单独的DSP内核程序的移植,由于各个内核程序升级都是直接替换FLASH中对应位置的二进制文件,不需要重新编译生成完整的out文件。具体地,与现有技术相比,本发明具有优势是明显的。例如,根据DSP内核程序的数目来划分存储空间,使得各个内核程序拥有一个相对独立的运行环境,程序的加载与运行不需依赖于其他器件,故而软硬件结构简单。DSP内核程序的编译也是按照相应的地址映射进行的,在程序升级时,无需整体重新编译,只需按照地址映射更改应对的程序段,由于各个程序段按照步骤要求独立编写而成,屏蔽了不同内核程序源码的编译综合阶段,有利于各内核程序知识产权保护和单独的DSP内核程序的移植。需要补充说明的是,DSP内核程序是通过程序指针的跳转来实现程序动态切换,流程简单且切换速度快,因而切换效率高。另外,由于各程序运行在片内各自独立的内存空间,因此程序的动态切换仅涉及到程序指针在不同程序的中断向量表之间跳转,各内核程序之间进行切换不会覆盖其他程序的运行空间,避免了由于DSP芯片被重新加载造成的程序运行状态数据丢失,维护了程序的运行现场。图2为本发明DSP芯片的内核动态切换方法的示意图。图3为本发明DSP芯片的内核动态切换方法的实施例流程图。与图1相比,图3为本发明的具体实施例示意图。下面结合图2、图3对本发明具体实施例做详细介绍,本设计的实施例以2个程序切换为例,但不限于2个。S201:根据预配置的DSP内核程序的数目,划分该DSP芯片内部的存储空间及相应的地址映射;S202:根据预配置的DSP内核程序的大小,配置该内核程序的存储空间大小;S203:按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表;S204:给每一个DSP内核程序配置对应的IDLE线程,监测所述输入输出管脚的状态信号;S205:根据所述内核数目配置所需的输入输出管脚最少数量,其中,η个输入输出管脚与最大的内核数目m之间满足m=2n的映射关系;S206:读取各个输入输出管脚的端口状态,通过接收由各个端口状态组成的状态
信号;S207:判断DSP内核程序的切换状态,触发程序指针重置到相应的DSP内核程序的中断向量表入口地址;S208:将开机加载程序以及各个DSP内核程序存储为二进制文件烧写到只读存储器内;S209:配置所述DSP芯片的启动模式为通过所述只读存储器的开机加载程序启动。首先根据需动态切换的DSP内核程序个数对DSP芯片内部存储空间进行划分及地址映射。参考设计采用TI系列的TMS320C6416型号芯片,芯片片内存储空间为0x100000字节,假设片内存放两个DSP内核程序,需要根据各程序存储空间大小将片内空间进行划分,本例将芯片内部存储空间进行平均分配,第一个程序DSPl_Pix)g空间为0x00000000-0x00080000,第二个程序 DSP2_Porg 空间为 0x00080000-0x00100000。除了平均分配,还可以根据预配置的DSP内核程序需要的内存空间进行合理划分。占用空间大的可以多分,占用少的就少分。从而达到资源合理配置。设置每一个DSP内核程序的中断向量表。由于DSP内核程序需要使用中断向量表进行BootLoader加载,并且程序运行过程中也需要中断向量表进行程序指针的跳转,由于TI系列DSP芯片的中断向量表统一为0x200字节,因此程序配置对应的DSPl_Prog中断向量表起始地址为0x00000000,长度为0x200字节,配置DSP2_Prog中断向量表起始地址为0x00080000,长度为 0x200 字节。根据需动态切换的DSP内核程序个数配置芯片的GPIO外部管脚,用于动态切换控制,其中GPIO引脚个数η同需要动态切换的DSP内核程序个数m存在如下的2的幂次关系即:需要动态切换的DSP内核程序数目满足m=2n。本发明应该根据预配置的内核程序数目,尽量选取最少的GPIO引脚,以节省硬件开销。配置DSP上电启动方式为FLASH启动。本设计使用芯片自带的BootLoader完成芯片启动,需要配置DSP芯片的BootMode模式为FlashBoot模式,即开机从FLASH芯片启动。每个DSP内核程序需根据划分的地址映射来编写相应的应用程序,本设计使用TI提供的DSP/B10S操作系统并根据DSP芯片内部空间划分及地址映射原则分别建立对应的DSP工程进行软件编程。DSP内核程序还需要使用DSP/B10S来添加一个IDLE线程,DSP/B10S是DSP自带的一个嵌入式操作系统。配置IDLE线程,在线程需求方面,各DSP内核程序除了配置满足自身运行处理需要的各种线程之外,每个DSP内核程序需要配置一个IDLE线程,用于外部GPIO端口输入电平的检测和DSP内核程序跳转切换操作。IDLE线程在DSP/B10S操作系统中属于优先级最低的线程,使用IDLE线程来进行端口电平检测和程序切换,即能够实现程序动态切换功能,又能够保证数据处理的流程不被IDLE线程打断,保证数据的正常发送和接收。本发明使用的输入输出管脚为GPIO管脚(即通用I/O接口),它属于DSP芯片的可自定义管脚,用于检测外部输入的控制信号。在IDLE线程内添加检测GPIO管脚状态的代码,通过读取GPIO控制管脚的状态来重置程序指针至各DSP内核程序中断向量表位置,当对应DSP内核程序的IDLE线程检测到GPIO管脚的输入值发生改变时,就进行内核程序的切换操作。以两个DSP内核程序切换为例,使用一个GPIO端口进行切换操作,其中DSP1_Porg程序对应GPIO端口输入值为“O”,DSP2_Porg程序对应GPIO端口输入值为“I”。当DSPl_Porg程序的IDLE线程检测到GPIO端口输入值为“I”时,就将程序指针重置到DSP2_Porg程序的中断向量表入口地址,完成切换操作。将各DSP内核程序组成一个完整的二进制文件烧写到FLASH当中。FLASH是只读存储器ROM的一种,可以使用类似的ROM替代,但DSP需要支持该ROM的加载。本设计以两个DSP内核程序为例,说明如何将各DSP内核程序组成一个完成的二进制文件烧写到FLASH当中。首先,将对应工程DSPl_Porg和DSPl_Porg的程序变量空间(DSPl_Porg对应 0x00000000-0x00080000,DSP2_Prog 对应 0x00080000-0x00100000)分别存储为 DSP1_Porg.dat和DSP2_Porg.dat ;其次,编写BootLoader程序从FLASH向芯片内部空间进行数据搬移(其中搬移起始地址为0x64000400,长度为0x00100000字节),完成编译后并将BootLoader程序变量空间存储为BootLoader.dat文件,长度为0x400字节;最后,新建FLASH烧写工程后将之前存储的三个dat文件依次读入工程并进行FLASH芯片的烧写。综上,各个DSP内核程序由于所用空间完全独立,这个独立运行空间包括了所有代码的存储和运行数据的空间使用。系统通过程序指针在不同程序的中断向量表之间进行跳转,因此当程序重新运行时,之前所有的运行数据由于是处于属于自身的独立空间,因而会完整保存,不存在任何的覆盖或者丢失。图4为本发明DSP芯片的内核动态切换控制系统的示意图,包括:内存划分单元,用于根据预配置的DSP内核程序的内核数目,划分该DSP芯片内部的存储空间及相应的地址映射;与所述内存划分单元相连的程序编译单元,用于按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表;与所述程序编译单元相连的状态检测单元,用于通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置。图4与图1相对应,图中各个单元的运行方式与方法中的相同。图5为本发明DSP芯片的内核动态切换控制系统的实施例示意图。如图5所示,所述内存划分单元,还包括:容量分割单元,用于根据预配置的DSP内核程序的大小,配置该内核程序的存储空间大小。在其中一个实施例当中,还包括:连接在所述程序编译单元与所述状态检测单元之间的线程配置单元,用于给每一个DSP内核程序配置对应的IDLE线程,监测所述输入输出管脚的状态信号。如图5所示,所述状态检测单元,具体包括:管脚选取单元,用于根据所述内核数目配置所需的输入输出管脚最少数量,其中,η个输入输出管脚与最大的内核数目m之间满足m=2n的映射关系;端口读取单元,用于读取各个输入输出管脚的端口状态,通过接收由各个端口状态组成的状态信号;程序指针跳转单元,用于判断DSP内核程序的切换状态,触发程序指针重置到相应的DSP内核程序的中断向量表入口地址。在另一实施例当中,还包括:与所述程序编译单元相连的内核烧写单元,用于将开机加载程序以及各个DSP内核程序存储为二进制文件烧写到只读存储器内;与所述内核烧写单元相连的启动配置单元,用于配置所述DSP芯片的启动模式为通过所述只读存储器的开机加载程序启动。图5与图3相对应,图中各个单元的运行方式与方法中的相同。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种DSP芯片的内核动态切换方法,其特征在于,包括: 根据预配置的DSP内核程序的数目,划分该DSP芯片内部的存储空间及相应的地址映射; 按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表; 通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置。
2.根据权利要求1所述的DSP芯片的内核动态切换方法,其特征在于,划分该DSP芯片内部的存储空间及相应的地址映射的步骤,还包括: 根据预配置的DSP内核程序的大小,配置该内核程序的存储空间大小。
3.根据权利要求1所述的DSP芯片的内核动态切换方法,其特征在于,通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置的步骤之前,还包括: 给每一个DSP内核程序 配置对应的IDLE线程,监测所述输入输出管脚的状态信号。
4.根据权利要求1至3任一项所述的DSP芯片的内核动态切换方法,其特征在于,通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置的步骤,包括: 根据所述内核数目配置所需的输入输出管脚最少数量,其中,η个输入输出管脚与最大的内核数目m之间满足m=2n的映射关系; 读取各个输入输出管脚的端口状态,通过接收由各个端口状态组成的状态信号,判断DSP内核程序的切换状态,并触发程序指针重置到相应的DSP内核程序的中断向量表入口地址。
5.根据权利要求4所述的DSP芯片的内核动态切换方法,其特征在于,通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置的步骤之后,还包括: 将开机加载程序以及各个DSP内核程序存储为二进制文件烧写到只读存储器内; 配置所述DSP芯片的启动模式为通过所述只读存储器的开机加载程序启动。
6.一种DSP芯片的内核动态切换控制系统,其特征在于,包括: 内存划分单元,用于根据预配置的DSP内核程序的数目,划分该DSP芯片内部的存储空间及相应的地址映射; 与所述内存划分单元相连的程序编译单元,用于按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表; 与所述程序编译单元相连的状态检测单元,用于通过接收输入输出管脚的状态信号触发所述中断向量表的程序指针跳转位置。
7.根据权利要求6所述的DSP芯片的内核动态切换控制系统,其特征在于,所述内存划分单元,还包括: 容量分割单元,用于根据预配置的DSP内核程序的大小,配置该内核程序的存储空间大小。
8.根据权利要求6所述的DSP芯片的内核动态切换控制系统,其特征在于,还包括: 连接在所述程序编译单元与所述状态检测单元之间的线程配置单元,用于给每一个DSP内核程序配置对应的IDLE线程,监测所述输入输出管脚的状态信号。
9.根据权利要求6至8任一项所述的DSP芯片的内核动态切换控制系统,其特征在于,所述状态检测单元,具体包括:管脚选取单元,用于根据所述内核数目配置所需的输入输出管脚最少数量,其中,η个输入输出管脚与最大的内核数目m之间满足m=2n的映射关系; 端口读取单元,用于读取各个输入输出管脚的端口状态,通过接收由各个端口状态组成的状态信号; 程序指针跳转单元,用于判断DSP内核程序的切换状态,触发程序指针重置到相应的DSP内核程序的中断向量表入口地址。
10.根据权利要求9所述的DSP芯片的内核动态切换控制系统,其特征在于,还包括:与所述程序编译单元相连的内核烧写单元,用于将开机加载程序以及各个DSP内核程序存储为二进制文件烧写到只读存储器内; 与所述内核烧写单元相连的启动配置单元,用于配置所述DSP芯片的启动模式为通过所述只读存储器的开机加载 程序启动。
全文摘要
本发明公开了DSP芯片的内核动态切换方法及控制系统。该方法包括根据预配置的DSP内核程序的数目,划分该DSP芯片的片上存储空间及相应的地址映射;按照所述地址映射编译所述DSP内核程序,并为每一个DSP内核程序设置对应的中断向量表;通过接收输入输出管脚(GPIO)的状态信号触发所述中断向量表的程序指针跳转位置。采用本发明,可以在不增加系统软硬件复杂性的前提下,仅依靠单核DSP芯片来实现多个DSP内核程序的动态无缝切换。而且,切换效率高,升级方便,程序升级只需替换FLASH中不同的段即可,工程无需整体重新编译。
文档编号G06F9/48GK103116522SQ20131003920
公开日2013年5月22日 申请日期2013年1月31日 优先权日2013年1月31日
发明者邓恰, 陶伟, 王健 申请人:广州海格通信集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1