嵌入式OS总结不

上传人:hs****ma 文档编号:506270757 上传时间:2023-06-27 格式:DOC 页数:14 大小:114KB
返回 下载 相关 举报
嵌入式OS总结不_第1页
第1页 / 共14页
嵌入式OS总结不_第2页
第2页 / 共14页
嵌入式OS总结不_第3页
第3页 / 共14页
嵌入式OS总结不_第4页
第4页 / 共14页
嵌入式OS总结不_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《嵌入式OS总结不》由会员分享,可在线阅读,更多相关《嵌入式OS总结不(14页珍藏版)》请在金锄头文库上搜索。

1、-嵌入式操作系统总结1. 论述题:嵌入式软件有哪些组成,对应哪些工作.嵌入式软件包括操作系统与应用软件。软件主要的开发工作:初始化引导代码对应bootloader编写嵌入式操作系统代码对应内核编译加载驱动程序代码对应模块编写编译文件系统对应文件系统制作与挂载应用程序代码对应应用程序的编写穿插编译环境的构建在做这些事情时会出现什么问题.你有何感悟.常见的问题是什么,你能想到嵌入式开发中要得到适宜的开发环境选开发板,库的不兼容),嵌入式软件开发过程:工作环境、哪些工作、会遇到哪些问题做一个开发环境之前的准备:版本号,开发平台软件构成及各个部件之间的流程实验的问题 兼容性、库、版本1. 得到适宜的开

2、发环境在选择时要注意各个软件包的版本号及其依赖关系如果全部是最新版本,也并不能保证可以配置并安装成功一般下载别人成功的版本组合,或采用从较新版本逐步尝试法进展2. 库的不兼容3. 版本不兼容由于实验中我们接触的都是一些比拟新的技术,比方systemtap、qemu+GDB调试内核技术都是相当新的,有的版本都是2011年才发布的,所有出现一些兼容性的问题也是很常见的,好在网络上有大量的资源可以参考,这就需要首先加强自己分析出现问题的能力,比方能看懂报错的信息提示,如缺少库函数,找不到对应的版本等,它都会有相应的报错提示。能估计问题大概出在哪个局部,这样处理问题就更有针对性了。当然这种积累是非常必

3、要的。2. 穿插编译环境的构建手动的即第一次实验 穿插编译通俗的讲就是在一种平台上编译出能运行在体系构造不同的另一种平台上的程序。比方在PC平台*86 CPU上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在*86CPU平台上是不能运行的,必须放到ARM平台上才能运行。用来编译这种跨平台程序的编译器就叫做穿插编译器,要生成在目标机上运行的程序必须要用穿插编译工具链来完成。因为一般的嵌入式开发系统的存储大小是比拟有限的,所以在裁减和定制内核之前通常都要在性能优越的PC机上编译目标机上要运行的程序。穿插编译工具链由编译器、连接器、解释器组成。穿插编译环境的构建方法:1. 源代码配

4、置安装2. 直接安装二进制工具构建穿插工具链通常有三种方式:1.手工编译2.通过脚本编译Crosstool脚本3.直接获取穿插编译工具链手动安装的步骤:需要5个步骤完成整个GNU Tools的配置/编译/安装:1. 内核头文件配置2. binutils软件包安装3. Bootstrap GNU编译器可完成根本C语言编译工作的编译器4. C library的安装,一般是glibc5. 完整的GNU编译器安装3. 关于GNU开发工具链gcc编译过程:预处理,输出.cpp文件,将头文件包含进去将include展开、编译成汇编代码生成.s文件、汇编成目标代码生成.o文件、。预处理是指在系统对源程序进展

5、编译之前,对程序中的*些特殊命令行的处理,根据源代码中的预处理命令修改程序。常见的预处理命令:*include、*define和*undef用于定义和取消定义条件编译符号、*if *elf用于按条件跳过源代码中的节等:ld软件的作用是把各种目标文件.o文件和库文件在一起,并定位数据和函数地址,最终生成可执行程序.描述文件的分析:用来控制ld的过程。主要由一系列的命令组成,每个命令可以是一个带参数的关键字或赋值语句。l 描述各输入文件的各节如何映射到输出文件的各节。l 控制输出文件中各个节或者符号的内存布局。描述文件的命令主要包括如下几类:n 设置入口点命令ld有多种方法设置执行程序的入口点,确

6、定程序入口点的顺序如下:1.ld命令的-e选项指定的值2.Entry(symbol)指定的值3.te*t节的起始地址4.入口点为0n 处理文件的命令n 处理文件格式的命令n 其他makefile文件分析:n Make的主要任务是根据makefile中定义的规则和步骤,根据各个模块的更新情况,自动完成整个软件工程的维护和代码生成工作。它可以识别出makefile中哪些文件被修改,并在再次编译的时候只编译这些文件,从而提高编译的效率。u 如果这个工程没有编译过,则我们的所有C文件都要编译并被。u 如果这个工程的*几个C文件被修改,则我们只编译被修改的C文件,并目标程序。u 如果这个工程的头文件被改

