一种基于TI TMS320 DSP的软件动态链接技术
摘要:介绍了软件动态链接技术的概念和特点,提出了基于TI TMS320系列DSP的软件动态链接技术。该技术解决了可重配置的DSP系统中关于软件二进制目标代码的动态加载和卸载的问题。采用该技术的软件重配置方案已成功运用于某多功能通信系统,为基于其他系列DSP的可重构数字处理系统提供了一定的参考,在无人值守设备、多功能信号处理设备方面具有一定的应用价值。
关键词:动态链接;TI TMS320 DSP;COFF文件;重定位
基于数字信号处理器(DSP)的多功能自适应通信系统在软件无线电领域正变得日益普遍,如何使DSP系统在运行期间自适应的改变通信协议是实现这种系统的关键。当前,DSP开发人员采用了重配置、层叠(overlay)等技术来实现通信协议自适应功能,但作为运行时改变或扩展功能的最有效方式,基于DSP的动态链接技术尚未有文献提及。
动态链接技术是相对于静态链接而言,它是指编译器在编译程序时并不将程序所需的库文件代码复制到程序的可执行文件,而只是在程序中保留库文件的调用标记。在程序运行时,由链接器将库文件代码加载到系统内存,并与程序链接为一个整体。在大多数DSP系统中,采用动态链接技术可以节省系统对片上存储器大小的要求,此外,由于动态链接库函数对外提供的是函数的接口,而不是函数的入口地址,因此动态链接函数可同时提供多个版本,使系统的升级变得更为方便。
通过研究和分析TI DSP目标代码的生成过程和目标代码的结构,提出了针对该系列DSP代码动态链接的方法。将本文提出的方法应用到某通信系统中表明,该方法具有占用片上内存小、系统配置时间短、系统有较强的可扩展性等优点,在此后的DSP开发过程中会得到广泛的应用。
1 DSP目标代码生成流程
TI DSP系列开发工具包为开发人员提供了一套完整的软件开发工具链,包括C/C++编译器,汇编器,链接器等。利用这套开发工具包,DSP开发人员可以完成程序的编写、编译、链接,直到目标代码的生成。其中,C/C++编译器将C语言转换为汇编语言,汇编器汇编语言翻译为机器语言,以COFF目标文件的形式输出给链接器。链接器将汇编器生成的COFF文件与库文件链接成一个完整的程序,以可执行的COFF文件输出到磁盘,生成DSP可执行程序。
2 DSP动态链接器的设计
文中设计的DSP系统软件架构如图1所示。DSP应用程序被划分为一个或多个可加载模块,动态链接器作为DSP软件系统架构中的一个重要的软件模块,其作用主要是在DSP系统改变功能时,按需将汇编器生成的目标文件按需加载到系统中,与系统已有程序结合成为一个整体,并将卸载系统中不需要的模块。
2.1 模块的定义
图1中所示的可加载模块文件主要包括DSP应用程序的机器代码,此外包括模块的名称、大小、版本,模块所包含的函数声明,模块所依赖的函数接口,模块的入口函数信息,模块被引用信息等。这些信息是在汇编器生成DSP应用程序的机器代码后,由模块生成程序将附加的信息添加到COFF文件中,生成最终的可加载模块文件。本文设计的可加载模块的文件格式如图2所示。
2.2 模块的加载和卸载
2.2.1 COFF文件格式
DSP动态链接器设计的关键是解析汇编器生成的目标文件,将目标文件中包含的代码根据模块的加载地址进行重定位后,完成与系统已有程序的链接。汇编器生成的目标文件是以COFF文件格式保存在磁盘上,其通常包括代码段、数据段、用户自定义段、符号表和重定位信息等数据,格式如图3所示。
如图3所示,COFF文件主要包括一个文件头部和多个段信息,以及段重定位信息和符号表等。COFF文件缺省的包含3个段:. text段、.data段和.bss段。汇编器将汇编程序的代码部分放到.text段中,将全局变量放在.data或.bss段中,同时在符号表中写入该文件包含的符号(函数或变量)名称和对外引用的符号名称等信息。此外,每段的重定位信息表中都包含重定位信息项,根据重定位信息项,可以确定可重定位指令在段中的偏移量,表1给出了重定位信息项的结构。
重定位信息项的0—3字节表示可重定位指令以0作为起始地址,在当前段中的偏移量。4—5字节是符号索引表,它代表了该重定位指令索引的符号在COFF文件中符号表中的索引号。8—9字节表示重定位类型,它指出了如何将定位后的地址信息添加到该可重定位指令上。表2是重定位信息项的一个例子,这里假设该重定位信息项属于.text段。
该重定位信息项说明在.text代码段偏移20个字节处存在一条重定位语句,该语句所指向的符号在符号表中的位置是第20项(从0开始计),该语句的重定位类型是PC跳转指令重定位。
2.2.2 DSP机器代码的识别
汇编器生成的是DSP机器代码,因此动态链接器需要分析重定位指令格式,以便将指令引用地址添加到该指令中。根据TMS320 DSP指令手册,TMS320 DSP指令格式包括如图4所示。
动态 链接 技术 软件 DSP TI TMS320 基于 相关文章:
- 实时系统中混合任务集的动态电压调节算法(06-18)
- 嵌入式LINUX系统的静/动态集成调试模式 (07-03)
- linux静态库和动态库分析(02-27)
- 基于DSP的物体重量实时动态监测的研究 (03-22)
- 基于GCC的嵌入式程序插装技术(02-18)
- 动态内存管理在面向嵌入式实时系统中的研究(06-28)