文档详情

嵌入式系统开发环境和调试方法ppt课件

pu****.1
实名认证
店铺
PPT
1.05MB
约74页
文档ID:592945113
嵌入式系统开发环境和调试方法ppt课件_第1页
1/74

第四章第四章 嵌入式系统的嵌入式系统的 开发环境和调试方法开发环境和调试方法 目录嵌入式系统的调试方法基于仿真头的传统调试方法基于JTAG的调试方法基于Angel的调试方法基于软件仿真的调试方法嵌入式Linux的开发环境和调试方法Windows CE的开发环境和调试方法 嵌入式系统的调试方法 嵌入式调试系统应含调试主机、仿真器(协议转换)和目标板3个部分调试主机即一台安装有开发工具软件的通用计算机;目标板即被调试对象,在这块目标板上应该焊接一片所使用的目标CPU调试也有多种方法,按其原理分类叙述如下 (1)基于仿真头的传统调试方法 (2)基于JTAG的调试方法 (3)基于Angel的调试方法 (4)基于软件仿真的调试方法 基于仿真头的传统调试方法 在嵌入式系统的开发中,有时也使用传统的调试方法,即使用一个单片机作为仿真头,取代目标板上的CPU这种仿真器和调试主机之间可以有多种连接方式它具有下列局限性: ①由于要使用一个比目标CPU更复杂的单片机做仿真器,就必须先解决这个更复杂的单片机的生产和仿真调试问题 ②必须为每一种单片机研制仿真器,这不但增加产品开发成本,在实际上也是很困难的。

③使用传统的调试方法必须把仿真器焊接或插接在目标板上,这对于引脚数量很大的贴片式目标CPU,也是不可能的 基于JTAG的调试方法 嵌入式系统最常用的调试方法 调试主机上必须安装的工具包括程序编辑和编译系统、调试器和程序所涉及的库文件 目标板必须含有JTAG接口调试主机和目标板之间有一个协议转换模块,称为调试代理,主要作用有两个: ●在调试主机和目标板之间进行协议转换; ●进行接口转换,目标板一端是标准的JTAG接口,调 试主机一端可能是串口、并口或是USB接口等 常见的ARM仿真器大都是基于JTAG的仿真器 基于JTAG的调试方法 使用边界扫描技术可以全面地解决了传统调试方法所带来的困难近年来生产的大多数结构复杂的单片机,都使用边界扫描技术为用户提供仿真调试方法这种调试方法具有下列特点: ①需要把目标CPU焊接在目标板上在调试过程中,执行用户指令和控制调试过程的是目标CPU本身;不需要其他单片机参与调试使用边界扫描技术实现系统调试必须保证目标板的最小系统正常工作 基于JTAG的调试方法 ②仿真系统可以通用例如,一个ARM7的仿真系统可以调试所有以ARM7为核的单片机,即使这些单片机来自不同的厂家,即使这些单片机的性能相差很大。

但要注意,在对单片机内的程序存储器进行用户程序固化时,仿真系统不是通用的 ③仿真器与被调试的目标CPU的复杂程度无关这是由ARM处理器的特点决定的 基于JTAG的调试方法 ③仿真器与被调试的目标CPU的复杂程度无关这是由ARM处理器的特点决定的 ④仿真系统开发成本比较低因为系统能够通用,所以开发成本可以大幅度降低虽然 ARM处理器结构比较复杂,但是并没有增加仿真器的开发难度 ⑤结构简单ARM仿真器结构都比较简单,原因是调试中的大部分工作都由处理器完成 基于JTAG的调试方法—边界扫描技术 每个边界扫描单元的检测对象都是一条引线,并假定一个边界,只在这个边界位置检测和控制这条引线,对边界以外的结构不予关心 引线A和B之间插入一个边界扫描单元,当扫描单元不工作时,A和B引线是“透明〞的;当扫描单元工作时,A和B引线也可以是“透明〞的,也可以是不“透明”的串行数据输出可以采样A端信号,也可以采样B端信号在不“透明〞的情况下,串行数据输入信号可以传送到A端,也可以传送到B端这样就可以达到检测和控制引线A和B的目的 基于JTAG的调试方法—ARM调试原理 ARM处理器内核包括调试逻辑和接口逻辑。

