《DSP软件开发与C语言编程》由会员分享,可在线阅读,更多相关《DSP软件开发与C语言编程(79页珍藏版)》请在金锄头文库上搜索。
1、第4章 DSP的软件开发与C语言编程本章内容: 4.1 DSP开发工具与软件开发流程 4.2 集成开发环境CCS 4.3 DSP的C工程文件 4.4 DSP C语言程序设计基础 4.5 DSP C程序举例Date1山东大学控制学院 张东亮4.1 DSP开发工具与软件开发流程1. DSP开发工具 硬件 TI XDS510 (Extended Development System)硬件仿真器。 DSK(DSP Starter Kit)初学者开发套件。 瑞泰 ICETEK-5100PP/USB DSP开发系统。 评估板。 DSP教学实验系统 。开发工具包括硬件、软件两部分。硬件部分主要是仿真 器(E
2、mulator),软件主要是集成开发环境CCS (Code Composer Studio)。DSP开发系统(仿真器)有PCI插卡式、并口式、USB接口 式,目前多用USB接口式,即DSP开发系统通过USB接口与 PC机相连,开发系统通过JTAG(基于扫描的仿真)接口与 用户目标板相连,实现DSP软硬件调试与程序烧写。 Date2山东大学控制学院 张东亮DSP评估板(也称为EVM板、目标板、 DEMO板、实验 板等),包括基本的DSP芯片及必要的电源、时钟、复位电路 外,还经常包括用于程序调试的片外扩展存储器、扩展的 A/D、D/A转换器、键盘显示电路、EEPROM、RS232串行接 口、SP
3、I接口、CAN接口驱动电路、简单应用电路等。 F2812 DSP评估板Date3山东大学控制学院 张东亮F2812 DSP评估板原理框图开发系统 与评估板Date4山东大学控制学院 张东亮2812 EVM板的主要性能指标如下: (1) TMS320F2812,运行速度150MIPS。 (2) 片内RAM 18K字。 (3) 扩展RAM 64K字。 (4) 片内16路12位A/D转换器, 最大采样速率12.5MSPS。 (5) 扩展的4路12位D/A转换器DAC7617。 (6) 两路UART串行接口,符合RS-232C标准。 (7) 16路PWM输出。 (8) CAN总线标准接口。 (9) 用
4、户开关与指示灯。 (10) 片内128K字Flash存储器,带128位加密位。 (11) IEEE1149.1兼容的逻辑扫描电路即JTAG接口,用于仿真调试。 (12) +5V电源输入, 板上3.3V, 1.8V电源管理。Date5山东大学控制学院 张东亮Date6山东大学控制学院 张东亮2. 软件开发流程软件开发流程框图 Date7山东大学控制学院 张东亮软件开发流程 1)编辑:生成源程序(*.asm, *.c)、头文件(*.h) 与命令文件(*.cmd)。 2)编译与汇编:生成目标文件(*.obj ,公共目标文件 COFF格式)及列表文件(*.lst)。 3)连接:生成可执行代码文件(*.
5、out)及映射文件 (*.map)。 4)调试:通过JTAG接口下载到目标系统EVM。 5) 通过JTAG接口将程序固化烧写到Flash 存储器 。Date8山东大学控制学院 张东亮软件开发工具主要有 源程序编辑器(Editor) 编译器(Compiler) 汇编器(Assembler) 链接器(Linker) 归档器(Archiver) 运行时支持库(Run-Time-Support Library) 库建立程序(Library-build Utility) HEX转换程序(Hex Conversion Utility)3. 软件工具Date9山东大学控制学院 张东亮 绝对列表器(Absol
6、ute Lister)和交叉引用列表器(Cross- Reference Lister) 调试工具(Debugging tools) C+名称复原程序(C+ Name Demangling Utility) GEL语言 (General Extension Language,通用扩展语言) DSP/BIOS等。Date10山东大学控制学院 张东亮1. CCS软件安装与设置CCS2.0 C2000 (CCS3.3) 驱动程序设置。 Simulator: PC模拟软件仿真。 Emulator: 实时DSP硬件仿真。4.2 集成开发环境CCSDate11山东大学控制学院 张东亮CCS运行主窗口 Da
7、te12山东大学控制学院 张东亮CCS主要工具 源程序编辑器(Editor)。 C编译器(C Compiler)。 汇编器(Assembler)。 连接器(Linker)。 调试工具(Debug)。 十六进制转换公用程序(Hex Conversion Utility)。Date13山东大学控制学院 张东亮2. CCS主要菜单与功能典型的CCS运行界面如图所示。CCS的功能可以通 过菜单或工具条按钮实现。主要的菜单项有File、Edit 、View、Project、Debug等。这些菜单的使用与常用的 集成开发软件Visual C+等使用方法基本一样。 Date14山东大学控制学院 张东亮典型C
8、CS运行界面Date15山东大学控制学院 张东亮Code Composer Studio Components Robust, Easy-to-Use Development EnvironmentHelpHelpCPU CPU WindowWindowMemory windowMemory windowGraph Graph windowwindowProject Manager:Project Manager:Source PAGE n: name: origin=constant, length=constant; PAGE n:定义存储器空间。n=0254. 通常PAGE 0定义 程序
9、存储器,PAGE 1定义数据存储器。 name:存储器范围名字。可以是18个字符。 origin或简写为o:存储器范围的起始地址。 length或简写为l:存储器范围的长度。Date34山东大学控制学院 张东亮SECTIONS命令 SECTIONS命令用于将输出各段定位到所定义的存储器。 一般形式为 SECTIONS name: property, property, name: property, property, 在段名之后是是特性列表,定义段的内容以及是怎样分配 的。段的特性(property)是装载位置、运行位置、输入段、段 类型等。通常的特性符号“”表示输出段装载位置。 Date3
10、5山东大学控制学院 张东亮4.4 DSP C语言程序设计基础4.4.1 数据类型 4.4.2 C语言运算符与基本语句 4.4.3 函数 4.4.4 指针 4.4.5 编译预处理命令 4.4.6 C语言与汇编语言混合编程 4.4.7 C28x DSP编译器的关键字Date36山东大学控制学院 张东亮C语言程序设计优缺点汇编语言程序设计: 执行速度快。 开发周期长、移植性和可读性差 。 C语言程序设计: 开发周期短、移植性和可读性好。 执行速度可以满足要求。Date37山东大学控制学院 张东亮C28x DSP具有优化的C编译器,它支持ANSI C 标准。还具有一些不同于标准C的特征。DSP的基本数
11、据类型如表所示,还具有数 组、结构、联合等构造类型数据。4.4.1 数据类型Date38山东大学控制学院 张东亮TMS320C28x C的数据类型 1. C28x编译器基本数据类型Date39山东大学控制学院 张东亮片内外设寄存器通常通过结构与联合变量的方法进行 访问。2. 结构例如,GPIO A口的MUX复用控制寄存器可用位段(bit field)结构表示struct GPAMUX_BITS unsigned int PWM1_GPIOA0:1;/第0位 unsigned int PWM2_GPIOA1:1; unsigned int C2TRIP_GPIOA14:1; unsigned i
12、nt C3TRIP_GPIOA15:1;/第15位 ;Date40山东大学控制学院 张东亮例如,GPIO D口的MUX复用控制寄存器结构struct GPDMUX_BITS unsigned int T1CTRIP_PDPA_GPIOD0:1;/第0位 unsigned int T2CTRIP_PDPA_GPIOD1:1;/1 unsigned int rsvd1:3;/4:2,保留 unsigned int T3CTRIP_PDPA_GPIOD5:1;/5 unsigned int T4CTRIP_PDPA_GPIOD6:1;/6 unsigned int rsvd2:9;/15:7,保留
13、;当一个结构中有效字段(位段)的长度不足16位时,可 以加入保留字段,以保证数据的完整性。结构变量的定义与成员变量的引用,例如, struct GPDMUX_BITS bit; /bit为 GPDMUX_BITS 类型变量 bit. T1CTRIP_PDPA_GPIOD0=1 /将D0位定义为PDPA功能Date41山东大学控制学院 张东亮联合体(也称为共用体)类型,可以将不同类型的数据 存放在同一个地方,且占据同样大小的存储空间。例如,定义联合体类型GPDMUX_REG , union GPDMUX_REG unsigned int all;/all 为无符号整型变量 struct GPDM
14、UX_BITS bit; /bit为结构型变量;联合变量的定义与成员变量的引用,例如, union GPDMUX_REG GPDMUX; / GPDMUX为联合类型变量 GPDMUX.all=1; /将D0引脚定义为PDPA功能,其他为数字I/O3. 联合Date42山东大学控制学院 张东亮联合可以出现在结构和数组中,结构和数组也可以出现在联合中。 例如,结构类型GPIO_MUX_REGS, struct GPIO_MUX_REGS union GPAMUX_REG GPAMUX; union GPDMUX_REG GPDMUX;结构变量的定义与成员变量的引用,例如,struct GPIO_M
15、UX_REGS GpioMuxRegs; /表示GpioMuxRegs是结构GPIO_MUX_REGS的一个变量 可以采用点运算符的方法引用各成员变量,GpioMuxRegs.GPAMUX.all=0x077F; /CAP1-3, PWM1-6, T1pwm GpioMuxRegs.GPDMUX.bit.T1CTRIP_PDPA_GPIOD0=1; /PDPA GpioMuxRegs.GPDMUX.bit.T2CTRIP_SOCA_GPIOD1=0; /GPIOD1 GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB_GPIOD5=0; /GPIOD5 GpioMuxRegs.GPDMUX.bit.T4CTRIP_SOCB_GPIOD6=0; /GPIOD6 定义GPIO A口时,采用了一条C语句。而定义GPIO D口时,采用了4 条C语句。 编程风格可以编程者自己决定。Date43山东大学控制学院 张东亮4.4.2 C语言运算符与基本语句 1. C语言运算符2. C语言基本语句C语言运算符有算术运算符、关系运算符、逻辑运 算符、位操作运算符等。不同的运算符可以有不同的优 先级、运算对象个数与结合方向。 C语句有控制语句、表达式语句、函数调用语句 、空语句和复合语句五类。控制语句有9种。Date44山东大学控制学院 张东亮