资源描述:
《基于c语言dsp芯片技术开发课件》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于C语言的DSP芯片开发补充:C语言、汇编语言程序设计特点汇编语言:执行速度快,但程序开发的效率低、难度大。可读性和可移植性差。TMS320C54XC语言:开发效率高。修改和移植都比较方便。能调用汇编程序。C编译器有很强的优化功能优化效率从15%提高到35%。某些情况下C代码的效率甚至接近于手工汇编的效率但在某些场合无法取代汇编,不能最佳利用DSP芯片的内部资源,如C54x提供位反转寻址、滤波等,有时甚至无法用C语言实现,如标志位/寄存器设置等。常采用:C语言和汇编语言的混合编程关键代码用汇编编程。以最佳利用DSP芯片软硬件资源,也
2、可利用DSP开发商提供的优化算法库(汇编程序)一般性的代码均采用C语言编写。软件调试工具也支持C源码,C/汇编混合模式优化的C编译器C源文件C编译器汇编源文件汇编器COFF目标文件链接器可执行COFF文件C编译器的基本功能对C文件进行文法分析,生成.IF文件对代码进行多级优化,以改进C/C++程序的效率,生成.OPT文件生成汇编程序.ASM文件优化器使用了几种先进的优化技术。优化选项的激活,“-o,-x”选项,多级优化(共3级:0、1、2)-g调试选项C源码调试开关参数,调试时选中,则优化功能被抑制调试时不用优化编译,程序
3、调试成功后再用优化方法分为两类C语言通用优化1.优化与循环有关的变量2.优化跳转3.简化控制流4.数据流优化等DSP芯片的特定优化采用块循环块重复指令、并行指令、乘累加、延迟跳转、自动增量寄存器寻址等充分使用辅助寄存器、累加器数组尽量用寄存器间接寻址C应用程序的开发过程需要以下几种类型的文件.C源文件.lib库文件,如rts.lib,evm54.lib等(汇编无).cmd文件(与汇编源程序有区别!)C编译器产生的段四个已初始化的段.text:可执行代码、编译器产生的常数.cinit:已初始化全局变量和静态变量.const:已初始化的字
4、符串常量、全局常量和静态常量,与关键字const有关。.switch:大型的switch语句的跳转表三个未初始化段.bss:未初始化全局变量和静态变量.stack:系统软件堆栈.sysmem:动态存储器为malloc,calloc,realloc等函数分配存储器空间.cmd文件举例(C应用程序)-stack400h-heap100h-lrts.libMEMORY{PAGE0:VECT:o=0ff80h,l=80hPRAM:o=100h,l=1f00hPAGE1:DRAM:o=2000h,l=1000h}SECTIONS{.vector
5、s:{}>VECTPAGE0.text:{}>PRAMPAGE0.cinit:{}>PRAMPAGE0.switch:{}>PRAMPAGE0.const:{}>DRAMPAGE1.bss:{}>DRAMPAGE1.stack:{}>DRAMPAGE1.sysmem:{}>DRAMPAGE1}cmd文件总结(C应用程序).text,.cinit,.switch段链接在程序存储空间(PAGE0),可映射到ROM或RAM.const,.bss,.stack,.sysmem段链接在数据存储空间(PAGE1)..const,可映射到ROM或R
6、AM.bss,.stack,.sysmem,只能映射到RAMC中存储器映射寄存器的使用#defineTIM*(int*)0x24#definePRD*(int*)0x25#defineTCR*(int*)0x26#defineIMR*(int*)0x0#definePMST*(int*)0x1d#defineSPSA1*(unsignedint*)0x48注意:每个存储器映射寄存器所对应的存储单元地址。C中存储器映射寄存器的使用main(){IMR=0x8;TCR=0x41f;TIM=0;。。。。。。}汇编程序:STM#0008H,I
7、MRSTM#41fh,TCR常用关键字ioport关键字允许访问DSP的I/O端口空间。interrupt关键字中断关键字:指定将函数作为中断函数处理。Ioport关键字举例:ioportunsignedintport3002,port3003;main(){inti;for(;;){i=port3003;/*读端口数据*/i=i&0xff;port3002=i;/*向端口写数据*/}}汇编程序LD#i,DPPORTR3003h,iANDM#0ffh,iPORTWi,3002h说明:3002h:EVM板上指示灯控制寄存器3003h:D
8、IP拨动开关控制寄存器程序功能:通过开关控制不同的指示灯亮Interrupt关键字应用举例voidinterrupttime(void){。。。。。}汇编程序vectors.asm。。。。。int2:RETENOPNOP