对于不同版本的ARM处理器内核,调试逻辑和接口逻辑略有差别ARM7的调试逻辑包括3个部分: ①嵌入式ICE—RT逻辑支持实时调试的嵌入式仿真逻辑实现调试功能,可以通过两种方式进行访问: ●通过ARM处理器主核访问ARM主核把嵌入式ICE-RT作为外部协处理器14,使用协处理器指令MCR和MRC进行访问 ●通过扫描链进行访问调试系统通过扫描链2访问嵌入式ICE- RT ②TAP控制器调试系统通过TAP控制器控制扫描链的工作 ③由多个扫描链组成的扫描逻辑供用户使用的共有3个扫描链 基于JTAG的调试方法—ARM调试原理 ①嵌入式ICE—RT逻辑支持实时调试的嵌入式仿真逻辑 ②TAP控制器调试系统通过TAP控制器控制扫描链的工作 ③由多个扫描链组成的扫描逻辑供用户使用的共有3个扫描链 基于JTAG的调试方法—ARM调试原理 在ARM处理器中,主要的扫描链共有3条: ●扫描链0:允许调试系统对整个ARM处理器主核外围进行访问,扫描链0长度为105位包括32位数据总线和32位地址总线 ●扫描链1:长度是33位,是扫描链0的的前33位,包括32位数据总线和1位控制位 ●扫描链2:允许调试系统对嵌入式ICE—RT逻辑中的寄存器进行访问。

嵌入式ICE—RT逻辑中有多个寄存器,调试系统通过扫描链中串行数据的输入/输出访问这些寄存器扫描链2长度是38位,包括32位数据、5位地址和1位读/写控制位 基于JTAG的调试方法—ARM调试原理 基于JTAG的调试方法—JTAG接口 TAP控制器外部有4条引线,分别是测试数据输入TDI、测试数据输出TDO、测试时钟TCK和测试模式选择TMS这4条引线是芯片的外部引脚,连接到外部调试系统TDI和TDO是串行数据输入/输出,TCK用做同步时钟由这4条线(还有一条可选线TRST)组成的接口一般称为JTAG接口,其符合IEEE 1149.1标准这个标准是一个关于测试访问接口和边界扫描结构的标准 JTAG接口是目标CPU在调试时与外部连接的最主要的接口 基于JTAG的调试方法—ARM调试原理仿真调试的工作过程 由外部调试器发出的调试命令经由JTAG接口TDI引线进入扫描链,由TAP控制器控制扫描链的工作,对处理器进行调试;处理器的寄存器和系统内的数据经由扫描链串行到TDO引线,然后通过JTAG接口传送到调试器 基于JTAG的调试方法—JTAG接口引脚名英文全名说明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 硬件仿真调试,支持汇编、C、C++源程序,具有编译效率高、系统库功能强等特点,可以在Windows及 RedHat Linux上运行 基于JTAG的调试方法—ADS开发工具 ADS中提供了两种关于编译、链接、调试的方法,一种是命令行方式,另一种是GUI环境方法或称图形方式图形方式是把命令行方式中的命令集成到一起形成的这两种方法使用ADS中同一资源 基于JTAG的调试方法—ADS的组成部分名称描述使用方式代码生成工具ARM 汇编器ARM 的C、C++编译器Thumb 的C、C++编译器ARM 连接器由CodeWarrior IDE 调用集成开发环境CodeWarrior IDE工程管理,编译连接调试器AXDADW/ADUArmsd仿真调试指令模拟器ARMulator由AXD 调用ARM 开发包一些底层的例程,实用程序(如fromELF)一些实用程序由CodeWarriorIDE 调用ARM 应用库C、C++函数库等用户程序使用 基于JTAG的调试方法—CodeWarrior IDE ADS 1.2 使用了CodeWarrior IDE集成开发环境,并集成以下内容ARM 汇编器、ARM 的C/C++编译器Thumb 的C/C++编译器ARM 连接器, CodeWarrior IDE包含工程管理器、代码生成接口、语法敏感(对关键字以不同颜色显示)编辑器、源文件和类浏览器等等。

基于JTAG的调试方法—CodeWarrior IDE 主窗口 基于JTAG的调试方法—AXD 调试器• AXD 调试器为ARM 扩展调试器• AXD支持硬件仿真和软件仿真(ARMulator)• AXD 能够装载映像文件到目标内存,具有单步、全速和断点等调试功能,可以观察变量、寄存器和内存的数据等等 基于JTAG的调试方法—AXD主窗口 基于JTAG的调试方法—ADS开发过程工程的编辑工程的编辑建立工程,使用工程模板建立工程建立工程,使用工程模板建立工程建立文件,建立一个文本文件,以便输建立文件,建立一个文本文件,以便输入用户程序入用户程序添加文件到工程添加文件到工程用户也可以用添加源文件和建立源文件用户也可以用添加源文件和建立源文件时选择加入工程的方法添加文件到工时选择加入工程的方法添加文件到工程 基于JTAG的调试方法—ADS开发过程编译并连接工程编译并连接工程编译连接前可进行编译器中工程的地址设编译连接前可进行编译器中工程的地址设置、输出文件设置等编译选项的设置;置、输出文件设置等编译选项的设置;对于简单的软件调试,可以不进行连接地对于简单的软件调试,可以不进行连接地址的设置,直接点击工程窗口的址的设置,直接点击工程窗口的““MakeMake〞图标按钮,即可完成编译连接。

