嵌入式系统开发环境和调试方法.ppt_第1页
嵌入式系统开发环境和调试方法.ppt_第2页
嵌入式系统开发环境和调试方法.ppt_第3页
嵌入式系统开发环境和调试方法.ppt_第4页
嵌入式系统开发环境和调试方法.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 嵌入式系统的 开发环境和调试方法 目录 w嵌入式系统的调试方法 n基于仿真头的传统调试方法 n基于JTAG的调试方法 n基于Angel的调试方法 n基于软件仿真的调试方法 w嵌入式Linux的开发环境和调试方法 wWindows 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个部分: 嵌入式ICERT逻辑。支持实时调试的嵌入式在线仿真 逻辑。实现在线调试功能,可以通过两种方式进行访问: 通过ARM处理器主核访问。ARM主核把嵌入式ICE-RT作为 外部协处理器14,使用协处理器指令MCR和MRC进行访问。 通过扫描链进行访问。调试系统通过扫描链2访问嵌入 式ICE- RT。 TAP控制器。调试系统通过TAP控制器控制扫描链的工作 。 由多个扫描链组成的扫描逻辑。供用户使用的共有3个 扫描链。 基于JTAG的调试方法ARM调试原理 嵌入式ICERT逻辑。支持实时调试的嵌入式在线仿真逻辑。 TAP控制器。调试系统通过TAP控制器控制扫描链的工作。 由多个扫描链组成的扫描逻辑。供用户使用的共有3个扫描链 。 基于JTAG的调试方法ARM调试原理 在ARM处理器中,主要的扫描链共有3条: 扫描链0:允许调试系统对整个ARM处理器主核 外围进行访问,扫描链0长度为105位。包括32位数 据总线和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条引线是芯片的外部引脚,连 接到外部调试系统。TDI和TDO是串行数据输入 输出,TCK用做同步时钟。由这4条线(还有一条可 选线TRST)组成的接口一般称为JTAG接口,其符合 IEEE 11491标准。这个标准是一个关于测试访 问接口和边界扫描结构的标准。 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工程管理,编译连接 调试器 AXD ADW/ADU Armsd 仿真调试 指令模拟器ARMulator由AXD 调用 ARM 开发包一些底层的例程, 实用程序(如fromELF) 一些实用程序由CodeWarrior IDE 调用 ARM 应用库C、C+函数库等用户程序使用 基于JTAG的调试方法CodeWarrior IDE ADS 1.2 使用了CodeWarrior IDE集成开发环 境,并集成以下内容 wARM 汇编器、 wARM 的C/C+编译器 wThumb 的C/C+编译器 wARM 连接器, CodeWarrior IDE包含工程管理器、代码生成 接口、语法敏感(对关键字以不同颜色显示)编辑 器、源文件和类浏览器等等。 基于JTAG的调试方法CodeWarrior IDE 主窗口 基于JTAG的调试方法AXD 调试器 AXD 调试器为ARM 扩展调试器。 AXD支持硬件仿真和软件仿真(ARMulator) 。 AXD 能够装载映像文件到目标内存,具有 单步、全速和断点等调试功能,可以观察 变量、寄存器和内存的数据等等。 基于JTAG的调试方法AXD主窗口 基于JTAG的调试方法ADS开发过程 工程的编辑 w建立工程,使用工程模板建立工程 w建立文件,建立一个文本文件,以便输入 用户程序。 w添加文件到工程 w用户也可以用添加源文件和建立源文件时 选择加入工程的方法添加文件到工程。 基于JTAG的调试方法ADS开发过程 编译并连接工程 w编译连接前可进行编译器中工程的地址设置、 输出文件设置等编译选项的设置; w对于简单的软件调试,可以不进行连接地址的 设置,直接点击工程窗口的“Make”图标按钮 ,即可完成编译连接。 w若编译出错,会有相应的出错提示,双击出错 提示行信息,编辑窗即会使用光标指出当前出 错的源代码行。 基于JTAG的调试方法ADS开发过程 工程的调试 w当工程编译连接通过后,在工程窗口中点击 “Debug”图标按钮,即可启动AXD 进行调试(也可 以通过【开始】菜单起动AXD)。 w在Choose Target 窗口中设置调试器。在没有添加 其它仿真驱动程序前,Target 项中只有两项,分 别为ADP(JTAG 硬件仿真)和ARMUL(软件仿真)。 w选择仿真驱动程序后,加载ELF 格式的可执行文件 ,即*.axf 文件。 工程编译连接通过后,在“工程名工程名_Data 当前的生成目标”目录下会生成一个*.axf 调试文 件。 基于JTAG的调试方法ADS工程模板 用各个工程模板建立的工程,它们的各项设 置均有不同之处,方便生成不同结构的代码,常 见的工程模板有: wARM可执行映象(生成ARM 指令的代码) wThumb 可执行映象(生成Thumb 指令的代码) wThumb、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主要用于: 调试在真正硬件上而不是硬件仿真器上的应用软件; 在开发板上开发新的软件应用程序; 运行基于ARM处理器的新硬件设备; 加载基于ARM的操作系统。 Angel使用Angel调试协议ADP进行主机和目标机的通信 。支持多通道,并提供检错功能。 Angel的提供方式有以下3种: 在ARM开发板的Flash或ROM中独立的可执行程序 可以下载到Flash或RAM中的已编译完成的映像文件 可以根据自己设计的硬件进行重新修改编译的源程序 。 基于Angel 的调试方法 Angel系统的特点 支持调试; 支持C库半主机方式; 支持通信; 任务管理; 异常处理。 基于Angel 的调试方法 Angel的特点支持调试 (1)查看和修改存储器和处理器状态 存储器位置被传递给一个函数,此函数将内存以字节 流的方式复制到发送缓冲区,放置在向主机的输出包中。 (2)向目标机下载应用程序 通过从来自主机的数据包中卸载字节,并随即将其写 入由主机定义地址的存储器来实现下载。下载过程通过调 用一个字节流函数来实现。 (3)设置断点 Angel只能在RAM中设置断点。要中止的指令被Angel规 定的“指定未定义指令”所代替。Angel保存原指令,以确 保如果包含此位置的存储区域被检测时恢复原指令。当移 走断点时,恢复原指令。 基于Angel 的调试方法 Angel的特点支持C库半主机 Angel使用软中断(SWI)机制,使应用程 序和ARM C和C+库链接,从而完成半主机请 求。半主机请求必须通过与主机的通信来完 成,如“打开主机上的一个文件”或“获得 调试器命令行”。这些请求之所以被称为半 主机请求,是因为它们需要依赖主机上的C 库来执行请求。Angel使用单一的SWI来请求 半主机操作。 基于Angel 的调试方法 Angel的特点支持通信 Angel使用ADP协议进行通信,通过使用通道来使多个独 立的信息共享一条通信连接。Angel还提供了检错功能。主 机和开发板的连接既可以是串行并行连接,也可以是以太 网连接。使用以太网连接。 主机和目标系统中具有通道管理功能,保证了逻辑通道 可以可靠地进行多路复用和设备驱动检测并抛弃已破坏的数 据包。通道管理器监控所有的数据流,并把传输的数据存入 缓冲区中以防止重发。 完全的Angel设备驱动结构使用Angel任务管理功能来控 制包的处理,并确保中断不会被长时间的禁止。用户可以写 设备驱动程序来驱动其他的调试设备,也可以扩展Angel来 支持其他的外设。 基于Angel 的调试方法 Angel的特点支持任务管理 所有的Angel操作,包括通信和调试,都 是由Angel任务管理功能控制的。包括 确保在任何时候只有一个操作在执行; 分配任务的优先级,以及分配任务; 控制Angel环境中的处理器模式。 基于Angel 的调试方法 Angel的特点支持异常处理 Angel异常处理是以上所描述的Angel特点的基础, Angel为除了复位以外的所有异常类型设置了异常处理程序 。这些异常类型包括: 软件中断(SWI):Angel设置SWI异常处理程序来支持C 库半主机请求,并允许应用程序和Angel进入管理模式。 未定义(undefined):Angel使用3条未定义指令在代码 中设置断点。 数据中止和预取中止(data,prefetch abort):Angel 设置了基本的数据中止和预取中止处理程序。这些处理程 序向调试器报告异常,挂起应用程序,并将控制返回给调 试器。 FIQ和IRQ:Angel设置了IRQ和FIQ处理程序,如果需要 自定义中断,则最好将IRQ用做Angel通信,FIQ用做用户自 定义中断。 基于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包的设备驱动器。在开发应用程序的 最后阶段及产品硬件上使用简化Angel。 (3)最近的启动Angel代码 在这种情况下,Angel作为一个库函数连接到出错子例 程调用的最终应用代码中。所以当遇到错误时,应用程序 启动Angel调试器来进行内存或系统状态的检测。这种情况 有可能是最终开发状态。 基于软件仿真的调试方法 软件调试方法可以不依赖于硬件,这时,调 试系统提供一个软件仿真工具。这个软件仿真工 具对于在调试系统中执行的用户指令做出解释, 记录和报告指令执行的结果,以及存储器和寄存 器的变化。 软件仿真调试方法主要应用在学习过程中, 在没有硬件支持下学习系统设计和系统调试;也 应用在软件编制的初级阶段,用以完善和检验程 序员编制的程序。 基于软件仿真的调试方法一般不单独存在, 往往以其他开发软件的一个功能的形式出现。 嵌入式Linux的开发环境和调试方法 嵌入式系统通常是一个资源受限的系统,无法 直接在嵌入式系统的硬件平台上编写嵌入式Linux 软件。 目前一般采用的解决方法是,首先在宿主机上 编写程序,然后通过交叉编译,生成目标平台上 可以运行的二进制代码格式,再下载到目标平台 上的特定位置运行和调试。 嵌入式Linux的开发环境和调试方法 嵌入式Linux 的开发一般采用 宿主机/目标机 模式。 宿主机(host) 一般是一台通用 计算机,它通过 串口、USB或者 以太网接口和目 标机通信。 嵌入式Linux的开发环境和调试方法 宿主机/目标机模式的开发步骤 w利用宿主机的资源及开发环境,开发和 仿真调试目标机上的软件 w通过串口、USB或者以太网络将交叉编译 生成的目标代码传输并装载到目标机上 w在监控程序或者操作系统的支持下利用 交叉调试器进行分析调试 w目标机脱离宿主机单独运行 嵌入式Linux的开发环境和调试方法 宿主机/目标机模式的调试步骤 w编写Boot Loader,使用JTAG接口下装和 烧写Boot Loader到目标机 w使用Boot Loader启动目标机 w通过串口、USB或者以太网络将目标代码 传输并装载到目标机上 w利用远程调试和超级终端等方法进行分 析调试 嵌入式Linux的开发环境和调试方法 wBoot Loader用于系统的加载启动任务。 wBoot Loader是系统加电后运行在操作系统内 核运行前运行的一段小程序,进行初始化硬件 设置、创建内核需要的信息等工作,最后调用 操作系统内核。 wBoot Loader的实现对硬件的依赖非常强,不 同的体系结构、不同的嵌入式板级设备配置都 会对Boot Loader有不同的需求。 嵌入式Linux的开发环境和调试方法 Boot Loader的阶段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的开发环境和调试方法 宿主机的操作系统,一般选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编译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的开发环境和调试方法 宿主机的提供的服务 wBOOTP协议 wTFTP协议 w交叉编译 wMake工具 嵌入式Linux的开发环境和调试方法 wBOOTP服务的全称是BootStrap Protocol 是一种出现比较早的远程启动协议 w常用到的DHCP服务就是从BOOTP服务扩展 而来的 w使用TCP/IP网络协议中的UDP 67/68两个 通讯端口 wBOOTP主要用于无磁盘的客户机从服务器 得到自己的IP地址、服务器的IP地址、启 动映像文件名、网关IP等。 嵌入式Linux的开发环境和调试方法 BOOTP过程 w在目标板由Boot Loader启动BOOTP,此时目标板还没有 IP地址,它就用广播形式以IP地址向网络中发出 IP地址查询的请求,这个请求帧中包含了客户机的网卡 MAC地址等信息。 w主机平台运行BooTP服务的服务器接收到的请求帧,根据 帧中MAC地址在Bootptab启动数据库中查找该MAC记录, 如果没有此MAC的记录则不响应这个请求;如果有就将 FOUND帧发送回目标板。FOUND帧中包含的主要信息有目 标板的IP地址、服务器的IP地址、硬件类型、网关IP地 址、目标板MAC地址和启动映象文件名。 w目标板根据FOUND帧中的信息通过TFTP服务器下载启动映 象文件。 嵌入式Linux的开发环境和调试方法 wTFTP服务的全称是Trivial File Transfer Protocol ,称为“简单文件传输协议” wTFTP可以看成一个简化了的FTP,没有用户权 限管理的功能,不需要认证客户端的权限。远 程启动的目标板在启动一个完整的操作系统之 前,就可以通过TFTP下载启动映像文件,而不 需要证明自己是合法的用户。 wTFTP安装时要设立一个单独目录作为TFTP服务 的根目录,并限制传授方向,以减少安全隐患 。 嵌入式Linux的开发环境和调试方法 w交叉编译就是在一个架构下编译另一个架构的 目标文件 w采用何种交叉编译器产生何种格式的目标文件 还要取决于目标机的操作系统。 w本课程涉及的交叉编译是能够在X86架构宿主 机上运行,并且能够生成适用于ARM架构的ELF 格式的可执行代码。 w常采用arm-Linux-gcc作为交叉编译器,arm- Linux-ld作为链接器。 嵌入式Linux的开发环境和调试方法 wGNU Make是一种常用的编译工具,程序员通过 它可以很方便地管理软件编译内容、方式和时 机,从而使程序员能够把主要精力集中在代码 的编写上。 wMake自动判断源码中哪些部分有更新,重新编 译这些文件并重新链接。对于那些由许多源文 件组成的大型软件项目来说,采用这种项目管 理方法则可以极大地提高工作效率。 嵌入式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设备能够与其他设备 或计算机进行连接与通信,通信组件提供对下列通 信硬件和数据协议的支持: 串行IO支持 远程访问服务(RAS) 传输控制协议Intemet协议(TCPIP) 局域网 (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下,开发人员可以通过交互式 的环境来设计和定制内核、选择系统特性,然后进行编译 和调试。该工具能够根据用户的需求,选择构建具有不同 内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论