嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003

上传人:E**** 文档编号:89502487 上传时间:2019-05-26 格式:PPT 页数:47 大小:2.14MB
返回 下载 相关 举报
嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003_第1页
第1页 / 共47页
嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003_第2页
第2页 / 共47页
嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003_第3页
第3页 / 共47页
嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003_第4页
第4页 / 共47页
嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003》由会员分享,可在线阅读,更多相关《嵌入式系统设计 教学课件 ppt 作者 李秀娟 第7章2003(47页珍藏版)》请在金锄头文库上搜索。

1、1,第7章 嵌入式Linux应用程序开发与调试,嵌入式应用开发过程的实质和乐趣。,2,本章内容,7.1 开发环境与工具,1,7.2 Linux下的C语言编程,2,7.3 嵌入式系统开发软件与调试工具,3,7.4 ARM仿真器,4,3,简介,本章介绍嵌入式Linux应用程序开发及调试相关的软件环境及开发调试工具。首先阐述了嵌入式Linux环境下交叉编译的基本概念,结合例程讲解了常用的编译器和调试器的使用方法。接下来,概要介绍Linux系统下的C语言编程的开发环境和代码的编译及下载方法。针对所开发的程序代码,分析对比了常见的调试方式和ADS集成开发环境的使用方法。随后结合实际情况介绍了UArmJt

2、ag调试工具及UP-ICE200仿真器的使用,为读者进一步使用并掌握调试和仿真工具起到抛砖引玉的作用。,4,7.1 开发环境与工具,由于一般的嵌入式系统目标机的片上资源有限,不能为编译过程提供足够的资源,因此通常都要在资源较为丰富的PC机上建立一个交叉编译环境。 交叉编译是指在一种体系结构的平台上(如X86架构的PC机)上编译生成可以运行于另一种不同体系结构平台(如ARM架构的开发板)的代码的过程。 交叉编译环境通常是建立在PC机上,由交叉编译器、交叉链接器和解释器等组成的一个集成开发环境。,7.1.1交叉编译,交叉编译环境也是由一系列的工具包组成: 针对ARM目标板的gcc(GNU Comp

3、iler Collection)编译器。其中,包括C与C+的编译器和预处理器; 目标板的二进制开发工具包Binutils。其中,包括连接器、汇编器以及其它用于目标文件和档案的工具; 提供系统调用和基本函数的标准C库Glibc。Glibc提供系统调用和基本函数C库以及目标板的Linux内核头文件。,5,7.1.2 gcc编译器,Gcc是GNU组织开发的一套免费的编程语言编译器,遵循GPL及LGPL许可证,也是GNU计划的关键组成部分。Gcc最初是指C语言编译器(GNU C Compiler),是一个功能强大的ANSI (American National Standards Institute,

4、美国国家标准协会)C兼容编译器。随着多年发展,Gcc已经不仅仅支持C 和C+语言,还可以编译Java、Fortran、COBOL、Pascal、Objective-C、Modual-3以及Ada等多种语言。Gcc的含义已经变成了GNU编译器家族(GNU Compiler Collection),已经广泛使用在各个Linux版本中。,6,Gcc编译器几乎对所有常见的硬件平台都提供了完善的支持,因此可以将编写的源程序编译为适应多种硬件平台的目标代码。Gcc是一个交叉平台编译器,可以在当前CPU体系结构的硬件开发平台上为其他多种不同架构类型的开发板编译代码,因此尤其适合嵌入式系统领域源代码的编译工作

5、。,7,使用gcc/g+由C源代码文件生成可执行文件的过程不仅仅是编译过程,还包括四个相互关联的过程,预处理(也称预编译,Preprocessing),编译(Compilation),汇编(Assembly),链接(Linking) ,如下图所示。,8,9,使用gcc编译器的一般命令格式为: gcc options filenames 其中的可选项options是以“-”开始的各种编译选项。filenames是相关程序的文件名,包括即将生成的可执行文件的名字(可选项)和要编译的源程序的名字。 在使用gcc进行编译的时候,需要给出必要的选项和完整的带后缀名的源文件名。,10,7.1.3 GDB调