〞图标按钮,即可完成编译连接若编译出错,会有相应的出错提示,双击若编译出错,会有相应的出错提示,双击出错提示行信息,编辑窗即会使用光标出错提示行信息,编辑窗即会使用光标指出当前出错的源代码行指出当前出错的源代码行 基于JTAG的调试方法—ADS开发过程工程的调试工程的调试当工程编译连接通过后,在工程窗口中点击当工程编译连接通过后,在工程窗口中点击““DebugDebug〞图标按钮,即可启动〞图标按钮,即可启动AXD AXD 进行调进行调试试( (也可以通过【开场】菜单起动也可以通过【开场】菜单起动AXD)AXD)在在Choose Target Choose Target 窗口中设置调试器在没有窗口中设置调试器在没有添加其它仿真驱动程序前,添加其它仿真驱动程序前,Target Target 项中只项中只有两项,分别为有两项,分别为ADP(JTAG ADP(JTAG 硬件仿真硬件仿真) )和和ARMUL(ARMUL(软件仿真软件仿真) )选择仿真驱动程序后,加载选择仿真驱动程序后,加载ELF ELF 格式的可执行格式的可执行文件,即文件,即*.axf *.axf 文件 工程编译连接通过后,在工程编译连接通过后,在““工程名工程名\ \工程名工程名_Data\_Data\当前的生成目标〞目录下会生成一个当前的生成目标〞目录下会生成一个*.axf *.axf 调调试文件。

试文件 基于JTAG的调试方法—ADS工程模板 用各个工程模板建立的工程,它们的各项设置均有不同之处,方便生成不同结构的代码,常见的工程模板有:ARM可执行映象〔生成ARM 指令的代码)Thumb 可执行映象(生成Thumb 指令的代码)Thumb、ARM 交织映象 合理使用标准工程模板可以方便程序的开发过程 基于Angel 的调试方法 基本原理:位于目标板上的CPU已经固化了一个完整的调试监控程序,这个监控程序可以接受来自调试主机的调试命令,并执行这些命令,如设置断点、单步运行、读/写存储器等;同时,这个监控程序也可以把数据传送到调试主机 基于Angel 的调试方法使用Angel调试方法的前提是:●目标板已经稳定工作,目标CPU的最小系统硬件正常●被调试的目标系统中已经固化了一个完整的调试监控程序分为两种情况:一是监控程序由JTAG仿真器固化完成,这时必须先使用JTAG调试方法;二是监控程序由专门的程序写入设备完成,一般以ARM为核的单片机这种情况比较少●调试主机和被调试的单片机之间,可以通过串口、并口或以太网口等实现通信,这个接口是目标单片机的外部输入/输出引脚(非JTAG接口),因此占用的是用户资源。

●有稳定的、可以固化在目标单片机内的调试监控软件 基于Angel 的调试方法 Angel调试方法不使用JTAG接口,但这种方法占用用户资源,主要有: ●占用内部程序存储器以保存调试监控程序; ●占用内部中断资源; ●需要占用输入/输出口线和调试主机通信 ●有可能占用数据栈 基于Angel 的调试方法 Angel调试监控程序是一个软件目标常驻调试代理以源码形式由ARM提供,从而为开发者提供一个将主机调试器与硬件接口的调试环境用于开发和调试运行在基于ARM硬件上的应用程序,可以调试运行在ARM或Thumb状态下的应用程序 Angel是 Demon升级版本,所有函数中对数据段使用的结构都从汇编例程转换成等价的C例程功能在三个方面得到了提高: ①通信从以前的字节流变为可变大小的基于包的通信链接这样,在新协议中允许灵活且功能强大的错误检测 ②增加了通信通道和通道管理功能,从而能对应用通信层更加可靠地通信和更加方便地访问Angel使用10个已定义的通道,它允许145个通道定义 ③在中断发送代码中使用C语言函数的指针向量,从而增加了外部设备驱动器的支持,这意味着更容易增加用户设备。

此外,还包括对各种媒质的支持,例如以太网、并行通信以及ARM调试通信通道的使用 基于Angel 的调试方法 Angel Angel主要用于:主要用于: ● ●调试在真正硬件上而不是硬件仿真器上的应用调试在真正硬件上而不是硬件仿真器上的应用软件;软件; ● ●在开发板上开发新的软件应用程序;在开发板上开发新的软件应用程序; ● ●运行基于运行基于ARMARM处理器的新硬件设备;处理器的新硬件设备; ● ●加载基于加载基于ARMARM的操作系统的操作系统 Angel Angel使用使用AngelAngel调试协议调试协议ADPADP进行主机和目标机进行主机和目标机的通信支持多通道,并提供检错功能支持多通道,并提供检错功能 Angel Angel的提供方式有以下的提供方式有以下3 3种:种: ① ①在在ARMARM开发板的开发板的FlashFlash或或ROMROM中独立的可执行程中独立的可执行程序序 ② ②可以下载到可以下载到FlashFlash或或RAMRAM中的已编译完成的映像中的已编译完成的映像文件文件 ③ ③可以根据自己设计的硬件进行重新修改编译的可以根据自己设计的硬件进行重新修改编译的源程序。

源程序 基于Angel 的调试方法Angel系统的特点 ●支持调试; ●支持C库半主机方式; ●支持通信; ●任务管理; ●异常处理 基于Angel 的调试方法Angel的特点的特点—支持调试支持调试 (1)查看和修改存储器和处理器状态查看和修改存储器和处理器状态 · 存储器位置被传递给一个函数,此函数将内存存储器位置被传递给一个函数,此函数将内存以字节流的方式复制到发送缓冲区,放置在向主以字节流的方式复制到发送缓冲区,放置在向主机的输出包中机的输出包中 (2)向目标机下载应用程序向目标机下载应用程序 通过从来自主机的数据包中卸载字节,并随即通过从来自主机的数据包中卸载字节,并随即将其写入由主机定义地址的存储器来实现下载将其写入由主机定义地址的存储器来实现下载下载过程通过调用一个字节流函数来实现下载过程通过调用一个字节流函数来实现 (3)设置断点设置断点 Angel只能在只能在RAM中设置断点要中止的指令中设置断点要中止的指令被被Angel规定的规定的“指定未定义指令〞所代替指定未定义指令〞所代替Angel保存原指令,以确保如果包含此位置的存储保存原指令,以确保如果包含此位置的存储区域被检测时恢复原指令。

当移走断点时,恢复区域被检测时恢复原指令当移走断点时,恢复原指令 基于Angel 的调试方法Angel的特点的特点—支持支持C库半主机库半主机 Angel使用软中断使用软中断(SWI)机制,使应用程序和机制,使应用程序和ARM C和和C++库链接,从而完成半主机请求半库链接,从而完成半主机请求半主机请求必须通过与主机的通信来完成,如主机请求必须通过与主机的通信来完成,如“打打开主机上的一个文件〞或开主机上的一个文件〞或“获得调试器命令行获得调试器命令行”这些请求之所以被称为半主机请求,是因为它们这些请求之所以被称为半主机请求,是因为它们需要依赖主机上的需要依赖主机上的C库来执行请求库来执行请求Angel使用单使用单一的一的SWI来请求半主机操作来请求半主机操作 基于Angel 的调试方法AngelAngel的特点的特点——支持通信支持通信 Angel Angel使用使用ADPADP协议进行通信,通过使用通道来协议进行通信,通过使用通道来使多个独立的信息共享一条通信连接使多个独立的信息共享一条通信连接AngelAngel还提还提供了检错功能主机和开发板的连接既可以是串行供了检错功能。

主机和开发板的连接既可以是串行/并行连接,也可以是以太网连接使用以太网连/并行连接,也可以是以太网连接使用以太网连接 主机和目标系统中具有通道管理功能,保证了主机和目标系统中具有通道管理功能,保证了逻辑通道可以可靠地进行多路复用和设备驱动检测逻辑通道可以可靠地进行多路复用和设备驱动检测并抛弃已破坏的数据包通道管理器监控所有的数并抛弃已破坏的数据包通道管理器监控所有的数据流,并把传输的数据存入缓冲区中以防止重发据流,并把传输的数据存入缓冲区中以防止重发 完全的完全的AngelAngel设备驱动结构使用设备驱动结构使用AngelAngel任务管理任务管理功能来控制包的处理,并确保中断不会被长时间的功能来控制包的处理,并确保中断不会被长时间的禁止用户可以写设备驱动程序来驱动其他的调试禁止用户可以写设备驱动程序来驱动其他的调试设备,也可以扩展设备,也可以扩展AngelAngel来支持其他的外设来支持其他的外设 基于Angel 的调试方法AngelAngel的特点的特点——支持任务管理支持任务管理 所有的所有的AngelAngel操作,包括通信和调试,都操作,包括通信和调试,都是由是由AngelAngel任务管理功能控制的。

