第4章 TMS320C54x的软件开发与设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章 TMS320C54x的软件开发与设计.ppt》由会员分享,可在线阅读,更多相关《第4章 TMS320C54x的软件开发与设计.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 TMS320C54x的软件开发与设计的软件开发与设计4.1 TMS320C54x4.1 TMS320C54x软软件开件开发过发过程程 C54xC54xC54xC54x的应用软件开发主要完成以下工作:的应用软件开发主要完成以下工作:的应用软件开发主要完成以下工作:的应用软件开发主要完成以下工作:(1)(1)(1)(1)选择编程语言编写源程序选择编程语言编写源程序选择编程语言编写源程序选择编程语言编写源程序 C54xC54xC54xC54x提供提供提供提供2 2 2 2种编程语言,即汇编语言和种编程语言,即汇编语言和种编程语言,即汇编语言和种编程语言,即汇编语言和C/C+C/C+C/C
2、+C/C+语言。语言。语言。语言。对于完成一般功能的代码,这两种语言都可使用,但对对于完成一般功能的代码,这两种语言都可使用,但对对于完成一般功能的代码,这两种语言都可使用,但对对于完成一般功能的代码,这两种语言都可使用,但对于一些运算量很大的关键代码,最好采用汇编语言来完成,于一些运算量很大的关键代码,最好采用汇编语言来完成,于一些运算量很大的关键代码,最好采用汇编语言来完成,于一些运算量很大的关键代码,最好采用汇编语言来完成,以提高程序的运算效率。以提高程序的运算效率。以提高程序的运算效率。以提高程序的运算效率。(2)(2)(2)(2)选择开发工具和环境选择开发工具和环境选择开发工具和环境
3、选择开发工具和环境 C54xC54xC54xC54x提供了两种开发环境。即非集成开发环境和集成提供了两种开发环境。即非集成开发环境和集成提供了两种开发环境。即非集成开发环境和集成提供了两种开发环境。即非集成开发环境和集成开发环境开发环境开发环境开发环境CCSCCSCCSCCS。第4章 DSP的软件开发与设计TMS320的开发工具是一个软件包,其中包括的开发工具是一个软件包,其中包括:vC优化编译器优化编译器v汇编器汇编器v连接器连接器v归档器归档器v交叉引用列表器交叉引用列表器v十六进制转换公用程序十六进制转换公用程序第4章 DSP的软件开发与设计C优化编译器(优化编译器(C Compile)
4、TI 为为其其TMS320系系列列 DSP提提供供了了一一系系列列的的 C 编编译译器器。将将标标准准 C 源源文文件件编编译译成成为为相相应应片片种的汇编语言源代码文件。种的汇编语言源代码文件。完全符合完全符合ANSI C标准标准带有一个完整的运行支持库带有一个完整的运行支持库使使用用多多种种先先进进技技术术来来优优化化 C 源源代代码码,以以产产生生高效汇编代码。高效汇编代码。第4章 DSP的软件开发与设计汇编器(汇编器(Assembler)将将汇汇编编语语言言的的源源程程序序文文件件汇汇编编成成为为机机器器语语言言的的目目标标程程序序文文件件,其其格格式式为为COFF(公公用用目目标标文
5、文件件格格式式)。汇汇编编语语言言源源程程序序可可以以包包括括汇汇编编语语言言指指令令(instruction)、汇汇编编伪伪指指令令(assembler directives)和和宏宏指指令(令(macro directives)第4章 DSP的软件开发与设计连接器(连接器(Linker)连连接接器器的的基基本本任任务务是是将将目目标标文文件件连连接接在在一一起起,产产生生可可执执行行模模块块。连连接接器器可可以以接接受受的的输输入入文文件件包包括括汇汇编编器器产产生生的的COFF目目标标文文件件、命命令令文文件件、库库文文件件、以以及及已已部部分分连连接接好好了了的的文文件件。它它所所产产
6、生生的的可可执执行行COFF目目标标模模 块块 可可 以以 装装 入入 各各 种种 开开 发发 工工 具具,或或 由由TMS320器件来执行器件来执行第4章 DSP的软件开发与设计归档器(归档器(Archiver)归档器允许用户将一组文件归入一个档归档器允许用户将一组文件归入一个档案文件(库)。例如,将若干个宏归入一案文件(库)。例如,将若干个宏归入一个宏库,汇编器将搜索这个库,并调用源个宏库,汇编器将搜索这个库,并调用源文件中使用的宏。也可以用归档器将一组文件中使用的宏。也可以用归档器将一组目标文件收入一个目标文件库,连接器将目标文件收入一个目标文件库,连接器将连接库内的成员,并解决外部引用
7、连接库内的成员,并解决外部引用第4章 DSP的软件开发与设计交叉引用列表器(交叉引用列表器(Cross-Reference Lister)交叉引用列表器是一个查错的工具。它交叉引用列表器是一个查错的工具。它接受已经连接好的目标文件作为输入,产接受已经连接好的目标文件作为输入,产生一个交叉引用列表作为输出。它列出符生一个交叉引用列表作为输出。它列出符号、符号的定义、以及它们在已经连接的号、符号的定义、以及它们在已经连接的源文件中的引用源文件中的引用第4章 DSP的软件开发与设计十六进制转换公用程序(十六进制转换公用程序(Hex Conversion Utility)将将COFF目标文件转换成为若
8、干种标准的文件格式:目标文件转换成为若干种标准的文件格式:vASCII-十六进制十六进制vExtended TektronixvIntel MCS-86vMotorola Exorciser第4章 DSP的软件开发与设计第4章 DSP的软件开发与设计 全汇编编程:全汇编编程:代码效率高,可直接对硬件设置;代码量较大,可读性差。代码效率高,可直接对硬件设置;代码量较大,可读性差。全全C编程:编程:提高软件开发速度和可读性,方便软件移植;代码效率较低,硬件控提高软件开发速度和可读性,方便软件移植;代码效率较低,硬件控制不方便。制不方便。混合编程混合编程 混合编程几种方法:混合编程几种方法:(1)独
9、立编写)独立编写C/C+程序和汇编程序,分开编译或汇编形成各自程序和汇编程序,分开编译或汇编形成各自的目标模块,再用链接器将的目标模块,再用链接器将C/C+模块和汇编模块链接起来。模块和汇编模块链接起来。(2)在)在C/C+程序中直接内嵌汇编语句。程序中直接内嵌汇编语句。(3)将)将C程序编译生成相应的汇编程序,手工修改和优化程序编译生成相应的汇编程序,手工修改和优化C编译器编译器生成的汇编代码。生成的汇编代码。第4章 DSP的软件开发与设计混合编程说明:混合编程说明:变变量和函数命名量和函数命名规则规则 无无论论是是变变量量还还是函数,在是函数,在C C语语言和言和汇编汇编中均需要中均需要说
10、说明明为为全局的。全局的。在在C C语语言中需要有准确的函数原型言中需要有准确的函数原型说说明。明。在在C C语语言中保持言中保持“自然自然”的命名,而在的命名,而在汇编语汇编语言中言中该该名字需加一名字需加一个下划个下划线线作作为为前前缀缀。例:例:C语言部分:语言部分:extern int product(int*x,int*y);extern int i;汇编部分:汇编部分:.global _i.global _product第4章 DSP的软件开发与设计混合编程说明:混合编程说明:变变量量访问规则访问规则 C C程序程序访问访问由由.bssbss定定义义的的汇编变汇编变量:量:(1 1
11、)汇编程序中,该变量名前要加下划线)汇编程序中,该变量名前要加下划线“_”_”;(2 2)汇编程序中,用)汇编程序中,用.global.global命令将其定义为全局变量;命令将其定义为全局变量;(3 3)在)在C C程序中,将变量说明为外部变量程序中,将变量说明为外部变量C语言部分:语言部分:extern int var;var=1;汇编部分:汇编部分:.bss _var,1.global _var第4章 DSP的软件开发与设计混合编程说明:混合编程说明:变变量量访问规则访问规则 C C程序程序访问访问不在不在.bssbss中定中定义义的的汇编汇编常量表:常量表:(1 1)汇编程序中,汇编程
12、序中,在该常量表前加一标号(标号前要加在该常量表前加一标号(标号前要加“_”_”););(2 2)汇编程序中,汇编程序中,将该标号定义为全局标号;将该标号定义为全局标号;(3 3)在)在C C程序中,以程序中,以externextern的形式对该标号声明,并利用指针访的形式对该标号声明,并利用指针访 问该常量表。问该常量表。C语言部分:语言部分:extern int var;int *p=var;f=p1汇编部分:汇编部分:.global _var_var:.word 10 .word 20第4章 DSP的软件开发与设计混合编程说明:混合编程说明:变变量量访问规则访问规则 C C程序程序访问访
13、问用用.set.set定定义义的的汇编时间汇编时间常数:常数:(1 1)汇编程序中,汇编程序中,在该常数名前在该常数名前“_”_”;(2 2)汇编程序中,汇编程序中,将该常数名定义为全局符号;将该常数名定义为全局符号;(3 3)在)在C C程序中,以程序中,以externextern的形式对该符号声明,并用取地址运的形式对该符号声明,并用取地址运 算符算符“&”&”取该常量参与运算取该常量参与运算C语言部分:语言部分:extern int shift;#define ad (int)(&shift);x=ad;汇编部分:汇编部分:_shift .set 3.global _shift第4章 D
14、SP的软件开发与设计混合编程说明:混合编程说明:变变量量访问规则访问规则 汇编汇编程序程序访问访问用用C C程序中的程序中的变变量或数量或数组组:(1 1)在)在汇编程序汇编程序和和C C程序中,都将该变量或数组定义成外部属性。程序中,都将该变量或数组定义成外部属性。(2 2)在汇编中定义该变量或数组时需在前加)在汇编中定义该变量或数组时需在前加“_”_”;C语言部分:语言部分:int speech_in160,speech_out160;main()汇编部分:汇编部分:.global _speech_in.global _speech_outld#_speech_in,b stlm b,ar
15、2ld#_speech_out,astlm a,ar3ld#159,astlm a,brcnopnoprptb nextmvdd*ar2+,*ar3+next:第4章 DSP的软件开发与设计混合编程说明:混合编程说明:程序程序调调用用规则规则 寄存器使用说明寄存器使用说明:(1)辅助寄存器)辅助寄存器AR1、AR6、AR7由被调用函数保护,即可以在函数执行过程由被调用函数保护,即可以在函数执行过程中修改,但在函数返回时必须恢复。中修改,但在函数返回时必须恢复。AR0、AR2、AR3、AR4、AR5可以自由可以自由使用,即在函数执行过程中可以修改,而且不必恢复。使用,即在函数执行过程中可以修改,
16、而且不必恢复。(2)堆栈指针)堆栈指针SP在函数调用时必须予以保护,但其是自动保护的,即在返回在函数调用时必须予以保护,但其是自动保护的,即在返回时,压入椎栈的内容都将被全部弹出。时,压入椎栈的内容都将被全部弹出。(3)ARP在函数进入和返回时,必须为在函数进入和返回时,必须为0,即当前辅助寄存器为,即当前辅助寄存器为AR0。函数执函数执行时可以是其它值。行时可以是其它值。(4)在缺省的情况下,编译器总是认为)在缺省的情况下,编译器总是认为OVM为为0。因此,若在汇编程序中将。因此,若在汇编程序中将OVM置为置为1,则在返回,则在返回C环境时,必须将其恢复为环境时,必须将其恢复为0。(5)其它
17、状态位和寄存器在子程序中可以任意使用,不必恢复。)其它状态位和寄存器在子程序中可以任意使用,不必恢复。第4章 DSP的软件开发与设计混合编程说明:混合编程说明:程序程序调调用用规则规则 参数传递说明参数传递说明:(1)函数调用前,将参数以逆序压入运行堆栈,即最右边的参数)函数调用前,将参数以逆序压入运行堆栈,即最右边的参数最先入栈,然后自右向左将参数依次入栈,最后是返回地址入栈。最先入栈,然后自右向左将参数依次入栈,最后是返回地址入栈。第一个参数(最左边)放入累加器第一个参数(最左边)放入累加器A中进行传递。中进行传递。(2)函数调用结束后,将返回值置于累加器)函数调用结束后,将返回值置于累加
18、器A中。中。编程实例编程实例以以32位乘法运算为例。虽然用位乘法运算为例。虽然用C/C+语言表达乘法运算较为方便和明了,语言表达乘法运算较为方便和明了,但由于但由于C/C+语言无法很好利用语言无法很好利用DSP汇编语言为实现各种乘法运算而提汇编语言为实现各种乘法运算而提供的指令,使得供的指令,使得C/C+程序效率低下。所以这里用汇编语言完成乘法运程序效率低下。所以这里用汇编语言完成乘法运算,再用算,再用C/C+程序调用它。程序调用它。第4章 DSP的软件开发与设计编程实例(续)编程实例(续)C语言主程序语言主程序#include#include int main()extern int*MPY
19、32(long X,long Y);/定义函数原型,返回指针值定义函数原型,返回指针值 int W4;/定义存放相乘结果的数组定义存放相乘结果的数组 int*P;int i;P=MPY32(0 x11112222,0 x33334444);/函数调用函数调用/该指针指向数据存储器中,存放相乘结果单元的首地址该指针指向数据存储器中,存放相乘结果单元的首地址for(i=0;i16,低,低16位相乘的进位位相乘的进位MACSU *AR2-,*AR3+,A /A+=y1*x0MACSU *AR3-,*AR2,A /A+=x1*y0w0w1w2w3y0y1x0 x1AR2AR3AR4第4章 DSP的软件
20、开发与设计编程实例(续)汇编程序编程实例(续)汇编程序STL A,*AR4-/w1=ALD A,-16,A /A=A16MAC *AR2,*AR3,A /A+=x1*y1STL A,*AR4-/w2赋值赋值STH A,*AR4 /w3赋值赋值LD#w3,A /w3单元地址作为返回值,传递到单元地址作为返回值,传递到ARET第4章 DSP的软件开发与设计混合编程说明:混合编程说明:汇编语汇编语句嵌入句嵌入规则规则 在在C程序中直接内嵌汇编语句。此种方法可以在程序中直接内嵌汇编语句。此种方法可以在C程序中实现程序中实现C语语言无法实现的一些硬件控制功能,言无法实现的一些硬件控制功能,如修改寄存器值
21、,或在编译结如修改寄存器值,或在编译结果中添加注释等。嵌入汇编语句的方法比较简单,只需在汇编语句果中添加注释等。嵌入汇编语句的方法比较简单,只需在汇编语句的两边加上括号和双引号,并且在括号前加上的两边加上括号和双引号,并且在括号前加上asm标识符即可,即标识符即可,即asm(“汇编语句汇编语句”)。但需注意以下几点:。但需注意以下几点:(1)括号中的汇编语句必须以标号、空格、)括号中的汇编语句必须以标号、空格、tab、分号开头,这和通、分号开头,这和通常的汇编编程的语法一样。常的汇编编程的语法一样。(2)不要在嵌入的汇编语句中使用修饰性汇编代码)不要在嵌入的汇编语句中使用修饰性汇编代码.tex
22、t、.data等。等。(3)插入跳转语句和标号会产生不可预测的结果。)插入跳转语句和标号会产生不可预测的结果。(4)汇编语句不要改变)汇编语句不要改变C程序中变量的值。程序中变量的值。asm(“ssbx xf”)asm(“*this is an assembly language comment”)练习:练习:用用C实现循环延时,用嵌入式汇编语句对实现循环延时,用嵌入式汇编语句对XF引脚置高低电平,实现方波发生器。引脚置高低电平,实现方波发生器。第4章 DSP的软件开发与设计4.2 4.2 汇编语汇编语言程序的言程序的编辑编辑、汇编汇编和和链链接接过过程程 示意图示意图示意图示意图汇编器汇编器
23、汇编器汇编器调试程序调试程序调试程序调试程序链接器链接器链接器链接器文本编辑器文本编辑器文本编辑器文本编辑器.asm源文件源文件.obj目标文件目标文件.out输出文件输出文件.cmd链接命链接命令文件令文件.lst列表文件列表文件.map存储器存储器映像文件映像文件十六进制十六进制十六进制十六进制转换程序转换程序转换程序转换程序HEX500HEX500-o-m-l第4章 DSP的软件开发与设计4.2 4.2 汇编语汇编语言程序的言程序的编辑编辑、汇编汇编和和链链接接过过程程 1.1.1.1.编辑编辑编辑编辑 利用各种文本编辑器,如笔记本、利用各种文本编辑器,如笔记本、利用各种文本编辑器,如笔
24、记本、利用各种文本编辑器,如笔记本、WORDWORDWORDWORD、EDITEDITEDITEDIT和和和和TCTCTCTC等,可编写汇编语言源程序。等,可编写汇编语言源程序。等,可编写汇编语言源程序。等,可编写汇编语言源程序。2.2.2.2.汇编汇编汇编汇编 当汇编语言源程序编写好以后,可利用当汇编语言源程序编写好以后,可利用当汇编语言源程序编写好以后,可利用当汇编语言源程序编写好以后,可利用C54xC54xC54xC54x的的的的汇编器汇编器汇编器汇编器ASM500ASM500ASM500ASM500,对一个或多个源程序分别进行汇编,对一个或多个源程序分别进行汇编,对一个或多个源程序分别
25、进行汇编,对一个或多个源程序分别进行汇编,并生成列表文件并生成列表文件并生成列表文件并生成列表文件(.(.(.(.lst)lst)lst)lst)和目标文件和目标文件和目标文件和目标文件(.(.(.(.obj)obj)obj)obj)。第4章 DSP的软件开发与设计4.2 4.2 汇编语汇编语言程序的言程序的编辑编辑、汇编汇编和和链链接接过过程程 2.2.2.2.汇编汇编汇编汇编 常用的汇编命令:常用的汇编命令:asm500%1 s l x 调用汇编器命令调用汇编器命令调用汇编器命令调用汇编器命令 源文件名源文件名源文件名源文件名 将程序所有定义的符号放将程序所有定义的符号放将程序所有定义的符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 TMS320C54x的软件开发与设计 TMS320C54x 软件 开发 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内