《(38)--6-2 嵌入式Linux(中)嵌入式系统原理.ppt》由会员分享,可在线阅读,更多相关《(38)--6-2 嵌入式Linux(中)嵌入式系统原理.ppt(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6C H A P T E R嵌入式操作系统嵌入式操作系统Embedded Operating System2章节提要1 13 32 24 4嵌入式操作系统简介嵌入式操作系统简介嵌入式嵌入式Linux嵌入式嵌入式Linux下设备驱动程序开发下设备驱动程序开发嵌入式嵌入式Linux下应用程序开发下应用程序开发嵌入式嵌入式Linux系统打造系统打造5 56-2嵌入式Linux(EmbeddedLinux)主要内容:nLinux体系结构nLinux内核架构nLinux的用户ShellnLinux下应用程序的开发方法nLinux程序的调试n交叉开发环境6-2嵌入式Linux(EmbeddedLinux)
2、(4)Linux下应用程序的开发方法下应用程序的开发方法ARM硬件系统硬件系统裸机程序裸机程序嵌入式操作系统嵌入式操作系统汇编语言、C/C+等汇编语言、c/c+,Java,Python,c#等Keil,ADS等开发工具QT、Eclipse等集成开发环境应用程序应用程序驱动程序驱动程序GCC基于ARM的程序设计6-2嵌入式Linux(EmbeddedLinux)(4)Linux下应用程序的开发方法下应用程序的开发方法使用GNUccngcc可以使程序员灵活地控制编译过程。编译过程一般可以分为下面四个阶段,每个阶段分别调用不同的工具进行处理,如图所示。预处理链接编译汇编源 程 序(*.c)可执行文件
3、预处理器编译器汇编器连接器6-2嵌入式Linux(EmbeddedLinux)(4)Linux下应用程序的开发方法下应用程序的开发方法ngcc的使用格式如下:n$gccoptionsfilenamesn其中filenames为所要编译的程序源文件。n当使用gcc时,gcc会完成预处理、编译、汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。gcc的使用的使用6-2嵌入式Linux(EmbeddedLinux)(4)Linux下应用程序的开发方法下应用程序的开发方法使用使用Makefile实现
4、多文件编译实现多文件编译一个软件包通常由多个源码文件及库文件等组成,这是需要编写一个叫做Makefile的文件。该文件描述了软件包中文件之间的关系,提供更新每个文件的命令。一般在一个软件包里,通常是可执行文件靠目标文件来更新,目标文件靠编译源文件来更新。6-2嵌入式Linux(EmbeddedLinux)(4)Linux下应用程序的开发方法下应用程序的开发方法n一个Makefile文件主要含有一系列的规则,每条规则包含以下内容。n一个目标(target),即make最终需要创建的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。n一个或多个依赖文件(dependency
5、)列表,通常是编译目标文件所需要的其他文件。n一系列命今(command),是make执行的动作,通常是把指定的相关文件编译成目标文件的编译命令,每个命令占一行,且每个命令行的起始字符必须为TAB字符。6-2嵌入式Linux(EmbeddedLinux)(4)Linux下应用程序的开发方法下应用程序的开发方法#一个简单的Makefile的例子#以#开头的为注释行test:prog.ocode.ogccotestprog.ocode.oprog.o:prog.cprog.hcode.hgcccprog.coprog.ocode.o:code.ccode.hgccccode.cocode.ocle
6、an:rmf*.o最终生成test可执行文件每个目标文件的来源用于清理项目#make用于生成test6-2嵌入式Linux(EmbeddedLinux)(5)Linux下应用程序的调试下应用程序的调试 GDB调试器简介调试器简介nLinux系统中包含了GNU调试程序gdb,它是一个用来调试C和C+程序的调试器。可以使程序开发者在程序运行时观察程序的内部结构和内存的使用情况。n运行程序,设置所有的能影响程序运行的参数和环境;n控制程序在指定的条件下停止运行;n当程序停止时,可以检查程序的状态;n修改程序的错误,并重新运行程序;n动态监视程序中变量的值;n可以单步执行代码,观察程序的运行状态。6-
7、2嵌入式Linux(EmbeddedLinux)(5)Linux下应用程序的调试下应用程序的调试gdb基本命令基本命令 n还可以用下面的方式来运行gdb:gdb filenamen其中,filename是要调试的可执行文件。用这种方式运行gdb可以直接指定想要调试的程序。这和启动gdb后执行filefilename命令效果完全一样。也可以用gdb去检查一个因程序异常终止而产生的core文件,或者与一个正在运行的程序相连。ngdb支持很多的命令且能实现不同的功能。这些命令从简单的文件装入到允许你检查所调用的堆栈内容的复杂命令,下面列出了在使用gdb调试时会用到的一些命令。6-2嵌入式Linux(
8、EmbeddedLinux)gdb常用命令常用命令1)file命令:装入想要调试的可执行文件。2)cd命令:改变工作目录。3)pwd命令:返回当前工作日录。4)run命令:执行当前被调试的程序。5)kill命令:停止正在调试的应用程序。6)list命令:列出正在调试的应用程序的源代码。7)break命令:设置断点。8)Tbreak命令;设置临时断点。它的语法与break相同。9)watch命令:设置监视点,监视表达式的变化。10)awatch命令:设置读写监视点。当要监视的表达式被读或写时将应用程序挂起。11)rwatch命令:设置读监视点,当监视表达式被读时将程序挂起,等侍调试。12)nex
9、t命令:执行下一条源代码,但是不进入函数内部。也就是说,将一条函数调用作为一条语句执行。执行这个命令的前提是已经run,开始了代码的执行。6-2嵌入式Linux(EmbeddedLinux)gdb常用命令常用命令13)step命令:执行下一条源代码,进入函数内部。如果调用了某个函数,会跳到函数所在的代码中等候一步步执行。执行这个命令的前提是已经用run开始执行代码。14)display命令:在应用程序每次停止运行时显示表达式的值。15)info break命令:显示当前断点列表,包括每个断点到达的次数。16)info files命令:显示调试文件的信息。17)info func命令:显示所有的函数名。18)info local命令:显示当前函数的所有局部变量的信息。19)infoprog命令:显示调试程序的执行状态。20)print命令;显示表达式的值。21)delete命令:删除断点。指定一个断点号码,则删除指定断点。不指定参数则删除所有的断点。22)Shell命令:执行LinuxShell命令。23)make命令:不退出gdb而重新编译生成可执行文件。24)Quit命令:退出gdb。6-2嵌入式Linux(EmbeddedLinux)小结nLinux体系结构nLinux内核架构nLinux的用户ShellnLinux下应用程序的开发方法nLinux程序的调试
限制150内