包括任务管理功能控制的包括 ● ●确保在任何时候只有一个操作在执行;确保在任何时候只有一个操作在执行; ● ●分配任务的优先级,以及分配任务;分配任务的优先级,以及分配任务; ● ●控制控制AngelAngel环境中的处理器模式环境中的处理器模式 基于Angel 的调试方法AngelAngel的特点的特点——支持异常处理支持异常处理 Angel Angel异常处理是以上所描述的异常处理是以上所描述的AngelAngel特点的基础,特点的基础,AngelAngel为除了复位以外的所有异常类型设置了异常处理程序为除了复位以外的所有异常类型设置了异常处理程序这些异常类型包括:这些异常类型包括: ● ●软件中断软件中断(SWI)(SWI)::AngelAngel设置设置SWISWI异常处理程序来支持异常处理程序来支持C C库半主机请求,并允许应用程序和库半主机请求,并允许应用程序和AngelAngel进入管理模式进入管理模式 ● ●未定义未定义(undefined)(undefined)::AngelAngel使用使用3 3条未定义指令在代码条未定义指令在代码中设置断点。

中设置断点 ● ●数据中止和预取中止数据中止和预取中止(data(data,,prefetch abort)prefetch abort)::AngelAngel设置了基本的数据中止和预取中止处理程序这些处理程设置了基本的数据中止和预取中止处理程序这些处理程序向调试器报告异常,挂起应用程序,并将控制返回给调序向调试器报告异常,挂起应用程序,并将控制返回给调试器 ●FIQ ●FIQ和和IRQIRQ::AngelAngel设置了设置了IRQIRQ和和FIQFIQ处理程序,如果需要处理程序,如果需要自定义中断,则最好将自定义中断,则最好将IRQIRQ用做用做AngelAngel通信,通信,FIQFIQ用做用户自用做用户自定义中断定义中断 基于Angel 的调试方法Angel系统的组成 典型的Angel系统包含两个主要部分:调试器和Angel调试监控程序它们通过一条物理链路(如串行电缆)进行通信 ●调试器运行在主机上它向Angel发送指令并显示从Angel获得的结果调试器可以是任何一种支持Angel调试协议ADP的调试工具 ●Angel调试监控程序与运行在目标平台上被调试的应用程序同时运行。

Angel有两种配置:一种是在开发硬件上使用的完全版,另一种是在产品硬件上使用的简化版 基于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初始化,并且初始化后不再被重写它支持位于ROM地址0处的向量不被重写的系统4)中 断 至少需要使用一个中断来支持主机和目标系统之间的通信用户可以配置Angel使用IRQ,FIQ或两者混用由于Angel没有快速中断请求,所以推荐用户将FIQ用于自定义的中断请求5)堆 栈 需要控制它自己的管理堆栈如果用户想在应用程序中设计Angel调用,则必须设置自己的堆栈。

基于Angel 的调试方法Angel为用户提供了三种不同的使用方式1)完全Angel调试代理 完全Angel调试代理是一个独立的系统,位于目标板上并一直处于活动状态在开发应用代码期间使用完全Angel它支持所有的调试器功能2)简化Angel 简化Angel保持完整的原始(raw)设备驱动,指发送和接收字节流而不是ADP包的设备驱动器在开发应用程序的最后阶段及产品硬件上使用简化Angel3)最近的启动Angel代码 在这种情况下,Angel作为一个库函数连接到出错子例程调用的最终应用代码中所以当遇到错误时,应用程序启动Angel调试器来进行内存或系统状态的检测这种情况有可能是最终开发状态 基于软件仿真的调试方法 软件调试方法可以不依赖于硬件,这时,调试系统提供一个软件仿真工具这个软件仿真工具对于在调试系统中执行的用户指令做出解释,记录和报告指令执行的结果,以及存储器和寄存器的变化 软件仿真调试方法主要应用在学习过程中,在没有硬件支持下学习系统设计和系统调试;也应用在软件编制的初级阶段,用以完善和检验程序员编制的程序 基于软件仿真的调试方法一般不单独存在,往往以其他开发软件的一个功能的形式出现。

嵌入式Linux的开发环境和调试方法 嵌入式系统通常是一个资源受限的系统,无法直接在嵌入式系统的硬件平台上编写嵌入式Linux软件 目前一般采用的解决方法是,首先在宿主机上编写程序,然后通过交叉编译,生成目标平台上可以运行的二进制代码格式,再下载到目标平台上的特定位置运行和调试 嵌入式Linux的开发环境和调试方法 嵌入式Linux的开发一般采用宿主机/目标机模式 宿主机(host)一般是一台通用计算机,它通过串口、USB或者以太网接口和目标机通信 嵌入式Linux的开发环境和调试方法宿主机/目标机模式的开发步骤利用宿主机的资源及开发环境,开发和仿真调试目标机上的软件通过串口、USB或者以太网络将交叉编译生成的目标代码传输并装载到目标机上在监控程序或者操作系统的支持下利用交叉调试器进行分析调试目标机脱离宿主机单独运行 嵌入式Linux的开发环境和调试方法宿主机/目标机模式的调试步骤编写Boot Loader,使用JTAG接口下装和烧写Boot Loader到目标机使用Boot Loader启动目标机通过串口、USB或者以太网络将目标代码传输并装载到目标机上利用远程调试和超级终端等方法进行分析调试 嵌入式Linux的开发环境和调试方法Boot Loader用于系统的加载启动任务。

Boot Loader是系统加电后运行在操作系统内核运行前运行的一段小程序,进行初始化硬件设置、创建内核需要的信息等工作,最后调用操作系统内核Boot Loader的实现对硬件的依赖非常强,不同的体系结构、不同的嵌入式板级设备配置都会对Boot Loader有不同的需求 嵌入式Linux的开发环境和调试方法Boot Loader的阶段1通常包括以下步骤:a. 硬件设备初始化b. 为加载 Boot Loader 的 阶段2 预备 RAM 空间 c. 拷贝 Boot Loader 的 阶段2 到 RAM 空间中 d. 设置好堆栈 e. 跳转到 阶段2 的 C 入口点 嵌入式Linux的开发环境和调试方法Boot Loader的阶段2通常包括以下步骤:a. 初始化本阶段要使用到的硬件设备b. 检测系统内存映射(memory map) c. 将 kernel 映像和根文件系统映像从 flash ROM 上读到 RAM 空间中 d. 为内核设置启动参数 嵌入式Linux的开发环境和调试方法宿主机的操作系统,一般选Cygwin或Redhat Linux1.安装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编译ARM平台可执行的代码,不能使用gcc,那样编译出来的是运行于主机的指令代码;应该使用arm-linux-gcc,这样才可以得到运行于ARM平台的指令代码 嵌入式Linux的开发环境和调试方法2.安装Linux系统 建议使用Redhat7.3或更新版本安装过程中选择安装类型为Custom(自定义),然后选择Install Everything 如果按其他安装类型来安装系统,需选用服务器模式安装,并要注意必须选择安装gcc、binutils、make、tftpserver、ftpserver、minicomtelnet在安装到配置网络安全时,建议关闭防火墙并选择信任eth0设备。

安装的ARM编译器都应以arm-linux作为前缀的 嵌入式Linux的开发环境和调试方法宿主机的提供的服务BOOTP协议 TFTP协议 交叉编译 Make工具 嵌入式Linux的开发环境和调试方法BOOTP服务的全称是BootStrap Protocol是一种出现比较早的远程启动协议常用到的DHCP服务就是从BOOTP服务扩展而来的 使用TCP/IP网络协议中的UDP 67/68两个通讯端口BOOTP主要用于无磁盘的客户机从服务器得到自己的IP地址、服务器的IP地址、启动映像文件名、网关IP等 嵌入式Linux的开发环境和调试方法BOOTPBOOTP过程过程在目标板由在目标板由Boot LoaderBoot Loader启动启动BOOTPBOOTP,此时目标板还,此时目标板还没有没有IPIP地址,它就用广播形式以地址,它就用广播形式以IPIP地址地址0.0.0.00.0.0.0向网络中发出向网络中发出IPIP地址查询的请求,这个请求帧中地址查询的请求,这个请求帧中包含了客户机的网卡包含了客户机的网卡MACMAC地址等信息地址等信息主机平台运行主机平台运行BooTPBooTP服务的服务器接收到的请求帧,服务的服务器接收到的请求帧,根据帧中根据帧中MACMAC地址在地址在BootptabBootptab启动数据库中查找启动数据库中查找该该MACMAC记录,如果没有此记录,如果没有此MACMAC的记录则不响应这个的记录则不响应这个请求;如果有就将请求;如果有就将FOUNDFOUND帧发送回目标板。

