嵌入式操作系统编程环境.ppt

上传人:sh****n 文档编号:7468001 上传时间:2020-03-21 格式:PPT 页数:36 大小:1.37MB
返回 下载 相关 举报
嵌入式操作系统编程环境.ppt_第1页
第1页 / 共36页
嵌入式操作系统编程环境.ppt_第2页
第2页 / 共36页
嵌入式操作系统编程环境.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
2020年3月21日星期六 1 第二章补充 嵌入式操作系统 2 目标 了解嵌入式操作系统了解Linux独立安装Linux熟练操作Linux常用命令熟练使用Linux下的编辑器熟练使用GCC编译器能够使用GDB调试器了解Linux编程库 3 嵌入式操作系统 嵌入式操作系统实时系统主流嵌入式操作系统Linux的发展历史Linux发行版本Linux安装Linux编程环境 4 LinusTorvaldsLinux的创始人 5 Linux项目 1991年8月 芬兰研究生LinusTorvalds谨慎地发布了一个新的类Unix的操作系统内核 内容如下 来自 torvalds klaava Helsinki FI LinusBenedictTorvalds 新闻组 comp os minix主题 在minix中你最想看到什么 摘要 关于我的新操作系统的小调查时间 1991年8月25日20 57 08格林尼治时间每个使用minix的朋友 你们好 我正在做一个 免费的 用在386 486 AT上的操作系统 只是业余爱好 它不会像GNU那样庞大和专业 这个想法从4月份起就开始酝酿 现在快要完成了 我希望得到各位对minix的任何反馈意见 因为我的操作系统在某些方面是与它相类似的 其中包括相同的文件系统的物理设计 因为某些实际的原因 我现在已经移植了bash 1 08 和gcc 1 40 并且看上去能运行 这意味着我需要用几个月的时间使它变得更实用一些 并且我想知道大多数人想要的特性 欢迎提出任何建议 但是我无法保证都能实现 Linus torvalds kruuna helsinki 接下来 如他们所说 这就成为了历史 Linux逐渐发展成为一个技术和文化现象 通过结合GNU项目的力量 Linux项目发展成为一个完整的 符合Posix标准的Unix操作系统的版本 包括内核和所有支撑的基础设施 从手持设备到大型计算机 Linux在范围如此广泛的计算机上得到了应用 IBM的一个工作组甚至把Linux移植到了一块腕表中 6 Linux发行版本 RedHatFedoraCoreMandrakeSuseDebianCentOSUbuntuRedFlag 7 Linux的编程环境 1 1Shell简介及常用Shell命令 1 2Linux与GNU 1 4编译器GCC的使用 1 5调试器GDB的使用 1 6Make工程管理器 1 7Linux编程库 1 3Linux程序编辑器Vi 8 Shell简介及常用Shell命令 Shell作为操作系统的最外层 也称为外壳内核 Shell和用户的关系Shell是一种Linux中的命令行解释程序 为用户提供使用操作系统的接口 用户在提示符下输入的命令都由Shell先解释然后传给Linux内核 Linux中运行Shell的环境是 系统工具 下的 终端 可以单击 终端 以启动Shell环境 这时屏幕上显示类似 linux wwwhome 的信息 其中 linux是指系统用户 而home是指当前所在的目录 Shell也是一种程序设计语言 用户可利用多条shell命令构成一个文件 9 Shell命令使用说明Shell命令的一般格式命令名 选项 参数1 参数2 命令行中的第一部分必须是一个命令的名字 第二部分是命令的选项或参数 命令行中的每个部分必须有空格或Tab键隔开 内表示可选项对于选项和参数的说明 选项 是一个包括一个或多个字母的代码 它前面有一个减号 参数 提供命令运行的信息或者命令执行所使用的文件名 命令历史列表使用箭头键 F3等功能键翻查历史命令输入命令行自动补齐输入命令的任何时刻按 Tab 键 系统将试图补齐已输入的命令中断Shell命令的方法Ctrl C Shell简介及常用Shell命令 10 常用Shell命令对目录和文件的操作cd pwd mkdir rm cp ln grep findchmod chown用户管理adduser userdel su进程管理ps kill文件的打包与压缩 gzip和bzip2两种压缩包 打包并压缩 tar cvzftest tar gz jpg或tar cvjftest tar bz2 jpg解压缩包 tar xvzftest tar gz或tar xvjftest tar bz2rmp软件包的安装源码维护基本命令diff创建补丁 diff ruNa txtb txt c patchpatch打补丁 patch p1 c patch配置 编译 安装源码包软件 configuremakemakeinstall模块管理命令帮助命令man命令名 如 manls查看帮助时 按下空格键进行翻页 按下 q 键退出帮助Linux命令大全 Shell简介及常用Shell命令 11 Linux与GNU Linux是一套免费使用和自由传播的类UNIX操作系统 该项目由荷兰的LinusTorvalds所启动 Linux是一个Unix兼容的系统 大部分通用的Unix工具和程序都可以在Linux系统下运行GNU GNUisNotUnix1984 由RichardStallman创建免税慈善项目2002 发展成为一个Unix操作系统的所有主要部件构成的环境 内核除外 内核由Linux项目发展而来 GNU环境包括 EMACS编辑器 GCC编译器 GDB调试器 汇编器 链接器 处理二进制文件的工具以及其它部件 RichardStallman自由软件运动的精神领袖 GNU计划以及自由软件基金会的创立者 12 Linux编辑器Vi的使用 Linux编辑器行编辑器 ed ex 行编辑器每次只能对单行进行操作 使用起来很不方便全屏幕编辑器 vi emacs 全屏幕编辑器可以对整个屏幕进行编辑 用户编辑的文件直接显示在屏幕上vi是Linux系统的第一个全屏幕交互式编辑程序 13 vi的模式vi有3种模式 命令行模式 插入模式 底行模式 1 命令行模式用户在用vi编辑文件时 最初进入的为一般模式 在该模式中可以通过上下移动光标进行 删除字符 或 整行删除 等操作 也可以进行 复制 粘贴 等操作 但无法编辑文字 2 插入模式只有在该模式下 用户才能进行文字编辑输入 用户课按 ESC 键回到命令行模式 3 底行模式在该模式下 光标位于屏幕的底行 用户可以进行文件保存或退出操作 也可以设置编辑环境 如寻找字符串 列出行号等 Linux编辑器Vi的使用 14 vi的基本流程 1 进入vi 即在命令行下键入vihello 文件名 此时进入的是命令行模式 光标位于屏幕的上方 如图3 1所示 2 在命令行模式下键入i进入到插入模式 如图3 2所示 可以看出 在屏幕底部显示有 插入 表示插入模式 在该模式下可以输入文字信息 3 最后 在插入模式中 输入 Esc 则当前模式转入命令行模式 并在底行行中输入 wq 存盘退出 进入底行模式 如图3 3所示 这样 就完成了一个简单的vi操作流程 命令行模式 插入模式 底行模式 Linux编辑器Vi的使用 15 vi的各模式功能键命令行模式常见功能键如表 插入模式的功能键只有一个 也就是Esc退出到命令行模式 底行模式常见功能键如表所示 Linux编辑器Vi的使用 16 程序被其它程序翻译成不同的格式 17 GCC编译器的使用 GNUCC 简称为Gcc 是GNU项目中符合ANSIC标准的编译系统 能够编译用C C 和ObjectC等语言编写的程序 gcc不仅功能强大 而且可以编译如C C ObjectC Java Fortran Pascal Modula 3和Ada等多种语言 而且gcc又是一个交叉平台编译器 它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件 因此尤其适合在嵌入式领域的开发编译 下表是gcc支持编译源文件的后缀及其解释 18 gcc编译流程分为4个步骤预处理阶段预处理器 cpp 根据以字符 开头的命令 修改原始的C程序 如C程序第一行 include 与处理器将读需stdio h的内容并将它插入到C程序中 结果生成一个 i为扩展名的文件 编译阶段编译器 ccl 将 i文件翻译成文本文件 s 它包含一个汇编语言程序 汇编阶段汇编器 as 将 s文件翻译成机器语言指令 把这些指令打包成一种叫做可重定位目标程序的格式 并将结果保存在目标文件 o中 它是一个二进制文件 它的字节编码是机器指令而不是字符 链接阶段链接器 ld 负责将程序中所使用的C库函数 如printf函数所在的printf o并入到前面生成的 o程序中 最终得到一个可执行目标文件 可执行文件 可执行文件加载到存储器后 由系统负责执行 GCC编译器的使用 19 gcc编译选项分析 1 总体选项 右表 2 告警和出错选项 右表 3 优化选项gcc可以对代码进行优化 它通过编译选项 On 来控制优化代码的生成 其中n是一个代表优化级别的整数 对于不同版本的gcc来讲 n的取值范围及其对应的优化效果可能并不完全相同 比较典型的范围是从0变化到2或3 4 体系结构相关选项 GCC编译器的使用 20 调试是所有程序员都会面临的问题 如何提高程序员的调试效率 更好更快地定位程序中的问题从而加快程序开发的进度 是大家共同面对的 Windows下的一些调试工具 如VC自带的如设置断点 单步跟踪等 在Linux下有什么很好的调试工具呢 GDB调试器是一款GNU开发组织并发布的UNIX Linux下的程序调试工具 虽然 它没有图形化的友好界面 但是它强大的功能也足以与微软的VC工具等媲美 GDB调试器的使用 21 打开Linux下的编辑器vi 编辑如下代码 vitest c在保存退出后首先使用gcc对test c进行编译 注意一定要加上选项 g 这样编译出的可执行代码中才包含调试信息 否则之后gdb无法载入该可执行文件 gcc gtest c otest启动gdb进行调试 注意 gdb进行调试的是可执行文件 而不是如 c 的源代码 因此 需要先通过gcc编译生成可执行文件才能用gdb进行调试gdbtest在gdb的启动画面中指出了gdb的版本号 使用的库文件等信息 接下来就进入了由 gdb 开头的命令行界面了 1 查看文件 在gdb中键入 l list 就可以查看所载入的文件 2 设置断点 在gdb中设置断点非常简单 只需在 b 后加入对应的行号即可 3 查看断点情况 在设置完断点之后 用户可以键入 infob 来查看设置断点情况 在gdb中可以设置多个断点 4 运行代码 gdb默认从首行开始运行代码 可键入 r run 即可 5 查看变量值 在gdb中只需键入 p 变量值即可 6 单步运行 单步运行可以使用命令 n next 或 s step 7 恢复程序运行 可以使用命令 c continue 恢复程序的正常运行了 GDB调试器的使用 22 gdb基本命令1 工作环境相关命令2 设置断点与恢复命令gdb中设置断点有多种方式 其一是按行设置断点 另外还可以设置函数断点和条件断点 函数断点 gdb中按函数设置断点只需把函数名列在命令 b 之后 条件断点 gdb中设置条件断点的格式为 b行数或函数名if表达式 GDB调试器的使用 23 GDB调试器的使用 gdb基本命令gdb中源码查看相关命令gdb中查看运行数据相关命令gdb中修改运行参数相关命令gdb还可以修改运行时的参数 并使该变量按照用户当前输入的值继续运行 它的设置方法为 在单步执行的过程中 键入命令 set变量 设定值 这样 在此之后 程序就会按照该设定的值运行了 24 工程管理器 顾名思义 是指管理较多的文件的 可以试想一下 有一个上百个文件的代码构成的项目 如果其中只有一个或少数几个文件进行了修改 按照之前所学的gcc编译工具 就不得不把这所有的文件重新编译一遍 因为编译器并不知道哪些文件是最近更新的 而只知道需要包含这些文件才能把源代码编译成可执行文件 于是 程序员就不能不再重新输入数目如此庞大的文件名以完成最后的编译工作 希望有一个工程管理器能够自动识别更新了的文件代码 同时又不需要重复输入冗长的命令行 这样 Make工程管理器也就应运而生了 实际上 Make工程管理器也就是个 自动编译管理器 这里的 自动 是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量 同时 它通过读入Makefile文件的内容来执行大量的编译工作 用户只需编写一次简单的编译语句就可以了 它大大提高了实际项目的工作效率 而且几乎所有Linux下的项目编程均会涉及它 Make工程管理器 25 Make工程管理器 Makefile基本结构Makefile是Make读入的惟一配置文件 在一个Makefile中通常包含如下内容 需要由make工具创建的目标体 target 通常是目标文件或可执行文件 要创建的目标体所依赖的文件 dependency file 创建每个目标体时需要运行的命令 command 它的格式为 target dependency filescommand例如 有两个文件分别为hello c和hello h 创建的目标体为hello o 执行的命令为gcc编译指令 gcc chello c 那么 对应的Makefile就可以写为 Thesimplestexamplehello o hello chello hgcc chello c ohello o接着就可以使用make了 使用make的格式为 maketarget 这样make就会自动读入Makefile 也可以是首字母小写makefile 并执行对应target的command语句 并会找到相应的依赖文件 root localhostmakefile makehello ogcc chello c ohello o root localhostmakefile lshello chello hhello oMakefile可以看到 Makefile执行了 hello o 对应的命令语句 并生成了 hello o 目标体 26 Make工程管理器 Makefile变量Makefile中常见预定义变量Makefile中常见自动变量在Makefile中还可以使用环境变量 使用环境变量的方法相对比较简单 make在启动时会自动读取系统当前已经定义了的环境变量 并且会创建与之具有相同名称和数值的变量 但是 如果用户在Makefile中定义了相同名称的变量 那么用户自定义变量将会覆盖同名的环境变量 27 Makefile规则Makefile的规则是Make进行处理的依据 它包括了目标体 依赖文件及其之间的命令语句 一般的 Makefile中的一条语句就是一个规则 在上面的例子中 都显示地指出了Makefile中的规则关系 如 CC CFLAGS c o 但为了简化Makefile的编写 make还定义了隐式规则和模式规则隐含规则 告诉make怎样使用传统的技术完成任务 这样 当用户使用它们时就不必详细指定编译的具体细节 而只需把目标文件列出即可 Make会自动搜索隐式规则目录来确定如何生成目标文件 Make的隐式规则指出 所有 o 文件都可自动由 c 文件使用命令 CC CPPFLAGS CFLAGS cfile c ofile o 生成 模式规则 是用来定义相同处理规则的多个文件的 它不同于隐式规则 隐式规则仅仅能够用make默认的变量来进行操作 而模式规则还能引入用户自定义变量 为多个文件建立相同的规则 从而简化Makefile的编写 模式规则的格式类似于普通规则 这个规则中的相关文件前必须用 标明 Make工程管理器 28 Make管理器的使用使用Make管理器非常简单 只需在make命令的后面键入目标名即可建立指定的目标 如果直接运行make 则建立Makefile中的第一个目标 make的命令行选项 Make工程管理器 29 Linux编程库介绍编程库是指可以被多个Linux软件项目重复使用的代码集Linux下的库文件分为共享库和静态库共享库是运行时动态加载 以 so结尾静态库在编译时静态加载 以 a结尾Linux的库一般在 lib或 usr lib下常用的Linux编程库标准C库libc soLinux多线程库libpthread so Linux编程库 30 Linux编程库 Linux系统调用系统调用是操作系统提供给用户程序调用的一组特殊接口使用系统调用的主要目的是使得用户可以使用操作系统提供的有关设备管理 输入 输出系统 文件系统和进程控制 通信以及存储管理等功能而不必了解系统程序的内部结构和有关硬件细节 Linux的运行空间划分为用户空间和内核空间目的是为了对系统作 保护 系统调用运行在内核空间 31 Linux编程库 Linux系统调用Linux系统有200多个系统调用进程控制文件系统控制系统控制内存管理网络管理Socket控制用户管理进程间通信使用mansyscalls命令查看完整列表使用man2intro命令查看 syscall宏的描述Linux的API主要通过C库 libc 实现Linux下可以添加新的系统调用 32 Linux系统调用列表 33 Linux系统调用列表 34 Linux系统调用列表 35 Linux线程库进程是资源管理最小单位 线程是程序执行的最小单位 一个进程至少有一个线程Linux系统下的多线程遵循POSIX接口 称为pthread实现了基于核心轻量级进程的 一对一 线程模型线程之间的管理在核外函数库中实现 Linux编程库 36 小结
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!