




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 开发环境和调试技术提纲1、交叉开发环境方式概述2、宿主机环境3、目的板环境4、交叉编译工具链5、gdb调试器6、远程调试7、内核调试8、网络调试1、交叉开发环境方式概述什么是嵌入式系统“以运用为中心、以计算机技术为根底、软件硬件可裁剪、顺应运用系统对功能、可靠性、本钱、体积、功耗严厉要求的公用计算机系统。硬件上的局限性存储空间小处置器频率低短少存储、输入输出设备宿主机目的板交叉开发方式组成部分宿主机:平常运用的桌面计算机目的板:嵌入式开发板引见利用宿主机上已有的成熟的开发工具,专门针对目的板定制一套系统,包括引导程序、内核和文件系统,然后下载到目的板上运转。宿主机目的板交叉开发方式开发
2、过程在宿主机上编写代码,并经过交叉编译工具编译出可以在目的板上运转的程序,然后下载到目的板上测试执行,最后利用宿主机上的调试工具对目的板上运转的程序进展远程调试。特点运用和桌面开发一样的工具,降低学习本钱。充分利用宿主机的开发环境。宿主机目的板衔接方式串口利用串口给目的板发送命令,同时也可以接受目的板前往的信息并显示。宿主机可以经过串口往目的板传送文件;目的板可以把程序运转的结果前往并显示。串口驱动程序的实现相对比较简单,缺陷是传输速度慢,并不适用于传输大量数据的场所。以太网以太网是当今局域网采用的最通用的通讯协议规范。它运用简单,配置灵敏,支持广泛,传输速率快,平安可靠,缺陷是网络驱动的实现
3、比较复杂。宿主机目的板衔接方式USBUSB是Universal Serial Bus通用串行总线的缩写,现已成为PC的规范,基于USB规范的设备被广泛运用。一种快速、灵敏的总线接口,与其它通讯接口相比,USB接口的特点是易于运用。支持热插拔,无需用户本人配置,系统会自动搜索驱动并安装。USB是典型的主从构造,两端分别需求不同的驱动程序。JTAGJTAG是一种国际规范测试协议,主要用于芯片内部测试及对系统进展仿真、调试。在嵌入式系统领域,几乎一切的处置器都支持JTAG,调试器的单步伐试和断点都需求和JTAG交涉。可以运用JTAG将程序烧写到目的板上。2、宿主机环境串口终端BOOTP协议TFTP协
4、议交叉编译Make工具串口终端串口的用途作为终端执行命令,管理嵌入式系统。运用zmodem协议等传送小文件。串口终端超级终端 (Windows XP)Minicom (Linux)BOOTP协议什么是BOOTP协议引导协议Bootstrap Protocol,BOOTP是一种基于TCP/IP的协议,它最初在RFC951中定义,如今在通用计算机上广泛运用的DHCP协议就是从BOOTP协议扩展而来。BOOTP协议运用TCP/IP网络协议中的UDP 67/68两个通讯端口。BOOTP协议用途用于无盘客户机从效力器得到本人的IP地址、效力器的IP地址、启动映象文件名、网关信息等等BOOTP处置过程第一
5、步,在主机平台运转BOOTP效力的情况下,目的板由Boot Loader启动BOOTP,此时目的板还没有IP地址,它就用广播方式以IP地址向网络中发出IP地址查询的恳求,这个恳求帧中包含了客户机的网卡MAC地址。第二步,主机平台上的BOOTP效力器接纳到的这个恳求帧,根据这帧中的MAC地址在Bootptab启动数据库中查找这个MAC的记录,假设没有此MAC的记录那么不呼应这个恳求;假设有就将FOUND帧发送回目的板。FOUND帧中包含的主要信息有目的板的IP地址、效力器的IP地址、硬件类型、网关IP地址、目的板MAC地址和启动映象文件名。第三步,目的板就根据FOUND帧中的信息经过TFTP效力
6、器下载启动映象文件。TFTP协议什么是BOOTP协议TFTP的全称是Trivial File Transfer Protocol,即“简单文件传输协议,它是TCP/IP协议族中的一个在客户端和效力端之间进展简单文件传输的协议,提供不复杂、开销不大的文件传输效力。TFTP特点不提供用户名和口令TFTP 协议传输由客户端发起交叉编译背景目的文件在不同架构间由于采用的CPU指令集不同等缘由不能通用。定义交叉编译就是在一个架构的机器下编译另一个架构的目的文件。需求安装交叉编译工具链make工具GNU make是一种常用的编译工具,经过它,开发人员可以很方便地管理软件编译的内容、方式和时机,从而可以把主
7、要精神集中在代码的编写上。make会自动根据文件修正时间来判别源文件中哪些部分有更新,经过解释Makefile文件内的规那么并执行相应的命令,重新编译链接这些更新过的文件。make任务过程编写MakefileMakefile由一系列规那么组成,每条规那么阐明要生成哪些目的文件、生成目的文件所依赖的其它文件以及生成目的文件所需求的命令。编译过程经过查看时间戳来确认依赖文件能否比目的文件更新,假设是那么重新执行这条规那么的命令,并进一步地执行依赖这些中间目的文件的规那么,层层推进,最后生成新的结果文件。需求重新编译的情况一切的依赖文件都没有被编译过,那么对每个源文件进展编译并进展链接,生成最后的可
8、执行程序 。源文件在上次编译之后被修正正,那么在本次执行make的时候将会被重新编译。头文件在上次编译之后被修正正,那么一切包含此头文件的源文件在本次执行make的时候将将会被重新编译。Makefile例如# Makefile Example for Mathmath : main.o display.o plus.o minus.o multi.o divide.o mod.o gcc -o math main.o display.o plus.o minus.o multi.o divide.o mod.omain.o : main.c defs.h display.h gcc -c ma
9、in.c display.o : display.c defs.h display.h gcc -c display.c plus.o : plus.c defs.h gcc -c plus.cminus.o: minus.c defs.h gcc -c minus.cmulti.o: multi.c defs.h gcc -c multi.cdivide.o: divide.c defs.h gcc -c divide.cmod.o: mod.c defs.h gcc -c mod.c .PHONY: cleanclean : -rm main.o display.o plus.o minu
10、s.o multi.o divide.o mod.oMakefile根本规那么TARGET : PREREQUISITESCOMMAND # command前面运用tab缩进阐明:TARGET:规那么的目的。通常是最后所要生成的可执行文件名或者为了生成这个目的而必需的中间过程的目的文件名。PREREQUISITES:规那么的依赖。生成规那么目的所需求的文件列表,通常一个目的依赖于一个或多个文件。COMMAND:规那么执行的命令。生成规那么目的所需求执行的命令,可以是shell下面的任何命令组合。3、目的板环境JTAG接口Boot LoaderJTAG接口简介作为硬件测试手段,JTAG的功能与C
11、PU形状无关,可驱动设备的一切外部引脚并读入数据,而且在设备内部夺取外部的衔接点与通往外部的各个pin脚一一衔接。各个cell为了构成 Serial Shift Register而相连。整体的接口由5个pin脚来控制TDI,TMS,TCK,nTRST,TDO。其功能包括:测试线路连线和端子的衔接形状;测试设备间的衔接形状;进展Flash memory 烧写等Boot Loader简介Boot Loader是系统加电后运转的第一段代码。完成初始化硬件设备、创建内核需求的信息等任务,最后调用操作系统内核。对硬件的依赖非常强,不同的体系构造、不同的嵌入式板级设备配置都会对Boot Loader有不同
12、的需求。4、交叉编译工具链交叉编译工具链是一个由编译器、链接器和解释器组成的集成开发环境。和本地编译类似,交叉编译的过程也是由编译、链接等阶段组成,源程序经过交叉编译器编译成目的模块,并由交叉链接器加载库最后链接成可在目的平台上执行的程序代码。交叉编译过程交叉编译的构建从头编译编译难度大,不适宜初学者。脚本编译需求选择适宜的脚本工具,例如crosstool下载运用下载指定平台编译好的二进制包。相关工具交叉编译工具链主要包括:规范库:glibc编译器:gcc链接器:ld汇编器:as调试器:gdb规范库:glibc最初是自在软件基金会为其GNU操作系统所写,但目前最主要的运用是配合Linux内核,
13、成为GNU/Linux操作系一致个重要的组成部分。是Linux系统中最底层的API,几乎其它任何运转库都会直接或间接地依赖于glibc。除了封装系统调用之外,还提供一些根本的功能,例如open、malloc、printf、exit等等。编译器: gcc支持不同的编程言语,它被目前许多Unix/Linux系统作为默许的规范编译器。支持多种处置器架构上,并且在商业、专利和开源软件开发环境中广泛运用。支持嵌入式系统平台。binutils是一组开发工具包,包括衔接器、汇编器和其他用于目的文件和档案的工具。其中包括:addr2line、ar 、as、ld、nm、objdump 、ranlib、reade
14、lf调试器:gdb是一款功能非常强大的调试器,既支持多种硬件平台,也支持多种编程言语,目前gdb支持的调试言语有C/C+、Java、Fortran、Modula-2等多种言语。不仅用于本地调试,还可以用于远程调试,非常适宜嵌入式系统开发运用。5、gdb调试运用gdb可以完成下面这些义务:运转程序,可以给程序加上所需的任何调试条件;在给定的条件下让程序停顿;检查程序停顿时的运转形状;经过改动一些数据,可以更快地矫正程序的错误。6、远程调试以调试器和被调试程序能否在同一台机器区分本地调试远程调试嵌入式系统大多运用远程调试方式远程调试处理方案插桩方案需求在目的操作系统和宿主机调试器内分别添加一些功能
15、模块,然后二者互通讯息调试,这种方案称为插桩stub远程调试原理远程调试原理 运转在目的板上的被调试程序,一经初始化,在入口点会调用设置断点的函数,自动触发异常然后由异常处置程序控制,异常处置程序将会调用调试端口通讯模块,监听宿主机调试器发送的调试信息。双方通讯一旦建立,就可以根据远程调试协议进展调试。远程调试方法运用ROM Monitor调试目的机目的板程序运用kgdb调试系统内核运用gdbserver调试用户空间运用程序gdb远程调试功能由宿主机gdb和目的板调试stub共同构成。两者经过串口或TCP衔接,采用gdb远程串行协议Remote Serial Protocol, RSP衔接。R
16、SP定义了宿主机gdb和被调试的目的板程序进展通讯时数据包的格式。它是一种基于音讯的ASCII码协议,包含了内存读写、存放器查询、程序运转等命令。gdbserver远程调试7、内核调试Linux内核的规模之庞大,单靠阅读代码查找BUG曾经非常困难。而Linux内核的开发人员出于保证内核代码正确性的思索,不情愿在Linux内核源代码中添加调试器。所以对Linux内核进展调试不断是项艰苦的任务。内核调试技术内核打印函数 printk内核源代码调试kgdb内核打印函数printk函数具有良好的强壮性,不受内核运转条件的限制,在系统运转的任何阶段都可以运用。和C规范库中的printf函数不同的是,printk函数可以指定一个日志级别。内核根据这个级别来判别能否在终端上打印音讯。在头文件中定义了可用的日志级别kg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高纯银合作协议书
- 2025年核防护材料及装置项目合作计划书
- 2025年船用动力堆及配套产品项目合作计划书
- 2025二手车买卖合同范本购车合同
- 2025电力工程施工内部承包合同 施工合同协议书
- 2025工程项目合作协议合同范本
- 2025年二级稳压装置项目合作计划书
- 2025年车载空气净化器项目建议书
- 2025年镉镍航空蓄电池项目建议书
- 人力资源员工培训沟通技巧
- 分布式光伏经济评价规范
- 乾坤未定吾皆黑马+高考冲刺百日誓师主题班会
- 2025年4月自考00160审计学押题及答案解析
- 如何通过饮食调理改善肠道功能
- 住培临床技能教学教案
- 公路养护安全作业规程-隧道养护作业控制区布置
- 优生优育保健知识讲座
- NB-T 47013.1-2015 承压设备无损检测 第1部分-通用要求
- 与小三分手的协议书
- 光照度点检记录表
- 羊水过少护理查房
评论
0/150
提交评论