DSP原理与应用2011-第二章 DSP系统开发

上传人:我*** 文档编号:136299637 上传时间:2020-06-27 格式:PPT 页数:99 大小:2.34MB
返回 下载 相关 举报
DSP原理与应用2011-第二章 DSP系统开发_第1页
第1页 / 共99页
DSP原理与应用2011-第二章 DSP系统开发_第2页
第2页 / 共99页
DSP原理与应用2011-第二章 DSP系统开发_第3页
第3页 / 共99页
DSP原理与应用2011-第二章 DSP系统开发_第4页
第4页 / 共99页
DSP原理与应用2011-第二章 DSP系统开发_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《DSP原理与应用2011-第二章 DSP系统开发》由会员分享,可在线阅读,更多相关《DSP原理与应用2011-第二章 DSP系统开发(99页珍藏版)》请在金锄头文库上搜索。

1、DSP原理与应用 The Technology File name: 280 x.h IMR .set 0004h ; Interrupt Mask Register IFR .set 0006h ; Interrupt Flag Register ; System configuration and interrupt registers SCSR1 .set 7018h ; System Control Peripheral Interrupt Acknowledge register 2,; File name: vector.h .sect vectors RSVECT B START

2、 ; Reset Vector INT1 B GISR1 ; Interrupt Level 1 INT2 B GISR2 ; Interrupt Level 2 INT3 B GISR3 ; Interrupt Level 3 INT4 B GISR4 ; Interrupt Level 4 INT5 B GISR5 ; Interrupt Level 5 INT6 B GISR6 ; Interrupt Level 6 RESERVED B PHANTOM ; Reserved SW_INT8 B PHANTOM ; Software Interrupt SW_INT9 B PHANTOM

3、 ; Software Interrupt SW_INT10 B PHANTOM ; Software Interrupt SW_INT11 B PHANTOM ; Software Interrupt SW_INT12 B PHANTOM ; Software Interrupt SW_INT13 B PHANTOM ; Software Interrupt SW_INT14 B PHANTOM ; Software Interrupt SW_INT15 B PHANTOM ; Software Interrupt SW_INT16 B PHANTOM ; Software Interrup

4、t TRAP B PHANTOM ; Trap vector NMI B NMI ; Nonmaskable Interrupt EMU_TRAP B PHANTOM ; Emulator Trap SW_INT20 B PHANTOM ; Software Interrupt SW_INT21 B PHANTOM ; Software Interrupt SW_INT22 B PHANTOM ; Software Interrupt SW_INT23 B PHANTOM ; Software Interrupt SW_INT24 B PHANTOM ; Software Interrupt,

5、第2.2.9 汇编程序设计-示例文件,.asm文件: 程序文件,* File Name: SPI.asm .include 280 xA.h .include vector.h .bss GPR0,1 ;General purpose registers. .bss GPR3,1 KICK_DOG .macro ;Watchdog reset macro LDP #00E0h SPLK #05555h, WDKEY SPLK #0AAAAh, WDKEY LDP #0h .endm ; M A I N C O D E starts here .text START: LDP #0 SETC I

6、NTM SPLK #0h,GPR3 OUT GPR3,WSGR CLRC SXM CLRC OVM CLRC CNF LDP #WDCR7 SPLK #006Fh,WDCR KICK_DOG LDP #SCSR17 SPLK #0020h,SCSR1,第二章:DSP程序设计,第2.1节 概述 第2.2节 DSP汇编语言概述及汇编程序设计 第2.3节 DSP C语言程序设计 第2.4节 DSP C与汇编混合编程 第2.5节 DSP程序烧写 习题,第2.3节 DSP C语言程序设计,支持ANSI C: 提供相应的编译器和优化工具 对ANSI C进行了限定和扩展 运行库: 字符串操作 动态地址分配

7、数据转换 ,第2.3节 DSP C语言程序设计,变量和标识: 变量和标识符长度100个字符,区分大小写 变量和标识符的符号集为ASCII,不支持多字节符号(如汉字)。 字符或字符串常量中的16进制ESC码(特殊字符,如0X07)可能会有32位的值。 多字符的字符变量最后一个有效,如abc是c 数据类型: Size_t(sizeof的结果)定义为unsigned int Ptrdiff_t(指针加减结果)定义为int 所有的整数类型(char, short, int, 以及这些类型的无符号型)都是相同类型,并代表16位的二进制值. Long和unsigned long代表32位二进制值.,第2.

8、3节 DSP C语言程序设计,数据类型: 有符号数是用二进制补码表示. 数据单元的基础是字(16位),BYTE和WORD一样 char是有符号类型,等同于int 枚举型(enum)用16位值表示,等同于int 浮点类型(float,double)是相同的,遵循TMS320C2x/C2xx/C5x的32位浮点类型. Long 和float的数据存储格式为低有效字存储在低地址的方式. Long long 和long double是64位的.,第2.3节 DSP C语言程序设计,数据类型:,第2.3节 DSP C语言程序设计,类型转换: 浮点数转为整数为取整截断 指针类型(pointer)和int可

