当前位置:首页 > 嵌入式 > 嵌入式教程
[导读] 一种基于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所示。


    文中通过分析指令格式的低位比特位,可以判断出指令属于上述指令中的哪一类。以指令0x0200007E为例,将指令表示为二进制:(0000 0010 0000 0000 0000 0000 0111 1110)b,指令的2~3位为11,在图4中查找2~3位为11的指令,可以发现该指令是一条STW存储指令,指令的ucst15比特域表示了其需要重定位的地址。
2.2.3 模块动态链接的实现
    动态链接器的功能主要包括模块的动态链接和动态卸载,模块动态链接的主要流程如图5所示。动态链接器在收到加载模块请求时,首先检查模块文件的完整性,并根据加载模块的依赖信息在系统符号表中查找对应的函数和变量。当模块通过完整性和依赖性检查后,动态链接器首先根据模块大小声明,在系统的存储空间中分配空间,将模块文件加载到系统存储空间。接着动态链接器根据COFF文件信息,搜索COFF文件代码段中的重定位语句,并根据指令格式确定指令中地址域信息,最后将综合模块被加载的地址和指令索引的符号的地址,计算地址信息,并将此信息填入可重定位指令的地址域,完成指令的重定位。在代码段重定位完成后,动态链接器将模块名称、模块对外提供的函数名称、模块入口地址等信息注册到系统符号表中,并调用模块加载函数,完成模块对系统资源的申请。最后,如果该模块所提供的函数或者变量替换了系统已有的函数或者变量,动态链接器还需要将所有引用该函数或变量的其他模块进行重定位,以反映系统状态的更新。


2.2.4 模块动态卸载的实现
    模块动态卸载是加载过程的逆过程,动态链接器在收到卸载模块请求时,首先在系统中搜索是否有模块引用了将要被卸载的模块,若存在则警告用户,并等待用户确实是否强制卸载。若是,动态链接器将卸载模块对外提供的函数和变量从系统符号表中删除,并收回卸载模块占用的系统空间。完整的模块动态卸载流程如图6所示。



3 结论
    文中设计的DSP动态链接器为传统的DSP系统带来新的应用功能,已在某多功能通信系统中获得了成功的应用。动态链接技术作为DSP系统的重配置技术之一,其应用要比传统的DSP全系统重构技术或叠加技术更为灵活和高效。同时,本文提出的动态链接技术相对于文献,文献提出的函数查找表的实现方式更加富有效率。尽管目前动态链接技术在DSP领域的应用很少,但随着DSP应用向多功能发展,相信动态链接技术在DSP领域的应用会越来越广泛。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