基于C语言DSP芯片技术开发.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
补充: 基于C语言的DSP芯片开发 C语言、汇编语言程序设计特点 汇编语言: 执行速度快, 但程序开发的效率低、难度大。 可读性和可移植性差。 TMS320C54X C语言: 开发效率高。 修改和移植都比较方便。 能调用汇编程序。 C编译器有很强的优化功能 优化效率从15%提高到35%。某些情况下C代码的效率甚至接近于手工汇编的效率 但在某些场合无法取代汇编,不能最佳利用DSP芯片的内部资源,如C54x提供位反转寻址、滤波等,有时甚至无法用C语言实现,如标志位/寄存器设置等。 常采用:C语言和汇编语言的混合编程 关键代码用汇编编程。以最佳利用DSP芯片软硬件资源,也可利用DSP开发商提供的优化算法库(汇编程序) 一般性的代码均采用C语言编写。软件调试工具也支持C源码,C/汇编混合模式 优化的C编译器 C源文件 ? C编译器 ? 汇编源文件 ? 汇编器 ? COFF目标文件 ? 链接器 ? 可执行COFF文件 C编译器的基本功能 对C文件进行文法分析,生成.IF文件 对代码进行多级优化,以改进C/C++程序的效率,生成.OPT文件 生成汇编程序.ASM文件 优化器 使用了几种先进的优化技术。 优化选项的激活,“-o,-x”选项,多级优化(共3级:0、1、2) -g调试选项 C源码调试开关参数,调试时选中,则优化功能被抑制 调试时不用优化编译,程序调试成功后再用 优化方法分为两类 C语言通用优化 1.优化与循环有关的变量 2.优化跳转 3.简化控制流 4.数据流优化等 DSP芯片的特定优化 采用块循环块重复指令、并行指令、乘累加、延迟跳转、自动增量寄存器寻址等 充分使用辅助寄存器、累加器 数组尽量用寄存器间接寻址 C应用程序的开发过程 需要以下几种类型的文件 .C源文件 .lib库文件,如rts.lib,evm54.lib等(汇编无) .cmd文件(与汇编源程序有区别!) C编译器产生的段 四个已初始化的段 .text:可执行代码、编译器产生的常数 .cinit:已初始化全局变量和静态变量 .const:已初始化的字符串常量、全局常量和静态常量,与关键字const有关。 .switch:大型的switch语句的跳转表 三个未初始化段 .bss:未初始化全局变量和静态变量 .stack:系统软件堆栈 .sysmem:动态存储器 为malloc,calloc,realloc等函数分配存储器空间 .cmd文件举例(C应用程序) -stack 400h -heap 100h -l rts.lib MEMORY { PAGE 0: VECT : o=0ff80h,l=80h PRAM: o=100h,l=1f00h PAGE 1: DRAM : o=2000h,l=1000h } SECTIONS { .vectors:{}VECT PAGE 0 .text : {}PRAM PAGE 0 .cinit: {}PRAM PAGE 0 .switch:{}PRAM PAGE 0 .const:{}DRAM PAGE 1 .bss :{}DRAM PAGE 1 .stack:{}DRAM PAGE 1 .sysmem:{}DRAM PAGE 1 } cmd文件总结(C应用程序) .text,.cinit,.switch段链接在程序存储空间(PAGE 0),可映射到ROM或RAM .const,.bss,.stack,.sysmem段链接在数据存储空间(PAGE 1). .const,可映射到ROM或RAM .bss,.stack,.sysmem,只能映射到RAM C中存储器映射寄存器的使用 #define TIM *(int *)0x24 #define PRD *(int *)0x25 #define TCR *(int *)0x26 #define IMR *(int *)0x0 #define PMST *(int *)0x1d #define SPSA1 *(unsigned int *)0x48 注意:每个存储器映射寄存器所对应的存储单元地址。 C中存储器映射寄存器的使用 main() { IMR = 0x8; TCR = 0x41f; TIM = 0; 。。。。。。 } 汇编程序: STM #0008H,IMR STM #41fh, TCR 常用关键字 ioport关键字 允许访问DSP的I/O端口空间。 interrupt关键字 中断关键字:指定将函数作为中断函数处理。 Ioport关键字举例: ioport unsigned int port3002, port3

您可能关注的文档

文档评论(0)

chqs52 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档