9、以自由转换 far pointer 为22位有效位 表达式: 有符号整数相除,商符号由两个数共同决定,余数符号同被除数 10/-3=-3,余1; -10/3=-3余-1 有符号数右移为算术右移,符号位不变,第2.3节 DSP C语言程序设计,C访问16位乘法结果的高16位: int m1,m2; int result; result=(long)m1*(long)m2) 16; 浮点数:32bits FPU +,-, 比较(,=, PM PAGE 0 .TEXT : PM PAGE 0 .BSS : BLK_B2 PAGE 1 .DATA : BLK_B1 PAGE 1 BufferB_sec

10、t : SARAM_D PAGE 1 ,第2.3节 DSP C语言程序设计,FAST_FUNC_CALL: 指明某一函数调用时采用快速函数调用(FFC)机制,而不是使用普通函数调用流程: FFC进栈出栈及函数返回有所不同,调用更快速。 #pragma FAST_FUNC_CALL (func) 这类函数返回时的asm代码必须是: LB *XAR7,第2.3节 DSP C语言程序设计,FUNC_EXT_CALLED: 指明某一未使用的函数,使其不会在C优化时被删除。 #pragma FUNC_EXT_CALLED (func),第2.3节 DSP C语言程序设计,INTERRUPT: 指明函数为

11、中断处理函数(函数返回机制使用IRP) #pragma INTERRUPT ( func ); #pragma INTERRUPT; #pragma INTERRUPT (func, HPI|LPI); #pragma INTERRUPT ( HPI|LPI);) FPU有高优先级中断(HPI)和低优先级中断(LPI)处理机制,通过此预编译实现。,第2.3节 DSP C语言程序设计,MUST_ITERATE: 指明循环必须被执行的次数,以防止循环被优化掉 #pragma MUST_ITERATE (min,max,mult); 有时通过空循环建立必须的延时,但在程序优化时会被自动优化掉。 例如

12、: For( i=0; i FLASH PAGE 0 /* initialized */ /* Sections declared by the user */ vectors: VECS PAGE 0 /* initialized */ ,第2.3节 DSP C语言程序设计,中断服务函数: 中断服务函数类型必须是void。 中断服务函数要尽量短小,减少中断服务占用时间,以避免发生中断嵌套或丢中断。 多个中断可以共用一个中断服务函数,除了int00。 注意IMR、INTM等中断控制量的设置。 中断服务函数可能和某些编译选项和优化冲突,需注意协调。,第2.3节 DSP C语言程序设计,中断服务函

13、数: 中断服务函数可以像其他函数一样访问全局变量、分配局部变量和调用其它函数。 进入中断服务函数,编译器自动保护与运行上下文相关的寄存器,并在中断服务函数结束时恢复运行环境。但并不保存所有寄存器 中断服务程序可以任意修改不被保护的寄存器,如外设控制寄存器。 中断服务函数也可以被其他c程序调用,但效率较差。 c_int00是系统保留的复位中断函数,不会被调用,也不需要保护任何寄存器。 中断服务函数入口地址放在相应的中断向量处。,第2.3节 DSP C语言程序设计,第二章:DSP程序设计,第2.1节 概述 第2.2节 DSP汇编语言概述及汇编程序设计 第2.3节 DSP C语言程序设计 第2.4节

14、 DSP C与汇编混合编程 第2.5节 DSP程序烧写 习题,第2.4节 DSP C与汇编混合编程,C语言和汇编语言混合编程的四种方法 (1) 独立编写汇编程序和C程序,分开编译或汇编成各自的目标代码模块,再用链接器将二者链接起来。这种方法比较灵活,但是设计者必须自己维护各汇编模块的入口和出口代码,自己计算传递的参数在堆栈中的偏移量,工作量较大,但是能做到对程序的绝对控制。 (2) 在C程序中使用汇编程序中定义的变量和常数。 (3) 在C程序中内嵌汇编语句。这种方法可以实现C语言无法实现的一些硬件控制功能,如修改中断控制寄存器。 (4) 将C语言编译生成相应的汇编代码,手工修改和优化C编译器生

15、成的汇编代码。采用这种方法可以控制C编译器,从而产生具有交叉列表的汇编程序,而设计者可以对其中的汇编语句进行修改,然后对汇编程序进行编译,产生目标文件。 后3种方法由于在C中直接嵌入了汇编语言,易造成程序混乱,破坏C环境,甚至导致程序崩溃,而开发者又很难对不良结果进行预期和有效控制。而如果采用第一种方法,只要遵循有关C语言函数调用规则和寄存器规则,就能预见到程序运行的结果,保证程序正确。,第2.4节 DSP C与汇编混合编程,DSP C编译器将存储空间分为两个线性空间: 程序存储空间,存储可执行码 数据存储空间,存储程序执行过程中的数据和堆栈 编译器将存储空间以分段(section)的方式分配

16、和管理。用户以不同的方式分配存储器,可以形成不同的系统配置,连接器将各个段连接在一起形成最终完整的存储器结构。 *注意:是由连接器决定存储器影射而不是由编译器。,第2.4节 DSP C与汇编混合编程,已初始化的段:,第2.4节 DSP C与汇编混合编程,未初始化的段:,汇编自动生成.text,.bss和.data段。C编译器不使用.data段。,第2.4节 DSP C与汇编混合编程,用户定义的段: 用户使用CODE_SECTION,DATA_SECTION定义的段,如上面的 my_sect, BufferB_sect,第2.4节 DSP C与汇编混合编程,/*/ / Linker command file link.cmd /*/ -c /* ROM autoinitialization model */ -m example.map /* Creat

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号