版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第5 5章章 嵌入式系统开发环境与相关开发技术嵌入式系统开发环境与相关开发技术5.1 5.1 概述概述5.2 5.2 嵌入式系统的开发工具嵌入式系统的开发工具 5.3 5.3 嵌入式系统调试技术嵌入式系统调试技术 5.4 5.4 嵌入式系统开发经验嵌入式系统开发经验 5.5 5.5 嵌入式系统的嵌入式系统的BootloaderBootloader技术技术25.1 5.1 概述概述l一个嵌入式系统的开发环境一般包括一个嵌入式系统的开发环境一般包括有开发用的宿主机、嵌入式目标机、有开发用的宿主机、嵌入式目标机、调试器和软件开发工具,它们之间通调试器和软件开发工具,它们之间通过串口、过串口、JT
2、AG(并口并口)和网络接口等和网络接口等进行通信。进行通信。3 嵌入式系统通常是一个资源受限的系统,因此嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困直接在嵌入式系统的硬件平台上编写软件比较困难。目前一般采用的解决办法是首先在通用计算难。目前一般采用的解决办法是首先在通用计算机(机(宿主机)宿主机)上编写程序,然后通过交叉编译上编写程序,然后通过交叉编译生成目标机上可以运行的二进制代码格式,生成目标机上可以运行的二进制代码格式,然然后通过串口或者以太网接口将交叉编译生成后通过串口或者以太网接口将交叉编译生成的目标代码传输并装载到目标机上,并在监的目标代码传输
3、并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试控程序或者操作系统的支持下利用交叉调试器、器、JTAGJTAG调试装置或调试装置或ICEICE进行分析和调试,最进行分析和调试,最后目标机脱离宿主机单独运行。后目标机脱离宿主机单独运行。45.25.2 嵌入式软件开发工具嵌入式软件开发工具“工欲善其事,必先利其器工欲善其事,必先利其器” 嵌入式软件开发工具的嵌入式软件开发工具的集成度集成度和和可用性可用性将直接关系将直接关系到嵌入式系统的开发效率。到嵌入式系统的开发效率。ARMARM的开发工具包括有编译的开发工具包括有编译器、汇编器、连接器、调试器、操作系统、函数库、器、汇编器、连接
4、器、调试器、操作系统、函数库、评估板、评估板、JTAGJTAG调试器、在线仿真器等。目前世界上约有调试器、在线仿真器等。目前世界上约有4040多家公司提供不同类型的产品。多家公司提供不同类型的产品。 在在WindowsWindows环境下,其代表产品是环境下,其代表产品是ARMARM公司的软件开公司的软件开发工具包发工具包ADSADS和新推出的和新推出的RVDSRVDS。 在在LinuxLinux环境中,主要使用环境中,主要使用GNUGNU开发工具。开发工具。5开发工具的分类开发工具的分类 根据不同的阶段,嵌入式软件开发工具可根据不同的阶段,嵌入式软件开发工具可以分为:以分为:l需求分析工具(
5、需求分析工具(Requirement Analysis ToolsRequirement Analysis Tools)l软件设计工具软件设计工具(Software Design Tools)(Software Design Tools)l编码、调试工具编码、调试工具(Coding Tools)(Coding Tools)l测试工具测试工具(Testing Tools)(Testing Tools)l配置管理工具、维护工具等配置管理工具、维护工具等6开发工具的分类开发工具的分类 嵌入式软件的开发可以分为以下几种嵌入式软件的开发可以分为以下几种 :l编写简单的板级测试软件,主要是辅助硬件的调试编
6、写简单的板级测试软件,主要是辅助硬件的调试 l开发基本的驱动程序开发基本的驱动程序 l开发特定嵌入式操作系统的驱动程序(板级支持包)开发特定嵌入式操作系统的驱动程序(板级支持包) l开发嵌入式系统软件,如:嵌入式操作系统等开发嵌入式系统软件,如:嵌入式操作系统等 l开发应用软件开发应用软件7嵌入式系统开发环境和开发过程嵌入式系统开发环境和开发过程 建立交叉开发环境是进行嵌入式软件开发建立交叉开发环境是进行嵌入式软件开发的第一步,目前常用的交叉开发环境主要有开放的第一步,目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代和商业两种类型。开放的交叉开发环境的典型代表是表是G
7、NUGNU工具链、目前已经能够支持工具链、目前已经能够支持x86x86、ARMARM、MIPSMIPS、PowerPCPowerPC等多种处理器。商业的交叉开发环等多种处理器。商业的交叉开发环境则主要有境则主要有Metrowerks CodeWarriorMetrowerks CodeWarrior、ARMSoftwareARMSoftware Development Toolkit Development Toolkit、Embedded Embedded Visual C+Visual C+等。等。81 1)嵌入式软件的交叉开发环境)嵌入式软件的交叉开发环境l交叉开发环境交叉开发环境是指用
8、于嵌入式软件开发的是指用于嵌入式软件开发的所有工具软件的集合,一般包括:所有工具软件的集合,一般包括:l文本编辑器文本编辑器l交叉编译器交叉编译器l交叉调试器交叉调试器l仿真器仿真器l下载器等下载器等l交叉开发环境由交叉开发环境由宿主机宿主机和和目标机目标机组成,宿组成,宿主机与目标机之间在主机与目标机之间在物理连接物理连接的基础上建的基础上建立起立起逻辑连接逻辑连接。9交叉开发环境交叉开发环境目标机硬件目标机硬件目标机应用系统目标机应用系统 应用软件应用软件 应用中间件 目标机OS宿主机硬件宿主机硬件宿主机宿主机OS调调试试代代理理运运行行库库宿主机开发环境宿主机开发环境 编辑 编译 连接
9、调试运行平运行平台台TargetTarget开发平开发平台台Host10嵌入式软件的交叉开发环境嵌入式软件的交叉开发环境l物理连接和逻辑连接物理连接和逻辑连接 l物理连接物理连接是指宿主机与目标机通过物理线路连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有三种:在一起,连接方式主要有三种:l串行通信口串行通信口l局部以太网口局部以太网口lOCDOCD(On Chip DebugOn Chip Debug)方式,如)方式,如JTAGJTAG、BDMBDM等等l物理连接是逻辑连接的基础。物理连接是逻辑连接的基础。l逻辑连接逻辑连接指宿主机与目标机间按某种通信协议建指宿主机与目标机间按某
10、种通信协议建立起来的通信连接,目前逐步形成了一些通信协立起来的通信连接,目前逐步形成了一些通信协议的标准。议的标准。112 2)嵌入式软件实现阶段的开发过程)嵌入式软件实现阶段的开发过程l嵌入式软件的开发进入实现阶段,可分为嵌入式软件的开发进入实现阶段,可分为三个步骤:三个步骤:生成、调试和固化运行生成、调试和固化运行。l软件的生成软件的生成主要是在宿主机上进行,利用各种主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。工作,生成可供调试或固化的目标程序。l调试调试是通过交叉调试器完成软件的调试工作
11、。是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。调试完成后还需进行必要的测试工作。l固化运行固化运行是先用一定的工具将应用程序固化到是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。干预的情况下应用程序能自动地启动运行。12嵌入式系统开发流程框架图嵌入式系统开发流程框架图开始新工程编辑源代码编译链接仿真调试程序下载ARM CPU执行监控结果基本开发流程PC机SourceSourceInsightInsightARM SDTARM SDTProjectProjectMana
12、gerManagerARM SDTARM SDTDebugerDebugerArmDvkArmDvk串口助手或超级终端Jtag仿真器armJtagarmJtagJtag并口USBUSB口PC机硬件平台串口RS232电平转换串口硬件连接开发流程内部逻辑13开发流程14(1 1)嵌入式软件生成阶段)嵌入式软件生成阶段l三个过程三个过程l源代码程序源代码程序的编写的编写l编译成各个编译成各个目标模块目标模块l链接成可供链接成可供下载调试或下载调试或固化的目标固化的目标程序程序编辑器编辑器交叉编交叉编译器译器交叉链交叉链接器接器源程序源程序目标目标模块模块可供调试可供调试/ /固化固化库文件库文件15
13、ARM映像文件格式映像文件格式l映像文件是计算机上的一个可执行文件,在执映像文件是计算机上的一个可执行文件,在执行之前被加载到计算机存储器中。行之前被加载到计算机存储器中。lARMARM集成开发环境中的各种原文件(汇编、集成开发环境中的各种原文件(汇编、C C以以及及C+C+程序)经过程序)经过ARMARM编译器编译之后,生成编译器编译之后,生成ELFELF格式的目标文件。这些目标文件和相应的格式的目标文件。这些目标文件和相应的C/C+C/C+运行时库经过运行时库经过ARMARM连接器连接后,生成连接器连接后,生成.axf.axf映像映像文件。在开发板上调试运行后,使用文件。在开发板上调试运行
14、后,使用fromelffromelf工工具将映像文件中的调试信息和注释过滤掉生成具将映像文件中的调试信息和注释过滤掉生成二进制的可加载文件二进制的可加载文件.bin.bin。可加载文件可写入。可加载文件可写入嵌入式设备的嵌入式设备的ROMROM中,再加电启动过程执行。中,再加电启动过程执行。16嵌入式软件的生成嵌入式软件的生成l这一过程与普通计算机开发过程的本质区别是在于这一过程与普通计算机开发过程的本质区别是在于交叉编译器和交叉连接器。交叉编译器和交叉连接器。l其中交叉编译器的主要功能是把在宿主机上编写的其中交叉编译器的主要功能是把在宿主机上编写的高级语言程序编译成可以在目标机上运行的二进制
15、高级语言程序编译成可以在目标机上运行的二进制代码。常见的代码。常见的ARMARM软件开发环境有两种:软件开发环境有两种:ARMARM公司开发的集成开发环境公司开发的集成开发环境ADS 1.2ADS 1.2,该开发环境,该开发环境使用了使用了CodeWarriorCodeWarrior公司的编译器,使用公司的编译器,使用ADXADX进行本进行本地和远程调试。地和远程调试。ADSADS有一系列应用程序及相关文档、有一系列应用程序及相关文档、范例组成,主要包括命令行开发工具、范例组成,主要包括命令行开发工具、GUIGUI开发工开发工具、实用工具和支持软件。使用它们就可以编写和具、实用工具和支持软件。
16、使用它们就可以编写和调试自己的应用程序了。调试自己的应用程序了。17GNUGNU交叉工具链交叉工具链 GNU GNU开发工具包括开发工具包括C C编译器编译器GCCGCC、C+C+编译器编译器G+G+、汇编器汇编器ASAS、连接器、连接器LDLD、二进制转换工具、调试工具、二进制转换工具、调试工具GDBGDB和基于不同硬件平台的开发库。和基于不同硬件平台的开发库。 其中,其中,GCCGCC几几乎在各种常见的乎在各种常见的UNIXUNIX平台上都可以见到,即使是平台上都可以见到,即使是Windows32Windows32也有也有GCCGCC的移植。的移植。 GDBGDB支持远程调试模式,支持远程
17、调试模式,同时还包含一个同时还包含一个ARMARM指令集,能够在指令集,能够在PCPC机上通过软机上通过软件方式仿真件方式仿真ARMARM程序的执行。以上这些工具顺序使程序的执行。以上这些工具顺序使用,必须保持前后一致,才能产生最终需要的二进用,必须保持前后一致,才能产生最终需要的二进制文件,所以称作为工具链。制文件,所以称作为工具链。18(2 2)嵌入式软件的生成)嵌入式软件的生成l 以上两种开发环境的编译器都完全支持以上两种开发环境的编译器都完全支持ARMARM指令指令集,但伪指令集不同,代码风格不同,此外生成的集,但伪指令集不同,代码风格不同,此外生成的二进制代码的执行效率上也略有不同。
18、二进制代码的执行效率上也略有不同。l 嵌入式软件的运行方式主要有两种:调试方式嵌入式软件的运行方式主要有两种:调试方式和固化方式。在不同方式下,程序代码或数据在目和固化方式。在不同方式下,程序代码或数据在目标机内存中的定位也有所不同。宿主机上提供一定标机内存中的定位也有所不同。宿主机上提供一定的工具或者手段对目标程序的运行方式和内存定位的工具或者手段对目标程序的运行方式和内存定位进行选择和配置,链接器再根据这些配置信息将目进行选择和配置,链接器再根据这些配置信息将目标模块和库文件中的模块链接成目标程序,因此称标模块和库文件中的模块链接成目标程序,因此称这样的链接器为交叉链接器。这样的链接器为交
19、叉链接器。195.3 5.3 嵌入式系统调试技术嵌入式系统调试技术 在嵌入式软件开发中,调试时采用的是在宿主在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的远程调试,调试器仍然运行机和目标机之间进行的远程调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信。调试器和被调试进程通过串口或者网络进行通信。调试器可以控制、访问被调试的进程,读取被调试调试器可以控制、访问被调试的进程,读取被调试进程的当前状
20、态,并能够改变被调试进程的运行状进程的当前状态,并能够改变被调试进程的运行状态。态。 远程调试(远程调试(Remote DebugRemote Debug)允许调试器以某种)允许调试器以某种方式控制目标机上被调试进程的运行方式,并具有方式控制目标机上被调试进程的运行方式,并具有查看和修改目标机上内存单元、寄存器以及被调试查看和修改目标机上内存单元、寄存器以及被调试进程中的变量值等各种调试功能。进程中的变量值等各种调试功能。20ARMARM实验平台与实验平台与PCPC机连接关系框图机连接关系框图基于ARM架构的32位微处理器SamsungS3C44B0X1MB线性Flash(BIOS)8MBSD
21、RM(系统内存)16MB非线性Flash( 硬盘)USB接口USBN9603两个RS-232串行通信接口JTAG 调试端口LCD显示键盘输入TCP/IP协议CAN BUSARM硬件开发平台PC机USB口并口RS232Jtag电缆网口21远程调试的特点远程调试的特点l 调试器和被调试程序运行在不同的机器上,调调试器和被调试程序运行在不同的机器上,调试器运行在宿主机上,而被调试程序则运行在各种试器运行在宿主机上,而被调试程序则运行在各种专业调试板上(目标机)。专业调试板上(目标机)。l 调试器通过某种通信方式与被调试进程建立联系,调试器通过某种通信方式与被调试进程建立联系,如串口、并口、网络、如串
22、口、并口、网络、JTAGJTAG或者专用的通信方式。或者专用的通信方式。 22交叉编译、交叉调试方法交叉编译、交叉调试方法l交叉编译:把在宿主机上编写的高级语言交叉编译:把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种即在宿主机上能够编译生成另一种CPUCPU(嵌入式微处理器)上的二进制程序。(嵌入式微处理器)上的二进制程序。l交叉调试器是指调试程序和被调试运行在交叉调试器是指调试程序和被调试运行在不同机器上的调试器,能够通过某种方式不同机器上的调试器,能够通过某种方式控制目标机上被调试程序的运行方式,并控制目标机
23、上被调试程序的运行方式,并且通过调试器能查看和修改目标机上的内且通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等存、寄存器以及被调试程序中的变量等。23交叉调试交叉调试非交叉调试非交叉调试调试器和被调试程序运行在不同的计调试器和被调试程序运行在不同的计算机上算机上调试器和被调试程序运行在同一台计调试器和被调试程序运行在同一台计算机上算机上可独立运行,无需操作系统支持可独立运行,无需操作系统支持需要操作系统的支持需要操作系统的支持被调试程序的装载由调试器完成被调试程序的装载由调试器完成被调试程序的装载由专门的被调试程序的装载由专门的LoaderLoader程程序完成序完成需要
24、通过外部通信的方式来控制被调需要通过外部通信的方式来控制被调试程序试程序不需要通过外部通信的方式来控制被不需要通过外部通信的方式来控制被调试程序调试程序可以直接调试不同指令集的程序可以直接调试不同指令集的程序只能直接调试相同指令集的程序只能直接调试相同指令集的程序24 5.3.1 ARM5.3.1 ARM调试技术概述调试技术概述 交叉调试的方式执行即调试器控制被调交叉调试的方式执行即调试器控制被调试程序的运行常通过如下五种方式:试程序的运行常通过如下五种方式: 指令集模拟器、指令集模拟器、ROM MonitorROM Monitor方式、方式、JTAGJTAG调试方式、实时在线仿真器调试方式、
25、实时在线仿真器ICEICE方式和方式和基于基于AngelAngel的调试方式。的调试方式。 25指令集模拟器指令集模拟器l指令集模拟器是用来在一台计算机上模拟另一台计指令集模拟器是用来在一台计算机上模拟另一台计算机上目标程序运行过程的软件工具,也成为软仿算机上目标程序运行过程的软件工具,也成为软仿真器。内部有一个反映目标处理器硬件的数据结构。真器。内部有一个反映目标处理器硬件的数据结构。它以时序状态机的方式工作,可以根据目标机指令它以时序状态机的方式工作,可以根据目标机指令集定义执行目标指令。集定义执行目标指令。l应用场合:没有目标机开发板或者成本太高;被调应用场合:没有目标机开发板或者成本太
26、高;被调试的程序模块不需要在实际开发板上执行;对模块试的程序模块不需要在实际开发板上执行;对模块代码先调试,以加快调试速度。代码先调试,以加快调试速度。lARMARM体系结构计算机,目前经常使用的是体系结构计算机,目前经常使用的是ARMulatorARMulator指令集模拟器,它作为一个插件集成在指令集模拟器,它作为一个插件集成在ADS1.2ADS1.2集成集成开发环境中。开发环境中。26 ROM Monitor ROM Monitor方式方式 在这种调试方式下,调试环境由宿主机端的在这种调试方式下,调试环境由宿主机端的调试器、目标机端的监控程序(调试器、目标机端的监控程序(ROM Moni
27、torROM Monitor)以及二者间的物理连接三部分构成。以及二者间的物理连接三部分构成。 ROM MonitorROM Monitor是运行在目标机上监控被调试程是运行在目标机上监控被调试程序运行的一段程序,与宿主机端的调试器一起序运行的一段程序,与宿主机端的调试器一起完成对应用程序的调试。它要预先被固化到目完成对应用程序的调试。它要预先被固化到目标机的标机的ROMROM中中, ,在目标机复位后首先被执行来完在目标机复位后首先被执行来完成对目标机进行一些必要的初始化,然后等待成对目标机进行一些必要的初始化,然后等待宿主机的命令。宿主机的命令。27ROM MonitorROM Monito
28、rl在目标机上电或复位后首先执行的就是在目标机上电或复位后首先执行的就是ROM ROM MonitorMonitor,它对目标机进行一些必要的初始,它对目标机进行一些必要的初始化化l初始化要求的外围设备,如最基本的串口和用初始化要求的外围设备,如最基本的串口和用于内存刷新的系统计时器芯片;于内存刷新的系统计时器芯片;l初始化用于下载映像的内存系统;初始化用于下载映像的内存系统;l初始化中断控制器和安装中断处理程序。初始化中断控制器和安装中断处理程序。l初始化自己的程序空间初始化自己的程序空间l等待宿主机端的命令等待宿主机端的命令28ROM MonitorROM MonitorlROM Moni
29、torROM Monitor能配合调试器完成:能配合调试器完成:l程序映像下载程序映像下载l对目标机系统内存的读写对目标机系统内存的读写l对寄存器的读写对寄存器的读写l设置和清除不同类型的断点设置和清除不同类型的断点l单步执行指令单步执行指令l复位系统复位系统等调试功能等调试功能29 ROM MonitorROM Monitor方式方式 ROM Monitor ROM Monitor能配合调试器完成被调试程序的能配合调试器完成被调试程序的下载、目标机内存和寄存器的读下载、目标机内存和寄存器的读/ /写、设置断点以写、设置断点以及单步执行被调试程序等功能。及单步执行被调试程序等功能。 这种方式的
30、最大这种方式的最大优点优点是简单方便、成本低廉。是简单方便、成本低廉。它还可以支持许多高级的调试功能,可扩展性强,它还可以支持许多高级的调试功能,可扩展性强,基本不需要专门的调试硬件支持,几乎所有的交叉基本不需要专门的调试硬件支持,几乎所有的交叉调试器(调试器(ADSADS、GDBGDB)都支持这种方式。)都支持这种方式。 缺点缺点: ROM MonitorROM Monitor要占用目标机一定的资源,要占用目标机一定的资源,如如CPUCPU、RAMRAM和串口或网卡等通信资源;应用程序的和串口或网卡等通信资源;应用程序的最终运行环境和调试环境有一定的差异;不便于最终运行环境和调试环境有一定的
31、差异;不便于调调试试有时间特性的程序,实时性较差。有时间特性的程序,实时性较差。30ROM Monitor调试方式调试方式调试器调试器Windows或其它桌或其它桌面操作系统面操作系统PC机等硬件机等硬件嵌入式嵌入式硬件硬件监控程监控程序序(ROM Monitor)被调试被调试程序程序宿主机宿主机目标机目标机逻辑上的连接逻辑上的连接物理上的连接物理上的连接31JTAGJTAG调试方式调试方式 嵌入式系统的开发中,通常使用嵌入式系统的开发中,通常使用JTAGJTAG的调试装的调试装置对处理器进行底层的调试。置对处理器进行底层的调试。JTAGJTAG可以实现的功能有:可以实现的功能有:读取读取/
32、/修改地址空间任意值;设置断点位置;通过内修改地址空间任意值;设置断点位置;通过内置于置于CPUCPU内的内的ATPATP接口实现接口实现CPUCPU寄存器读取寄存器读取/ /修改,控制修改,控制CPUCPU运行运行/ /停止;下载程序写入停止;下载程序写入FlashFlash芯片等。芯片等。 主要优点:不占用目标机的资源,调试环境和最主要优点:不占用目标机的资源,调试环境和最终的程序运行环境基本一致,支持硬件断点,跟踪、终的程序运行环境基本一致,支持硬件断点,跟踪、精确计量程序的执行时间,具有时序分析等。精确计量程序的执行时间,具有时序分析等。 主要缺点:调试的实时性不如主要缺点:调试的实时
33、性不如ICEICE方式强,不支持方式强,不支持非干扰调试查询,非干扰调试查询,CPUCPU必须支持必须支持JTAGJTAG功能。功能。 32JTAGJTAG调试方法调试方法 CPU CPU的模式分为的模式分为一般模式一般模式和和调试模式调试模式一般模式下:一般模式下: CPUCPU从内存读取指令执行从内存读取指令执行调试模式下:调试模式下:CPUCPU首先从首先从调试端口调试端口读取指令,通过调读取指令,通过调试端口可以控制试端口可以控制CPUCPU进入和退出调试模式;进入和退出调试模式;HostHost端的调试器可以直接向目标机发送要执行的指令,端的调试器可以直接向目标机发送要执行的指令,读
34、写目标机的内存和各种寄存器,控制目标程序读写目标机的内存和各种寄存器,控制目标程序的运行,完成各种复杂的调试功能。的运行,完成各种复杂的调试功能。33JTAGJTAG下载器(连接器)下载器(连接器)34ARM JTAG EmulatorARM JTAG Emulator仿真器仿真器( (也称调试器)也称调试器)35支持程序下载及实时调试:支持实时硬件断点;可通过支持程序下载及实时调试:支持实时硬件断点;可通过JTAGJTAG修改寄存器、存储器内容。修改寄存器、存储器内容。JTAGJTAG接口:支持接口:支持1414针或针或2020针针JTAGJTAG接头。接头。支持支持EPPEPP增强型并口:
35、下载速度可达增强型并口:下载速度可达130KB/s130KB/s。JTAGJTAG时钟速率可调:最大可达时钟速率可调:最大可达10MHz10MHz;支持所有符合;支持所有符合RDI1.50RDI1.50或或RDI1.51RDI1.51规范的调试工具软件:规范的调试工具软件:ADSADS支持多种操作系统:支持多种操作系统:Microsoft Windows Microsoft Windows 95/98/NT/2000/Me/XP X86 Red Hat 95/98/NT/2000/Me/XP X86 Red Hat Linux 6.2/7.1/7.2 Linux 6.2/7.1/7.2独立的直
36、流独立的直流5V5V供电:不会影响目标板供电系统;兼容不同供电:不会影响目标板供电系统;兼容不同电压的目标板。电压的目标板。支持通过网络连接使用;支持多内核系统。支持通过网络连接使用;支持多内核系统。ARM JTAG EmulatorARM JTAG Emulator特点特点36 实时在线仿真系统实时在线仿真系统ICEICE ICE(In Circuit EmulatorICE(In Circuit Emulator)是一种用于替代目)是一种用于替代目标机上的标机上的CPUCPU设备,主要应用在硬件的实时开发调试设备,主要应用在硬件的实时开发调试中。中。ICEICE上的上的CPUCPU是一种特
37、殊的是一种特殊的CPU,CPU,它可以执行目标它可以执行目标机机CPUCPU的指令,能够将内部的信号输出到被控制的目的指令,能够将内部的信号输出到被控制的目标机。标机。ICEICE上的内存也可以被映射到用户的程序空间,上的内存也可以被映射到用户的程序空间,这样即使在目标机不存在的情况下,也可以进行代这样即使在目标机不存在的情况下,也可以进行代码的调试。码的调试。ICEICE可以完成一些特殊调试功能,可以完成一些特殊调试功能,如同时如同时支持软件断点和硬件断点的设置;实时跟踪目标程支持软件断点和硬件断点的设置;实时跟踪目标程序的运行,并可实现选择性的跟踪等。序的运行,并可实现选择性的跟踪等。IC
38、EICE的主要的主要缺缺点点是售价较贵。是售价较贵。 37实时在线仿真器实时在线仿真器38AngelAngel调试的方法调试的方法lAngelAngel是一组运行在目标机上的程序,可以接受主机上调试器是一组运行在目标机上的程序,可以接受主机上调试器发送的命令。发送的命令。功能如下:功能如下:lDebugDebug接收和解释接收和解释PCPC主机的调试命令,显示处理器、存储器主机的调试命令,显示处理器、存储器和寄存器的状态,可以通过未定义指令来设置断点。和寄存器的状态,可以通过未定义指令来设置断点。l支持支持AngelAngel调试协议调试协议ADP(AngelADP(Angel Debug P
39、rotocol) Debug Protocol),从而实,从而实现现PCPC主机与目标机的串行或并行通信主机与目标机的串行或并行通信, ,也支持与目标板的网也支持与目标板的网卡通信。卡通信。l支持目标机中应用程序可使用主机支持目标机中应用程序可使用主机PCPC上的标准上的标准C C函数库。通函数库。通过软中断过软中断SWISWI指令来实现。指令来实现。l具有多任务调度和处理器模式管理功能。能分配任务优先具有多任务调度和处理器模式管理功能。能分配任务优先级并对任务进行管理级并对任务进行管理, ,也可根据操作需要在不同处理器模式也可根据操作需要在不同处理器模式中运行。中运行。l具有中断功能。能实现
40、调试、通信和管理等操作的要求。具有中断功能。能实现调试、通信和管理等操作的要求。395.3.2 5.3.2 基于基于JTAGJTAG的调试系统的调试系统 1 1)JTAGJTAG接口简介接口简介 JTAGJTAG(Joint Test Action GroupJoint Test Action Group,联合测,联合测试行动小组)是一种国际标准测试协议试行动小组)是一种国际标准测试协议(IEEE1149.1IEEE1149.1标准),主要是用于对目标机系标准),主要是用于对目标机系统中的各芯片的简单调试,和对统中的各芯片的简单调试,和对bootloaderbootloader的的下载两个功能
41、。下载两个功能。JTAGJTAG连接器中,其芯片内部封连接器中,其芯片内部封装了专门的测试电路装了专门的测试电路TAPTAP(Test Access Port,Test Access Port,测试访问口测试访问口) ),通过专用的,通过专用的JTAGJTAG测试工具对内部测试工具对内部节点进行测试。因而是开发调试嵌入式系统的节点进行测试。因而是开发调试嵌入式系统的一种简洁高效的手段。一种简洁高效的手段。 JTAGJTAG有两种标准,有两种标准,1414针接口和针接口和2020针接口。针接口。401 1)JTAGJTAG接口简介接口简介 JTAGJTAG的出现可以使得集成芯片直接焊的出现可以使
42、得集成芯片直接焊接在接在PCBPCB板上。只通过边界扫描便可以被板上。只通过边界扫描便可以被测试,进行芯片的故障定位,迅速准确测试,进行芯片的故障定位,迅速准确的测试芯片引脚的连接是否可靠,提高的测试芯片引脚的连接是否可靠,提高测试校验效率。在微处理器中,可以通测试校验效率。在微处理器中,可以通过过JTAGJTAG直接控制直接控制ARMARM的内部总线,的内部总线,I/OI/O口口等信息,从而达到调试的目的。等信息,从而达到调试的目的。412) JTAG2) JTAG的主要功能的主要功能 (1 1)可以提供各引脚的采样,并可强制引脚输出用)可以提供各引脚的采样,并可强制引脚输出用以测试外围芯片
43、。以测试外围芯片。 (2 2)在线测试功能,可以在不影响系统工作的情况)在线测试功能,可以在不影响系统工作的情况下,观察系统各部分工作的情况。特别为表面贴元下,观察系统各部分工作的情况。特别为表面贴元件提供了方便。件提供了方便。 (3 3)在线编程功能,可以利用)在线编程功能,可以利用JTAGJTAG的外测试功能将的外测试功能将需装载的数据通过需装载的数据通过I/OI/O下载到系统中下载到系统中FlashFlash存储器的存储器的引脚上,在无需任何附加电路情况下完成在线编程引脚上,在无需任何附加电路情况下完成在线编程功能。功能。 (4 4)可以软件下载、执行、调试和控制,为复杂的)可以软件下载
44、、执行、调试和控制,为复杂的跟踪调试提供路径。跟踪调试提供路径。422) JTAG2) JTAG的主要功能的主要功能(5 5)可以进行多内核和多处理器的板级和芯)可以进行多内核和多处理器的板级和芯片级的调试,通过串接为芯片制造商提供芯片级的调试,通过串接为芯片制造商提供芯片生产、测试的途径。片生产、测试的途径。 基本特征:符合基本特征:符合IEEE 1149.1IEEE 1149.1规范;支持规范;支持全系列的全系列的ARMARM处理器。处理器。如如ARM7ARM7、ARM9ARM9、ARM10ARM10、XscaleXscale等等支持多种目标平台支持多种目标平台 ATMELATMEL、Su
45、msungSumsung、IntelIntel、PhilipPhilip、SharpSharp等。等。除除JTAGJTAG扫描链外,不占用目标板上任何资源扫描链外,不占用目标板上任何资源433)ARM3)ARM的的JTAGJTAG接口内部组成接口内部组成l JTAGJTAG接口一端与接口一端与PCPC机并口相连,另一端是面向机并口相连,另一端是面向用户的用户的JTAGJTAG测试接口,通过本身具有的边界扫描功测试接口,通过本身具有的边界扫描功能便可以对芯片进行测试,从而达到处理器的启动能便可以对芯片进行测试,从而达到处理器的启动和停滞、软件断点、单步执行和修改寄存器等功能和停滞、软件断点、单步
46、执行和修改寄存器等功能的调试目的。其内部主要是由的调试目的。其内部主要是由JTAGJTAG状态机和状态机和JTAGJTAG扫扫描链的组成。描链的组成。l JTAGJTAG链的组成:每一条链的组成:每一条JTAGJTAG链是由若干个链是由若干个JTAGJTAG的扫描单元串连组成的,每一个扫描单元都可以配的扫描单元串连组成的,每一个扫描单元都可以配置成捕获外部信号的输入单元或者对外的输出单元。置成捕获外部信号的输入单元或者对外的输出单元。依靠移位寄存器,通过依靠移位寄存器,通过JTAGJTAG的的TDOTDO和和TDITDI信号线,可信号线,可以使数据串行输出到每一个以使数据串行输出到每一个JTA
47、GJTAG扫描单元上,或者扫描单元上,或者读出每一个扫描单元的数据。读出每一个扫描单元的数据。44 JTAGJTAG的工作过程的工作过程 JTAGJTAG链的工作过程是将被测芯片内部所有的引脚链的工作过程是将被测芯片内部所有的引脚通过边界扫描单元通过边界扫描单元(BSC(BSC)串接起来,从)串接起来,从JTAGJTAG的数据的数据输入信号输入信号TDITDI引入,在数据输出信号引入,在数据输出信号TDOTDO上引出。通上引出。通过芯片内的过芯片内的BSCBSC来实现许多在线仿真的功能。在进入来实现许多在线仿真的功能。在进入调试状态,调试指令和数据从调试状态,调试指令和数据从TDITDI进入,
48、沿着测试链进入,沿着测试链通过测试单元送到芯片的各个引脚和测试寄存器中,通过测试单元送到芯片的各个引脚和测试寄存器中,通过不同的测试指令来完成不同的测试功能。通过不同的测试指令来完成不同的测试功能。 虽然虽然JTAGJTAG调试不占用系统资源,能够调试没有调试不占用系统资源,能够调试没有外部总线的芯片,代价也非常小。但是外部总线的芯片,代价也非常小。但是JTAGJTAG只能提只能提供一种静态的调试方式,不能提供处理器实时运行供一种静态的调试方式,不能提供处理器实时运行时的信息。它是通过串行方式依次传递数据的,所时的信息。它是通过串行方式依次传递数据的,所以传送信息速度比较慢。以传送信息速度比较
49、慢。454 4)JTAGJTAG的典型接口(的典型接口(1414针)针)lVCCVCC(1 1、1313脚):接电源脚):接电源lGNDGND(2 2、4 4、6 6、8 8、1010、1414脚):接地线脚):接地线lnTRSTnTRST(3 3脚):脚):JTAGJTAG复位信号,复位复位信号,复位JTAGJTAG的状态机的状态机和内部的宏单元和内部的宏单元(Macro cellMacro cell)lTDITDI(5 5脚):数据输入信号脚):数据输入信号lTMSTMS(7 7脚):脚): 测试模式选择(测试模式选择(Test Mode SelectTest Mode Select),)
50、,通过通过TMSTMS信号控制信号控制JTAGJTAG状态机的状态状态机的状态lTCKTCK(9 9脚)脚) :JTAGJTAG的时钟信号的时钟信号lTDOTDO(1111脚)脚) :数据输出信号:数据输出信号lNCNC(1212脚):未连接脚):未连接46JTAG14JTAG14连接连接图图47JTAG JTAG 2020针接口连接图针接口连接图485 5)建立开发环境)建立开发环境搭建硬件平台:搭建硬件平台: 连接好目标板电源,将连接好目标板电源,将ARM JTAGARM JTAG的一端与开发主机并口连接,另的一端与开发主机并口连接,另一端接与目标板的一端接与目标板的JTAGJTAG接口。
51、接口。安装集成开发环境:安装集成开发环境: 如如ADS V1.2ADS V1.2。安装安装ARM JTAGARM JTAG驱动程序。驱动程序。 宿主机调试器通过固定的协议控制下宿主机调试器通过固定的协议控制下位机(协议转换器)。宿主机调试器只发位机(协议转换器)。宿主机调试器只发送宏观的命令,比如:程序运行、终止;送宏观的命令,比如:程序运行、终止;读些内存、读些内存、ARMARM寄存器等。寄存器等。49嵌入式系统的开发与调试模式嵌入式系统的开发与调试模式50JTAGJTAG(1414针)接口电路图针)接口电路图515.3.3 5.3.3 基于基于AngelAngel的调试系统的调试系统lAn
52、gelAngel调试代理属于传统调试技术,也是调试代理属于传统调试技术,也是ARMARM公司特有的调试技术。基于公司特有的调试技术。基于AngelAngel的调的调试系统包含两个关键部分,分别是位于主试系统包含两个关键部分,分别是位于主机的调试软件(称为调试器)和驻留在目机的调试软件(称为调试器)和驻留在目标机标机FlashFlash上的上的AngelAngel调试监控程序。调试监控程序。lAngelAngel通过调试协议通过调试协议ADPADP(Angel Debug Angel Debug ProtocolProtocol)与主机上的调试器进行通信。)与主机上的调试器进行通信。 52目标机
53、上的目标机上的Angel实现的功能实现的功能 l1)基本的调试功能,主要包括有报告存)基本的调试功能,主要包括有报告存储器和处理器状态功能,将应用程序下载储器和处理器状态功能,将应用程序下载到目标系统中的功能和设置程序断点三个到目标系统中的功能和设置程序断点三个功能功能l(2)C语言库的支持功能语言库的支持功能 l(3)通信支持功能)通信支持功能 l(4)任务管理功能)任务管理功能 l(5)异常中断处理)异常中断处理 53 嵌入式软件的测试嵌入式软件的测试l测试工具测试工具:能够用来辅助测试的工具,主要用:能够用来辅助测试的工具,主要用来支持测试人员的工作,本身不能直接用来进来支持测试人员的工
54、作,本身不能直接用来进行测试。测试工具一般都是通用工具,测试人行测试。测试工具一般都是通用工具,测试人员应该根据实际情况对它们进行适当的调整。员应该根据实际情况对它们进行适当的调整。l嵌入式软件测试中经常用到的测试工具有:嵌入式软件测试中经常用到的测试工具有:l内存分析工具内存分析工具l性能分析工具性能分析工具l覆盖分析工具覆盖分析工具l缺陷跟踪工具等缺陷跟踪工具等 54嵌入式软件的测试嵌入式软件的测试内存分析工具内存分析工具 l嵌入式系统的内存资源通常是受限的,内存分析工嵌入式系统的内存资源通常是受限的,内存分析工具可以用来处理在进行动态内存分配时产生的缺陷。具可以用来处理在进行动态内存分配
55、时产生的缺陷。当动态分配的内存被错误地引用时,产生的错误通当动态分配的内存被错误地引用时,产生的错误通常难以再现,出现的失效难以追踪,使用内存分析常难以再现,出现的失效难以追踪,使用内存分析工具可以很好地检测出这类缺陷。工具可以很好地检测出这类缺陷。l目前常用的内存分析工具有软件和硬件两种:目前常用的内存分析工具有软件和硬件两种:l基于软件的内存分析工具可能会对代码的执行性能带来很基于软件的内存分析工具可能会对代码的执行性能带来很大影响,从而影响系统的实时性;大影响,从而影响系统的实时性;l基于硬件的内存分析工具对系统性能影响小,但价格昂贵,基于硬件的内存分析工具对系统性能影响小,但价格昂贵,
56、并且只能在特定的环境中使用。并且只能在特定的环境中使用。 55嵌入式软件的测试嵌入式软件的测试性能分析工具性能分析工具 l嵌入式系统的性能通常是一个非常关键的嵌入式系统的性能通常是一个非常关键的因素,开发人员一般需要对系统的某些关因素,开发人员一般需要对系统的某些关键代码进行优化来改进性能。键代码进行优化来改进性能。l性能分析工具性能分析工具l可以提供有关数据,帮助确定哪些任务消耗了可以提供有关数据,帮助确定哪些任务消耗了过多的执行时间,从而可以决定如何优化软件,过多的执行时间,从而可以决定如何优化软件,以获得更好的时间性能。以获得更好的时间性能。l引导开发人员发现在系统调用中存在的错误以引导
57、开发人员发现在系统调用中存在的错误以及程序结构上的缺陷。及程序结构上的缺陷。 56软件测试常用的两种方法软件测试常用的两种方法 (1 1)白盒测试)白盒测试 基于代码的测试检查程序的内部设计。把基于代码的测试检查程序的内部设计。把100%100%的代码都测试一遍是不可能的,所以要选的代码都测试一遍是不可能的,所以要选择最重要的代码进行白盒测试。在进行测试是择最重要的代码进行白盒测试。在进行测试是要把系统的与其用途作为重要依据,根据实际要把系统的与其用途作为重要依据,根据实际中对负载、定时、性能的要求,判断软件是否中对负载、定时、性能的要求,判断软件是否满足这些需求规范。满足这些需求规范。 白盒
58、测试一般在白盒测试一般在目标硬件目标硬件上进行。通过上进行。通过硬件仿真进行,所以选取的测试工具应该支硬件仿真进行,所以选取的测试工具应该支持在宿主环境中进行。这种方法一般是开发持在宿主环境中进行。这种方法一般是开发方的内部测试方法。方的内部测试方法。57 黑盒设计黑盒设计在某些情况下也称为功能测试。不依在某些情况下也称为功能测试。不依赖于代码,而是从使用的角度进行测试。赖于代码,而是从使用的角度进行测试。 黑盒只能限制在黑盒只能限制在需求的范围内需求的范围内进行。第三方采进行。第三方采用的方法,进行验证和确认测试。用的方法,进行验证和确认测试。 嵌入式软件的测试工具嵌入式软件的测试工具 (1
59、 1)内存分析工具)内存分析工具 (2 2)性能分析工具)性能分析工具 (3 3)GUIGUI(图形界面)测试工具(图形界面)测试工具 (4 4)覆盖分析工具。)覆盖分析工具。(2 2)黑盒设计)黑盒设计58嵌入式软件的固化运行嵌入式软件的固化运行阶段阶段调试环境调试环境固化环境固化环境编译编译目标文件需要调试信息目标文件需要调试信息目标文件不需要调试信息目标文件不需要调试信息链接链接应用系统目标代码不需要应用系统目标代码不需要BootBoot模模块,此模块已由目标板上的监控块,此模块已由目标板上的监控器程序实现。器程序实现。应用系统目标代码必须以应用系统目标代码必须以BootBoot模模块作
60、为入口模块。块作为入口模块。定位定位程序的所有代码段、数据段都依程序的所有代码段、数据段都依次被定位到调试空间的次被定位到调试空间的RAMRAM中。中。程序的各逻辑段按照其不同的属程序的各逻辑段按照其不同的属性分别定位到非易失性存储空间性分别定位到非易失性存储空间(ROMROM)或)或RAMRAM中。中。下载下载宿主机上的调试器读入被调试文件,宿主机上的调试器读入被调试文件,并将其下载到目标机上的调试空间中,并将其下载到目标机上的调试空间中,目标机掉电后所有信息全部丢失。目标机掉电后所有信息全部丢失。在宿主机上利用固化工具将可固化的在宿主机上利用固化工具将可固化的应用程序写入目标机的非易失性存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位笔试-辽宁-辽宁公共卫生管理(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-贵州-贵州中西医临床医学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-湖南-湖南妇幼保健学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-海南-海南风湿免疫科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-浙江-浙江流行病学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-河南-河南中医康复学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-江西-江西神经内科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-江苏-江苏口腔科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-山西-山西中医康复学(医疗招聘)历年参考题库含答案详解
- 2026年光缆制造行业技术趋势研究报告及未来五至十年并购整合与集中度提升
- 2026年新版预防未成年人犯罪法知识竞赛题库及参考答案
- 2026年水务集团招聘考试笔试试题及答案
- 2026年甘肃省酒泉市金塔县招聘社区工作者考试参考题库及答案解析
- 2026年云南云上云大数据产业发展有限公司及下属子公司第一次社会招聘(32人)笔试模拟试题及答案详解
- 冠状动脉粥样硬化性心脏病患者药物治疗管理路径专家共识
- 纺织厂安全生产管理制度
- 2026中国新能源电池技术研发行业市场现状趋势分析投资策略规划报告
- 2026秋沪教牛津版五年级上英语单词默写(默写)
- 苏教版六年级上册数学《比的意义》教学设计
- JJF(吉)106-2022 水分接收器校准规范
- 中药饮片调剂规范考核试题及答案
评论
0/150
提交评论