6、试器,Linux系统下GNU提供了一个名为gdb(GNU DeBug)的调试程序,通过与Gcc编译器的配合使用,为基于Linux操作系统的软件开发提供了一个完善的调试环境。 gdb是一个用来调试C和C+语言源程序的高效调试器。在程序调试运行时,用户可以通过gdb调试器观察程序的内部结构和内存的使用情况。gdb所提供的具体功能包括:单步逐行执行代码或程序跟踪,观察程序的运行状态;动态监视或修改程序中变量的值;设置断点以使程序在指定的代码行上暂停执行;程序停止时可以检查程序的状态;分析程序崩溃产生的core文件。,11,当gdb调试器被适当地集成到某个嵌入式系统程序中的时候,其远程调试功能允许开发

7、人员设置断点、分步调试程序代码、检验内存,并且同目标板交换信息。开发人员可以将运行gdb的宿主机通过串行端口、网络接口或是其他方式连接到目标板进行远程调试。使用gdb调试器对应用程序进行调试时,为了使gdb正常工作,在使用gcc编译器对源代码进行编译的时候,必须使用-g编译选项开关来通知编译器,开发者希望进行程序调试。,12,Gdb调试方式采用文本界面下的交互式调试方式。在Linux系统下的终端命令行提示符下键入gdb并按回车键即可启动运行gdb调试器。此外,如果想直接指定想要调试的程序,也可以使用下面的命令来运行gdb: gdb ,13,7.1.4 Vi编辑器的使用,用户要在Linux系统下

8、编写一般文本、数据文件或是语言程序,首先都必须选择一种编辑器工具。图形模式下有grdit、OpenOffice、kwrite等,文本模式下有Vi、VIM(Vi Improved)、Emacs、nano等。Vi文本编辑器已经成为Linux系统下最常用的工具之一。 Vi即“Visual Interface”的简称,是Linux/Unix自带的可视化全屏幕文本编辑器,工作在字符模式下。由于不需要图形界面,使它成了效率很高的交互式文本编辑工具。,14,Vi 编辑器在Linux操作系统上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需

9、要对其进行定制,这也是其他编辑程序所没有的。 Vi有三种基本工作模式分别为命令模式(command mode)、插入模式(Insert mode)以及底行模式(last line mode)。,15,(1)命令模式 当进入Vi编辑器时,首先进入的就是命令模式,此时光标位于屏幕上方。在该模式下键盘的各种输入都被作为命令来对待。用户可以执行控制光标移动,删除字符,复制段落等操作。 用户可以输入各种合法的Vi命令,用于管理自己的文档。需要注意的是,所输入的命令通常是不回显的(并不在屏幕上显示出来),在该模式下也无法编辑文字。如果用户在该模式下输入非法的Vi命令,计算机将鸣响报警。命令模式是vi的核心

10、模式,其他模式是从命令模式转入的,其他任意模式按“Esc”键也都可回到命令模式。,16,(2)插入模式 插入模式也称为文本编辑模式。用户在命令模式下,通过输入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以使vi编辑器进入插入模式。此时屏幕底部出现“INSERT”的提示。只有在插入模式下,用户才可以进行文本的编辑输入和修改。在该模式下,用户输入的任何字符都被Vi编辑器当做文件内容保存起来,并将其显示在屏幕上。在新增文字及修改文字结束后,按“Esc”键可回到命令模式。,17,(3)底行模式 在命令模式下,用户按一般命令“:”键、正向搜索“/”键或反向搜索“?”键即可进入底

11、行模式下,此时Vi会在屏幕窗口左下角的最后一行,显示一个“:”符号作为底行模式的提示符,光标位于此提示符后等待用户输入命令。在底行模式下,所有命令都要以“:”开始,此时从键盘上输入的任何字符都被当作编辑命令进行解释处理,如“:q”代表退出,“:w”表示存盘。,18,需要注意的是,表中所有命令前的冒号是底行模式的提示符,而不是命令本身的一部分。多数文件管理命令都是在此模式下执行的,功能包括:将文件进行保存或退出Vi的操作,也可以设置编辑环境,如寻找字符串、列出行号等其他操作。底行命令输入完毕后按Enter键盘即可执行,之后Vi将自动回到命令模式。,19,上述三种模式是可以相互切换,它们之间的相互

