轻松学会DSP-第5章C程序编写和编译

轻松学会DSP-第5章C程序编写和编译

ID:40837707

大小:430.10 KB

页数:30页

时间:2019-08-08

轻松学会DSP-第5章C程序编写和编译_第1页
轻松学会DSP-第5章C程序编写和编译_第2页
轻松学会DSP-第5章C程序编写和编译_第3页
轻松学会DSP-第5章C程序编写和编译_第4页
轻松学会DSP-第5章C程序编写和编译_第5页
资源描述:

《轻松学会DSP-第5章C程序编写和编译》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第五章C程序编程和运行环境TMS320C54xC语言编程C语言和汇编语言混合编程运行环境及C编译工具一TMS320C54xC语言编程使用ANSIC,即AmericanNationalStandardsInstitute定义的C语言。1、数据类型数据类型定点型数据和浮点型数据:语法使用方法同传统的C没有区别,但后台执行会有所不同。主要是通过rts.lib进行相应的处理。数据类型2、关键字(keyword)constinterrupt关键字nearandfar3、寄存器变量只有AR1和AR6可以作寄存器变量寄存器变量在访问时可以比一般的变量占用更少时间,但是,建立寄存器变量需要

2、4个指令周期,故如果不是多次使用的变量不要设为寄存器变量.寄存器变量变量只能定义为char,short,int,pointers寄存器变量使用时有很多注意事项4、I/O端口访问如果访问的I/O空间地址为N(16进制),则定义一个端口变量portN,然后把portN作为一般变量使用.语法ioporttypeportN其中type可以是char,short,int,unsignedvariable.二、C语言和汇编语言混合编程1、C中使用汇编语句语法为asm(“assemblertext”);注意开头要有空格,否则作为标号处理由于C文件中的汇编语句在编译时(由C源文件变为汇编源

3、文件)并不进行语法检查,所以注意该语句在编译后的位置是不是用户需要的位置.2、C文件中调用汇编函数汇编文件中程序代码标号作为函数名,该标号要有“_”前缀;而且标号要是全局标号.汇编文件中要有ret/retd指令表示代码结束.参数和返回结果如果是单个数据,放在A中.C文件中需要把该函数作为外部函数3、C使用汇编中变量从C程序中访问在汇编程序中定义的变量或常数,可以分为以下3种情况:访问在.bss块中定义的变量对于访问不在.bss块中定义的变量对于在汇编程序中用.set和.global伪指令定义的全局常数,也可以使用特殊的操作从C程序中访问它们。C使用汇编中变量(1)访问在.b

4、ss块中定义的变量C使用汇编中变量(2)对于访问不在.bss块中定义的变量C使用汇编中变量(3)对于在汇编程序中用.set和.global伪指令定义的全局常数.4、内联函数内联函数5、汇编文件中调用C函数从汇编程序调用C函数时,第一个参数(最左边)必须放入累加器A中,剩下的参数按自右向左的顺序压入堆栈。调用C函数时,注意C函数只保护了几个特定的寄存器,而其他是可以自由使用的。调用前先对AR0-AR7和其他寄存器压栈保护,然后使用跳转语句B执行。长整型和浮点数在存储器中存放的顺序是低位字在高地址,高位字在低地址。参数通过A传递,即在跳转之前给A,返回值也通过A接收。编译器在所

5、有标识符(函数名、变量名等)前加下划线“_”。6、汇编文件中使用C文件变量C文件中该变量要在MAIN()函数外定义为全局变量;汇编中需要把该变量声明为全局标号;汇编文件中使用绝对地址寻址方式(_var_name)方式访问,var_name为变量名,同时要有“_”前缀。三、运行环境及C编译工具1、运行环境C54x将存储器处理为程序存储器和数据存储器两个线性块。程序存储器包含可执行代码;数据存储器主要包含外部变量、静态变量和系统堆栈。编译器的任务是产生可重定位的代码,允许链接器将代码和数据定位进合适的存储空间。C编译器对C语言编译后除了生成3个基本段,即.text、.data、

6、.bss外,还生成.cinit、.const、.stack、.sysmem段。.text包括程序代码和常数.cinit包括初始化数据构成的一张表.const包括字符串常量和初始化的全局、静态的变量,即有const定义的变量和常量.switch包括用于switch的常数表.bss变量数据.stack程序运行时的堆栈.sysmem用于malloc函数运行时使用C/C++系统堆栈.stack.stack不同于DSP汇编指令定义的堆栈。DSP汇编程序中要将堆栈指针SP指向一块RAM,用于保存中断、调用时的返回地址,存放PUSH指令的压栈内容。.stack定义的系统堆栈实现的功能是保

7、护函数的返回地址,分配局部变量,在调用函数时用于传递参数,保护临时结果。.stack定义的段大小(堆栈大小)可用链接器选项-stacksize设定,链接器还产生一个全局符号__STACK_SIZE,并赋给它等于堆栈长度的值,以字为单位,缺省值为1K。初始化过程C程序入口地址默认为_c_int00,main不是入口地址。从_c_int00到main还有许多的代码,起到初始化作用这段代码从rst.lib库中获得,即boot.asm,其的作用包括:1、为堆栈在.bss段中保留空间,并初始化堆栈指针2、从.cinit中把全

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

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

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