1、13 嵌入式软件的开发环境嵌入式软件的开发环境本章主要内容:本章主要内容:(1)嵌入式软件的开发过程嵌入式软件的开发过程(2)嵌入式软件的建立及其工具嵌入式软件的建立及其工具(3)嵌入式软件的下载及其工具嵌入式软件的下载及其工具(4)嵌入式软件的调试及其工具嵌入式软件的调试及其工具(5)典型的嵌入式软件开发环境典型的嵌入式软件开发环境23.1 嵌入式软件的开发过程嵌入式软件的开发过程为嵌入式系统开发应用程序的过程与为为嵌入式系统开发应用程序的过程与为PC机机开发应用软件过程有一定的不同,出现了一开发应用软件过程有一定的不同,出现了一些在些在PC机上不曾有的工作阶段。在同样的一机上不曾有的工作阶
2、段。在同样的一个阶段,具体的工作也有很多的不同。个阶段,具体的工作也有很多的不同。3交叉开发模式交叉开发模式应用程序的编辑、编译、链接等过应用程序的编辑、编译、链接等过程都在宿主机上完成,程都在宿主机上完成,而应用程序要在和宿主机有很大而应用程序要在和宿主机有很大差别的目标机上实际运行。差别的目标机上实际运行。应用程序的调试主要是应用程序的调试主要是在宿主机上进行,但在在宿主机上进行,但在很多情况下要借助于目很多情况下要借助于目机。机。4嵌入式软件的开发过程嵌入式软件的开发过程53.2 嵌入式软件的建立及其工具嵌入式软件的建立及其工具嵌入式软件的建立步骤:嵌入式软件的建立步骤:q源代码编写源代
3、码编写q编译编译q链接链接q定址定址6嵌入式软件的建立步骤嵌入式软件的建立步骤73.2.1 源代码编写源代码编写源代码编写阶段的工作任务是使用适当的程序设计源代码编写阶段的工作任务是使用适当的程序设计语言编写程序的源代码。比如说用语言编写程序的源代码。比如说用C语言、语言、C+语语言、汇编语言等。就目前的情况来看,使用最多的言、汇编语言等。就目前的情况来看,使用最多的是是C语言。这其中的原因可能有以下三个:其一,语言。这其中的原因可能有以下三个:其一,受通用计算机的影响,受通用计算机的影响,C语言的使用非常广泛,几语言的使用非常广泛,几乎每一种处理器都支持乎每一种处理器都支持C语言的编译器,而
4、且有相语言的编译器,而且有相当多的程序员具有用当多的程序员具有用C语言进行程序开发的丰富经语言进行程序开发的丰富经验。其二,在嵌入式系统领域中,验。其二,在嵌入式系统领域中,C语言是一种最语言是一种最具统一标准的程序设计语言。其三,具统一标准的程序设计语言。其三,C语言是一个语言是一个非常非常“低级低级”的语言。它赋于程序员很多直接控制的语言。它赋于程序员很多直接控制计算机硬件的能力,但又不失去高级语言所固有的计算机硬件的能力,但又不失去高级语言所固有的好处。它的这种特点对嵌入式系统更为重要。好处。它的这种特点对嵌入式系统更为重要。83.2.2 编译编译编译阶段要做的工作是用交叉编译或汇编编译
5、阶段要做的工作是用交叉编译或汇编工具处理程序的源代码,产生目标文件。工具处理程序的源代码,产生目标文件。当宿主机和目标机采用同样类型的处理器当宿主机和目标机采用同样类型的处理器时,没有时,没有“交叉交叉”的问题,是这一阶段的的问题,是这一阶段的一个特例。这时编译工作往往简单些。一个特例。这时编译工作往往简单些。9宿主机宿主机目标机目标机DEC Alpha Digital UnixHP 9000/700 HP-UXIBM Power PC AIXIBM RS6000 AIXSGI Iris IRIXSun SPARC SolarisSun SPARC SunOSx86 Windows 95/NT
6、x86 Red Hat LinuxAMD/Intel x86Fujitsu SPARCliteHitachi H8/300、H8/300H、H8/SHitachi SHIBM/Motorola PowerPCIntel i960MIPS R3xxx、R4xx0Mitsubishi D10v、M32R/DMotoroln 68kSun SPARC、MicroSPARCToshiba TX39GNU C/C+编译器支持的宿主机编译器支持的宿主机/目标机组目标机组合合103.2.3 链接链接交叉编译器所产生的目标文件是不完整的,它里交叉编译器所产生的目标文件是不完整的,它里面可能还有未定义的内部变量
7、和函数引用。链接面可能还有未定义的内部变量和函数引用。链接阶段的工作就是用链接工具把这些目标文件组合阶段的工作就是用链接工具把这些目标文件组合到一起,使所有未定义的变量和函数在程序库或到一起,使所有未定义的变量和函数在程序库或其它目标文件中找到它的定义。其它目标文件中找到它的定义。链接阶段得到的结果是一个链接阶段得到的结果是一个“可重定位可重定位”的程序的程序文件。其中包含了来自输入文件的所有代码和数文件。其中包含了来自输入文件的所有代码和数据。链接工具通过合并输入文件里的代码段、数据。链接工具通过合并输入文件里的代码段、数据段来完成这一工作。链接完成后,所有输入文据段来完成这一工作。链接完成
8、后,所有输入文件里的机器语言代码将出现在输出文件的代码段件里的机器语言代码将出现在输出文件的代码段里,所有变量将出现在输出文件的数据段里。里,所有变量将出现在输出文件的数据段里。113.2.4 定址定址要使链接工具输出的文件变成可执行的程序文件还要使链接工具输出的文件变成可执行的程序文件还必须做一件事,那就是为程序的代码和数据指定存必须做一件事,那就是为程序的代码和数据指定存储地址。指定存储地址这项工作是需要在定址阶段储地址。指定存储地址这项工作是需要在定址阶段通过定址工具来完成的任务。定址工具的输入是通过定址工具来完成的任务。定址工具的输入是“可重定位可重定位”的程序文件,输出是可执行的二进
9、制的程序文件,输出是可执行的二进制文件。它们二者之间的转换,由定址工具自动完成,文件。它们二者之间的转换,由定址工具自动完成,但应用程序的开发者必须向定址工具提供有关目标但应用程序的开发者必须向定址工具提供有关目标机上的存储器的信息。定址工具将用这些信息来为机上的存储器的信息。定址工具将用这些信息来为“可重定位可重定位”程序里的每一个代码段和数据段指定程序里的每一个代码段和数据段指定物理存储地址。物理存储地址。123.3 嵌入式软件的下载及其工具嵌入式软件的下载及其工具程序的下载就是把在宿主机上生成的目标程序的下载就是把在宿主机上生成的目标机内存映像文件放到目标机的机内存映像文件放到目标机的R
10、AM存储器存储器或者或者Flash ROM上面去,以便进行调试和上面去,以便进行调试和运行。程序下载的方法主要有以下几种:运行。程序下载的方法主要有以下几种:(1)使用使用ROM仿真器仿真器(2)使用在线仿真器(使用在线仿真器(ICE)(3)使用片上调试器(使用片上调试器(ICD)(4)使用目标机上的驻留程序使用目标机上的驻留程序13使用目标机上的驻留程序使用目标机上的驻留程序生成了目标机的内存映象文件之后,就可以使用生成了目标机的内存映象文件之后,就可以使用bootloader程序将这个内存映像文件下载到目标程序将这个内存映像文件下载到目标机上面去。宿主机端软件和机上面去。宿主机端软件和bo
11、otloader程序一般程序一般是通过串口相互连接。当然也可以通过以太网相是通过串口相互连接。当然也可以通过以太网相连接。在使用串口相连接时,下载程序的工作可连接。在使用串口相连接时,下载程序的工作可分为以下几步进行:分为以下几步进行:(1)用串口线连接宿主机和开发评估板的串口。用串口线连接宿主机和开发评估板的串口。(2)在宿主机上启动在宿主机上启动bootloader程序。当使用以程序。当使用以Windows为操作系统的为操作系统的PC机做宿主机时,通常机做宿主机时,通常以超级终端程序做宿主机端软件。以超级终端程序做宿主机端软件。14(3)在目标机上按复位键,重新启动目标机。目标机在目标机上
12、按复位键,重新启动目标机。目标机被重新启动后,将自动执行驻留在被重新启动后,将自动执行驻留在ROM中的中的bootloader程序。(一些开发评估板可以通过跳线选程序。(一些开发评估板可以通过跳线选择系统重新启动后从不同的地址开始运行。)择系统重新启动后从不同的地址开始运行。)(4)将宿主机的串口和目标机的串口设置为相同的传将宿主机的串口和目标机的串口设置为相同的传输速率。在设置时应选择尽可能高的速率,以节省输速率。在设置时应选择尽可能高的速率,以节省程序下载所花费的时间。设置目标机串口传输速率程序下载所花费的时间。设置目标机串口传输速率的方法是同过超级终端程序输入相应的命令。的方法是同过超级
13、终端程序输入相应的命令。(5)在宿主机上通过超级终端程序输入在宿主机上通过超级终端程序输入bootloader程程序的命令,将开发评估板设置为等待接收下载程序序的命令,将开发评估板设置为等待接收下载程序状态,并指定程序下载的位置。状态,并指定程序下载的位置。(6)在宿主机上发出下载命令。开始进行程序下载。在宿主机上发出下载命令。开始进行程序下载。153.4 嵌入式软件的调试及其工具嵌入式软件的调试及其工具q直接测试法直接测试法q驻留程序法驻留程序法q插桩法插桩法qROM仿真器法仿真器法q在线仿真器法在线仿真器法q片上调试法片上调试法q模拟器法模拟器法163.4.1 直接测试法直接测试法直接测试
14、法是嵌人式系统发展的早期经常采用的一直接测试法是嵌人式系统发展的早期经常采用的一种调试方法。原因是这种方法需要的调试工具非常种调试方法。原因是这种方法需要的调试工具非常简单,比较适应当时的实际情况。采用这种方式进简单,比较适应当时的实际情况。采用这种方式进行软件开发的基本步骤如下:行软件开发的基本步骤如下:17(1)在宿主机上编写程序的源代码;在宿主机上编写程序的源代码;(2)在宿主机上用交叉编译工具对程序的源代码进在宿主机上用交叉编译工具对程序的源代码进行编译,生成可执行程序;行编译,生成可执行程序;(3)将可执行程序固化到将可执行程序固化到EPROM中;中;(4)将将EPROM插到目标机的
15、插座上;插到目标机的插座上;(5)在目标机上启动程序运行,若程序正确,则转在目标机上启动程序运行,若程序正确,则转到第到第(8)步;步;(6)在在宿主机上修改程序的源代码,纠正错误;在在宿主机上修改程序的源代码,纠正错误;(7)转到第转到第(2)步;步;(8)程序开发完成。程序开发完成。183.4.2 驻留程序法驻留程序法驻留程序常被称为驻留程序常被称为bootloader程序。它需要有程序。它需要有一个与之配合工作的宿主机端软件。宿主机一个与之配合工作的宿主机端软件。宿主机端软件和端软件和bootloader可建立起连接。对目标机可建立起连接。对目标机来说宿主机端软件好比是一个终端。通过它来
16、说宿主机端软件好比是一个终端。通过它可以输入针对目标机的控制命令。目标机上可以输入针对目标机的控制命令。目标机上的应用程序输出在标准输出设备上的内容可的应用程序输出在标准输出设备上的内容可以通过宿主机端软件显示出来。因此,只要以通过宿主机端软件显示出来。因此,只要在被调试的程序中将一些重要的信息用在被调试的程序中将一些重要的信息用printf语句显示出来就可以帮助程序的调试。语句显示出来就可以帮助程序的调试。19在利用驻留程序法作为调试手段时,程序的在利用驻留程序法作为调试手段时,程序的开发步骤如下:开发步骤如下:(1)在宿主机上编写程序的源代码。在编写源在宿主机上编写程序的源代码。在编写源代
17、码时应根据需要加入若干代码时应根据需要加入若干printf语句,目语句,目的是通过宿主机端软件显示某些变量的值,的是通过宿主机端软件显示某些变量的值,以便帮助进行程序调试;以便帮助进行程序调试;(2)在宿主机上编译程序的源代码,生成可执在宿主机上编译程序的源代码,生成可执行程序;行程序;(3)将可执行程序的代码通过将可执行程序的代码通过bootloader程序程序提供的功能下载到目标机的提供的功能下载到目标机的RAM上;上;20(4)通过通过bootloader程序提供的功能启动被调程序提供的功能启动被调试的程序;试的程序;(5)如果程序运行正确,则去掉程序中不必要如果程序运行正确,则去掉程序
18、中不必要的的printf语句后转到第语句后转到第(9)步;步;(6)借助于用借助于用printf语句显示的信息,发现程语句显示的信息,发现程序中的错误;序中的错误;(7)在宿主机上修改程序的源代码,纠正错误;在宿主机上修改程序的源代码,纠正错误;(8)转到第转到第(2)步;步;(9)用用bootloader程序提供的功能将调试正确程序提供的功能将调试正确的程序固化到目标机上。的程序固化到目标机上。213.4.3 插桩法插桩法22在利用插桩法作为调试手段时,程序的开发步骤如在利用插桩法作为调试手段时,程序的开发步骤如下:下:(1)在宿主机上编写程序的源代码;在宿主机上编写程序的源代码;(2)在宿
19、主机上编译程序的源代码,生成可执行程序;在宿主机上编译程序的源代码,生成可执行程序;(3)将可执行程序的代码下载到目标机的将可执行程序的代码下载到目标机的RAM上;上;(4)使用调试器进行调试;使用调试器进行调试;(5)如果程序正确,则转到第如果程序正确,则转到第(9)步;步;(6)在调试器的帮助下定位错误;在调试器的帮助下定位错误;(7)在宿主机上修改程序的源代码,纠正错误;在宿主机上修改程序的源代码,纠正错误;(8)转到第转到第(2)步;步;(9)将可执行程序固化到目标机上。将可执行程序固化到目标机上。233.4.4 ROM仿真器法仿真器法ROM仿真器可以认为是一种用于替代目仿真器可以认为
20、是一种用于替代目标机上标机上ROM芯片的硬件设备。它本身也芯片的硬件设备。它本身也是一个嵌入式系统。是一个嵌入式系统。24ROM仿真器的连接方法仿真器的连接方法25ROM仿真器的最主要用途是节省程序开发仿真器的最主要用途是节省程序开发(编辑、编译、下载、调试)过程所需的时间。(编辑、编译、下载、调试)过程所需的时间。使用插桩法的情况下,在更新使用插桩法的情况下,在更新ROM中的程序中的程序时,一般的过程是从目标机上取下旧的时,一般的过程是从目标机上取下旧的EPROM(或或Flash),将其用紫外线照射擦除后,将其用紫外线照射擦除后放到放到EPROM编程器中,写入新的程序,然后,编程器中,写入新
21、的程序,然后,再插回到目标机上。反复这样做,再插回到目标机上。反复这样做,EPROM很很快就会老化。而使用快就会老化。而使用ROM仿真器时,可将程仿真器时,可将程序用序用ROM仿真器下载到目标机上运行,并根仿真器下载到目标机上运行,并根据程序运行的情况对程序进行修改。据程序运行的情况对程序进行修改。263.4.5 在线仿真器法在线仿真器法在线仿真器(在线仿真器(In-Circuit Emulator,ICE)是一种)是一种用于替代目标机上用于替代目标机上CPU的设备。对目标机来说,的设备。对目标机来说,在线仿真器就相当于它的在线仿真器就相当于它的CPU。在线仿真器本身。在线仿真器本身就是一个嵌
22、入式系统,它有自己的就是一个嵌入式系统,它有自己的CPU、RAM、ROM和软件。在线仿真器可以执行目标机和软件。在线仿真器可以执行目标机CPU的的所有指令,但比一般的所有指令,但比一般的CPU有更多的引出线,能有更多的引出线,能够将内部的信号输出到被控制的目标机上。在线够将内部的信号输出到被控制的目标机上。在线仿真器上的存储器也可以被映射到用户的程序空仿真器上的存储器也可以被映射到用户的程序空间上。因此即使没有目标机,仅用在线仿真器也间上。因此即使没有目标机,仅用在线仿真器也可以进行程序的调试。可以进行程序的调试。27在线仿真器的连接方法在线仿真器的连接方法283.4.6 片上调试法片上调试法
23、片上调试(片上调试(In Circuit Debugger ICD)是是CPU芯片内部的一种用于支持调试功芯片内部的一种用于支持调试功能模块。可把它看做是一种廉价的在线能模块。可把它看做是一种廉价的在线仿真器。仿真器。29按照实现技术,片上调试可分为以下几类:按照实现技术,片上调试可分为以下几类:q仿调试监控器:仿调试监控器:Motorola的的CPU16、CPU32和和ColdFire系列。系列。q后台调试模式(后台调试模式(Backgroud Debugging Mode,BDM):):Motorola的的MPC 5XX和和MPC 8XX系列。系列。q连接测试存取组(连接测试存取组(Joi
24、nt Test Access Group,JTAG):):PPC6XX、PPC4XX、ARM7、ARM9、Intel 1960。q片上仿真(片上仿真(On Chip Emulation,OnCE):):Motorola的的DSP芯片系列。芯片系列。30目前使用比较多的是采用后台调试模式的目前使用比较多的是采用后台调试模式的CPU芯片。芯片。这种芯片的外面有一些与调试控制有关的管脚。这这种芯片的外面有一些与调试控制有关的管脚。这些管脚在需要的时候可被引出,形成一个用于与外些管脚在需要的时候可被引出,形成一个用于与外部相连的调试端口。这种部相连的调试端口。这种CPU具有调试模式和一般具有调试模式和
25、一般模式两种不同的运行模式。当满足了特定的触发条模式两种不同的运行模式。当满足了特定的触发条件时件时CPU就可进入调试模式。在调试模式下,就可进入调试模式。在调试模式下,CPU不再从内存中读取指令,而是通过它的调试端口读不再从内存中读取指令,而是通过它的调试端口读取指令。通过调试端口还可以控制取指令。通过调试端口还可以控制CPU进入和退出进入和退出调试模式,这样在宿主机的调试器上就可以通过调调试模式,这样在宿主机的调试器上就可以通过调试端口直接向目标机发送要执行的指令,使调试器试端口直接向目标机发送要执行的指令,使调试器读写目标机的内存和各种寄存器,控制目标程序的读写目标机的内存和各种寄存器,
26、控制目标程序的运行以及完成各种复杂的调试功能。运行以及完成各种复杂的调试功能。313.4.7 模拟器法模拟器法模拟器是一个运行于宿主机上的纯软件工具。它通模拟器是一个运行于宿主机上的纯软件工具。它通过模拟目标机的指令系统或目标机操作系统的系统过模拟目标机的指令系统或目标机操作系统的系统调用来达到在宿主机上运行和调试嵌入式程序的目调用来达到在宿主机上运行和调试嵌入式程序的目的。的。模拟器适合于用来调试模拟器适合于用来调试“高级高级”的应用程序,比如的应用程序,比如说一个说一个“通讯簿通讯簿”程序。这种程序与外部设备打交程序。这种程序与外部设备打交道不多,实时性不强,拿到哪一个计算机上去执行道不多
27、,实时性不强,拿到哪一个计算机上去执行都一样。因此,开发者可以直接在宿主机上验证程都一样。因此,开发者可以直接在宿主机上验证程序的逻辑。当确认无误之后,将写好的程序移到目序的逻辑。当确认无误之后,将写好的程序移到目标机上面去一般就可以正确地执行。标机上面去一般就可以正确地执行。32模拟器有两种主要的类型:模拟器有两种主要的类型:q一类是在宿主机上模拟目标机指令系统的模一类是在宿主机上模拟目标机指令系统的模拟器,我们称其为指令级的模拟器。拟器,我们称其为指令级的模拟器。q另一类是模拟目标机操作系统的系统调用的另一类是模拟目标机操作系统的系统调用的模拟器,我们称其为系统调用级的模拟器。模拟器,我们
28、称其为系统调用级的模拟器。指令级的模拟器相当于在宿主机上建立了一台虚拟的目标机,指令级的模拟器相当于在宿主机上建立了一台虚拟的目标机,该虚拟目标机的该虚拟目标机的CPU的种类可以与宿主机不同。例如,宿主的种类可以与宿主机不同。例如,宿主机的机的CPU是是Intel Pentium,而虚拟机是,而虚拟机是ARM、PowerPC或或MIPS等。指令级的模拟器除了能模拟目标机的指令系统之等。指令级的模拟器除了能模拟目标机的指令系统之外,视模拟器功能的强弱,还可以模拟目标机的外部设备、外,视模拟器功能的强弱,还可以模拟目标机的外部设备、中断和定时器。中断和定时器。系统调用级的模拟器相当于在宿主机上安装
29、了目标机的操作系统调用级的模拟器相当于在宿主机上安装了目标机的操作系统,使得基于目标机的操作系统的应用程序可以在宿主机系统,使得基于目标机的操作系统的应用程序可以在宿主机上运行。被模拟的目标机的操作系统的类型可以与宿主机不上运行。被模拟的目标机的操作系统的类型可以与宿主机不同。例如,宿主机的操作系统是同。例如,宿主机的操作系统是Windows 2000,而目标机的,而目标机的操作系统是操作系统是Hopen。两种类型的模拟器相比,指令级模拟器所提供的运行环境与两种类型的模拟器相比,指令级模拟器所提供的运行环境与实际的目标机更接近。而系统调用级的模拟器本身比较容易实际的目标机更接近。而系统调用级的
30、模拟器本身比较容易开发,也容易移植。开发,也容易移植。33我们已经把直接测试法、驻留程序法、插桩我们已经把直接测试法、驻留程序法、插桩法、法、ROM仿真器法、在线仿真器法、片上仿真器法、在线仿真器法、片上调试法、模拟器法等几种嵌入式软件的调试调试法、模拟器法等几种嵌入式软件的调试方法都简单地介绍了一遍。从嵌入式软件的方法都简单地介绍了一遍。从嵌入式软件的开发实践来看,各种调试方法都有一定的适开发实践来看,各种调试方法都有一定的适用范围。没有哪一种调试方法可以绝对地说用范围。没有哪一种调试方法可以绝对地说是最好的调试方法。即使是直接测试法在有是最好的调试方法。即使是直接测试法在有的时候也是最有效
31、的方法。因此,在嵌入式的时候也是最有效的方法。因此,在嵌入式软件开发的不同阶段使用最适合的调试方式,软件开发的不同阶段使用最适合的调试方式,不但可以节约开发费用,同时还能大大地加不但可以节约开发费用,同时还能大大地加快项目开发的进度。快项目开发的进度。343.5 几种典型的嵌入式软件开发环境几种典型的嵌入式软件开发环境嵌入式软件开发环境的种类很多。我们可以把它们嵌入式软件开发环境的种类很多。我们可以把它们分为分为3类:类:q第一类是与某一种嵌入式操作系统配套的开发环第一类是与某一种嵌入式操作系统配套的开发环境。属于这一类的开发环境最多。境。属于这一类的开发环境最多。DeltaOS、Hopen、
32、PalmOS、pSOS、THOS、VxWorks、Windows CE等嵌入式操作系统就都有与其相配套的软件开发环等嵌入式操作系统就都有与其相配套的软件开发环境。境。q第二类是与某个芯片系列配套的开发环境。如与第二类是与某个芯片系列配套的开发环境。如与爱普生的爱普生的32位单片机位单片机S1C33相配套的开发环境相配套的开发环境C33、与与ARM芯片相配套的芯片相配套的UP-NetARM200等。等。35q第三类是与某种应用平台配套的开发环境。如高第三类是与某种应用平台配套的开发环境。如高通公司的通公司的Brew SDK。这里所说的应用平台是一种与这里所说的应用平台是一种与操作系统相独立,专门
33、针对某种应用领域的软件系操作系统相独立,专门针对某种应用领域的软件系统。统。Brew就是一个专门针对手机的应用平台。就是一个专门针对手机的应用平台。363.5.1 VxWorks的集成开发环境的集成开发环境TornadoTornado是是WindRiver公司推出的一个集公司推出的一个集成软件开发环境。它由三个部分所组成:成软件开发环境。它由三个部分所组成:运行在宿主机和目标机上的交叉开发工具运行在宿主机和目标机上的交叉开发工具和实用程序;运行在目标机上的实时操作和实用程序;运行在目标机上的实时操作系统系统VxWorks;连接宿主机和目标机的各;连接宿主机和目标机的各种通讯介质。例如,以太网、
34、串口、在线种通讯介质。例如,以太网、串口、在线仿真器(仿真器(ICE)或)或ROM仿真器等。仿真器等。37Tornado提供的交叉开发工具和实用程序主要有:提供的交叉开发工具和实用程序主要有:q源代码编辑工具源代码编辑工具q图形化的交叉调试工具图形化的交叉调试工具q工程配置工具工程配置工具q集成仿真工具集成仿真工具q诊断分析工具诊断分析工具qC/C+编译工具编译工具q宿主机目标机连接配置工具宿主机目标机连接配置工具q目标机系统状态浏览工具目标机系统状态浏览工具q命令行执行工具命令行执行工具q多语言浏览工具多语言浏览工具q图形化核心配置工具图形化核心配置工具38Tornado环境中宿主机与目标机
35、间的关系环境中宿主机与目标机间的关系391.图形化的交叉调试工具图形化的交叉调试工具CrossWind/WDBCrossWind/WDB支持任务级和系统级两种调试方式、支持任务级和系统级两种调试方式、混合源代码和汇编代码显示、多目标机同时调试。混合源代码和汇编代码显示、多目标机同时调试。它具有良好的图形用户界面。通过它具有良好的图形用户界面。通过CrossWind/WDB开发者可以在观察窗口中成组地观察表达式的值,开发者可以在观察窗口中成组地观察表达式的值,在调试窗口中改变变量、寄存器和局部变量的值,在调试窗口中改变变量、寄存器和局部变量的值,通过信息规整和分类的方法有效地提供信息。通过信息规
36、整和分类的方法有效地提供信息。CrossWind/WDB还提供了还提供了GNU/GDB调试器引擎。调试器引擎。GNU/GDB调试器引擎采用命令行方式。对于熟悉它调试器引擎采用命令行方式。对于熟悉它的用户,使用起来有很强的灵活性。的用户,使用起来有很强的灵活性。402.工程配置工具工程配置工具Project通过通过Project可以对可以对VxWorks操作系统及其组件进行操作系统及其组件进行自动配置,进行依赖性分析和代码容量计算,自动自动配置,进行依赖性分析和代码容量计算,自动生成生成Makefile文件。它简化了文件。它简化了VxWorks应用程序的应用程序的组织、配置和建立工作,使工程管理
37、和组织、配置和建立工作,使工程管理和VxWorks配配置的许多方面实现了自动化。这种集成的图形化工置的许多方面实现了自动化。这种集成的图形化工程管理环境增强了开发小组的专业化水平,使单独程管理环境增强了开发小组的专业化水平,使单独的组件可以各自独立开发,然后由小组的其他成员的组件可以各自独立开发,然后由小组的其他成员共享和重用。共享和重用。413.集成仿真工具集成仿真工具VxSimVxSim能提供与真实目标机完全一致的调试和仿真能提供与真实目标机完全一致的调试和仿真运行环境。通过运行环境。通过VxSim,开发者可以在没有板级支,开发者可以在没有板级支持包、目标机操作系统、目标机硬件的情况下,使
38、持包、目标机操作系统、目标机硬件的情况下,使用用Tornado进行开发工作。进行开发工作。424.诊断分析工具诊断分析工具WindViewWindView是一个图形化的工具。它的功能主要是向是一个图形化的工具。它的功能主要是向开发者提供在目标机上运行的应用程序的许多的详开发者提供在目标机上运行的应用程序的许多的详细情况。这种系统级的诊断分析工具可以与集成仿细情况。这种系统级的诊断分析工具可以与集成仿真器一起使用。真器一起使用。嵌入式系统开发者经常因为无法知道程序执行时系嵌入式系统开发者经常因为无法知道程序执行时系统内部的情况和软件的一些随时间变化的特性而感统内部的情况和软件的一些随时间变化的特
39、性而感到苦恼。到苦恼。WindView提供了运行在集成仿真器上的提供了运行在集成仿真器上的VxWorks应用程序的详细的动态行为,用图形化的应用程序的详细的动态行为,用图形化的方法显示出了任务、中断和系统对象之间的复杂关方法显示出了任务、中断和系统对象之间的复杂关系,为软件开发者解决了许多麻烦的问题。系,为软件开发者解决了许多麻烦的问题。435.C/C+编译工具编译工具Tornado提供以下一些支持提供以下一些支持C语言和语言和C+语言的工具语言的工具和类库:和类库:Diab C/C+编译器、编译器、GNU C/C+编译器、编译器、iostreams类库。类库。446.宿主机目标机连接配置工具
40、宿主机目标机连接配置工具Launcher从开发者的角度看从开发者的角度看Launcher位于位于Tornado环境的最环境的最上层。通过它开发者可对开发环境进行设置。上层。通过它开发者可对开发环境进行设置。457.目标机系统状态浏览工具目标机系统状态浏览工具BrowserBrowser是一个图形化工具。它能随时提供目标系统是一个图形化工具。它能随时提供目标系统的全面状态信息。开发者也可以通过它监视任务、的全面状态信息。开发者也可以通过它监视任务、信号量、消息队列、内存分区、定时器、模块、变信号量、消息队列、内存分区、定时器、模块、变量、堆栈等系统对象。这些对象的信息将根据开发量、堆栈等系统对象
41、。这些对象的信息将根据开发者的选择进行周期性或条件性的更新。者的选择进行周期性或条件性的更新。468.命令行执行工具命令行执行工具WindShWindSh是一个命令行解释器。它可以直接解释执行是一个命令行解释器。它可以直接解释执行C语言达式、调用目标机上的语言达式、调用目标机上的C函数、访问已在系统函数、访问已在系统符号表中定义的变量。符号表中定义的变量。WindSh不仅可以解释几乎所不仅可以解释几乎所有的有的C语言表达式,而且还可以通过它执行语言表达式,而且还可以通过它执行Tornado中所有的调试功能。例如,下载软件模块、删除软中所有的调试功能。例如,下载软件模块、删除软件模块、创建并启动
42、一个任务、删除任务、设置断件模块、创建并启动一个任务、删除任务、设置断点、删除断点、运行程序、单步运行程序、继续运点、删除断点、运行程序、单步运行程序、继续运行程序、查看内存、查看寄存器、查看变量、修改行程序、查看内存、查看寄存器、查看变量、修改内存、修改寄存器、修改变量、查看任务列表、查内存、修改寄存器、修改变量、查看任务列表、查看内存使用情况、查看看内存使用情况、查看CPU利用率、查看特定的对利用率、查看特定的对象(任务、信号量、消息队列、内存分区、类)、象(任务、信号量、消息队列、内存分区、类)、复位目标机等。复位目标机等。479.多语言浏览工具多语言浏览工具WindNavigator通
43、过通过WindNavigator可浏览源程序代码,用图形化的可浏览源程序代码,用图形化的方式显示函数调用关系。这样就可快速地进行代码方式显示函数调用关系。这样就可快速地进行代码定位。定位。4810.图形化核心配置工具图形化核心配置工具WindConfig通过通过WindCgnfig所提供的图形向导,所提供的图形向导,Tornado的用的用户可以方便地配置户可以方便地配置VxWorks内核及其组件的参数。内核及其组件的参数。493.5.2 Brew SDK50Brew SDK是一个用于开发基于是一个用于开发基于Brew的应用程序的应用程序的开发环境。使用这个开发环境可在的开发环境。使用这个开发环
44、境可在PC机上(需机上(需要要Windows NT或或Windows 2000操作系统的支持)操作系统的支持)为无线设备编写和调试应用程序。待程序开发完为无线设备编写和调试应用程序。待程序开发完毕后,再下载到无线设备上去。毕后,再下载到无线设备上去。Brew SDK由以下由以下工具和程序所组成:工具和程序所组成:q模拟器模拟器q设备配置器设备配置器q资源编辑器资源编辑器q模块信息文件编辑器模块信息文件编辑器q库函数库函数qBrew头文件头文件q示例应用程序示例应用程序511.Brew模拟器模拟器Brew模拟器用于模拟运行和调试模拟器用于模拟运行和调试Brew的应用程序。它的应用程序。它能提供与
45、被模拟的手机同样的用户界面,好像应用程序能提供与被模拟的手机同样的用户界面,好像应用程序真正是在实际的手机上运行一样。真正是在实际的手机上运行一样。Brew SDK提供了一提供了一些类型的手机的模拟方案,用户也可以使用些类型的手机的模拟方案,用户也可以使用Brew的设的设备配置器建立其它手机的模拟方案。备配置器建立其它手机的模拟方案。522.Brew设备配置器设备配置器Brew设备配置器用于生成新的设备配置文设备配置器用于生成新的设备配置文件或编辑现有的设备配置文件。可以通过设件或编辑现有的设备配置文件。可以通过设备配置文件进行设置的内容有键盘键及其功备配置文件进行设置的内容有键盘键及其功能、
46、屏幕的尺寸和分辨率、内存的大小等。能、屏幕的尺寸和分辨率、内存的大小等。533.Brew资源编辑器资源编辑器Brew资源编辑器用于建立应用程序的资源,资源编辑器用于建立应用程序的资源,如字符串、图像和对话框等。保存字符串、如字符串、图像和对话框等。保存字符串、图像和对话框等资源的文件的后缀为图像和对话框等资源的文件的后缀为.bar。资源编辑器在产生资源内容的同时,还产生资源编辑器在产生资源内容的同时,还产生定义资源标识号的定义资源标识号的.h文件。编译工具在生成文件。编译工具在生成应用程序的应用程序的.dll文件时需要用到这个文件时需要用到这个.h文件。文件。544.Brew模块信息文件(模块
47、信息文件(MIF)编辑器编辑器Brew模块信息文件(模块信息文件(MIF)编辑器用来产)编辑器用来产生模块信息文件。模块信息文件包含以下几生模块信息文件。模块信息文件包含以下几方面的内容,模块中应用程序和类的数量、方面的内容,模块中应用程序和类的数量、每个应用程序和类的标识号、应用程序的名每个应用程序和类的标识号、应用程序的名称、应用程序的图标等。注意,在称、应用程序的图标等。注意,在Brew中,中,一个模块文件内可以有多个应用程序的信息。一个模块文件内可以有多个应用程序的信息。模拟器在装入一个模块文件时要用到它的模模拟器在装入一个模块文件时要用到它的模块信息文件。块信息文件。55用用Brew
48、 SDK开发应用程序的过程可分为以下开发应用程序的过程可分为以下5个步骤:个步骤:(1)使用模块信息文件编辑器建立模块信息文件(使用模块信息文件编辑器建立模块信息文件(.mif文件)。文件)。(2)使用使用Visual C+建立一个新工程,以便建立应用程建立一个新工程,以便建立应用程序模块文件(序模块文件(.dll文件)。文件)。(3)将应用程序的源码加入到第将应用程序的源码加入到第2步所建立的新工程当步所建立的新工程当中去。中去。(4)建立应用程序的模块文件。建立应用程序的模块文件。(5)启动模拟器调试应用程序模块文件。如果有必要,启动模拟器调试应用程序模块文件。如果有必要,在启动模拟器调试
49、应用程序之前还应该用资源编辑器在启动模拟器调试应用程序之前还应该用资源编辑器建立应用程序要用到的资源文件(建立应用程序要用到的资源文件(.bar文件),用设备文件),用设备配置器建立起要模拟的设备的设备配置文件(配置器建立起要模拟的设备的设备配置文件(.qsc文文件)。件)。56用用Brew SDKBrew SDK开发应用程序的过程开发应用程序的过程573.5.3 C333.5.3 C33编程工具包编程工具包C33C33是是EPSONEPSON公司推出的一个专门为基于公司推出的一个专门为基于S1C33S1C33系列系列微控制器芯片的嵌入式系统开发应用程序的软件工微控制器芯片的嵌入式系统开发应用
50、程序的软件工具包。这个工具包里面包括多种工具。具包。这个工具包里面包括多种工具。C33C33提供的提供的软件工具有:软件工具有:(1)gcc33(1)gcc33:C C语言编译器;语言编译器;(2)pp33(2)pp33:预处理器,用于处理宏命令;:预处理器,用于处理宏命令;(3)ext33(3)ext33:指令扩展器,用于处理:指令扩展器,用于处理S1C33S1C33系列的扩系列的扩展指令;展指令;(4)as33(4)as33:汇编程序;:汇编程序;(5)lk33(5)lk33:链接器,用于建立可执行目标程序;:链接器,用于建立可执行目标程序;58(6)dis33(6)dis33:反汇编程序