版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、轻松学会DSP第章C程序编写和编译,1,第五章 C程和运行环境,TMS320C54x C语言编程 C语言和汇编语言混合编程 运行环境及C编译工具,轻松学会DSP第章C程序编写和编译,2,一 TMS320C54x C语言编程,使用ANSI C,即American National Standards Institute 定义的C语言。,1、数据类型,轻松学会DSP第章C程序编写和编译,3,数据类型,轻松学会DSP第章C程序编写和编译,4,定点型数据和浮点型数据:语法使用方法同传统的C没有区别,但后台执行会有所不同。主要是通过rts.lib进行相应的处理。,数据类型,轻松学会DSP第章C程序编写和
2、编译,5,2、关键字(keyword),const interrupt,轻松学会DSP第章C程序编写和编译,6,关键字,near and far,轻松学会DSP第章C程序编写和编译,7,3、寄存器变量,只有AR1和AR6可以作寄存器变量 寄存器变量在访问时可以比一般的变量占用更少时间,但是,建立寄存器变量需要4个指令周期,故如果不是多次使用的变量不要设为寄存器变量.,轻松学会DSP第章C程序编写和编译,8,寄存器变量,变量只能定义为char,short,int,pointers 寄存器变量使用时有很多注意事项,轻松学会DSP第章C程序编写和编译,9,4、I/O端口访问,如果访问的I/O空间地址
3、为N(16进制),则定义一个端口变量portN,然后把portN作为一般变量使用. 语法 ioport type portN 其中type可以是char, short, int , unsigned variable.,轻松学会DSP第章C程序编写和编译,10,轻松学会DSP第章C程序编写和编译,11,二、 C语言和汇编语言混合编程,1、C中使用汇编语句,语法为 asm (“ assembler text”); 注意开头要有空格,否则作为标号处理 由于C文件中的汇编语句在编译时(由C源文件变为汇编源文件)并不进行语法检查,所以注意该语句在编译后的位置是不是用户需要的位置.,轻松学会DSP第章C
4、程序编写和编译,12,2、C文件中调用汇编函数,汇编文件中程序代码标号作为函数名,该标号要有“_”前缀;而且标号要是全局标号. 汇编文件中要有ret/retd指令表示代码结束. 参数和返回结果如果是单个数据,放在A中. C文件中需要把该函数作为外部函数,轻松学会DSP第章C程序编写和编译,13,轻松学会DSP第章C程序编写和编译,14,3、C使用汇编中变量,从C程序中访问在汇编程序中定义的变量或常数,可以分为以下3种情况: 访问在.bss块中定义的变量 对于访问不在.bss块中定义的变量 对于在汇编程序中用.set和.global伪指令定义的全局常数,也可以使用特殊的操作从C程序中访问它们。,
5、轻松学会DSP第章C程序编写和编译,15,C使用汇编中变量,(1)访问在.bss块中定义的变量,轻松学会DSP第章C程序编写和编译,16,C使用汇编中变量,(2) 对于访问不在.bss块中定义的变量,轻松学会DSP第章C程序编写和编译,17,C使用汇编中变量,(3)对于在汇编程序中用.set和.global伪指令定义的全局常数.,轻松学会DSP第章C程序编写和编译,18,4、内联函数,轻松学会DSP第章C程序编写和编译,19,内联函数,轻松学会DSP第章C程序编写和编译,20,轻松学会DSP第章C程序编写和编译,21,5、汇编文件中调用C函数,从汇编程序调用C函数时,第一个参数(最左边)必须放
6、入累加器A中,剩下的参数按自右向左的顺序压入堆栈。 调用C函数时,注意C函数只保护了几个特定的寄存器,而其他是可以自由使用的。 调用前先对AR0-AR7和其他寄存器压栈保护,然后使用跳转语句B执行。 长整型和浮点数在存储器中存放的顺序是低位字在高地址,高位字在低地址。 参数通过A传递,即在跳转之前给A,返回值也通过A接收。 编译器在所有标识符(函数名、变量名等)前加下划线“_”。,轻松学会DSP第章C程序编写和编译,22,6、汇编文件中使用C文件变量,C文件中该变量要在MAIN()函数外定义为全局变量; 汇编中需要把该变量声明为全局标号; 汇编文件中使用绝对地址寻址方式*(_var_name)
7、方式访问,var_name为变量名,同时要有“_”前缀。,轻松学会DSP第章C程序编写和编译,23,三、运行环境及C编译工具,1、运行环境 C54x将存储器处理为程序存储器和数据存储器两个线性块。程序存储器包含可执行代码;数据存储器主要包含外部变量、静态变量和系统堆栈。编译器的任务是产生可重定位的代码,允许链接器将代码和数据定位进合适的存储空间。C编译器对C语言编译后除了生成3个基本段,即.text、.data、.bss外,还生成.cinit、.const、.stack、.sysmem段。,轻松学会DSP第章C程序编写和编译,24,.text 包括程序代码和常数 .cinit 包括初始化数据构
8、成的一张表 .const 包括字符串常量和初始化的全局、静态的变量,即有const定义的变量和常量 .switch 包括用于switch的常数表 .bss 变量数据 .stack 程序运行时的堆栈 .sysmem 用于malloc函数运行时使用,轻松学会DSP第章C程序编写和编译,25,C/C+系统堆栈.stack,.stack不同于DSP汇编指令定义的堆栈。DSP汇编程序中要将堆栈指针SP指向一块RAM,用于保存中断、调用时的返回地址,存放PUSH指令的压栈内容。 .stack定义的系统堆栈实现的功能是保护函数的返回地址,分配局部变量,在调用函数时用于传递参数,保护临时结果。 .stack定
9、义的段大小(堆栈大小)可用链接器选项-stack size设定,链接器还产生一个全局符号_ _STACK_SIZE,并赋给它等于堆栈长度的值,以字为单位,缺省值为1K。,轻松学会DSP第章C程序编写和编译,26,初始化过程,C程序入口地址默认为_c_int00,main不是入口地址。从_c_int00到main还有许多的代码,起到初始化作用 这段代码从rst.lib库中获得,即boot.asm,其的作用包括: 1、为堆栈在.bss段中保留空间,并初始化堆栈指针 2、从.cinit中把全局初始化变量放到.bss段中(ROM初始模式) 3、调用main()函数,轻松学会DSP第章C程序编写和编译,
10、27,2、C编译工具,(1) C编译器的组成 代码分析工具Parser 优化器Optimizer 代码生成器Code generator 汇编器Assembler 链接器Linker,轻松学会DSP第章C程序编写和编译,28,(2)、工作流程,Parser,第一阶段,生成.IF文件 Optimizer,第二阶段,生成.OPT文件,该阶段可以选择不使用 Code generator,第三阶段,生成.ASM文件 Assemble,第四阶段,生成.OBJ文件 Linke ,第五阶段,生成.OUT文件,轻松学会DSP第章C程序编写和编译,29,(3)、执行方法,是一个C文件,cl500产生.obj文件,因为他会自动调用代码分析,优化,代码生成,汇编,即下列命令:ac500,opt500,cg500,asm500;,轻松学会DSP第章C程序编写和编译,30,z 激活链接器,生成的文件可以直接是.out文件,即执行ac500,opt500,cg500,asm500,lnk
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三年级英语暑假特色作业
- 互联网数据接入采集系统建设方案
- 智慧工地施工方案1
- 网球俱乐部合同(2篇)
- 南京工业大学浦江学院《食品基础实验》2023-2024学年第一学期期末试卷
- 鹅妈妈买鞋的说课稿
- 翔荷雅苑2-楼施工组织设计
- 南京工业大学浦江学院《结构力学》2022-2023学年第一学期期末试卷
- 《小小的船》的说课稿
- 中学语文教学反思1
- 危重病人心理护理与沟通技巧
- 远程医疗与慢病管理系统的集成与优化
- 家庭医生签约服务工作规范
- 医务人员手卫生消毒效果监测标准操作规程
- 教师生涯发展展示
- 职业道德练习试题及答案
- 拒绝网络暴力班会课件
- 营销人员成长提升计划
- 质量管理制度及过程控制措施
- 光伏并网前单位工程验收报告-2023
- 幽门螺旋杆菌治疗指南课件
评论
0/150
提交评论