第6章27C54x的C语言程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章27C54x的C语言程序设计

2003.2.16 DSP原理及应用 第6章 TMS320C54xC语言程序设计 2 ) interrupt 函数 中断函数定义的另一种实现方法就是利用interrupt关键字,将该关键字后面所定义的函数声明为中断函数,当编译器编译该函数时,就会把该函数编译成中断处理函数。 void interrupt isr() { … } 采用这种方法,可以对每种中断服务函数的功能,给它起一个有意义的名称,非常直观,同时,中断服务函数的个数也没有严格的限制。 第6章 TMS320C54xC语言程序设计 2.关于C语言中断函数的说明 (1)中断函数的返回类型必须是void类型,并且不能有参数。 (4)中断函数不能被普通C代码之间调用 (5)C编译器规定进入中断函数时,要求SP的内容是偶数; (6)如果屏蔽中断时,用户可以使用内嵌汇编语句来修改IMR使能或禁止指定的中断。 (2)对中断函数,其寄存器的保护不使用入口或调用保护规则; (3)在返回时中断函数使用RETI。 第6章 TMS320C54xC语言程序设计 (7)一个中断程序可以处理一个或多个中断; (8)中断处理和具体某种中断的联系,由中断向量来表明 (9)在汇编语言中,访问中断处理函数是,加上“_” 第6章 TMS320C54xC语言程序设计 3.C语言中断函数c_int0的作用 C_int0函数初始化C环境时,要完成如下工作: (1)为系统堆栈定义个名为.stack的段,并建立初始化堆栈和堆栈指针; (2)将.cinit段中的数据表拷贝到.bss块,对全局和静态变量进行初始化; (3)设置DP,使其指向.bss段中的全局存储器页; (4)调用main函数,开始运行C程序; 第6章 TMS320C54xC语言程序设计 6.2.4 C54x C 语言库函数调用 为了便于用户对DSP进行C语言编程,TI公司提供 了一些库函数,这些库函数主要是用来对DSP的C语言 编程环境的运行提供支持,称为运行支持库(run- time-support library). TI公司提供两种形式的运行支持库: 目标代码:rts.lib 源代码:rts.src 在使用这些库函数时,只要将这些库函数包含到工程里,添加一些有关的头文件,就可以使用这些库中提供的函数 第6章 TMS320C54xC语言程序设计 在使用这些标准库函数时,一定要注意把包含这些库函数声明的头文件包含到自己的文件中。 例如:要使用标准输入输出函数”fprintf” 在文件中加上一条语句 #include stdio.h 第6章 TMS320C54xC语言程序设计 对C代码 进行手工汇编优化有两种方法: (1)对照C代码写出汇编代码。 这种方法优化的效率很高,但是开发难度很大特别是当代码量很大,结构很复杂时优化很容易出错。 6.3 C54x C代码优化 (2)先用编译器产生汇编代码,然后改写汇编代码。 这种方法优化效率低,但是开发难度降低了。 第6章 TMS320C54xC语言程序设计 手工汇编优化考虑以下几个方面: 1.对一个参数的保存; 2.尽量减少进行函数调用; 3.尽量使用RPT和RPTB来执行循环操作; 4.优化循环; 5.使用循环缓冲区; 6. 循环缓冲区地址分配问题; 第6章 TMS320C54xC语言程序设计 7.将一些常用的程序和数据,放在片内RAM运行; 8.注意流水线冲突 9.使用比较快的寻址方式; 10.去除一个冗余的赋值; 11.使用一些主用指令; 12.使用并行指令; 第6章 TMS320C54xC语言程序设计 6.2.1 C54x C语言开发的存储器结构 1.C54x C语言开发的段结构 C编译器对C语言源程序进行编译后产生汇编程序,汇编程序再经过汇编将成为COFF格式的目标文件,该文件将包含七个可以进行重新定位的代码和数据段,他们是: 6.2 C54x C语言编程 第6章 TMS320C54xC语言程序设计 已初始化段: (1).text段,包含了可执行代码。 (2).cinit段,包含明显初始化的全局变量和静态变量。 (3).const段,包含字符串常数和全局变量。 (4).switch段,包含大型switch语句的跳转表 未初始化段 (1).bss段,包含了未初始化的全局变量和静态变量 (2).stack段,定义软件堆栈 (3).system段,为动态存储器函数malloc,calloc,realloc(这些函数由运行支持库提供)分配存储器空间 第6章 TMS320C54

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档