7、变了,则我们需要编译引用了这几个头文件的C文件,并目标程序。输入make命令先找第一个目标文件,并把这个文件作为最终的目标文件,如果目标文件中的.o文件修改时间比拟新或目标文件不存在了,make会在当前文件中找到.o文件的依赖性,再生成.o文件即可。Uboot中makefile的使用:顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序成U-Boot映像。4. 内核配置: Linu*内核从配置到安装大致有如下步骤:1. 清理:make mrproper2. 配置:make config/menuconfig/*config3.

8、建立依赖关系:make dep4. 编译:make或make zImage5. 安装:make installLinu*内核选择:获得适合目标系统的内核,打上适宜的补丁。Linu*内核的配置:配置的结果是生成一个.config文件以及大量的符号连接和头文件,用于后续的过程。Makefile 的作用是根据配置的情况,构造出需要编译的源文件列表,然后分别编译,并把目标代码到一起,最终形成 Linu* 内核二进制文件。1. Makefile:顶层 Makefile,是整个内核配置、编译的总体控制文件。2. .config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果如 make

9、menuconfig。3. arch/*/Makefile:位于各种 CPU 体系目录下的 Makefile,如 arch/arm/Makefile,是针对特定平台的 Makefile。4. 各个子目录下的 Makefile:比方 drivers/Makefile,负责所在子目录下源代码的管理。5. Rules.make:规则文件,被所有的 Makefile 使用。Make menuconfig如何添加新的选项编译配置文件kconfig以参加menuconfig选项。找到内核文件中的对应模块文件夹里的kconfig文件,添加选项,保存退出。这时在make menuconfig下就可以在对应的菜

10、单中看到刚刚添加的选项了。我们虽然可以在配置内核的时候进展选择,但实际上此时执行编译内核还是不能把添加的模块编译进去,还需要在Makefile 中把内核配置选项和真正的源代码联系起来。配置好的文件在内核中的什么位置内核配置保存于/usr/src/linu*/.config文件中。在/boot/config-有其备份。6.根文件系统:Bin:存放必要的用户命令Boot:引导加载程序使用的静态文件Etc:系统配置文件,包括启动文件Opt:附加软件套件Proc:用来提供内核与进程信息的虚拟文件系统Sbin:必要的系统管理员命令Usr:应用程序和文件Var:监控程序和工具程序所存放的可变数据根文件系统

11、的内容:1连接库:glibc 在/lib目录下uClibc 2内核模块将建立好的内核模块复制到/lib目录下cp a如果设置成从根文件系统启动内核,就要将内核映像zImage复制到目标板的根文件系统的/boot目录下3设备文件在Linu*根文件系统中,所有的设备文件都放在/dev目录里Tty0:当前的虚拟控制台Tty1:第一个虚拟台TtyS0:第一个UART串行端口4系统应用程序Linu*有丰富的命令,但是对于嵌入式linu*不需要这么多的命令,我们呢可以选择少量的有用的linu*命令或者使用Busybo*对命令功能进展裁剪,busybo*集成压缩了 Linu* 的许多工具和命令,模块化和易制

12、定。5系统初始化文件系统初始化也是Uni*系统很重要的一局部,正如我们之前所说,内核的最后一部初始化操作为启动init进程,这个程序负责创立一些其他进程并且启动系统的一些关键组件运行。6内核映像文件系统上是否有内核映像与引导加载程序有关根文件系统初始化:内核的最后一部初始化操作为启动init进程,这个程序负责创立一些其他进程并且启动系统的一些关键组件运行,进展一系列的硬件初始化,并挂载根文件系统。如何做ramdisk:准备好根文件系统的内容后,就要设置可供目标板使用的根文件系统:选择根文件系统的类型;制作根文件系统的映像或安装根文件系统到目标设备上RAMdisk特点:1. 存在于RAM中,其存

13、取功能类似于块设备2. 内核可以在同一时间支持多个活动的RAMdisk3. 在RAMdisk上可以使用任何磁盘文件系统4. RAMdisk通常会从经压缩的磁盘文件系统例如e*t2加载其内容,因此内核必须具备从存储设备取出initrdinitial RAM disk映像作为它的根文件系统的能力。5. 启动时,内核会确认引导选项是否指示有initrd的存在,如果有就会从所选定的存储设备取出文件系统映像放入RAM disk,并且将它安装成根文件系统制作步骤:1. 建立供RAM disk使用的文件系统映像:创立一个mount点,在该mount点上建立一个文件系统映像initrd.img,并对它进展初始

14、化2. 对建立好的文件系统映像建立文件系统并且安装需要root权限3. 将initrd.img挂载到刚刚建立的mount点上4. 复制根文件系统到RAM disk5. 卸载根文件系统6. 现在initrd.img文件中已经包含了目标板的整个根文件系统7. 最后形成经压缩的RAM disk8. 文件系统制作完毕主要内容、初始化、如何做ramdisk7.简述内核启动:内核启动的过程可以分为两个局部:1.体系架构及开发板相关的引导过程2.后续的通用启动过程。第一阶段:引导引导阶段通常用汇编代码编写,它首先检查内核是否支持当前体系架构的处理器,然后检查是否支持当前开发板。通过检查后,为调用下个阶段的s

15、tart_kernel函数做准备。主要有两个步骤:1连接内核时使用的虚拟地址,要设置页表、使能MMU。2调用C函数start_kernel之前的常规工作,包括复制数据段、去除BSS段、调用start_kernel函数。第二阶段:通用启动Star_kernel包括:输出Linu*版本信息linu*_banner、设置于体系构造相关的环境setup_arch、有关中断的设置trap_init、初始化控制台console_init、启动init过程。 内核启动:内核编译:在make menuconfig进展内核配置操作时,所显示的Menu list是由各层Kconfig组成的。编译内核v2.6.26时Makefile的执行步骤包括两个过程:一是配置内核过程;二是编译生成内核目标文件的过程内核类型: 运行编译指令make或make zImage会形成两种不同类型的内核,中断定时器系统的调用Vmlinu*是

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

当前位置:首页 > 资格认证/考试 > 自考

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