首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   TMS320C62XDSP的混合编程研究      ★★★ 【字体: 】  
TMS320C62XDSP的混合编程研究
收集整理:佚名    来源:本站整理  时间:2009-01-10 22:37:39   点击数:[]    

[本篇论文由上帝论文网为您收集整理,上帝论文网http://paper.5var.com将为您整理更多优秀的免费论文,谢谢您的支持]
摘要:目前,C语言和汇编语言的混合编程已经在TI公司的TMS320C62X上成为一种最流行的编程方法。阐述了基于TMS320C62X的C语言和汇编语言混合编程应遵循的接口规范以及并行汇编代码的编写。给出了一个基于TMS320C62X的运动补偿的混合编程设计实例。

    关键词:DSP C语言 并行汇编 混合编程

TMS320C62X是美国德州仪器公司TI的新一代高性能定点数字信号处理器(DSP)芯片。基于DSP的软件设计问题,就是采用编程语言进行算法实现并使程序效率尽量满足实时性要求。TI DSP的软件设计可以采用汇编语言、高级语言C/C++以及C语言与汇编语言的混合编程。完全采用汇编语言编程复杂性高、开发周期长,而完全采用C语言编程则程序的执行效率相对较低,不能满足实时性的要求。为了设计出性价比最好、开发周期较短、比较复杂的DSP系统,可以采用混合语言编程,把C语言和汇编语言的优点有效地结合起来。C语言和汇编语言的混合编程有三种形式:在编写C语言代码中插入汇编语句只需在汇编语句两边加上双引号和括号,在括号前面加上标识asm,如asm“汇编语句”;在编写C代码的过程中调用内联函数TMS320C62X中有一些直接映射为内联的C6000指令的特殊函数,内联函数用前下划线_表示,使用时同调用C语言的库函数一样调用它,如b=_nassertN>=10;汇编代码以C代码可以调用的函数出现。本文采用第三种形式。为了使程序代码的执行具有尽可能高的执行效率,本文将着重点放在并行汇编代码的编程,而不是线性汇编代码的编程。

1 C语言与汇编语言混合编程的接口规范和标准

用C语言编写的代码中核心代码常常只是整个程序代码的5%,但是却占用了整个程序约95%的执行时间。对这些核心代码采用汇编语言编写,可以大大提高代码的执行效率,而C语言程序可以象调用C程序的一个函数那样去调用这个汇编函数。为了实现C语言和汇编语言的混合编程,需要注意一些规定的接口规范和标准。

(1)采用C语言和汇编语言混合编程时,TMS320C62X定义了一套严格的寄存器规则。这个寄存器规则表明了编译器如何使用这些寄存器以及在函数调用过程中如何保护这些寄存器。

调用函数保护了寄存器A0~A9和B0~B9,这就使得在编写汇编程序的时候可以任意的使用这几个寄存器而不需保护它们。但当使用到寄存器A10~A15或B10~B15的时候,则必须自行对它们进行保护。长型、双精度型或者是长双精度型的数据对象要放在一个奇/偶寄存器对(如A1:A0)里,奇数寄存器存放着数据的符号位、指数位和最高有效位,而偶数寄存器则存放着低有效位。

在默认情况下,A3用作返回结构指针寄存器,B3用作被调用函数返回地址寄存器,A15用作帧指针寄存器,B14用作数据页指针寄存器,B15用作堆栈指针寄存器。这些寄存器在被调用的汇编函数中用到时都要进行保护。

(2)调用函数将参数传递到被调用函数中,前十个参数将被从左到右依次放入寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12和B12,如果传递的参数是长型、双精度型或者是长双精度型,则将参数依次放入寄存器组A5:A4、B5:B4、A7:A6等,并将剩下的变量按相反的顺序放在堆栈里。注意,如果传递的参数是一个结构类型的参数,则传递的是该结构类型的地址。

(3)如果在C/C++调用函数中做了正确的函数返回声明,则被调用的汇编函数可以返回有效值。如果返回值是整型或32位的浮点型,则放在寄存器A4中返回;如果返回值是双精度或是长双精度型,则放在A5:A4中返回;如果返回值是一个结构类型,则将其结构的地址放在A3中返回。

(4)编译器为所有的外部对象指定一个链接时的名字。当写汇编语言代码时,必须用与这个名字相同的名字。对于只在汇编语言模块中用到的变量的标识符,不能从下划线开始。任何一个在汇编语言中声明的对象都要使其在C/C++中是可访问的,那么在汇编语言中必须用.def 或.global将其声明为外部变量。同样在汇编语言中要引用C/C++函数或对象时,必须用.ref 或.global将C/C++对象声明,这将产生一个在汇编语言函数中没有定义的由链接器辨识的外部引用。

还有一些细节也需要注意,如中断子程序必须把该子程序将要用到的所有寄存器进行入栈处理;除了全局变量的初始化外,汇编语言的模块不得因为任何目的而使用.cinit段;汇编代码的结束需用指令B.s2 B3将程序执行从被调用函数返回到C语言调用函数中。

2 并行汇编代码的编写

C6000的汇编代码格式如下:

标号: 并行标记 条件寄存器指令助记符 功能单元 操作数 ;注释。如:

LDW  .D2 B4,B2

|| A1SHL .S2X A4,B4 ;用到了交叉数据通道

TMS320C62X片内有8个并行的处理单元,分为相同的两组。其体系结构采用超

[1] [2]  下一页


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:相位干涉仪测向算法及其在TMS320C6711上的实现

  • 下一篇文章:基于定点DSP的MP3间频编码算法研究及实现
  • 返回上一页】【打 印】【关闭窗口
    中查找“TMS320C62XDSP的混合编程研究”更多相关内容 5VAR论文频道
    中查找“TMS320C62XDSP的混合编程研究”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››TMS320C2XX开发设计中应注意的问题...
  • ››TMS320C32DSP的中断编程方法及BOOT...
  • ››TMS320VC5402外部并行引导装载方法...
  • ››TMS320C6701在电离层垂直探测系统中...
  • ››TMS320C6711的FLASH引导装载系统研...
  • ››TMS320C6201在MPEG-4视频解码器中的...
  • ››TMS320C54x和ADSP218x性能比较
  • ››TMS320F206的中断技术及其实现
  • ››TMS320C55x的指令流水线及其效率的...
  • ››TMS320C32扩展异步串口的方法
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .