轻松学会DSP——第5章C程序编写和编译课件

上传人:20****08 文档编号:252887069 上传时间:2024-11-21 格式:PPT 页数:30 大小:497.54KB
返回 下载 相关 举报
轻松学会DSP——第5章C程序编写和编译课件_第1页
第1页 / 共30页
轻松学会DSP——第5章C程序编写和编译课件_第2页
第2页 / 共30页
轻松学会DSP——第5章C程序编写和编译课件_第3页
第3页 / 共30页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,第五章,C,程序编,程,和运行环境,TMS320C54x C,语言编程,C,语言和汇编语言混合编程,运行环境及,C,编译工具,第五章 C程序编程和运行环境TMS320C54x C语言编,1,一,TMS320C54x C,语言编程,使用,ANSI C,,即,American National Standards Institute,定义的,C,语言。,1,、,数据类型,一 TMS320C54x C语言编程 使用AN,2,数据类型,数据类型,3,定点型数据和浮点型数据,:,语法使用方法同传统的,C,没有区别,但后台执行会有所不同。主要是通过,rts.lib,进行相应的处理。,数据类型,定点型数据和浮点型数据:语法使用方法同传统的C没有区别,4,2,、,关键字,(,keyword,),const,interrupt,2、关键字(keyword)const,5,关键字,near and far,关键字near and far,6,3,、寄存器变量,只有,AR1,和,AR6,可以作寄存器变量,寄存器变量在访问时可以比一般的变量占用更少时间,但是,建立寄存器变量需要4个指令周期,故如果不是多次使用的变量不要设为寄存器变量,.,3、寄存器变量,7,寄存器变量,变量只能定义为,char,short,int,pointers,寄存器变量使用时有很多注意事项,寄存器变量变量只能定义为char,short,int,poi,8,4、,I/O,端口访问,如果访问的,I/O,空间地址为,N(16,进制),则定义一个端口变量,portN,,然后把,portN,作为一般变量使用,.,语法,ioport type portN,其中,type,可以是,char,short,int,unsigned variable.,4、I/O端口访问,9,轻松学会DSP第5章C程序编写和编译课件,10,二、,C,语言和汇编语言混合编程,1,、,C,中使用汇编语句,语法为,asm(“assembler text”);,注意开头要有空格,否则作为标号处理,由于,C,文件中的汇编语句在编译时(由,C,源文件变为汇编源文件)并不进行语法检查,所以注意该语句在编译后的位置是不是用户需要的位置,.,二、C语言和汇编语言混合编程1、C中使用汇编语句语法为,11,2,、,C,文件中调用汇编函数,汇编文件中程序代码标号作为函数名,该标号要有“_”前缀;而且标号要是全局标号,.,汇编文件中要有,ret/retd,指令表示代码结束,.,参数和返回结果如果是单个数据,放在,A,中,.,C,文件中需要把该函数作为外部函数,2、C文件中调用汇编函数汇编文件中程序代码标号作为函数名,该,12,轻松学会DSP第5章C程序编写和编译课件,13,3,、,C,使用汇编中变量,从,C,程序中访问在汇编程序中定义的变量或常数,可以分为以下3种情况:,访问在.,bss,块中定义的变量,对于访问不在.,bss,块中定义的变量,对于在汇编程序中用.,set,和.,global,伪指令定义的全局常数,也可以使用特殊的操作从,C,程序中访问它们。,3、C使用汇编中变量 从C程序中访问在汇编程序中定义的变量,14,C,使用汇编中变量,(1),访问在.,bss,块中定义的变量,C使用汇编中变量(1)访问在.bss块中定义的变量,15,C,使用汇编中变量,(2),对于访问不在.,bss,块中定义的变量,C使用汇编中变量(2)对于访问不在.bss块中定义的变量,16,C,使用汇编中变量,(3),对于在汇编程序中用.,set,和.,global,伪指令定义的全局常数,.,C使用汇编中变量(3)对于在汇编程序中用.set和.glob,17,4,、内联函数,4、内联函数,18,内联函数,内联函数,19,轻松学会DSP第5章C程序编写和编译课件,20,5,、汇编文件中调用,C,函数,从汇编程序调用,C,函数时,第一个参数(最左边)必须放入累加器,A,中,剩下的参数按自右向左的顺序压入堆栈。,调用,C,函数时,注意,C,函数只保护了几个特定的寄存器,而其他是可以自由使用的。,调用前先对,AR0-AR7,和其他寄存器压栈保护,然后使用跳转语句,B,执行。,长整型和浮点数在存储器中存放的顺序是低位字在高地址,高位字在低地址。,参数通过,A,传递,即在跳转之前给,A,,返回值也通过,A,接收。,编译器在所有标识符(函数名、变量名等)前加下划线“_”。,5、汇编文件中调用C函数从汇编程序调用C函数时,第一个参数(,21,6,、汇编文件中使用,C,文件变量,C,文件中该变量要在,MAIN(),函数外定义为全局变量;,汇编中需要把该变量声明为全局标号;,汇编文件中使用绝对地址寻址方式*(_,var_name),方式访问,,var_name,为变量名,同时要有“_”前缀。,6、汇编文件中使用C文件变量C文件中该变量要在MAIN()函,22,三、,运行环境及,C,编译工具,1、,运行环境,C54x,将存储器处理为程序存储器和数据存储器两个线性块。程序存储器包含可执行代码;数据存储器主要包含外部变量、静态变量和系统堆栈。编译器的任务是产生可重定位的代码,允许链接器将代码和数据定位进合适的存储空间。,C,编译器对,C,语言编译后除了生成,3,个基本段,即,.,text,、,.data,、,.bss,外,还生成,.,cinit,、,.const,、,.stack,、,.sysmem,段,。,三、运行环境及C编译工具1、运行环境,23,.,text,包括程序代码和常数,.,cinit,包括初始化数据构成的一张表,.,const,包括字符串常量和初始化的全局、静态的变量,即有,const,定义的变量和常量,.,switch,包括用于,switch,的常数表,.,bss,变量数据,.,stack,程序运行时的堆栈,.,sysmem,用于,malloc,函数运行时使用,.text 包括程序代码和常数,24,C/C+,系统堆栈,.,stack,.,stack,不同于,DSP,汇编指令定义的堆栈。,DSP,汇编程序中要将堆栈指针,SP,指向一块,RAM,,用于保存中断、调用时的返回地址,存放,PUSH,指令的压栈内容。,.,stack,定义的系统堆栈实现的功能是保护函数的返回地址,分配局部变量,在调用函数时用于传递参数,保护临时结果。,.,stack,定义的段大小(堆栈大小)可用链接器选项-,stack,size,设定,链接器还产生一个全局符号_ _,STACK_SIZE,,并赋给它等于堆栈长度的值,以字为单位,缺省值为1,K。,C/C+系统堆栈.stack.stack不同于DSP汇编,25,初始化过程,C,程序入口地址默认为_,c_int00,main,不是入口地址。从_,c_int00,到,main,还有许多的代码,起到初始化作用,这段代码从,rst.lib,库中获得,即,boot.asm,其的作用包括:,1、为堆栈在.,bss,段中保留空间,并初始化堆栈指针,2、从.,cinit,中把全局初始化变量放到.,bss,段中(,ROM,初始模式),3、调用,main(),函数,初始化过程C程序入口地址默认为_c_int00,main不是,26,2,、,C,编译工具,(1)C,编译器的组成,代码分析工具,Parser,优化器,Optimizer,代码生成器,Code generator,汇编器,Assembler,链接器,Linker,2、C编译工具(1)C编译器的组成,27,(2),、工作流程,Parser,,第一阶段,生成.,IF,文件,Optimizer,,第二阶段,生成.,OPT,文件,该阶段可以选择不使用,Code generator,,第三阶段,生成.,ASM,文件,Assemble,,第四阶段,生成.,OBJ,文件,Linke,,第五阶段,生成.,OUT,文件,(2)、工作流程Parser,第一阶段,生成.IF文件,28,(,3,)、执行方法,Filenames,是一个,C,文件,,cl500,产生.,obj,文件,因为他会自动调用代码分析,优化,代码生成,汇编,即下列命令:,ac500,opt500,cg500,asm500,;,(3)、执行方法Filenames 是一个C文件,cl500,29,z,激活链接器,生成的文件可以直接是.,out,文件,即执行,ac500,opt500,cg500,asm500,lnk500,;,LNK500,时使用的-,c,和,-,cr,是对,C,语言中常量(放在.,cinit,段中)的处理不同。-,c(ROM,模式)表示在运行时处理,由,boot.asm,完成,数据空间具有一个初始化表;而-,cr,则在装入时处理,由,load,或者,bootloader,完成,数据空间没有初始化表。如果是汇编文件进行链接,这个参数不加。,执行具体在,CCS,中完成,z 激活链接器,生成的文件可以直接是.out文件,即执行,30,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!