1.5 工程开发
在工程开发过程中,VisualDSP++可交互式地帮助用户观察和修改处理器和存储器里的数据。本节将介绍VisualDSP++编程概述、工程开发阶段、目标(Target)、平台(Platform)、调试概述、VDK、程序开发步骤等内容。
1.VisualDSP++编程概述
采用VisualDSP++进行有效程序设计依赖于用户对4个步骤的掌握程度,用户必须掌握用VisualDSP++进行工作、用VisualDSP++实现结构化软件设计、用VisualDSP++优化性能、用VisualDSP++测试和调试用户程序的方法。
用户应该具备VisualDSP++的应用知识以及所有可用目标和平台的前端知识,应该知道如何和何时使用其各种功能,并对下面这些工程基本要素有足够的了解:
(1)用“属性页”进行工作。工程选项对话框的“属性页”提供了类似于命令行开关的选项。
(2)建立调试会话。用户要知道模拟、评估(用EZ-KIT Lite评估系统)、仿真3个开发阶段的区别。
(3)理解程序段(Program Section)和存储器段(Memory Segment)是如何关联到一个物理的处理器存储器的,熟悉专家链接器。
(4)使用外设。包括建立和处理用C语言和汇编语言编写的中断。
结构化软件设计应考虑软件设计、代码重用和协同工作能力等因素,如果用户刚开始接触嵌入式系统,应尝试弄明白组件软件背后的作用和动机、RTOS的作用、如何使用VDK来管理多个执行线程和线程间的通信。
使用VisualDSP++优化性能时,用户应该理解如何发挥处理器的特点、如何使用一个结构化的方法来开发软件,接下来优化软件就会充分利用处理器的计算能力。这需要理解编译器优化器,编写C语言和汇编语言的混合程序,在汇编中访问C/C++数据结构,利用C++的优势,建立和使用覆盖,配置L1存储器作为Cache与SRAM,使用统计剖析。
使用VisualDSP++测试和调试时用户应该能较好地理解各种可用工具以便产生优化的软件,最后一步要应用软件测试和调试技术,包括使用高级绘图窗口收集和查看数据,使用编译模拟(Compiled Simulation),使用ActiveX和COM Automation创建回归测试环境并利用与其他程序协同工作的能力。
2.工程开发阶段
典型的工程包括3个阶段:模拟、评估、仿真,如图1-6所示。VisualDSP++为各阶段提供了调试工具,见表1-1。硬件工程师开发新硬件(手机、计算机等)时,通常是从采用模拟环境开始工程开发的。模拟将模仿系统存储器和I/O,这允许查看部分目标系统硬件行为。模拟器是一个模拟处理器行为的软件,可以在VisualDSP++中运行一个模拟目标(无物理处理器),可以创建、编辑和调试程序,甚至在处理器制造出来之前就可以这样做。在工程早期的设计阶段可以使用EZ-KIT Lite评估系统来决定最适合需要的处理器。将EZ-KIT Lite板连接到PC,就可以检测处理器。一旦硬件准备好了,就可以直接转移到JTAG仿真器,它连接PC和实际的处理器目标板,仿真器提供了目标板和PC之间的快速通信,可以用仿真器下载应用软件,并在VisualDSP++中进行调试。仿真器软件执行通信,以便可以看到用户代码是如何影响处理器性能的。
表1-1 模拟、评估、仿真过程中的可用工具
图1-6 工程开发阶段
3.目标(Target)
Target(或调试Target)是指VisualDSP++和一个处理器(或一组处理器)之间的通信电路,一个Target可以是一个模拟器、EZ-KIT Lite评估板或仿真器。用户系统可以包含多个Target,如JTAG仿真器通过主机PC的PCI总线同一个或多个物理设备进行通信,而HPUSB-ICE仿真器还可以通过PC的USB接口与一个外设进行通信。模拟Target,如ADSP-2106x系列模拟器,是一个纯软件模块,不要求提供处理器和任何相关的调试硬件。模拟过程中VisualDSP++读取可执行文件(.dxe)并在软件中执行它,类似于在硬件中一个处理器执行另一个处理器镜像的方式,VisualDSP++模拟一个“.ldf”文件里指定的存储器和I/O设备,一些处理器允许用户运行一个编译模拟。模拟Target具有硬件模拟功能,当VisualDSP++连接了一个模拟目标后,可以模拟下面的硬件状态:
(1)可能在程序执行过程中发生的随机中断。
(2)通过处理器I/O引脚进行数据传送。
(3)从一个PROM或主机处理器引导处理器。
建立VisualDSP++产生程序执行过程中的随机中断可以使用户练习编写代码中的中断服务程序(ISR)。EZ-KIT Lite Target是一个用于评估特定处理器的开发板,ADI为每个处理器系列都提供了EZ-KIT Lite评估系统和演示程序。仿真器Target是一个模块,它控制一个物理处理器连接到一个JTAG仿真器系统,如USB-ICE仿真器可以通过主机USB接口与一个或多个物理设备通信。
4.平台(Platform)
Platform是指Target用于进行通信的处理器的配置。一个给定的调试Target可以有几个平台。例如,如果系统中安装有3个仿真器,可以选择仿真器2作为想要使用的平台,所要使用的平台依赖于工程开发阶段,见表1-2。使用VisualDSP++配置程序(如图1-7所示)将联合外部硬件Target与一个仿真器,因此可以建立适当的IDDE调试会话。在连接了EZ-KIT Lite评估系统或仿真器之后对其上电,Windows设备管理器就会对其进行识别,然后可以选择或创建一个需要的合适的平台来配置调试会话。如果那个合适的平台还没有显示出来,可以用指定的名字、类型和JTAG链(扫描路径)来创建或配置一个。也可以使用VisualDSP++配置程序来运行ICE Test(如图1-8所示),它是一个用来检测仿真器功能的工具。
表1-2 开发阶段和所支持的平台
图1-7 VisualDSP++配置程序
图1-8 ICE Test工具
5.调试概述
一旦成功创建了处理器工程并产生了可执行文件,就可以调试工程了。VisualDSP++里开发的工程的运行方式是硬件或软件调试会话。在表1-1里,“是”表示在建立和调试一个程序过程中可用的调试工具。用户可以连接并控制任意ADI处理器或模拟器的操作,下载应用程序代码到处理器并使用VisualDSP++的调试工具,以确保程序的功能是所期望的。VisualDSP++是一个进入Target处理器或模拟器内部工作的窗口,从这个接口可以进行如下操作:
(1)运行、单步调试和停止程序运行,还可以设置断点和观察点。
(2)查看处理器的存储器、寄存器和堆栈的状态。
(3)执行时钟周期精度的统计剖析或线性剖析。
(4)执行集成的多处理器调试(仅仿真器会话)。
6.VisualDSP++ Kernel(VDK)
一个工程可以选择性地包括VDK,它是一个操作在算法、外设和控制逻辑间的软件。通过工程窗口的Kernel标签可以访问构建和扩展应用程序开发的一个树控件。通过这个树控件,可以添加、修改和删除Kernel元素,如线程类型、引导线程、轮循优先级、信号量、事件、事件位、中断和设备驱动。两个VDK特定窗口“VDK State History”和“Target Load”提供了VDK信息,另一个VDK窗口“VDK Status”则提供了当一个VDK使能的程序停下来时线程的状态数据。
7.程序开发步骤
在VisualDSP++环境里程序开发包括如下8个步骤,通过这些步骤可以连贯、准确地创建工程,只需要最少的工程管理操作,这降低了开发时间,使得用户可以将精力放在代码开发上。
Step 1:创建工程
VisualDSP++中的所有开发都是在一个工程中进行的,工程文件(.dpj)存储了程序的创建信息:源文件列表和开发工具选项设置。VisualDSP++包括一个工程向导,它简化了新工程的创建过程。
Step 2:配置工程选项
在添加文件到工程前要定义Target处理器并设置工程选项(或接受默认的设置),工程选项对话框(也称为属性页)提供了对工程选项的访问,它使能了相应的创建工具来正确地处理工程的文件。
Step 3:添加和编辑工程源文件
一个工程通常包含一个或多个C、C++或汇编语言源文件,创建一个工程和定义了其目标处理器后就可以向该工程添加新文件或导入现有文件,VisualDSP++编辑器就用于创建新文件或编辑现有文本文件。可以向工程添加任何类型的文件,创建工程时开发工具只选择性地处理能识别的文件类型。创建新的文本文件并添加到工程时将更新工程窗口中的文件树。编辑工程中的文件时,可以定制语言和处理器特定语法的颜色,也可以创建和搜索书签。工程依赖关系控制源文件如何使用其他文件中的信息,然后决定创建顺序,VisualDSP++维持有一个Makefile文件,它存储有工程中每个文件的依赖信息,当改变了工程的创建选项、向工程添加了一个文件或从工程菜单中选择了“Update Dependencies”时,VisualDSP++将更新依赖信息。
Step 4:指定工程创建选项
在创建工程、设置目标处理器、添加或编辑工程的源文件之后要配置工程的创建选项。在使用开发工具创建可执行文件之前要指定选项或接受默认选项,可以为整个工程或单独文件指定选项,或指定一个定制创建,VisualDSP++将保持对创建选项的改变。
(1)配置。工程配置设置控制着创建过程和结果,默认情况下可选择“调试(Debug)”或“发布(Release)”选项。
① 选择“调试”并让所有其他选项为默认设置,将创建一个可以进行调试的工程,编译器将产生调试信息。
② 选择“发布”并让所有其他选项为默认设置,将创建一个有限的或无调试能力的工程。“发布”创建通常是性能优化的,用户测试套件应该验证该发布是否可以正确地创建操作而不会引入明显的故障。
(2)工程范围的文件和工具选项。接下来必须决定是否使用工程范围的选项设置或单独的文件设置,对于VisualDSP++中无预先存在目标文件和存档(库)文件的工程的完整创建,通常是使用工程范围的选项,新添加到工程中的文件将继承这些设置。
(3)单独文件和工具选项。有时需要为单独文件指定工具设置,每个文件与两个属性页有关联:General页,它让用户为中间文件和输出文件选择输出路径;工具特定的属性页(Compile、Assemble、Link等),可以让用户选择选项。
Step 5:创建工程的调试版本(可执行文件)
接下来是创建工程的调试版本,创建过程中每个代码开发工具的状态消息将出现在输出窗口里。为了产生调试器兼容的输出,输出文件类型必须是可执行文件(.dxe)。
Step 6:创建调试会话并加载可执行文件
成功创建可执行文件后就可以建立调试会话了,可以用硬件或软件会话来运行工程。在指定了处理器、连接类型和平台后,就可以加载工程的可执行文件了。通过“Preferences”对话框的“General”页可以配置VisualDSP++以自动加载文件并执行到用户代码的主函数处。
Step 7:运行和调试程序
成功创建了调试会话并创建和加载了可执行程序后,就可以运行和调试程序了。如果工程不是当前的(含有过期的源文件或依赖信息),VisualDSP++将提示在加载和调试可执行文件之前重新创建工程。
Step 8:创建工程的发布版本
完成了应用程序的调试后就可以创建工程的发布版本,以便在处理器上运行。