TMS320C5535 DSP混合编程详解

时间:2022-02-14 01:26:27

TMS320C5535 DSP混合编程详解

1.混合编程简介

在DSP开发过程中,特别是开发的是第一次接触的DSP芯片的时候,开发人员通常会使用C语言来进行开发工作。当发现算法不能满足系统的时间要求时,就需要对代码进行优化,一种方法是使用DSPLIB库中优化过的函数来提高算法效率,另外一种方法就是将程序中耗时的算法用汇编语言实现,然后在C语言中调用,即本文介绍的混合编程。 对运算时间要求不高的部分使用C语言来实现,对运算速度较高的部分使用汇编语言来实现。

混合编程的关键在于C语言和汇编语言的接口,即如何在一种语言里面使用另外一种语言中的函数、变量和函数返回值。考虑到DSP开发使用的较多的是C语言,那下面就主要讨论如何在C语言中调用汇编函数。

2.混合编程具体方法

注:DSP平台开发环境为CCS5.4


(1)汇编函数的格式

首先新建一个.asm文件,具体格式如下图所示,以函数void myflip(Int32 *,Int32 *)为例说明。

TMS320C5535 DSP混合编程详解

注:关键字.global前面有一个空格

(2)汇编函数参数和返回值

C程序中传入汇编函数中的参数,以及从汇编函数中返回到C程序中的值都是存放在特定的寄存器中的,要分别满足下表中的寄存器规则和返回值规则。


寄存器规则

TMS320C5535 DSP混合编程详解


返回值规则

TMS320C5535 DSP混合编程详解


下面举例说明寄存器规则和返回值规则的含义: 例如在C程序中调用汇编函数“int func1(int a)”,这是一个简单的函数,一个int形参数和int型的返回值。根据寄存器规则可知int型参数存放在寄存器T0中,然后根据返回值规则第二行可知,返回值也是存于T0寄存器中。同理,如果调用“int func2(int a,long b,int*p)”,则传入的实参会分别存于寄存器T0,AC0和AR0中,返回值则存于T0中。


(3)汇编函数调用方法

将汇编函数按照上述的规则写好之后,然后在C程序中进行声明,然后就可以直接调用汇编函数了。