嵌入式操作系统程编环境.ppt_第1页
嵌入式操作系统程编环境.ppt_第2页
嵌入式操作系统程编环境.ppt_第3页
嵌入式操作系统程编环境.ppt_第4页
嵌入式操作系统程编环境.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

操作系统(Linux) 第二章补充 嵌入式操作系统 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 1 目标 v了解嵌入式操作系统 v了解Linux v独立安装Linux v熟练操作Linux常用命令 v熟练使用Linux下的编辑器 v熟练使用GCC编译器 v能够使用GDB调试器 v了解Linux编程库 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 2 嵌入式操作系统 v嵌入式操作系统 v实时系统 v主流嵌入式操作系统 vLinux的发展历史 vLinux发行版本 vLinux安装 vLinux编程环境 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 3 Linus Torvalds Linux的创始人 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 4 Linux项目 v 1991年8月,芬兰研究生Linus Torvalds谨慎地发布了一个新的类Unix的操作系统 内核,内容如下: v 来自:torvaldsklaava.Helsinki.FI (Linus Benedict Torvalds) v 新闻组:comp.os.minix v 主题:在minix中你最想看到什么? v 摘要:关于我的新操作系统的小调查 v 时间:1991年8月25日 20:57:08格林尼治时间 v 每个使用minix的朋友,你们好。 v 我正在做一个(免费的)用在386(486)AT上的操作系统(只是业余爱好,它 不会像GNU那样庞大和专业)。这个想法从4月份起就开始酝酿,现在快要完成 了。我希望得到各位对minix的任何反馈意见,因为我的操作系统在某些方面是与 它相类似的(其中包括相同的文件系统的物理设计(因为某些实际的原因)。 v 我现在已经移植了bash(1.08)和gcc(1.40),并且看上去能运行。这意味着 我需要用几个月的时间使它变得更实用一些,并且我想知道大多数人想要的特性 。欢迎提出任何建议,但是我无法保证都能实现。: - ) v Linus (torvaldskruuna.helsinki.?) v 接下来,如他们所说,这就成为了历史。Linux逐渐发展成为一个技术和文化现象 。通过结合GNU项目的力量,Linux项目发展成为一个完整的、符合Posix标准的 Unix操作系统的版本,包括内核和所有支撑的基础设施。从手持设备到大型计算 机,Linux在范围如此广泛的计算机上得到了应用。IBM的一个工作组甚至把 Linux移植到了一块腕表中! Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 5 Linux发行版本 vRedHat vFedora Core vMandrake vSuse vDebian vCentOS vUbuntu vRedFlag Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 6 Linux的编程环境 1.1 Shell简介及常用Shell命令 1.2 Linux与GNU 1.4编译器GCC的使用 1.5调试器GDB的使用 1.6 Make工程管理器 1.7 Linux编程库 1.3 Linux程序编辑器Vi Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 7 Shell简介及常用Shell命令 vShell作为操作系统的最外层,也称为外壳 v内核、Shell和用户的关系 Shell是一种Linux中的命令行解释程序,为用户提供使 用操作系统的接口。用户在提示符下输入的命令都由 Shell先解释然后传给Linux内核。 Linux中运行Shell的环境是“系统工具”下的“终端”,可以 单击“终端”以启动Shell环境。这时屏幕上显示类似 “linuxwww home$”的信息,其中,linux是指系统 用户,而home是指当前所在的目录。 vShell也是一种程序设计语言,用户可利用多条 shell命令构成一个文件。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 8 vShell命令使用说明 Shell命令的一般格式 命令名 【选项】【参数1】【参数2】 命令行中的第一部分必须是一个命令的名字,第二部分是命令 的选项或参数,命令行中的每个部分必须有空格或Tab键隔开 ;【】内表示可选项 对于选项和参数的说明 【选项】是一个包括一个或多个字母的代码,它前面有一个减 号(-)。 【参数】提供命令运行的信息或者命令执行所使用的文件名。 命令历史列表 使用箭头键、F3等功能键翻查历史命令 输入命令行自动补齐 输入命令的任何时刻按【Tab】键,系统将试图补齐已输入的 命令 中断Shell命令的方法Ctrl+C Shell简介及常用Shell命令 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 9 v 常用Shell命令 对目录和文件的操作 cd,pwd,mkdir,rm,cp,ln,grep,find chmod,chown 用户管理 adduser,userdel,su 进程管理 ps,kill 文件的打包与压缩(gzip和bzip2两种压缩包) 打包并压缩:tar cvzf test.tar.gz *.jpg或tar cvjf test.tar.bz2 *.jpg 解压缩包:tar xvzf test.tar.gz或tar xvjf test.tar.bz2 rmp软件包的安装 源码维护基本命令 diff创建补丁: diff ruN a.txt b.txt c.patch patch打补丁: patch p1 ,与处理器将读需stdio.h的内容并将它插入 到C程序中。结果生成一个.i为扩展名的文件。 编译阶段 编译器(ccl)将.i文件翻译成文本文件.s,它包含一个汇编语言程序。 汇编阶段 汇编器(as)将.s文件翻译成机器语言指令,把这些指令打包成一种叫做 可重定位目标程序的格式,并将结果保存在目标文件.o中。它是一个二进 制文件,它的字节编码是机器指令而不是字符。 链接阶段 链接器(ld)负责将程序中所使用的C库函数,如printf函数所在的printf.o 并入到前面生成的.o程序中,最终得到一个可执行目标文件(可执行文件 )。可执行文件加载到存储器后,由系统负责执行。 GCC编译器的使用 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 18 v gcc编译选项分析 v (1)总体选项,右表: v (2)告警和出错选项,右表: v (3)优化选项 v gcc可以对代码进行优化, 它通过编译选项“-On”来控制 优化代码的生成,其中n是一 个代表优化级别的整数。对 于不同版本的gcc来讲,n的取 值范围及其对应的优化效果可 能并不完全相同,比较典型的 范围是从0变化到2或3。 v (4)体系结构相关选项 GCC编译器的使用 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 19 调试是所有程序员都会面临的问题。如何提高程序员的 调试效率,更好更快地定位程序中的问题从而加快程序 开发的进度,是大家共同面对的。 Windows下的一些调试工具,如VC自带的如设置断点 、单步跟踪等,在Linux下有什么很好的调试工具呢? GDB调试器是一款GNU开发组织并发布的UNIX/Linux 下的程序调试工具。虽然,它没有图形化的友好界面, 但是它强大的功能也足以与微软的VC工具等媲美。 GDB调试器的使用 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 20 打开Linux下的编辑器vi,编辑如下代码 # vi test.c 在保存退出后首先使用gcc对test.c进行编译,注意一定要加上选项“-g”,这 样编译出的可执行代码中才包含调试信息,否则之后gdb无法载入该可执行 文件 # gcc -g test.c -o test 启动gdb进行调试。注意,gdb进行调试的是可执行文件,而不是如“.c”的源 代码,因此,需要先通过gcc编译生成可执行文件才能用gdb进行调试 gdb test 在gdb的启动画面中指出了gdb的版本号、使用的库文件等信息,接下来就 进入了由“(gdb)”开头的命令行界面了 (1)查看文件,在gdb中键入“l”(list)就可以查看所载入的文件 (2)设置断点 ,在gdb中设置断点非常简单,只需在“b”后加入对应的行号即可 (3)查看断点情况,在设置完断点之后,用户可以键入“info b”来查看设置断点 情况,在gdb中可以设置多个断点 (4)运行代码,gdb默认从首行开始运行代码,可键入“r”(run)即可 (5)查看变量值,在gdb中只需键入“p”变量值即可 (6)单步运行,单步运行可以使用命令“n”(next)或“s”(step) (7)恢复程序运行,可以使用命令“c”(continue)恢复程序的正常运行了 GDB调试器的使用 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 21 vgdb基本命令 1工作环境相关命令 2设置断点与恢复命令 gdb中设置断点有多种方式: 其一是按行设置断点,另外 还可以设置函数断点和条件 断点 函数断点,gdb中按函 数设置断点只需把函数名 列在命令“b”之后 条件断点,gdb中设置 条件断点的格式为:b 行 数或函数名 if 表达式 GDB调试器的使用 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 22 GDB调试器的使用 vgdb基本命令 gdb中源码查看相关命令 gdb中查看运行数据相关命令 gdb中修改运行参数相关命令 gdb还可以修改运行时的参数,并使该变量按照用户当前输入的 值继续运行。它的设置方法为:在单步执行的过程中,键入命令 “set 变量设定值”。这样,在此之后,程序就会按照该设定的值 运行了。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 23 v 工程管理器,顾名思义,是指管理较多的文件的。可以试想 一下,有一个上百个文件的代码构成的项目,如果其中只有 一个或少数几个文件进行了修改,按照之前所学的gcc编译 工具,就不得不把这所有的文件重新编译一遍,因为编译器 并不知道哪些文件是最近更新的,而只知道需要包含这些文 件才能把源代码编译成可执行文件,于是,程序员就不能不 再重新输入数目如此庞大的文件名以完成最后的编译工作。 v 希望有一个工程管理器能够自动识别更新了的文件代码,同 时又不需要重复输入冗长的命令行,这样,Make工程管理 器也就应运而生了。 v 实际上,Make工程管理器也就是个“自动编译管理器”,这里 的“自动”是指它能够根据文件时间戳自动发现更新过的文件 而减少编译的工作量,同时,它通过读入Makefile文件的内 容来执行大量的编译工作。用户只需编写一次简单的编译语 句就可以了。它大大提高了实际项目的工作效率,而且几乎 所有Linux下的项目编程均会涉及它 Make工程管理器 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 24 Make工程管理器 v Makefile基本结构 Makefile是Make读入的惟一配置文件,在一个Makefile中通常包含如下内容: 需要由make工具创建的目标体(target),通常是目标文件或可执行文件; 要创建的目标体所依赖的文件(dependency_file); 创建每个目标体时需要运行的命令(command)。 它的格式为: target: dependency_files command 例如,有两个文件分别为hello.c和hello.h,创建的目标体为hello.o,执行的命令为gcc 编译指令:gcc c hello.c,那么,对应的Makefile就可以写为: #The simplest example hello.o: hello.c hello.h gcc c hello.c o hello.o 接着就可以使用make了。使用make的格式为:make target,这样make就会自动读 入Makefile(也可以是首字母小写makefile)并执行对应target的command语句,并会 找到相应的依赖文件。 rootlocalhost makefile# make hello.o gcc c hello.c o hello.o rootlocalhost makefile# ls hello.c hello.h hello.o Makefile 可以看到,Makefile执行了“hello.o”对应的命令语句,并生成了“hello.o”目标体。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 25 Make工程管理器 vMakefile变量 Makefile中常见预定义变量 Makefile中常见自动变量 在Makefile中还可以使用环境变量。使用环境变量的方法相对比较简单, make在启动时会自动读取系统当前已经定义了的环境变量,并且会创建 与之具有相同名称和数值的变量。但是,如果用户在Makefile中定义了相 同名称的变量,那么用户自定义变量将会覆盖同名的环境变量。 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 26 vMakefile规则 Makefile的规则是Make进行处理的依据,它包括了目标体、依赖文 件及其之间的命令语句。一般的,Makefile中的一条语句就是一个 规则。在上面的例子中,都显示地指出了Makefile中的规则关系, 如“$(CC) $(CFLAGS) -c $ -o $”,但为了简化Makefile的编写, make还定义了隐式规则和模式规则 隐含规则:告诉make怎样使用传统的技术完成任务,这样,当用户 使用它们时就不必详细指定编译的具体细节,而只需把目标文件列 出即可。Make会自动搜索隐式规则目录来确定如何生成目标文件。 Make的隐式规则指出:所有“.o”文件都可自动由“.c”文件使用命令 “$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c o file.o”生成。 模式规则:是用来定义相同处理规则的多个文件的。它不同于隐式 规则,隐式规则仅仅能够用make默认的变量来进行操作,而模式规 则还能引入用户自定义变量,为多个文件建立相同的规则,从而简 化Makefile的编写。模式规则的格式类似于普通规则,这个规则中 的相关文件前必须用“%”标明。 Make工程管理器 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 27 vMake管理器的使用 使用Make管理器非常简单,只需在make命令的后面键 入目标名即可建立指定的目标,如果直接运行make,则 建立Makefile中的第一个目标。 make的命令行选项 Make工程管理器 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 28 vLinux编程库介绍 编程库是指可以被多个Linux软件项目重复使用 的代码集 Linux下的库文件分为共享库和静态库 共享库是运行时动态加载,以.so结尾 静态库在编译时静态加载,以.a结尾 Linux的库一般在/lib或/usr/lib下 常用的Linux编程库 标准C库libc.so Linux多线程库libpthread.so Linux编程库 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 29 Linux编程库 vLinux系统调用 系统调用是操作系统提供给用户程序调用的一组 特殊接口 使用系统调用的主要目的是使得用户可以使用操作系 统提供的有关设备管理、输入/输出系统、文件系统和 进程控制、通信以及存储管理等功能而不必了解系统 程序的内部结构和有关硬件细节。 Linux的运行空间划分为用户空间和内核空间 目的是为了对系统作“保护” 系统调用运行在内核空间 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 30 Linux编程库 vLinux系统调用 Linux系统有200多个系统调用 进程控制 文件系统控制 系统控制 内存管理 网络管理 Socket控制 用户管理 进程间通信 使用man syscalls命令查看完整列表 使用man 2 intro命令查看_syscall宏的描述 Linux的API主要通过C库(libc)实现 Linux下可以添加新的系统调用 Evaluation only.Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile .Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd.Copyright 2004-2011 Aspose Pty Ltd. 31 vLinux系统调用列表 Evaluation only.Evaluation only. Created with Aspose

温馨提示

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

评论

0/150

提交评论