C语言混合编程.pptx
《C语言混合编程.pptx》由会员分享,可在线阅读,更多相关《C语言混合编程.pptx(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、会计学1C语言混合语言混合(hnh)编程编程第一页,共35页。提纲提纲(tgng)n n一、存储器模式一、存储器模式一、存储器模式一、存储器模式(msh)(msh)n n二、寄存器规则二、寄存器规则二、寄存器规则二、寄存器规则n n三、函数调用规则三、函数调用规则三、函数调用规则三、函数调用规则n n四、中断函数四、中断函数四、中断函数四、中断函数n n五、表达式分析五、表达式分析五、表达式分析五、表达式分析第1页/共35页第二页,共35页。DSP中增加中增加(zngji)的的C关键字关键字 p280n nConst:定义常量,保证不被改变n n例:int*const p=&x;n n con
2、st int*q=&x;n nVolatile:定义一个(y)变量,保证其不被优化掉n n 例:unsigned int*ctrln n while(*ctrl!=0 xFF)n n volatile unsigned int*ctrl第2页/共35页第三页,共35页。n nIoport:定义端口n n 例子:ioport unsigned port10n nInterrupt:定义一个中断服务函数n n 例子:interrupt void int_handler()n nNear/far:定义函数的调用(dioyng)方式n n 例子:near foo()用call来调用(dioyng)n
3、n far int foo()用fcall远程调用(dioyng)n n 第3页/共35页第四页,共35页。n n定点(dn din)DSP芯片C程序的开发过程主要分以下几个步骤:n n 1.用编辑器(如EDIT、ccs等)编辑一个或多个C程 序,如example1.c,example2.c。2.编译C程序,形成目标文件,如example1.obj,example2.obj:dspcl_v25_g_mn_o2 example1.cdspc_v50_g_mn_o2 example1.c 命令选项中的_v25表示是TMS320C2X,若是TMS320C5X,则选项为_v50。第4页/共35页第五页
4、,共35页。n n3.根据实际应用编辑一个链接命令文件(wnjin),如example.cmd。n nMEMORYn nPAGE0:VECS:origin=0h len=30hPAGE0:PROG:orgin=30h len=0EFDOh/*程序空间*/PAGE1:DATA:origin=800h len=OE800h/*数据空间*/第5页/共35页第六页,共35页。SECTIONSSECTIONS.vectors:VECS/*.vectors:VECS/*中断矢量中断矢量(sh(sh ling)*/ling)*/.text:PROG PAGE0/*.text:PROG PAGE0/*代码代码
5、*/*/.cinit:PROG PAGE0/*C.cinit:PROG PAGE0/*C初始化表初始化表*/*/.switch:PROG PAGE0 /*switch.switch:PROG PAGE0 /*switch语句表语句表*/*/.bss:DATA PAGE1/*.bss:DATA PAGE1/*变量变量*/*/.const:DATA PAGE1/*.const:DATA PAGE1/*常数变量常数变量*/*/.stack:DATA PAGE1/*.stack:DATA PAGE1/*系统堆栈系统堆栈*/*/.sysmem:DATA PAGE1/*.sysmem:DATA PAGE1
6、/*动态存储器动态存储器*/*/第6页/共35页第七页,共35页。n n4.链接(lin ji)形成example.out:dsplnk example.cmd5.用C源码调试器进行调试(模拟器、硬件仿真器等)。n n第7页/共35页第八页,共35页。n n例:用C语言编写一个TMS320C5X的输入输出程序,并用simulator进行调试。/*本程序是TMS320C5X的一个I/O口输入和输出程序,程序从I/O口地址(dzh)0 x0读入8位数据并存入数组中,同时将另一数组的数值写至I/O口地址(dzh)0 x1*/第8页/共35页第九页,共35页。include ioports.h/*包含
7、(bohn)ioports.h头文件*/define RD_PORT 0 x00;/*定义输入I/O口*/define WR_PORT 0 x01;/*定义输出I/O口*/int indata5,outdata5;/*定义全局数组*/main()int i;for(i=0;i5;i+)outdata=i2;/*初始化outdata数组*/for(i=0;i5;i+)/*循环5次*/inport(RD_PORT,&indata);/*读I/O口*/outport(WR_PORT,&outdata);/*写I/O口*/第9页/共35页第十页,共35页。n n用用TMS320C5X simulato
8、rTMS320C5X simulator调试调试I/OI/O口时,将口时,将I/OI/O口与一文件相关联。口与一文件相关联。这里我们建立两个文件这里我们建立两个文件RD.DATRD.DAT和和WR.DATWR.DAT,并将,并将RD.DATRD.DAT文件初文件初始化为:始化为:0 x00110 x00110 x00220 x00220 x00330 x00330 x00440 x00440 x00550 x0055上述上述(shngsh)(shngsh)程序运行结束后,可以观察数组程序运行结束后,可以观察数组indataindata及文件及文件WR.DATWR.DAT。正确的结果应为。正确的
9、结果应为indata5=0 x11,0 x22,0 x33,0 x44,0 x55indata5=0 x11,0 x22,0 x33,0 x44,0 x55,文件文件WR.DATWR.DAT应为应为0 x00000 x00000 x00040 x00040 x00080 x00080 x00C00 x00C00 x0010 0 x0010 第10页/共35页第十一页,共35页。5.DSP混合混合(hnh)编程程序设编程程序设计计第11页/共35页第十二页,共35页。n n虽然c编译器的优化功能可以使c代码的效率大大增加,但是在某些情况下,c代码的效率还是无法与手工编写的汇编代码的效率相比。这是
10、因为,即使是最佳的c编译器,也无法在所有的情况下都能够最佳地利用DSP芯片所提供的各种资源。n n用c语言编写的中断程序(chngx)虽然可读性很好,但由于在进入中断程序(chngx)后,有时不管程序(chngx)中是否用到,中断程序(chngx)都将寄存器进行保护,从而大大降低中断程序(chngx)的效率。如果中断程序(chngx)频繁被调用,那么即使是一条指令也是至关重要的。第12页/共35页第十三页,共35页。n n此外,用c语言实现DSP芯片的某些(mu xi)硬件控制也不如汇编程序方便,有些甚至无法用C语言实现。因此,在很多情下,DSP应用程序往往需要用c语言和汇编语言的混合编程方法
11、来实现,以达到最佳利用DSP芯片软硬件资源的目的。第13页/共35页第十四页,共35页。C语言和汇编语言语言和汇编语言(hu bin y yn)的混合编程方法的混合编程方法(1)独立编写c程序和汇编程序,分开编译或汇编,形成各自的目标代码模块,然后用链接(lin ji)器将c模块和汇编模块链接(lin ji)起来。例如,FFT程序一般采用汇编语言编写,形成目标代码模块,与c模块链接(lin ji)就可以在c程序中调用FFT程序;(2)直接在C语言程序的相应位置嵌入汇编语句;(3)对C程序进行编译,生成相应的汇编程序,然后手动修改和优化。第14页/共35页第十五页,共35页。5.1 独立独立(d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 混合 编程
限制150内