Blackfin双核处理器与应用开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 VisualDSP++ 5.0

Blackfin系列汇编语言指令集使用了一个代数语法,易于编程、可读性强。特殊调整过的指令集具有灵活的、高密度编码特点,能编译成一个非常小的最终代码。也提供了非常有特色的多功能指令,允许程序员在单个指令中使用更多的处理器内核资源。与微处理器多数特征相联系,编译C和C++源代码时这个指令集是非常有效的。另外,体系结构支持用户(算法/应用代码)和监控(O/S内核,设备驱动,调试器,ISR)操作模式,允许多种访问ADSP-BF561资源的级别。汇编语言利用了处理器独特的体系结构,提供了如下的优势:

(1)无缝集成的DSP/CPU特征对于8-bit和16-bit操作都是优化的。

(2)多发射加载/存储的改进的哈佛体系结构,每周期支持两个16-bit MAC或4个8-bit ALU,以及两个加载/存储操作和两个指针更新。

(3)所有寄存器、I/O、存储器都映射到一个统一的4G字节存储器空间,提供了一个简化的编程模型。

(4)具有微控制器特征,如任意位和位段操作、插入、提取;8-bit、16-bit、32-bit数据类型的整数操作;独立的用户和监控堆栈指针。

代码密度增强包括16-bit和32-bit指令的混合,无须模式切换或代码分隔。常用指令是编码为16位的。

文件类型 如图1-5 所示为开发应用程序将用到的文件类型。最左侧的是源文件(C语言和汇编语言文件),它们与C运行头(basiccrt.s)一起输入编译器和汇编器。编译器和汇编器将生成目标文件(.doj)。目标文件中的所有代码和数据都具有标签信息,链接器以此进行解析,并将相关内容映射到相应存储器段。链接器是利用目标文件、第3方库代码或用户库代码(.dlb)以及链接器描述文件(.ldf)来解析这些标签信息的,并生成可执行文件(.dxe),这个可执行文件可以在目标处理器或模拟器上运行。在“最终应用”中,还需要借助其他组件将这个可执行文件从外部存储器中映射到适当的内存区,这个组件被称为“引导映像”,即加载程序文件。这个加载程序文件还需要调用一个被称为“引导代码”的组件,即一个单独的DXE文件,如果代码溢出到外部存储器,那么硬件就必须在向该存储器导入数据之前,对其进行初始化,因此在最终完成的应用程序中,必须将这个“初始化代码”或“引导代码”置于可执行代码之前。

图1-5 开发应用程序用到的文件类型

VisualDSP++特点 VisualDSP++是一个灵活的管理系统,是集成了VisualDSP++Kernel(VDK)的集成开发与调试环境(IDDE),提供了一套开发处理器应用程序和工程的工具。VisualDSP++ IDDE为编辑、创建和调试过程提供了完善的图形控制,在这个集成环境里,可以在编辑、创建和调试操作间轻松切换。VisualDSP++包括一个或多个以下组件:带实时运行库的C/C++编译器;汇编器、链接器、预处理器、归档器;加载器和分割器;模拟器;EZ-KIT Lite评估系统(需单独购买);仿真器(需单独购买)。

VisualDSP++支持ELF/DWARF-2(Executable Linkable Format/Debug With Arbitrary Records Format)可执行文件,支持由链接器产生的所有可执行文件格式。如果配置有第3方开发工具,用户可以选择编译器、汇编器或链接器用于特定目标创建。

1.源文件编辑特点

VisualDSP++简化了编写源文件所涉及的任务,可以轻松实现创建、查看、打印、内部移动和定位信息所需要的所有操作。

(1)编辑文本文件。可以方便地创建和修改源文件,查看代码开发工具产生的列表或映像文件。源文件是构成工程的C/C++语言或汇编语言文件,工程还可以包括另外的文件,如数据文件和链接器描述文件(.ldf,包含了链接器的命令输入)。

(2)编辑窗口。可以打开多个编辑窗口(源窗口)来查看和编辑相关文件,或为一个单独文件打开多个编辑窗口,VisualDSP++编辑器是一个集成的代码编写工具。

(3)指定语法颜色。可以指定编辑窗口里可视文本对象颜色选项以增强可视效果,有助于文本定位,因为关键字、引用和注释是以明显不同颜色显示的。

(4)上下文-敏感表达式估算。可以将鼠标指针移动到某变量的一定范围内来查看该变量的值。

(5)状态图标。视图图标用于指示断点、书签和当前PC位置。

(6)查看错误详细信息和错误代码。在输出窗口的创建视图里采用高量的错误代码(如cc0251)和按“F1”键来显示错误的详细信息,可以双击一个错误行将跳到编辑窗口里的错误代码上。

2.工程管理特点

VisualDSP++为开发处理器应用程序提供了灵活的工程管理,包括建立、定义和创建处理器工程所必需的操作。

(1)定义和管理工程。能够识别代码开发工具处理工程所创建的文件,可以一次性建立工程的定义,或之后再修改它以满足开发所需要的改变。

(2)使用和管理代码开发工具。可通过配置选项来指定代码开发工具如何处理输入和产生输出,工具设置与代码开发工具的命令行开关是对应的,可以一次性定义这些选项,或之后再修改它以满足需要。

(3)查看并对工程创建的结果做出回应。可以在创建过程中查看工程状态,如果需要的话可以停止创建,可以双击输出窗口里的一个错误消息来查看产生该错误的源代码,或遍历错误信息。

(4)管理源文件。可以从工程窗口中管理源文件、跟踪文件依赖性来显示软件文件关系,VisualDSP++使用代码开发工具处理工程并产生处理器程序,也提供了源代码控制(SCC)接口,可以使用SCC应用程序而无须离开IDDE。