帧发送回目标板FOUNDFOUND帧中包含的主要信息有目标板的帧中包含的主要信息有目标板的IPIP地址、服务器地址、服务器的的IPIP地址、硬件类型、网关地址、硬件类型、网关IPIP地址、目标板地址、目标板MACMAC地址和启动映象文件名地址和启动映象文件名目标板根据目标板根据FOUNDFOUND帧中的信息通过帧中的信息通过TFTPTFTP服务器下载服务器下载启动映象文件启动映象文件 嵌入式Linux的开发环境和调试方法TFTP服务的全称是Trivial File Transfer Protocol ,称为“简单文件传输协议”TFTP可以看成一个简化了的FTP,没有用户权限管理的功能,不需要认证客户端的权限远程启动的目标板在启动一个完整的操作系统之前,就可以通过TFTP下载启动映像文件,而不需要证明自己是合法的用户TFTP安装时要设立一个单独目录作为TFTP服务的根目录,并限制传授方向,以减少安全隐患 嵌入式Linux的开发环境和调试方法交叉编译就是在一个架构下编译另一个架构的目标文件采用何种交叉编译器产生何种格式的目标文件还要取决于目标机的操作系统本课程涉及的交叉编译是能够在X86架构宿主机上运行,并且能够生成适用于ARM架构的ELF格式的可执行代码。

常采用arm-Linux-gcc作为交叉编译器,arm-Linux-ld作为链接器 嵌入式Linux的开发环境和调试方法GNU Make是一种常用的编译工具,程序员通过它可以很方便地管理软件编译内容、方式和时机,从而使程序员能够把主要精力集中在代码的编写上Make自动判断源码中哪些部分有更新,重新编译这些文件并重新链接对于那些由许多源文件组成的大型软件项目来说,采用这种项目管理方法则可以极大地提高工作效率 嵌入式Linux的开发环境和调试方法 调试是软件开发过程中必不可少的一个环节,在嵌入式Linux软件开发中,调试时采用的是宿主机和目标机之间的远程调试,调试器仍然运行在宿主机的通用操作系统之上,被调试的进程却是运行在基于特定硬件的目标机中,调试器和被调试进程通过串口或者网络进行通信 调试器可以控制、访问被调试进程,读取被调试进程的当前状态,包括查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等各种调试功能,并能够改变被调试进程的运行状态 Windows CE操作系统简介 Windows CE是一个开放的、可裁剪的、32位的实时嵌入式窗口操作系统它具有可靠性好、实时性高、内核体积小等特点,适用于各种嵌入系统和产品。

它拥有多线程、多任务、确定性的实时、完全抢先式优先级的操作系统环境,并可以根据特定硬件系统对Windows CE操作系统进行裁剪、定制 Windows CE专门面向只有有限资源的嵌入式硬件系统 Windows CE操作系统简介 Windows CE设计成为一种高度模块化的操作系统,每一模块都提供特定的功能,这些模块中的一部分被划分成组件,设计者可根据设备的性质选择必要的模块或组件包含进操作系统映像,从而使Windows CE变得非常紧凑(只占不到200KB的RAM),只占用了运行设备所需的最小的ROM、RAM以及其它硬件资源 Windows CE被分成不同的模块,其中最主要的模块有内核模块、对象存储模块、图形窗口事件子系统模块以及通信模块Windows CE还包含一些附加的可选择模块,这些模块可支持的任务有管理可安装设备驱动程序、支持COM等 一个最小的Windows CE系统至少由内核和文件系统模块组成 Windows CE的开发环境和调试方法内核模块 内核模块是Windows CE操作系统的核心,它为任何基于Windows CE的设备提供处理器调度、内存管理、异常处理以及系统内通信等系统功能,并为应用程序使用这些核心功能提供内核服务。

Windows CE的内核模块通过Core DLL模块表示所有的操作系统定制设计都必须包含这个模块,但并不是这个模块的所有组件都必需的,有一些内核组件是可选的 Windows CE的开发环境和调试方法对象存储 对象存储是Windows CE的默认文件系统,它相当于Windows CE设备上的硬盘对象存储是由共享一个内核堆的文件系统、系统数据库和系统注册表组成,即使在没有系统主电源时,对象存储也能维持应用程序及相关数据不会丢失 对象存储可将用户数据和应用程序数据存入文件或注册器在操作系统创建进程的过程中,对于这些不同的对象存储组件,可以选取,也可以忽略 Windows CE的开发环境和调试方法图形窗口和事件系统模块 图形窗口和事件系统模块〔GWES〕包含大部分的核心Windows CE功能,它集成了图形设备接口(GDI)、窗口管理器和事件管理器它分别由USER和GDI两部分组成,USER用来处理消息、事件及鼠标利键盘等用户输入,而GDI用于处理图形的屏幕和打印输出等GWES是用户、应用程序和操作系统之间的图形用户接口GWES通过处理键盘、鼠标动作与用户交互,并选择传送到应用程序和操作系统的信息。

