基于dsp混合编程关键问题的研究

基于dsp混合编程关键问题的研究

ID:10632781

大小:62.00 KB

页数:6页

时间:2018-07-07

基于dsp混合编程关键问题的研究_第1页
基于dsp混合编程关键问题的研究_第2页
基于dsp混合编程关键问题的研究_第3页
基于dsp混合编程关键问题的研究_第4页
基于dsp混合编程关键问题的研究_第5页
资源描述:

《基于dsp混合编程关键问题的研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于DSP混合编程关键问题的研究

2、第1

3、I时钟节拍,也要满足数据总线上大小周期的定义。这导致对定时的要求较高,对中断程序设计要求严格。因此混合编程是合理的编程方式。一般混合编程方法混合编程的一般方法有三种:一是对C程序编译后形成的汇编程序进行手工的修改与优化。二是直接在C语言程序中嵌入汇编语句。三是分别编写C程序和汇编程序,再独立编译成目标代码模块,再进行链接。第一种编程方式要求对汇编与C语言都极其熟悉,并且这样的编程方式对程序的可读性和扩展性的负面影响比较大。第二种方法适用于语句执行频率非常高,并且C编程与汇编编程效率差异较大的情况,例如进入中断的通用中断子程序等

4、。第三种方式是混合编程最常用的方式之一。在这种方式下,C程序与汇编程序均可使用另一方定义的函数与变量。变量定义的规则与数组、指针的使用变量定义是混合编程的基本问题。C程序与汇编程序定义的变量相互之间可以进行访问。在汇编程序中定义时,需要在变量前加下划线“_”,然后再用.global定义为全局变量。在C程序中则需要说明为extern变量。C语言中常用的数组与指针也可以很方便地在汇编程序中定义并互相访问。如例,在汇编语言中用.usect定义占用6*32个字的全局变量_AC_RSLT,在C程序中被说明成一个6*32的16位无符号数的

5、二位数组。当然,在汇编程序中,数据的存放格式需要满足C对二维数组数据存放格式的要求。即在存储器中,从低地址到高地址,二维数组的内容从第一行起各行依次放入存储器中。实际上,这个数组定义也可以看作是指针定义。汇编程序:_AC_RSLT.usect“ADDATA”,(6*32).global_AC_RSLTC程序:externINT16UAC_RSLT[6][32];(externINT16U*AC_RSLT;)依此类推,只要具有明确的数据存放格式,C语言中各种类型的变量在汇编语言中都可以方便地定义和使用。函数调用的一般规则C程序中

6、调用汇编函数C程序中调用的汇编函数,在汇编中其名称以程序标号的形式出现。程序标号作为操作数用.global进行定义。并且同变量一样,在前面加下划线“_”。汇编函数也可以给调用者传递返回值,它实际上是通过被写入累加器返回的。汇编函数一般具有如下例的形式:_calcu:POPD*+将返回地址压入任务栈SARAR0,*+存储调用者的帧指针SARAR1,*LARAR0,#01hLARAR0,*0+,AR2堆栈指针复制到AR0并创建局部帧SETCSXM注意:改变了状态寄存器MAR*,AR2LARAR2,#0FFFDhAR2=-3MAR*

7、0+LACC*访问调用者传递的参数...MAR*,AR3LACL*传递返回值MAR*,AR1SBRK#02hLARAR0,*-PSHD*RET汇编程序中调用C函数汇编程序中调用C函数相对比较简单,编译器已经提供了相当完善的支持。函数在C中需要用extern进行定义,函数名加“_”后在汇编程序中用.ref说明为外部标号。在调用函数之前应手工编程将参数以逆序写入到当前运行任务所使用的任务堆栈中,压栈之前堆栈指针可不作调整。被调用的C函数即可正常访问调用者传递的参数,函数调用完毕后需要调整堆栈指针,清除函数调用中参数所占用的堆栈空间

8、。C函数的返回值可以通过访问累加器获得。参数的访问与堆栈指针的调整如果希望被C程序调用的汇编函数含有参数,那么就必须按照编译器对含参数的C函数的参数处理原则,利用任务堆栈指针访问参数。其方式如上例中所示。在DSP中,堆栈指针的调整借助辅助寄存器(ARx或者XARx)实现。如例,通过AR2实现了带符号数的补码运算,这样可以根据需要移动堆栈指针,实现对函数参数的访问,此外,调用者与被调用函数的局部数据结构的创建与释放也是通过堆栈指针实现的。值得一提的是,在μC/OS-II移植中任务调度与中断部分程序需要注意因参数而产生的堆栈指针调

9、整,应用任务的参数定义也必须与之保持一致。混合编程中程序运行环境的改变与保持不管采用哪种混合编程方式,运行环境的改变与保持对程序运行正常与否有着重要影响。正常的运行环境不仅关系到DSP状态寄存器的各状态位,也关系到编译器的函数调用规则,寄存器和堆栈的使用规则。尤其在使用第三方

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。