3.调试特点

在调试工程时,可以进行如下操作:

(1)查看和调试混合的C/C++与汇编代码。可以查看显示有汇编代码的C/C++源代码,行号和符号信息有助于在源代码级调试汇编文件。

(2)运行命令行脚本。可以使用脚本定制关键调试特点。

(3)使用存储器表达式。可以使用涉及存储器的表达式。

(4)使用断点来查看寄存器和存储器。可以快速添加和移除、使能和禁止断点。

(5)设置模拟观察点。可以在堆栈、寄存器、存储器或符号上设置观察点,以便停止程序执行。

(6)统计剖析目标处理器的PC(仅JTAG仿真器调试目标)。可以进行随机采样并图形化显示它们,以便知道程序哪个地方花费了大量时间。

(7)线性剖析目标处理器的PC(仅模拟)。可以采样每次执行的PC并提供程序执行情况的精确的和完整的图形显示。

(8)使用I/O数据流产生中断。可以建立串口(SPORT)或存储器映射的I/O。

(9)创建定制的寄存器窗口。可以配置定制的寄存器窗口来显示一套指定的寄存器。

(10)根据处理器存储器数据绘图。可以选择多种绘图类型、数据处理选项和显示选项。

(11)跟踪程序执行历史。可以跟踪程序如何到达某个点上,并显示读、写和符号名称有关的信息。

(12)查看汇编指令的流水线深度。可以通过流水线界面查询目标处理器来显示流水线阶段。

4.VDK特点

VDK是一个可扩展的软件,是为在ADI处理器上高效操作而特别开发的。VDK与VisualDSP++是紧密结合的,Kernel使得用户可以从软件设计中抽象出硬件实现的细节,从而集中精力来处理算法,Kernel为应用开发提供了所需要的基本创建模块。Kernel的属性描述如下:

(1)自动的。VisualDSP++自动地为每个对象用指定的语言产生源代码框架。

(2)确定性的。VisualDSP++指定了一个VDK API的执行时间是否是确定性的。

(3)多任务的。Kernel任务(线程)是相互独立的,每个线程都有它自己的堆栈。

(4)模块化的。Kernel由各种组件构成,未来发布的VDK可能提供另外的功能。

(5)可移植的。大多数Kernel组件是用ANSI标准C或C++编写的,对其他ADI处理器来说是可移植的。

(6)优先性。Kernel的基于优先级的调度程序使得最高优先级线程在任何时间都无须等待信号就可以运行。

(7)原型化。Kernel和VisualDSP++基于一系列模板文件创建一个初始文件集,整个应用程序是原型化的,并准备好可进行测试。

(8)可靠的。Kernel提供了实时运行过程中的错误检测。

(9)可扩展的。如果工程没有包括Kernel功能,那么就不会将支持代码引入目标系统。

5.VisualDSP++ 5.0特点

VisualDSP++ 5.0包括如下新功能和增强功能:

(1)支持新处理器。

(2)填充和转储二进制文件支持。除了文本文件,还可以选择一个二进制文件填充到存储器,或从存储器转储到一个二进制文件,也可以选择二进制文件数据的字节序(小尾(Little Endian)或大尾(Big Endian)字节序)。

(3)内核文件支持。可以把停止运行的目标的整个寄存器状态和存储器内容转储到一个内核文件里,之后再通过IDDE加载它来恢复保存的目标状态以便检查目标,这使得ADI支持用户问题诊断。这个内核文件还可以用于从一个In-Circuit Emulator(ICE)移植一个运行的DXE文件到一个模拟器会话来更加详细地研究一个指令序列。可以在感兴趣的指令序列执行前那个时刻设置一个断点,然后输出内核文件,再将其加载到模拟器。这假定模拟器共享ICE同一套寄存器,并可以像ICE那样访问程序相关的所有存储器块。这个能力的另一个优点是理解程序序列的作用。它可以产生一个内核文件,执行一个子程序后再产生第2个内核文件,然后将这两个内核文件转换成文本文件格式,并比较这两个文件的差别来展示这个子程序的作用。

(4)帮助中的类别。可以通过优先设置或通过Windows“Start”菜单发起一个特定帮助类别来“过滤”VisualDSP++。现在有3 种处理器特定的帮助类别(每个处理器系列一个)以及一个包含所有处理器系列信息的完整帮助,一个“自动的”选项显示了当前所选调试会话的帮助,每个帮助类别(如Blackfin处理器系列帮助)显示了与那个特定处理器系列有关的信息。选择帮助类别,实际上就是从帮助中移除了其他处理器系列的信息,这改善了在帮助中快速定位信息的能力,在运行一个“搜索”或在帮助索引中查找一个词条时尤其有效。

(5)新的工程类型。对工程向导进行了改变,简化了新工程的创建过程。

(6)控制自动断点。可以配置程序加载后是否设置自动断点,可以指定加载后要设置的另外的断点,还可以指定这些断点是软件断点还是硬件断点。

(7)调用堆栈(Call Stack)窗口的增强功能。为了改善“Release”配置的调试,提供了调用堆栈,而不管是否提供了调试信息。在调试信息不可用时,若使用了这个Call Stack窗口,双击该窗口中的某一项将打开反汇编窗口,并跳到Call Stack窗里相关联的那个特定项的地址处。在这两个窗口中可以基于每个表达式设置显示格式,此外可用栏用于显示表达式的类型、地址、大小和格式。

(8)独立的Flash编程器。该工具为开发/原型阶段和早期预生产阶段之间提供了Flash编程支持。这个独立的Flash编程器使得开发工程师可以用一个免许可证工具来手动或自动地处理这个编程过程,并允许生产技术人员在正式生产产品之前可以重复地编程任意多的板子。