嵌入式系统开发环境和调试方法.ppt
《嵌入式系统开发环境和调试方法.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统开发环境和调试方法.ppt(74页珍藏版)》请在三一文库上搜索。
1、第四章 嵌入式系统的 开发环境和调试方法,目录,嵌入式系统的调试方法 基于仿真头的传统调试方法 基于JTAG的调试方法 基于Angel的调试方法 基于软件仿真的调试方法 嵌入式Linux的开发环境和调试方法 Windows CE的开发环境和调试方法,嵌入式系统的调试方法,嵌入式调试系统应含调试主机、仿真器(协议转换)和目标板3个部分。调试主机即一台安装有开发工具软件的通用计算机;目标板即被调试对象,在这块目标板上应该焊接一片所使用的目标CPU。调试也有多种方法,按其原理分类叙述如下。 (1)基于仿真头的传统调试方法 (2)基于JTAG的调试方法 (3)基于Angel的调试方法 (4)基于软件仿
2、真的调试方法,基于仿真头的传统调试方法,在嵌入式系统的开发中,有时也使用传统的调试方法,即使用一个单片机作为仿真头,取代目标板上的CPU。这种在线仿真器和调试主机之间可以有多种连接方式。它具有下列局限性: 由于要使用一个比目标CPU更复杂的单片机做仿真器,就必须先解决这个更复杂的单片机的生产和仿真调试问题。 必须为每一种单片机研制仿真器,这不但增加产品开发成本,在实际上也是很困难的。 使用传统的调试方法必须把仿真器焊接或插接在目标板上,这对于引脚数量很大的贴片式目标CPU,也是不可能的。,基于JTAG的调试方法,嵌入式系统最常用的调试方法。 调试主机上必须安装的工具包括程序编辑和编译系统、调试
3、器和程序所涉及的库文件。 目标板必须含有JTAG接口。调试主机和目标板之间有一个协议转换模块,称为调试代理,主要作用有两个: 在调试主机和目标板之间进行协议转换; 进行接口转换,目标板一端是标准的JTAG接口,调 试主机一端可能是串口、并口或是USB接口等。,常见的ARM仿真 器大都是基于JTAG 的仿真器。,基于JTAG的调试方法,使用边界扫描技术可以全面地解决了传统调试方法所带来的困难。近年来生产的大多数结构复杂的单片机,都使用边界扫描技术为用户提供仿真调试方法。这种调试方法具有下列特点: 需要把目标CPU焊接在目标板上。在调试过程中,执行用户指令和控制调试过程的是目标CPU本身;不需要其
4、他单片机参与调试。使用边界扫描技术实现系统调试必须保证目标板的最小系统正常工作。,基于JTAG的调试方法,仿真系统可以通用。例如,一个ARM7的仿真系统可以调试所有以ARM7为核的单片机,即使这些单片机来自不同的厂家,即使这些单片机的性能相差很大。但要注意,在对单片机内的程序存储器进行用户程序固化时,仿真系统不是通用的。 仿真器与被调试的目标CPU的复杂程度无关。这是由ARM处理器的特点决定的。,基于JTAG的调试方法,仿真器与被调试的目标CPU的复杂程度无关。这是由ARM处理器的特点决定的。 仿真系统开发成本比较低。因为系统能够通用,所以开发成本可以大幅度降低。虽然 ARM处理器结构比较复杂
5、,但是并没有增加仿真器的开发难度。 结构简单。ARM仿真器结构都比较简单,原因是调试中的大部分工作都由处理器完成。,基于JTAG的调试方法边界扫描技术,每个边界扫描单元的检测对象都是一条引线,并假定一个边界,只在这个边界位置检测和控制这条引线,对边界以外的结构不予关心。 引线A和B之间插入一个边界扫描单元,当扫描单元不工作时,A和B引线是“透明”的;当扫描单元工作时,A和B引线也可以是“透明”的,也可以是不“透明”,的。串行数据输出可以采样A端信号,也可以采样B端信号。在不“透明”的情况下,串行数据输入信号可以传送到A端,也可以传送到B端。这样就可以达到检测和控制引线A和B的目的。,基于JTA
6、G的调试方法ARM调试原理,ARM处理器内核包括调试逻辑和接口逻辑。对于不同版本的ARM处理器内核,调试逻辑和接口逻辑略有差别。ARM7的调试逻辑包括3个部分: 嵌入式ICERT逻辑。支持实时调试的嵌入式在线仿真逻辑。实现在线调试功能,可以通过两种方式进行访问: 通过ARM处理器主核访问。ARM主核把嵌入式ICE-RT作为外部协处理器14,使用协处理器指令MCR和MRC进行访问。 通过扫描链进行访问。调试系统通过扫描链2访问嵌入式ICE- RT。 TAP控制器。调试系统通过TAP控制器控制扫描链的工作。 由多个扫描链组成的扫描逻辑。供用户使用的共有3个扫描链。,基于JTAG的调试方法ARM调试
7、原理,嵌入式ICERT逻辑。支持实时调试的嵌入式在线仿真逻辑。 TAP控制器。调试系统通过TAP控制器控制扫描链的工作。 由多个扫描链组成的扫描逻辑。供用户使用的共有3个扫描链。,基于JTAG的调试方法ARM调试原理,在ARM处理器中,主要的扫描链共有3条: 扫描链0:允许调试系统对整个ARM处理器主核外围进行访问,扫描链0长度为105位。包括32位数据总线和32位地址总线。 扫描链1:长度是33位,是扫描链0的的前33位,包括32位数据总线和1位控制位。 扫描链2:允许调试系统对嵌入式ICERT逻辑中的寄存器进行访问。嵌入式ICERT逻辑中有多个寄存器,调试系统通过扫描链中串行数据的输入输出
8、访问这些寄存器。扫描链2长度是38位,包括32位数据、5位地址和1位读写控制位。,基于JTAG的调试方法ARM调试原理,基于JTAG的调试方法JTAG接口,TAP控制器外部有4条引线,分别是测试数据输入TDI、测试数据输出TDO、测试时钟TCK和测试模式选择TMS。这4条引线是芯片的外部引脚,连接到外部调试系统。TDI和TDO是串行数据输入输出,TCK用做同步时钟。由这4条线(还有一条可选线TRST)组成的接口一般称为JTAG接口,其符合IEEE 11491标准。这个标准是一个关于测试访问接口和边界扫描结构的标准。 JTAG接口是目标CPU在调试时与外部连接的最主要的接口。,基于JTAG的调试
9、方法ARM调试原理,仿真调试的工作过程 由外部调试器发出的调试命令经由JTAG接口TDI引线进入扫描链,由TAP控制器控制扫描链的工作,对处理器进行调试;处理器的寄存器和系统内的数据经由扫描链串行到TDO引线,然后通过JTAG接口传送到调试器。,基于JTAG的调试方法JTAG接口,JTAG接口与测试主机的连接有 并口、串口、USB和以太网等,基于JTAG的调试方法简易JTAG接口,基于JTAG的调试方法ADS开发工具,ADS是现在应用比较广泛的ARM开发工具之一,它是由ARM公司自己推出的ARM处理器专用开发软件,成熟版本为ADS1.2。 ADS1.2 支持ARM10 之前的所有ARM 系列微
10、控制器,支持软件调试及JTAG 硬件仿真调试,支持汇编、C、C+源程序,具有编译效率高、系统库功能强等特点,可以在Windows及 RedHat Linux上运行。,基于JTAG的调试方法ADS开发工具,ADS中提供了两种关于编译、链接、调试的方法,一种 是命令行方式,另一种是GUI环境方法或称图形方式。图 形方式是把命令行方式中的命令集成到一起形成的。这两 种方法使用ADS中同一资源。,基于JTAG的调试方法ADS的组成部分,基于JTAG的调试方法CodeWarrior IDE,ADS 1.2 使用了CodeWarrior IDE集成开发环 境,并集成以下内容 ARM 汇编器、 ARM 的C
11、/C+编译器 Thumb 的C/C+编译器 ARM 连接器, CodeWarrior IDE包含工程管理器、代码生成 接口、语法敏感(对关键字以不同颜色显示)编辑 器、源文件和类浏览器等等。,基于JTAG的调试方法CodeWarrior IDE 主窗口,基于JTAG的调试方法AXD 调试器, AXD 调试器为ARM 扩展调试器。 AXD支持硬件仿真和软件仿真(ARMulator)。 AXD 能够装载映像文件到目标内存,具有单步、全速和断点等调试功能,可以观察变量、寄存器和内存的数据等等。,基于JTAG的调试方法AXD主窗口,基于JTAG的调试方法ADS开发过程,工程的编辑 建立工程,使用工程模
12、板建立工程 建立文件,建立一个文本文件,以便输入用户程序。 添加文件到工程 用户也可以用添加源文件和建立源文件时选择加入工程的方法添加文件到工程。,基于JTAG的调试方法ADS开发过程,编译并连接工程 编译连接前可进行编译器中工程的地址设置、输出文件设置等编译选项的设置; 对于简单的软件调试,可以不进行连接地址的设置,直接点击工程窗口的“Make”图标按钮,即可完成编译连接。 若编译出错,会有相应的出错提示,双击出错提示行信息,编辑窗即会使用光标指出当前出错的源代码行。,基于JTAG的调试方法ADS开发过程,工程的调试 当工程编译连接通过后,在工程窗口中点击“Debug”图标按钮,即可启动AX
13、D 进行调试(也可以通过【开始】菜单起动AXD)。 在Choose Target 窗口中设置调试器。在没有添加其它仿真驱动程序前,Target 项中只有两项,分别为ADP(JTAG 硬件仿真)和ARMUL(软件仿真)。 选择仿真驱动程序后,加载ELF 格式的可执行文件,即*.axf 文件。 工程编译连接通过后,在“工程名工程名_Data 当前的生成目标”目录下会生成一个*.axf 调试文件。,基于JTAG的调试方法ADS工程模板,用各个工程模板建立的工程,它们的各项设 置均有不同之处,方便生成不同结构的代码,常 见的工程模板有: ARM可执行映象(生成ARM 指令的代码) Thumb 可执行映
14、象(生成Thumb 指令的代码) Thumb、ARM 交织映象 合理使用标准工程模板可以方便程序的开发过程,基于Angel 的调试方法,基本原理:位于目标板上的CPU已经固化了一个完整的调试监控程序,这个监控程序可以接受来自调试主机的调试命令,并执行这些命令,如设置断点、单步运行、读写存储器等;同时,这个监控程序也可以把数据传送到调试主机。,基于Angel 的调试方法,使用Angel调试方法的前提是: 目标板已经稳定工作,目标CPU的最小系统硬件正常。 被调试的目标系统中已经固化了一个完整的调试监控程序。分为两种情况:一是监控程序由JTAG仿真器固化完成,这时必须先使用JTAG调试方法;二是监
15、控程序由专门的程序写入设备完成,一般以ARM为核的单片机这种情况比较少。 调试主机和被调试的单片机之间,可以通过串口、并口或以太网口等实现通信,这个接口是目标单片机的外部输入输出引脚(非JTAG接口),因此占用的是用户资源。 有稳定的、可以固化在目标单片机内的调试监控软件。,基于Angel 的调试方法,Angel调试方法不使用JTAG接口,但这种方法占用用户资源,主要有: 占用内部程序存储器以保存调试监控程序; 占用内部中断资源; 需要占用输入输出口线和调试主机通信 有可能占用数据栈,基于Angel 的调试方法,Angel调试监控程序是一个软件目标常驻调试代理。以源码形式由ARM提供,从而为开
16、发者提供一个将主机调试器与硬件接口的调试环境。用于开发和调试运行在基于ARM硬件上的应用程序,可以调试运行在ARM或Thumb状态下的应用程序。 Angel是 Demon升级版本,所有函数中对数据段使用的结构都从汇编例程转换成等价的C例程。功能在三个方面得到了提高: 通信从以前的字节流变为可变大小的基于包的通信链接。这样,在新协议中允许灵活且功能强大的错误检测。 增加了通信通道和通道管理功能,从而能对应用通信层更加可靠地通信和更加方便地访问。Angel使用10个已定义的通道,它允许145个通道定义。 在中断发送代码中使用C语言函数的指针向量,从而增加了外部设备驱动器的支持,这意味着更容易增加用
17、户设备。此外,还包括对各种媒质的支持,例如以太网、并行通信以及ARM调试通信通道的使用。,基于Angel 的调试方法,Angel主要用于: 调试在真正硬件上而不是硬件仿真器上的应用软件; 在开发板上开发新的软件应用程序; 运行基于ARM处理器的新硬件设备; 加载基于ARM的操作系统。 Angel使用Angel调试协议ADP进行主机和目标机的通信。支持多通道,并提供检错功能。 Angel的提供方式有以下3种: 在ARM开发板的Flash或ROM中独立的可执行程序 可以下载到Flash或RAM中的已编译完成的映像文件 可以根据自己设计的硬件进行重新修改编译的源程序。,基于Angel 的调试方法,A
18、ngel系统的特点 支持调试; 支持C库半主机方式; 支持通信; 任务管理; 异常处理。,基于Angel 的调试方法,Angel的特点支持调试 (1)查看和修改存储器和处理器状态 存储器位置被传递给一个函数,此函数将内存以字节流的方式复制到发送缓冲区,放置在向主机的输出包中。 (2)向目标机下载应用程序 通过从来自主机的数据包中卸载字节,并随即将其写入由主机定义地址的存储器来实现下载。下载过程通过调用一个字节流函数来实现。 (3)设置断点 Angel只能在RAM中设置断点。要中止的指令被Angel规定的“指定未定义指令”所代替。Angel保存原指令,以确保如果包含此位置的存储区域被检测时恢复原
19、指令。当移走断点时,恢复原指令。,基于Angel 的调试方法,Angel的特点支持C库半主机 Angel使用软中断(SWI)机制,使应用程序和ARM C和C+库链接,从而完成半主机请求。半主机请求必须通过与主机的通信来完成,如“打开主机上的一个文件”或“获得调试器命令行”。这些请求之所以被称为半主机请求,是因为它们需要依赖主机上的C库来执行请求。Angel使用单一的SWI来请求半主机操作。,基于Angel 的调试方法,Angel的特点支持通信 Angel使用ADP协议进行通信,通过使用通道来使多个独立的信息共享一条通信连接。Angel还提供了检错功能。主机和开发板的连接既可以是串行并行连接,也
20、可以是以太网连接。使用以太网连接。 主机和目标系统中具有通道管理功能,保证了逻辑通道可以可靠地进行多路复用和设备驱动检测并抛弃已破坏的数据包。通道管理器监控所有的数据流,并把传输的数据存入缓冲区中以防止重发。 完全的Angel设备驱动结构使用Angel任务管理功能来控制包的处理,并确保中断不会被长时间的禁止。用户可以写设备驱动程序来驱动其他的调试设备,也可以扩展Angel来支持其他的外设。,基于Angel 的调试方法,Angel的特点支持任务管理 所有的Angel操作,包括通信和调试,都是由Angel任务管理功能控制的。包括 确保在任何时候只有一个操作在执行; 分配任务的优先级,以及分配任务;
21、 控制Angel环境中的处理器模式。,基于Angel 的调试方法,Angel的特点支持异常处理 Angel异常处理是以上所描述的Angel特点的基础,Angel为除了复位以外的所有异常类型设置了异常处理程序。这些异常类型包括: 软件中断(SWI):Angel设置SWI异常处理程序来支持C库半主机请求,并允许应用程序和Angel进入管理模式。 未定义(undefined):Angel使用3条未定义指令在代码中设置断点。 数据中止和预取中止(data,prefetch abort):Angel设置了基本的数据中止和预取中止处理程序。这些处理程序向调试器报告异常,挂起应用程序,并将控制返回给调试器。
22、 FIQ和IRQ:Angel设置了IRQ和FIQ处理程序,如果需要自定义中断,则最好将IRQ用做Angel通信,FIQ用做用户自定义中断。,基于Angel 的调试方法,Angel系统的组成 典型的Angel系统包含两个主要部分:调试器和Angel调试监控程序。它们通过一条物理链路(如串行电缆)进行通信。 调试器运行在主机上。它向Angel发送指令并显示从Angel获得的结果。调试器可以是任何一种支持Angel调试协议ADP的调试工具。 Angel调试监控程序与运行在目标平台上被调试的应用程序同时运行。Angel有两种配置:一种是在开发硬件上使用的完全版,另一种是在产品硬件上使用的简化版。,基于
23、Angel 的调试方法,典型的Angel系统的组 成框图。 主机上的调试器向 目标系统中的Angel发 送请求,Angel解释这 些请求并执行某种操作,基于Angel 的调试方法,Angel系统的资源需求 (1)系统资源 包括用于半主机的一个ARM SWI和一个Thumb SWI,用于断点的两条ARM未定义指令条Thumb未定义指令。 (2)ROM和RAM需求 需要用ROM或Flash存储器来存储调试监控程序的代码,需要用RAM来存储数ROM,Flash和RAM的大小根据用户的需要而定。 (3)异常向量 需要控制一些ARM异常向量。异常向量由Angel初始化,并且初始化后不再被重写。它支持位于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 开发 环境 调试 方法
链接地址:https://www.31doc.com/p-2155560.html