嵌入式软件的开发过程与开发环境课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《嵌入式软件的开发过程与开发环境课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件 开发 过程 环境 课件
- 资源描述:
-
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进入和退出进入和退出调试模式,这样在宿主机的调试器上就可以通过调调试模式,这样在宿主机的调试器上就可以通过调试端口直接向目标机发送要执行的指令,使调试器试端口直接向目标机发送要执行的指令,使调试器读写目标机的内存和各种寄存器,控制目标程序的读写目标机的内存和各种寄存器,
展开阅读全文