《嵌入式系统开发环境和调试方法讲稿.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统开发环境和调试方法讲稿.ppt(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统开发环境和调试方法第一页,讲稿共七十四页哦目录嵌入式系统的调试方法n基于仿真头的传统调试方法n基于JTAG的调试方法n基于Angel的调试方法n基于软件仿真的调试方法嵌入式Linux的开发环境和调试方法Windows CE的开发环境和调试方法第二页,讲稿共七十四页哦嵌入式系统的调试方法 嵌入式调试系统应含调试主机、仿真器(协议转换)和目标板3个部分。调试主机即一台安装有开发工具软件的通用计算机;目标板即被调试对象,在这块目标板上应该焊接一片所使用的目标CPU。调试也有多种方法,按其原理分类叙述如下。(1)基于仿真头的传统调试方法 (2)基于JTAG的调试方法 (3)基于Angel的调
2、试方法 (4)基于软件仿真的调试方法第三页,讲稿共七十四页哦基于仿真头的传统调试方法 在嵌入式系统的开发中,有时也使用传统的调试方法,即使用一个单片机作为仿真头,取代目标板上的CPU。这种在线仿真器和调试主机之间可以有多种连接方式。它具有下列局限性:由于要使用一个比目标CPU更复杂的单片机做仿真器,就必须先解决这个更复杂的单片机的生产和仿真调试问题。必须为每一种单片机研制仿真器,这不但增加产品开发成本,在实际上也是很困难的。使用传统的调试方法必须把仿真器焊接或插接在目标板上,这对于引脚数量很大的贴片式目标CPU,也是不可能的。第四页,讲稿共七十四页哦基于JTAG的调试方法 嵌入式系统最常用的调
3、试方法。调试主机上必须安装的工具包括程序编辑和编译系统、调试器和程序所涉及的库文件。目标板必须含有JTAG接口。调试主机和目标板之间有一个协议转换模块,称为调试代理,主要作用有两个:在调试主机和目标板之间进行协议转换;进行接口转换,目标板一端是标准的JTAG接口,调 试主机一端可能是串口、并口或是USB接口等。常见的ARM仿真器大都是基于JTAG的仿真器。第五页,讲稿共七十四页哦基于JTAG的调试方法 使用边界扫描技术可以全面地解决了传统调试方法所带来的困难。近年来生产的大多数结构复杂的单片机,都使用边界扫描技术为用户提供仿真调试方法。这种调试方法具有下列特点:需要把目标CPU焊接在目标板上。
4、在调试过程中,执行用户指令和控制调试过程的是目标CPU本身;不需要其他单片机参与调试。使用边界扫描技术实现系统调试必须保证目标板的最小系统正常工作。第六页,讲稿共七十四页哦基于JTAG的调试方法 仿真系统可以通用。例如,一个ARM7的仿真系统可以调试所有以ARM7为核的单片机,即使这些单片机来自不同的厂家,即使这些单片机的性能相差很大。但要注意,在对单在对单片机内的程序存储器进行用户程序固化时,片机内的程序存储器进行用户程序固化时,仿真系统不是通用的。仿真系统不是通用的。仿真器与被调试的目标CPU的复杂程度无关。这是由ARM处理器的特点决定的。第七页,讲稿共七十四页哦基于JTAG的调试方法 仿
5、真器与被调试的目标CPU的复杂程度无关。这是由ARM处理器的特点决定的。仿真系统开发成本比较低。因为系统能够通用,所以开发成本可以大幅度降低。虽然 ARM处理器结构比较复杂,但是并没有增加仿真器的开发难度。结构简单。ARM仿真器结构都比较简单,原因是调试中的大部分工作都由处理器完成。第八页,讲稿共七十四页哦基于JTAG的调试方法边界扫描技术 每个边界扫描单元的检测对象都是一条引线,并假定一个边界,只在这个边界位置检测和控制这条引线,对边界以外的结构不予关心。引线A和B之间插入一个边界扫描单元,当扫描单元不工作时,A和B引线是“透明”的;当扫描单元工作时,A和B引线也可以是“透明”的,也可以是不
6、“透明”的。串行数据输出可以采样A端信号,也可以采样B端信号。在不“透明”的情况下,串行数据输入信号可以传送到A端,也可以传送到B端。这样就可以达到检测和控制引线A和B的目的。第九页,讲稿共七十四页哦基于JTAG的调试方法ARM调试原理 ARM处理器内核包括调试逻辑和接口逻辑。对于不同版本的ARM处理器内核,调试逻辑和接口逻辑略有差别。ARM7的调试逻辑包括3个部分:嵌入式ICERT逻辑。支持实时调试的嵌入式在线仿真逻辑。实现在线调试功能,可以通过两种方式进行访问:通过ARM处理器主核访问。ARM主核把嵌入式ICE-RT作为外部协处理器14,使用协处理器指令MCR和MRC进行访问。通过扫描链进
7、行访问。调试系统通过扫描链2访问嵌入式ICE-RT。TAP控制器。调试系统通过TAP控制器控制扫描链的工作。由多个扫描链组成的扫描逻辑。供用户使用的共有3个扫描链。第十页,讲稿共七十四页哦基于JTAG的调试方法ARM调试原理 嵌入式ICERT逻辑。支持实时调试的嵌入式在线仿真逻辑。TAP控制器。调试系统通过TAP控制器控制扫描链的工作。由多个扫描链组成的扫描逻辑。供用户使用的共有3个扫描链。第十一页,讲稿共七十四页哦基于JTAG的调试方法ARM调试原理 在ARM处理器中,主要的扫描链共有3条:扫描链0:允许调试系统对整个ARM处理器主核外围进行访问,扫描链0长度为105位。包括32位数据总线和
8、32位地址总线。扫描链1:长度是33位,是扫描链0的的前33位,包括32位数据总线和1位控制位。扫描链2:允许调试系统对嵌入式ICERT逻辑中的寄存器进行访问。嵌入式ICERT逻辑中有多个寄存器,调试系统通过扫描链中串行数据的输入输出访问这些寄存器。扫描链2长度是38位,包括32位数据、5位地址和1位读写控制位。第十二页,讲稿共七十四页哦基于JTAG的调试方法ARM调试原理第十三页,讲稿共七十四页哦基于JTAG的调试方法JTAG接口 TAP控制器外部有4条引线,分别是测试数据输入TDI、测试数据输出TDO、测试时钟TCK和测试模式选择TMS。这4条引线是芯片的外部引脚,连接到外部调试系统。TD
9、I和TDO是串行数据输入输出,TCK用做同步时钟。由这4条线(还有一条可选线TRST)组成的接口一般称为JTAG接口,其符合IEEE 11491标准。这个标准是一个关于测试访问接口和边界扫描结构的标准。JTAG接口是目标CPU在调试时与外部连接的最主要的接口。第十四页,讲稿共七十四页哦基于JTAG的调试方法ARM调试原理仿真调试的工作过程 由外部调试器发出的调试命令经由JTAG接口TDI引线进入扫描链,由TAP控制器控制扫描链的工作,对处理器进行调试;处理器的寄存器和系统内的数据经由扫描链串行到TDO引线,然后通过JTAG接口传送到调试器。第十五页,讲稿共七十四页哦基于JTAG的调试方法JTA
10、G接口引脚名英文全名说明TDITest Data In测试数据输入TMSTest Mode Select测试模式选择TCKTest Clock Out测试时钟输入TDOTest Data Out测试数据输出 JTAG接口与测试主机的连接有并口、串口、USB和以太网等第十六页,讲稿共七十四页哦基于JTAG的调试方法简易JTAG接口第十七页,讲稿共七十四页哦基于JTAG的调试方法ADS开发工具 ADS是现在应用比较广泛的ARM开发工具之一,它是由ARM公司自己推出的ARM处理器专用开发软件,成熟版本为ADS1.2。ADS1.2 支持ARM10 之前的所有ARM 系列微控制器,支持软件调试及JTAG
11、 硬件仿真调试,支持汇编、C、C+源程序,具有编译效率高、系统库功能强等特点,可以在Windows及 RedHat Linux上运行。第十八页,讲稿共七十四页哦基于JTAG的调试方法ADS开发工具 ADS中提供了两种关于编译、链接、调试的方法,一种是命令行方式,另一种是GUI环境方法或称图形方式。图形方式是把命令行方式中的命令集成到一起形成的。这两种方法使用ADS中同一资源。第十九页,讲稿共七十四页哦基于JTAG的调试方法ADS的组成部分名称描述使用方式代码生成工具ARM 汇编器ARM 的C、C+编译器Thumb 的C、C+编译器ARM 连接器由CodeWarrior IDE 调用集成开发环境
12、CodeWarrior IDE工程管理,编译连接调试器AXDADW/ADUArmsd仿真调试指令模拟器ARMulator由AXD 调用ARM 开发包一些底层的例程,实用程序(如fromELF)一些实用程序由CodeWarriorIDE 调用ARM 应用库C、C+函数库等用户程序使用第二十页,讲稿共七十四页哦基于JTAG的调试方法CodeWarrior IDECodeWarrior IDE ADS 1.2 使用了CodeWarrior IDE集成开发环境,并集成以下内容ARM 汇编器、ARM 的C/C+编译器Thumb 的C/C+编译器ARM 连接器,CodeWarrior IDE包含工程管理器
13、、代码生成接口、语法敏感(对关键字以不同颜色显示)编辑器、源文件和类浏览器等等。第二十一页,讲稿共七十四页哦基于JTAG的调试方法CodeWarrior IDE 主窗口第二十二页,讲稿共七十四页哦基于JTAG的调试方法AXD AXD 调试器 AXD 调试器为ARM 扩展调试器。AXD支持硬件仿真和软件仿真(ARMulator)。AXD 能够装载映像文件到目标内存,具有单步、全速和断点等调试功能,可以观察变量、寄存器和内存的数据等等。第二十三页,讲稿共七十四页哦基于JTAG的调试方法AXD主窗口第二十四页,讲稿共七十四页哦基于JTAG的调试方法ADSADS开发过程开发过程工程的编辑工程的编辑建立
14、工程,使用工程模板建立工程建立文件,建立一个文本文件,以便输入用户程序。添加文件到工程用户也可以用添加源文件和建立源文件时选择加入工程的方法添加文件到工程。第二十五页,讲稿共七十四页哦基于JTAG的调试方法ADSADS开发过程开发过程编译并连接工程编译并连接工程编译连接前可进行编译器中工程的地址设置、输出文件设置等编译选项的设置;对于简单的软件调试,可以不进行连接地址的设置,直接点击工程窗口的“Make”图标按钮,即可完成编译连接。若编译出错,会有相应的出错提示,双击出错提示行信息,编辑窗即会使用光标指出当前出错的源代码行。第二十六页,讲稿共七十四页哦基于JTAG的调试方法ADSADS开发过程
15、开发过程工程的调试工程的调试当工程编译连接通过后,在工程窗口中点击“DebugDebug”图标按钮,即可启动AXD AXD 进行调试(也可以通过【开始】菜单起动AXD)AXD)。在Choose Target 窗口中设置调试器。在没有添加其它仿真驱动程序前,Target 项中只有两项,分别为ADP(JTAG 硬件仿真)和ARMUL(软件仿真)。选择仿真驱动程序后,加载ELF ELF 格式的可执行文件,即*.axf.axf 文件。工程编译连接通过后,在“工程名工程名_Data当前的生成目标”目录下会生成一个*.axf 调试文件。第二十七页,讲稿共七十四页哦基于JTAG的调试方法ADSADS工程模板
16、 用各个工程模板建立的工程,它们的各项设置均有不同之处,方便生成不同结构的代码,常见的工程模板有:ARM可执行映象(生成ARM 指令的代码)Thumb 可执行映象(生成Thumb 指令的代码)Thumb、ARM 交织映象 合理使用标准工程模板可以方便程序的开发过程第二十八页,讲稿共七十四页哦基于Angel 的调试方法 基本原理:位于目标板上的CPU已经固化了一个完整的调试监控程序,这个监控程序可以接受来自调试主机的调试命令,并执行这些命令,如设置断点、单步运行、读写存储器等;同时,这个监控程序也可以把数据传送到调试主机。第二十九页,讲稿共七十四页哦基于Angel 的调试方法使用Angel调试方
17、法的前提是:目标板已经稳定工作,目标CPU的最小系统硬件正常。被调试的目标系统中已经固化了一个完整的调试监控程序。分为两种情况:一是监控程序由JTAG仿真器固化完成,这时必须先使用JTAG调试方法;二是监控程序由专门的程序写入设备完成,一般以ARM为核的单片机这种情况比较少。调试主机和被调试的单片机之间,可以通过串口、并口或以太网口等实现通信,这个接口是目标单片机的外部输入输出引脚(非JTAG接口),因此占用的是用户资源。有稳定的、可以固化在目标单片机内的调试监控软件。第三十页,讲稿共七十四页哦基于Angel 的调试方法 Angel调试方法不使用JTAG接口,但这种方法占用用户资源,主要有:占
18、用内部程序存储器以保存调试监控程序;占用内部中断资源;需要占用输入输出口线和调试主机通信 有可能占用数据栈第三十一页,讲稿共七十四页哦基于Angel 的调试方法 Angel调试监控程序是一个软件目标常驻调试代理。以源码形式由ARM提供,从而为开发者提供一个将主机调试器与硬件接口的调试环境。用于开发和调试运行在基于ARM硬件上的应用程序,可以调试运行在ARM或Thumb状态下的应用程序。Angel是 Demon升级版本,所有函数中对数据段使用的结构都从汇编例程转换成等价的C例程。功能在三个方面得到了提高:通信从以前的字节流变为可变大小的基于包的通信链接。这样,在新协议中允许灵活且功能强大的错误检
19、测。增加了通信通道和通道管理功能,从而能对应用通信层更加可靠地通信和更加方便地访问。Angel使用10个已定义的通道,它允许145个通道定义。在中断发送代码中使用C语言函数的指针向量,从而增加了外部设备驱动器的支持,这意味着更容易增加用户设备。此外,还包括对各种媒质的支持,例如以太网、并行通信以及ARM调试通信通道的使用。第三十二页,讲稿共七十四页哦基于Angel 的调试方法 AngelAngel主要用于:主要用于:调试在真正硬件上而不是硬件仿真器上的应用软件;在开发板上开发新的软件应用程序;运行基于ARM处理器的新硬件设备;加载基于ARM的操作系统。Angel使用Angel调试协议ADP进行
20、主机和目标机的通信。支持多通道,并提供检错功能。Angel Angel的提供方式有以下的提供方式有以下3 3种种:在ARM开发板的Flash或ROM中独立的可执行程序 可以下载到Flash或RAM中的已编译完成的映像文件 可以根据自己设计的硬件进行重新修改编译的源程序。第三十三页,讲稿共七十四页哦基于Angel 的调试方法Angel系统的特点 支持调试;支持C库半主机方式;支持通信;任务管理;异常处理。第三十四页,讲稿共七十四页哦基于Angel 的调试方法Angel的特点的特点支持调试支持调试(1)查看和修改存储器和处理器状态 存储器位置被传递给一个函数,此函数将内存以字节流的方式复制到发送缓
21、冲区,放置在向主机的输出包中。(2)向目标机下载应用程序 通过从来自主机的数据包中卸载字节,并随即将其写入由主机定义地址的存储器来实现下载。下载过程通过调用一个字节流函数来实现。(3)设置断点 Angel只能在RAM中设置断点。要中止的指令被Angel规定的“指定未定义指令”所代替。Angel保存原指令,以确保如果包含此位置的存储区域被检测时恢复原指令。当移走断点时,恢复原指令。第三十五页,讲稿共七十四页哦基于Angel 的调试方法Angel的特点的特点支持支持C C库半主机库半主机 Angel使用软中断(SWI)机制,使应用程序和ARM C和C+库链接,从而完成半主机请求。半主机请求必须通过
22、与主机的通信来完成,如“打开主机上的一个文件”或“获得调试器命令行”。这些请求之所以被称为半主机请求,是因为它们需要依赖主机上的C库来执行请求。Angel使用单一的SWI来请求半主机操作。第三十六页,讲稿共七十四页哦基于Angel 的调试方法AngelAngel的特点的特点支持通信支持通信 Angel使用ADP协议进行通信,通过使用通道来使多个独立的信息共享一条通信连接。Angel还提供了检错功能。主机和开发板的连接既可以是串行并行连接,也可以是以太网连接。使用以太网连接。主机和目标系统中具有通道管理功能,保证了逻辑通道可以可靠地进行多路复用和设备驱动检测并抛弃已破坏的数据包。通道管理器监控所
23、有的数据流,并把传输的数据存入缓冲区中以防止重发。完全的Angel设备驱动结构使用Angel任务管理功能来控制包的处理,并确保中断不会被长时间的禁止。用户可以写设备驱动程序来驱动其他的调试设备,也可以扩展Angel来支持其他的外设。第三十七页,讲稿共七十四页哦基于Angel 的调试方法AngelAngel的特点的特点支持任务管理支持任务管理 所有的Angel操作,包括通信和调试,都是由Angel任务管理功能控制的。包括 确保在任何时候只有一个操作在执行;分配任务的优先级,以及分配任务;控制Angel环境中的处理器模式。第三十八页,讲稿共七十四页哦基于Angel 的调试方法AngelAngel的
24、特点的特点支持异常处理支持异常处理 Angel异常处理是以上所描述的Angel特点的基础,Angel为除了复位以外的所有异常类型设置了异常处理程序。这些异常类型包括:软件中断(SWI):Angel设置SWI异常处理程序来支持C库半主机请求,并允许应用程序和Angel进入管理模式。未定义(undefined):Angel使用3条未定义指令在代码中设置断点。数据中止和预取中止(data,prefetch abort):Angel设置了基本的数据中止和预取中止处理程序。这些处理程序向调试器报告异常,挂起应用程序,并将控制返回给调试器。FIQ和IRQ:Angel设置了IRQ和FIQ处理程序,如果需要自
25、定义中断,则最好将IRQ用做Angel通信,FIQ用做用户自定义中断。第三十九页,讲稿共七十四页哦基于Angel 的调试方法Angel系统的组成 典型的Angel系统包含两个主要部分:调试器和Angel调试监控程序。它们通过一条物理链路(如串行电缆)进行通信。调试器运行在主机上。它向Angel发送指令并显示从Angel获得的结果。调试器可以是任何一种支持Angel调试协议ADP的调试工具。Angel调试监控程序与运行在目标平台上被调试的应用程序同时运行。Angel有两种配置:一种是在开发硬件上使用的完全版,另一种是在产品硬件上使用的简化版。第四十页,讲稿共七十四页哦基于Angel 的调试方法典
26、型的Angel系统的组成框图。主机上的调试器向目标系统中的Angel发送请求,Angel解释这些请求并执行某种操作第四十一页,讲稿共七十四页哦基于Angel 的调试方法Angel系统的资源需求 (1)系统资源 包括用于半主机的一个ARM SWI和一个Thumb SWI,用于断点的两条ARM未定义指令条Thumb未定义指令。(2)ROM和RAM需求 需要用ROM或Flash存储器来存储调试监控程序的代码,需要用RAM来存储数ROM,Flash和RAM的大小根据用户的需要而定。(3)异常向量 需要控制一些ARM异常向量。异常向量由Angel初始化,并且初始化后不再被重写。它支持位于ROM地址0处的
27、向量不被重写的系统。(4)中 断 至少需要使用一个中断来支持主机和目标系统之间的通信。用户可以配置Angel使用IRQ,FIQ或两者混用。由于Angel没有快速中断请求,所以推荐用户将FIQ用于自定义的中断请求。(5)堆 栈 需要控制它自己的管理堆栈。如果用户想在应用程序中设计Angel调用,则必须设置自己的堆栈。第四十二页,讲稿共七十四页哦基于Angel 的调试方法Angel为用户提供了三种不同的使用方式。(1)完全Angel调试代理 完全Angel调试代理是一个独立的系统,位于目标板上并一直处于活动状态。在开发应用代码期间使用完全Angel。它支持所有的调试器功能。(2)简化Angel 简
28、化Angel保持完整的原始(raw)设备驱动,指发送和接收字节流而不是ADP包的设备驱动器。在开发应用程序的最后阶段及产品硬件上使用简化Angel。(3)最近的启动Angel代码 在这种情况下,Angel作为一个库函数连接到出错子例程调用的最终应用代码中。所以当遇到错误时,应用程序启动Angel调试器来进行内存或系统状态的检测。这种情况有可能是最终开发状态。第四十三页,讲稿共七十四页哦基于软件仿真的调试方法 软件调试方法可以不依赖于硬件,这时,调试系统提供一个软件仿真工具。这个软件仿真工具对于在调试系统中执行的用户指令做出解释,记录和报告指令执行的结果,以及存储器和寄存器的变化。软件仿真调试方
29、法主要应用在学习过程中,在没有硬件支持下学习系统设计和系统调试;也应用在软件编制的初级阶段,用以完善和检验程序员编制的程序。基于软件仿真的调试方法一般不单独存在,往往以其他开发软件的一个功能的形式出现。第四十四页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法 嵌入式系统通常是一个资源受限的系统,无法直接在嵌入式系统的硬件平台上编写嵌入式Linux软件。目前一般采用的解决方法是,首先在宿主机上编写程序,然后通过交叉编译,生成目标平台上可以运行的二进制代码格式,再下载到目标平台上的特定位置运行和调试。第四十五页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法 嵌入式Linux的开发一
30、般采用宿主机/目标机模式。宿主机(host)一般是一台通用计算机,它通过串口、USB或者以太网接口和目标机通信。第四十六页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法宿主机/目标机模式的开发步骤利用宿主机的资源及开发环境,开发和仿真调试目标机上的软件通过串口、USB或者以太网络将交叉编译生成的目标代码传输并装载到目标机上在监控程序或者操作系统的支持下利用交叉调试器进行分析调试目标机脱离宿主机单独运行 第四十七页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法宿主机/目标机模式的调试步骤编写Boot Loader,使用JTAG接口下装和烧写Boot Loader到目标机使用Boo
31、t Loader启动目标机通过串口、USB或者以太网络将目标代码传输并装载到目标机上利用远程调试和超级终端等方法进行分析调试第四十八页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法Boot Loader用于系统的加载启动任务。Boot Loader是系统加电后运行在操作系统内核运行前运行的一段小程序,进行初始化硬件设置、创建内核需要的信息等工作,最后调用操作系统内核。Boot Loader的实现对硬件的依赖非常强,不同的体系结构、不同的嵌入式板级设备配置都会对Boot Loader有不同的需求。第四十九页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法Boot Loader的阶段
32、1通常包括以下步骤:na.硬件设备初始化。nb.为加载 Boot Loader 的 阶段2 准备 RAM 空间。nc.拷贝 Boot Loader 的 阶段2 到 RAM 空间中。nd.设置好堆栈。ne.跳转到 阶段2 的 C 入口点。第五十页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法Boot Loader的阶段2通常包括以下步骤:na.初始化本阶段要使用到的硬件设备。nb.检测系统内存映射(memory map)。nc.将 kernel 映像和根文件系统映像从 flash ROM 上读到 RAM 空间中。nd.为内核设置启动参数。第五十一页,讲稿共七十四页哦嵌入式Linux的开发
33、环境和调试方法宿主机的操作系统,一般选Cygwin或Redhat Linux。1.安装Cygwin Cygwin是一个运行在Windows上,用来模拟Linux环境的一个系统。Linux系统的源码可以在Cygwin下面编译成Win32平台上的可执行程序,使用Cygwin可以使在Windows系统上开发Linux上的程序成为可能。在选择packages时注意一定要在Devel中选择binutils、gcc、make等开发工具,以及在Editor中选中vim或emacs作为编辑器。安装ARM的编译器必须是以arm-linux作为前缀的,比如arm-linux-gcc。如果要在主机上使用gcc编译A
34、RM平台可执行的代码,不能使用gcc,那样编译出来的是运行于主机的指令代码;应该使用arm-linux-gcc,这样才可以得到运行于ARM平台的指令代码。第五十二页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法2.安装Linux系统 建议使用Redhat7.3或更新版本。安装过程中选择安装类型为Custom(自定义),然后选择Install Everything。如果按其他安装类型来安装系统,需选用服务器模式安装,并要注意必须选择安装gcc、binutils、make、tftpserver、ftpserver、minicomtelnet。在安装到配置网络安全时,建议关闭防火墙并选择信任
35、eth0设备。安装的ARM编译器都应以arm-linux作为前缀的。第五十三页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法宿主机的提供的服务BOOTP协议 TFTP协议 交叉编译 Make工具第五十四页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法BOOTP服务的全称是BootStrap Protocol是一种出现比较早的远程启动协议常用到的DHCP服务就是从BOOTP服务扩展而来的 使用TCP/IP网络协议中的UDP 67/68两个通讯端口BOOTP主要用于无磁盘的客户机从服务器得到自己的IP地址、服务器的IP地址、启动映像文件名、网关IP等。第五十五页,讲稿共七十四页哦嵌
36、入式Linux的开发环境和调试方法BOOTPBOOTP过程过程在目标板由Boot Loader启动BOOTP,此时目标板还没有IP地址,它就用广播形式以IP地址0.0.0.0向网络中发出IP地址查询的请求,这个请求帧中包含了客户机的网卡MAC地址等信息。主机平台运行BooTP服务的服务器接收到的请求帧,根据帧中MAC地址在Bootptab启动数据库中查找该MAC记录,如果没有此MAC的记录则不响应这个请求;如果有就将FOUND帧发送回目标板。FOUND帧中包含的主要信息有目标板的IP地址、服务器的IP地址、硬件类型、网关IP地址、目标板MAC地址和启动映象文件名。目标板根据FOUND帧中的信息
37、通过TFTP服务器下载启动映象文件。第五十六页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法TFTP服务的全称是Trivial File Transfer Protocol,称为“简单文件传输协议”TFTP可以看成一个简化了的FTP,没有用户权限管理的功能,不需要认证客户端的权限。远程启动的目标板在启动一个完整的操作系统之前,就可以通过TFTP下载启动映像文件,而不需要证明自己是合法的用户。TFTP安装时要设立一个单独目录作为TFTP服务的根目录,并限制传授方向,以减少安全隐患。第五十七页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法交叉编译就是在一个架构下编译另一个架构的目标
38、文件采用何种交叉编译器产生何种格式的目标文件还要取决于目标机的操作系统。本课程涉及的交叉编译是能够在X86架构宿主机上运行,并且能够生成适用于ARM架构的ELF格式的可执行代码。常采用arm-Linux-gcc作为交叉编译器,arm-Linux-ld作为链接器。第五十八页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法GNU Make是一种常用的编译工具,程序员通过它可以很方便地管理软件编译内容、方式和时机,从而使程序员能够把主要精力集中在代码的编写上。Make自动判断源码中哪些部分有更新,重新编译这些文件并重新链接。对于那些由许多源文件组成的大型软件项目来说,采用这种项目管理方法则可以
39、极大地提高工作效率。第五十九页,讲稿共七十四页哦嵌入式Linux的开发环境和调试方法 调试是软件开发过程中必不可少的一个环节,在嵌入式Linux软件开发中,调试时采用的是宿主机和目标机之间的远程调试,调试器仍然运行在宿主机的通用操作系统之上,被调试的进程却是运行在基于特定硬件的目标机中,调试器和被调试进程通过串口或者网络进行通信。调试器可以控制、访问被调试进程,读取被调试进程的当前状态,包括查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等各种调试功能,并能够改变被调试进程的运行状态。第六十页,讲稿共七十四页哦Windows CE操作系统简介 Windows CE是一个开放的、可裁剪的
40、、32位的实时嵌入式窗口操作系统。它具有可靠性好、实时性高、内核体积小等特点,适用于各种嵌入系统和产品。它拥有多线程、多任务、确定性的实时、完全抢先式优先级的操作系统环境,并可以根据特定硬件系统对Windows CE操作系统进行裁剪、定制。Windows CE专门面向只有有限资源的嵌入式硬件系统。第六十一页,讲稿共七十四页哦Windows CE操作系统简介 Windows CE设计成为一种高度模块化的操作系统,每一模块都提供特定的功能,这些模块中的一部分被划分成组件,设计者可根据设备的性质选择必要的模块或组件包含进操作系统映像,从而使Windows CE变得非常紧凑(只占不到200KB的RAM
41、),只占用了运行设备所需的最小的ROM、RAM以及其它硬件资源。Windows CE被分成不同的模块,其中最主要的模块有内核模块、对象存储模块、图形窗口事件子系统模块以及通信模块。Windows CE还包含一些附加的可选择模块,这些模块可支持的任务有管理可安装设备驱动程序、支持COM等。一个最小的Windows CE系统至少由内核和文件系统模块组成。第六十二页,讲稿共七十四页哦Windows CE的开发环境和调试方法内核模块 内核模块是Windows CE操作系统的核心,它为任何基于Windows CE的设备提供处理器调度、内存管理、异常处理以及系统内通信等系统功能,并为应用程序使用这些核心功
42、能提供内核服务。Windows CE的内核模块通过Core DLL模块表示。所有的操作系统定制设计都必须包含这个模块,但并不是这个模块的所有组件都必需的,有一些内核组件是可选的。第六十三页,讲稿共七十四页哦Windows CE的开发环境和调试方法对象存储 对象存储是Windows CE的默认文件系统,它相当于Windows CE设备上的硬盘。对象存储是由共享一个内核堆的文件系统、系统数据库和系统注册表组成,即使在没有系统主电源时,对象存储也能维持应用程序及相关数据不会丢失。对象存储可将用户数据和应用程序数据存入文件或注册器。在操作系统创建进程的过程中,对于这些不同的对象存储组件,可以选取,也可
43、以忽略。第六十四页,讲稿共七十四页哦Windows CE的开发环境和调试方法图形窗口和事件系统模块 图形窗口和事件系统模块(GWES)包含大部分的核心Windows CE功能,它集成了图形设备接口(GDI)、窗口管理器和事件管理器。它分别由USER和GDI两部分组成,USER用来处理消息、事件及鼠标利键盘等用户输入,而GDI用于处理图形的屏幕和打印输出等。GWES是用户、应用程序和操作系统之间的图形用户接口。GWES通过处理键盘、鼠标动作与用户交互,并选择传送到应用程序和操作系统的信息。GWES通过创建并管理在显示设备和打印机上显示的窗口、图形以及文本来处理输出。GWES的中心是窗口。所有应用
44、程序都通过窗口接收来自操作系统的消息,即使那些为缺少图形显示的设备创建的应用程序也是如此。GWES提供控制器、菜单、对话框以及图形显示的设备资源,还提供GDI以控制文本与图形显示。第六十五页,讲稿共七十四页哦Windows CE的开发环境和调试方法通信模块 通信模块为基于Windows CE的设备提供有线或无线通信能力,使Windows CE设备能够与其他设备或计算机进行连接与通信,通信组件提供对下列通信硬件和数据协议的支持:串行IO支持 远程访问服务(RAS)传输控制协议Intemet协议(TCPIP)局域网 (LAN)电话技术API (TAPI)WinCE的无线服务第六十六页,讲稿共七十四
45、页哦Windows CE的开发环境和调试方法可选组件 除上述主要模块之外,还可使用其它的操作系统模块。这些模块与组件主要有 设备管理器和设备驱动程序 多媒体(声音)支持模块 COM支持模块 Win CE外壳模块 Win CE提供的每一模块或组件都支持一组可用的相关API函数。第六十七页,讲稿共七十四页哦Windows CE的开发环境和调试方法Platform Builder开发工具 Platform Builder(PB)是微软提供给Windows CE开发人员进行基于Windows CE平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试Windows善而从C
46、E操作系统平台的工具。它运行在桌面Windows下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试。该工具能够根据用户的需求,选择构建具有不同内核功能的CE系统。同时,它也是一个集成的编译环境,可以为所有CE支持的CPU目标代码编泽CC+程序。一旦成功地编译了一个CE系统,就会得到一个名为*.bin的映像文件。将该文件下载到目标板中,就能够运行CE了。第六十八页,讲稿共七十四页哦Windows CE的开发环境和调试方法Platform Builder提供的主要特性包括:平台开发向导和BSP开发向导:开发向导用于引导开发人员区创建一个简单的系统平台或BSP(板级支
47、持软件包),然后再根据要求进一步修改。开发向导提高了平台和BSP创建效率特性目录:操作系统可选特性均在特性目录(Catalog)中列出,开发人员可以选择相应的特性来定制操作系统导出向导:可以向其他Platform Builder用户导出自定义的目录(Catalog)特性导出SDK向导:使用户可以导出一个自定义的软件开发工具包(SDK),可以将客户定制的SDK导出到特定的开发环境中(如EVC)。第六十九页,讲稿共七十四页哦Windows CE的开发环境和调试方法远程工具:可以执行同基于Windows CE的目标设备有关的各种调试任务和信息收集任务:仿真器:通过硬件仿真加速和简化了系统的开发,使用
48、户可以在开发工作站上对平台和应用程序进行调试,大大简化了系统的开发流程,缩短了开发时间。应用程序调试器:可以在自定义的操作系统映像上对应用程序进行调试:内核调试器:可以对自定义的操作系统映像进行调试,并且向用户提供有关映像性能的信息;驱动测试工具包:系统为驱动程序开发提供了基本的测试工具集;基础配置:为各种流行的设备类别预置的可操作系统基础平台,为自定义操作系统的创建提供了一个起点。第七十页,讲稿共七十四页哦Windows CE的开发环境和调试方法第七十一页,讲稿共七十四页哦Windows CE的开发环境和调试方法BSP原理简述 BSP又称板级支持软件包,它是一个包括启动程序、OEM适配层程序
49、(OAL)、标准开发板(SDB)和相关硬件设备驱动程序的软件包。BSP是基于Windows CE平台系统的主要部分,它是由一些源码和二进制文件组成。BSP在系统中的角色,很相似于BIOS在PC统中的地位。BSP在系统中所处的位置位于硬件平台与操作系统或应用软件之间,用于屏蔽上层软件对各种硬件的相关性。第七十二页,讲稿共七十四页哦Windows CE的开发环境和调试方法 对于嵌入式系统来说,它没有像PC机那样具有广泛使用的各种工业标准,各种嵌入式系统的不同应用需求决定了它选用的各自定制的硬件环境,这种多变的硬件环境决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性。各商用实时操作系统都
50、采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为Board Support Package(板级支持软件包,简称BSP)。BSP是针对某个单板而设计的,它对于用户(开发者)是开放的,用户可以根据不同的硬件需求对其作改动或二次开发,而操作系统本身仅仅提供了CPU内核的无关性。第七十三页,讲稿共七十四页哦Windows CE的开发环境和调试方法 BSP的主要功能在于配置系统硬件,使其工作在正常状态,并且完成硬件与软刊件之间的数据交互,为0S及上层应用程序提供一个与硬件无关的软件平台。在Platform Builder中,微软提供了对十几种标准开发板(SDB)支持的BSP,这