12、转换关系如图所示。具体切换方法为: 命令模式i键或a键或o键编辑模式 编辑模式Esc命令模式, 命令模式:底行模式。,20,7.1.5 Makefile文件和Make命令,如果在一个软件工程中包含了几十个甚至成百上千个源代码文件,而这些源代码文件中的某个或某几个又包含在其他的源码文件中,那么,如果其中一个源代码文件被改动,则包含它的那些源文件都要重新使用编译器执行编译链接过程,这样做的工作量将是十分庞大的。 GNU提供了make命令工具及Makefile文件,可以取代复杂的编译命令操作。make及Makefile工具可以高效地处理各个源文件之间的复杂关系,提高应用程序的开发效率。同时,用户在编

13、译时只需要执行一次make命令,使得程序的编译过程变得更为简单。,21,1. Makefile文件 GNU make命令执行时,需要一个对应的Makefile文件,通过读入makefile配置文件的相关内容自动完成大量的编译和链接工作。一个工程中的源文件可能有很多,按其类型、功能、模块分别存放在若干个目录中。 Makefile文件描述了目标文件之间的依赖关系,指定了工程编译过程中使用的编译工具和链接规则。,22,Makefile主要包括显式规则、隐晦规则、变量定义、文件指示及注释五部分。它们定义了一系列的规则,来指定工程中哪些文件需要编译以及如何编译;哪些文件需要先编译,哪些文件需要后编译以及

14、哪些文件需要重新编译;需要创建哪些库文件以及如何创建;如何产生最后的可执行文件甚至于进行更复杂的功能操作。,23,Makefile的作用是根据配置的情况,构造出需要编译的源文件列表,然后分别编译,并把目标代码链接到一起,最终形成可执行的二进制文件。 这样做带来的好处就是“自动化编译”,一旦Makefile文件写好,只需要直接在命令行下执行make命令,make命令会自动找当前目录的Makefile文件来执行,整个工程将实现完全自动编译,极大地提高了软件开发的效率。,24,Makefile文件是make命令规则的描述脚本,其文件中代码规则的格式如下: targets: prerequisites

15、 commands /该行必须以“Tab”键开头 或 targets: prerequisites; commands commands,25,2.Make命令 GNU make是一个解释Makefile文件指令的命令工具,格式为: make -f filename options targets 该make命令常用的命令行参数见表7.8所示。如果直接运行make命令而不加可选项,则只建立makefile文件中的第一个目标。,26,make命令的具体工作过程如下: 首先在当前目录下依次寻找名为“GNU makefile”、“makefile”或“Makefile”的文件,找到后将会寻找Make

16、file文件中的第一个目标文件targets。如果targets文件不存在,或是targets文件所依赖的后面的.o文件比它还要更新,则make会执行后面的命令来生成目标文件targets;否则会在当前文件中寻找.o文件的依赖性,找到后再根据规则生成.o文件。之后再用生成的.o文件链接生成可执行文件。,27,7.2 Linux下的C语言编程,由于ARM处理器具有较强的运算能力,并且与汇编语言、C+语言相比,C语言结构性较好、容易理解且有大量的支持库,因此基于ARM的程序代码可以使用汇编语言与C语言混合编程。 C语言已经成为嵌入式系统程序设计中经常会用到的程序设计语言。嵌入式C语言程序设计就是利用基础的C语言知识,面向嵌入式软件工程实际应用进行程序设计。,28,7.2.1 嵌入式C语言程序设计,Linux系统下的C语言程序设计与其他操作系统环境下的C程序设计是一样的,主要涉及程序编辑器、编译器、调试器和项目管理器等四种环境工具。 (1)程序编辑器 最早时Linux系统下并没有类似于Window

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号