GWES通过创建并管理在显示设备和打印机上显示的窗口、图形以及文本来处理输出 GWES的中心是窗口所有应用程序都通过窗口接收来自操作系统的消息,即使那些为缺少图形显示的设备创建的应用程序也是如此GWES提供控制器、菜单、对话框以及图形显示的设备资源,还提供GDI以控制文本与图形显示 Windows CE的开发环境和调试方法通信模块 通信模块为基于Windows CE的设备提供有线或无线通信能力,使Windows CE设备能够与其他设备或计算机进行连接与通信,通信组件提供对下列通信硬件和数据协议的支持: • 串行I/O支持 • 远程访问服务(RAS) • 传输控制协议/Intemet协议(TCP/IP) • 局域网 (LAN) • 技术API (TAPI) • WinCE的无线服务 Windows CE的开发环境和调试方法可选组件 除上述主要模块之外,还可使用其它的操作系统模块这些模块与组件主要有 • 设备管理器和设备驱动程序 • 多媒体(声音)支持模块 • COM支持模块 • Win CE外壳模块 Win CE提供的每一模块或组件都支持一组可用的相关API函数。

Windows CE的开发环境和调试方法Platform Builder开发工具 Platform Builder (PB)是微软提供给Windows CE开发人员进行基于Windows CE平台下嵌入式操作系统定制的集成开发环境它提供了所有进行设计、创建、编译、测试和调试Windows善而从CE操作系统平台的工具 它运行在桌面Windows下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试该工具能够根据用户的需求,选择构建具有不同内核功能的CE系统同时,它也是一个集成的编译环境,可以为所有CE支持的CPU目标代码编泽C/C++程序一旦成功地编译了一个CE系统,就会得到一个名为*.bin的映像文件将该文件下载到目标板中,就能够运行CE了 Windows CE的开发环境和调试方法Platform Builder提供的主要特性包括:平台开发向导和BSP开发向导:开发向导用于引导开发人员区创建一个简单的系统平台或BSP(板级支持软件包),然后再根据要求进一步修改开发向导提高了平台和BSP创建效率特性目录:操作系统可选特性均在特性目录(Catalog)中列出,开发人员可以选择相应的特性来定制操作系统导出向导:可以向其他Platform Builder用户导出自定义的目录(Catalog)特性导出SDK向导:使用户可以导出一个自定义的软件开发工具包(SDK),可以将客户定制的SDK导出到特定的开发环境中(如EVC)。

Windows CE的开发环境和调试方法远程工具:可以执行同基于Windows CE的目标设备有关的各种调试任务和信息收集任务:仿真器:通过硬件仿真加速和简化了系统的开发,使用户可以在开发工作站上对平台和应用程序进行调试,大大简化了系统的开发流程,缩短了开发时间应用程序调试器:可以在自定义的操作系统映像上对应用程序进行调试:内核调试器:可以对自定义的操作系统映像进行调试,并且向用户提供有关映像性能的信息;驱动测试工具包:系统为驱动程序开发提供了基本的测试工具集;基础配置:为各种流行的设备类别预置的可操作系统基础平台,为自定义操作系统的创建提供了一个起点 Windows CE的开发环境和调试方法 Windows CE的开发环境和调试方法BSP原理简述 BSP又称板级支持软件包,它是一个包括启动程序、OEM适配层程序(OAL)、标准开发板(SDB)和相关硬件设备驱动程序的软件包BSP是基于Windows CE平台系统的主要部分,它是由一些源码和二进制文件组成 BSP在系统中的角色,很相似于BIOS在PC统中的地位BSP在系统中所处的位置位于硬件平台与操作系统或应用软件之间,用于屏蔽上层软件对各种硬件的相关性。

Windows CE的开发环境和调试方法 对于嵌入式系统来说,它没有像PC机那样具有广泛使用的各种工业标准,各种嵌入式系统的不同应用需求决定了它选用的各自定制的硬件环境,这种多变的硬件环境决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性 各商用实时操作系统都采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为Board Support Package (板级支持软件包,简称BSP)BSP是针对某个单板而设计的,它对于用户(开发者)是开放的,用户可以根据不同的硬件需求对其作改动或二次开发,而操作系统本身仅仅提供了CPU内核的无关性 Windows CE的开发环境和调试方法 BSP的主要功能在于配置系统硬件,使其工作在正常状态,并且完成硬件与软刊件之间的数据交互,为0S及上层应用程序提供一个与硬件无关的软件平台 在Platform Builder中,微软提供了对十几种标准开发板(SDB)支持的BSP,这些BSP覆盖了所有Windows CE可支持的处理器类型,它可使开发者快速地评估各种操作系统特性并减少新产品开发时间。

下载提示
相似文档
正为您匹配相似的精品文档