C++Test基于CCS的单元测试
C++Test基于DSP CCS的测试,是将C++Test与CCS一起使用,无需进行特殊的集成。C++Test事实上并非与CCS开发环境集成,而是预先配置为支持CCS的编译器集,允许C++Test项目使用这些编译器并且将整个CCS项目导入C++Test工作空间。为了做好基于CCS的单元测试,有必要对DSP的开发环境进行较为深入的了解。
一、引言
自然界中各种信号(如声音)的初始形态是运动变化的,为了测量和处理它们,要用传感器把它们的特征转换成电信号,这些电信号就是模拟信号。等到这些电信号处理完后,再把它们转变为我们能看见、能听见或能利用的形态,就变成了数字信号。数字信号处理前后需要一些辅助电路,它们和数字信号处理器构成一个系统,这个系统就叫做数字信号处理系统。
二、DSP功能及特点:
DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:
1. 在一个指令周期内可完成一次乘法和一次加法;
2. 程序和数据空间分开,可以同时访问指令和数据;
3. 片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
4. 具有低开销或无开销循环及跳转的硬件支持;
5. 快速的中断处理和硬件I/O支持;
6. 具有在单周期内操作的多个硬件地址产生器;
7. 可以并行执行多个操作;
8. 支持流水线操作,使取指、译码和执行等操作可以重叠执行。
三、DSP的应用:
近年来,数字信号处理器(DSP)芯片已经广泛用于自动控制、图像处理、通信技术、网络设备、仪器仪表和家电等领域;DSP为数字信号处理提供了高效而可靠的硬件基础。
自从DSP芯片诞生以来,DSP芯片得到了飞速的发展。DSP芯片高速发展,一方面得益于集成电路的发展,另一方面也得益于巨大的市场。在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。DSP芯片的应用主要有:
1. 信号处理——如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。
2. 通信——如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。
3. 语音——如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。
4. 图像/图形——如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。
5. 军事——如保密通信、雷达处理、声纳处理、导航等。
6. 仪器仪表——如频谱分析、函数发生、锁相环、地震处理等。
7. 自动控制——如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。
8. 医疗——如助听、超声设备、诊断工具、病人监护等。
四、DSP的分类:
主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、I/O口数量、中断数量、DMA通道数等。DSP的主要供商TI,ADI,Motorola,Lucent和Zilog等,其中TI占有最大的市场份额。下面主要介绍TI的产品及分类:
1.TMS320C2000
TMS320C2000系列包括C24x和C28x系列。C24x系列建议使用LF24xx系列替代C24x系列,LF24xx系列的价格比C24x便宜,性能高于C24x,而且LF24xxA具有加密功能。 C28x系列主要用于大存储设备管理,高性能的控制场合。
2.TMS320C3x
TMS320C3x系列包括C3x和VC33,主要推荐使用VC33。C3x系列是TI浮点DSP的基础,不可能停产,但价格不会进一步下调。
3.TMS320C5x
TMS320C5x系列已不推荐使用,建议使用C24x或C5000系列替代。
4.TMS320C5000
TMS320C5000系列包括C54x和C55x系列。其中VC54xx还不断有新的器件出现,如:TMS320VC5471(DSP+ARM7)。 C55x系列是TI的第三代DSP,功耗为VC54xx的1/6,性能为VC54xx的5倍,是一个正在发展的系列。 C5000系列是目前TI DSP的主流DSP,它涵盖了从低档到中高档的应用领域,目前也是用户最多的系列。
5.TMS320C6000
TMS320C6000系列包括C62xx、C67xx和C64xx。此系列是TI的高档DSP系列。其中C62xx系列是定点的DSP,系列芯片种类较丰富,是主要的应用系列。 C67xx系列是浮点的DSP,用于需要高速浮点处理的领域。 C64xx系列是新发展,性能是C62xx的10倍。
6.OMAP系列
是TI专门用于多媒体领域的芯片,它是C55+ARM9,性能卓越,非常适合于手持设备、Internet终端等多媒体应用。
德州仪器(TI)公司现在主推四大系列DSP
1、C5000系列(定点、低功耗):C54X,C54XX,C55X 相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。处理速度在80MIPS-- 400MIPS之间。C54XX和C55XX 一般只具有McBSP同步串口、HPI并行接口、定时器、DMA等外设。值得注意的是C55XX提供了EMIF外部存储器扩展接口,可以直接使用 SDRAM,而C54XX则不能直接使用。两个系列的数字IO都只有两条。
2、C2000系列(定点、控制器):C20X,F20X,F24X,F24XX ,C28x该系芯片具有大量外设资源,如:A/D、定时器、各种串口(同步和异步),WATCHDOG、CAN总线/PWM发生器、数字IO脚等。是针对控制应用最佳化的DSP,在TI所有的DSP中,只有C2000有FLASH,也只有该系列有异步串口可以和PC的UART相连。
3、C6000系列:C62XX,C67XX,C64X 该系列以高性能著称,最适合宽带网络和数字影像应用。32bit,其中:C62XX和C64X是定点系列,C67XX 是浮点系列。该系列提供EMIF扩展存储器接口。该系列只提供BGA封装,只能制作多层PCB。且功耗较大。同为浮点系列的C3X中的VC33现在虽非主流产品,但也仍在广泛使用,但其速度较低,最高在150MIPS。
4、OMAP系列:OMAP处理器集成ARM的命令及控制功能,另外还提供DSP 的低功耗实时信号处理能力,最适合移动上网设备和多媒体家电。
其他系列的DSP曾经有过风光,但现在都非TI主推产品了,除了C3X系列外,其他基本处于淘汰阶段,如:C3X的浮点系列:C30,C31,C32 C2X和C5X系列:C20,C25,C50
每个系列的DSP都有其主要应用领域.
五、DSP的开发:
本文仍以TI公司的产品为例,介绍DSP的开发。
1、TI DSP的硬件开发
1)根据应用所处领域选择TI推荐的DSP类型
2)根据所选定的DSP之EVM板,DSK等原理图,完成DSP系统的搭建(包括外扩内存空间、电源复位系统、各控制信号管脚的连接、JTAG口的连接等);
3)根据需求,选择外围电路的扩展,一般如语音、视频、控制等领域均有成熟的电路可以从TI网站得到。外围电路与DSP的接口可参看EVM或 DSK,以及所选外围电路芯片的典型接口设计原理图;最好外围电路芯片也选择TI的,这样的话不管硬件接口有现成原理图、很多连DSP与其接口的基本控制源码都有。
4)地址译码、IO扩展等用CPLD或者FPGA来做,将DSP的地址线、数据线、控制信号线如IS/PS/DS等都引进去有利于调试。
FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogic Block)、输出输入模块IOB(Input OutputBlock)和内部连线(Interconnect)三个部分。
2、TI DSP的软件开发
了解目标版的电路设计,包括程序、数据、I/O空间的译码。DSP的CPU,memory,program memory addressing, data mem.oryaddressing的资料.熟悉以下技术的要点:
1)CCS的使用
2)CMD文件的编写
3)中断向量表文件的编写及定位
4)运行一个纯simulator的程序,了解CCS的各个操作
5)到TI网站下载相关的源码,参考源码的结构进行编程
六、CCS的特点及使用:
CCS(Code Composer Studio)代码调试器是一种合成开发环境,是TI公司推出的集成可视化DSP软件开发环境。它是一种针对标准TMS320调试器接口的交互式方法。
CCS内部集成了以下软件工具:
l DSP程序生成工具(包括C编译器、优化器、汇编器和连接器)
l 软件项目开发工具(包括代码编辑、项目建立、在线调试、在线数据观察等工具)
l 实时多线程内核DSP/BIOS(使用DSP/BIOS内核能够开发出多线程应用程序)
l RTDX组件(在代码中使用RTDX可以实现DSP程序和PC机之间的数据传输)使用CCS开发者可以对软件进行编辑、编译、调试、代码性能测试和项目管理等工作。CCS的部分功能有:
ü 观察和更改DSP系统存储器和寄存器的值;
ü 用各种图形方式描绘出DSP系统存储器中的连续数据;
ü 设置断点;
ü 在断点处自动刷新内存窗口和图形窗口;
ü 在测试点处使数据在DSP系统存储器和PC机文件之间传递;
ü 代码性能测试,计算代码段执行所花的CPU时钟周期数;
ü 反汇编显示,即将DSP系统程序存储器中的值转换为对应的
CCS目前有CCS1.1, CCS1.2 和CCS2.0等早期的版本,又有CC2000 ( 针对C2XX ),CCS5000 ( 针对C54XX )和CCS6000 (针对C6X )三个不同的型号。下面以CCS50002.0版本为例说明CCS的特点。
1、TI编译器的完全集成的环境:
CCS5000目标管理系统,内建编辑器,所有的调试和分析能力集成在一个Windows环境中。
2、对C和DSP汇编文件的目标管理:
目标编辑器保持对所有文件及相关内容的跟踪。它只对最近一次编译中改变过的文件重新编译,以节省编译时间。
3、高集成的编辑器调整C和DSP汇编代码:
CCS5000的内建编辑器支持C和汇编文件的动态语法加亮显示。使用户能很容易地阅读代码和当场发现语法错误。
4、编辑和调试时的后台编辑:
用户在使用编译器和汇编器时没有必要退出系统到DOS环境中,因为CCS5000会自动将这些工具装载在它的环境中。在其窗口中,错误会加亮显示只要双击错误就可以直接到达出错处。
5、在含有浮点并行调试管理器(PDM)的原有的MS窗口下支持多处理器CCS5000在 Windows95和Windows-me中支持多处理。PDM允许将命令传播给所有的或所选择的处理器。
6、在任何算法点观察信号的图形窗口探针:
图形显示窗口使用户能够观察时域或频域内的信号。对于频域图,FFT在主机内执行,这样就可以观察所感兴趣的部分而无须改变它的DSP代码。图显示也可以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点时,就可以迅速地观察到信号。
7、文件探针在算法处通过文件提取或加入信号或数据:
CCS5000允许用户从PC机读或写信号流。而不是实时的读信号,这就可以用已知的例子来仿真算法。
8、图形分析:
CCS5000的图形分析能力在其环境中是集成的。
在后台(系统命令)执行用户的DOS程序:
用户可以执行CCS5000中的DOS程序,并将其输出以流水方式送到CCS5000的输出窗口。且允许用户将应用程序集成到CCS5000。
9、技术状态观察窗口:
CCS5000的可视窗口允许用户进入C表达式及相关变量。结构、数组、指针都能很简单地递归扩展和减少,以便进入复杂结构。
10、代数分解窗口:
允许用户选择查看写成代数表达式的C格式,提高可读性。
11、目标DSP上的帮助:
DSP结构和寄存器上的在线帮助可以使用户不必查看技术手册。
12、用户扩展:
扩展语言(GEL)使得用户可以将自己的菜单项加到CCS5000的菜单栏中。
七、CCS项目简介:
将所有源文件添加到项目中后,就可以对整个项目进行编译、汇编和链接,最终生成能够被DSP芯片执行的DSP程序(*.out)。
DSP可执行的*.out文件只能在DSP平台上执行,该DSP平台可以是真实的硬件电路板上的DSP芯片(需要仿真器来连接PC机和硬件电路板,CCS应配置为相应的Emulator模式),也可以是CCS软件在PC机上模拟出的DSP环境(不需要仿真器和硬件电路,CCS应配置为相应的Simulator模式)。不论是哪种情况,在运行程序之前,都需要将DSP程序(*.out文件)装载到真实的或虚拟的DSP平台中,然后让真实的或虚拟的DSP去执行它。
对程序中的数据段和代码段的存放地址是自己编写*.cmd文件来确定的。我们可以通过查看*.cmd文件来获得全局数据在DSP数据存储器开项目构建后生成的*.map文件(在Debug目录下)来查看程序中所有全局变量的存放地址。
CCS提供了多种图形显示方式:Time/Fre的quency(时域/频域图)、Constellation(星座图)、Eye Diagram(眼图)、Image(二维图像),使用图形方式观察DSP存储器中的数据。
八、C++Test基于DSP CCS3.X的单元测试
对CCS项目进行单元测试,选择测试工具时,必须了解测试工具对CCS和芯片不同版本的支持程度,以C++Test为例,针对不同的CCS版本,C++Test也提供不同的安装包。如果CCS是3.3以下版本(包含3.3),需要安装C++Test的独立版,如果是CCS是3.3以上版本,则需要安装C++Test插件版,插件版可以集成到CCS开发环境中(作为一个菜单项),使用方法跟独立版基本相同。C++Test对TI芯片的支持环境如下:
独立版支持下面的编译器/环境版本:
· 德州仪器的 Code Composer 3.1 和 3.3 (Windows 宿主端)
· TMS320C6x C/C++ 编译器 v6.0.8andv5.1.0
· TMS320C2000 C/C++ 编译器 v4.1.0 (仅支持静态分析)
C++Test插件版支持下面的编译器/环境版本:
· 德州仪器 Code Composer Studio 4
· TMS320C6xC/C++ 编译器 v6.1.x
· TMS320C2000C/C++ 编译器 v5.2.x
· MSP430 C/C++ 编译器v3.2.x
安装完成后,开始导入项目,导入步骤如下:
1. 选择 File(文件)> New(新建)> Project(项目),选择 Import CodeComposer Studio projects(导入 Code Composer Studio 项目),然后单击下一步。
2. 输入 (或浏览到) 到适当项目/工作空间文件或目录的路径。
3. 单击刷新,选择要导入的项目,然后单击下一步。
4. 设置导入目的地,项目内容,和使用默认项目配置,然后单击完成。
如下图所示:
一旦项目被导入,开始创建测试配置,复制“内建”中“嵌入式系统”下Run TI CCS 3.xTests” ,可以如下修改用于编译器/链接器选项源的原始的 CCS 项目配置名称 Project Properties(项目属性)>Parasoft> C++test> Build Settings(构建设置)。如下图所示:
在C++Test中执行“单元测试”:选择一个被测试对象,可以是一个源文件,也可以是几个源文件,也可以是整C++Test个工程,使其高亮,然后,选择工具条中的“”,下拉 >> 选择“测试执行”>> “用户自定义”>> “Run TI CCS 3.x Tests”
执行成功后,即可查看结果。(若有问题导致单元测试执行不成功,则通过“控制台”下的输出信息分析出错原因,查找出错原因。)