
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式linux系统中的快速启动技术研究系统主要特点在于用法bootloader替代了桌面系统的bios,同时对系统举行了规模上的裁剪,但硬件上的劣势往往导致系统启动速度较慢,而嵌入式产品用法者又对系统的开机速度比较敏感,这样就产生了对于提高嵌入式linux系统启动速度的需求。本文对系统启动时执行哪些阶段的操作,以及缩短这些操作时光的办法举行了探讨。1 嵌入式linux系统启动时序目前,嵌入式系统的硬件平台和应用方向区分很大,但总体启动流程是全都的。这里的系统启动是指从用户执行上电/复位操作,到系统开头提供用户可接收的服务水平所需要的过程。典型的上电/复位时序如表1所列。表1 嵌入式linux
2、系统启动时序2 linux迅速启动办法目前,一些linux的发行版本已经对启动速度举行了优化。假如利用标准linux举行开发,则启动速度的提高主要是通过内核配置和各种补丁包来实现的。下面分析迅速启动的一些关键技术。2.1 firmware和bootloader阶段目标板一旦确定,firmware运行的时光就无法转变了,flash和ram的读写速度也就随之确定了。但假如复位时能够绕过firmware和bootloader,即允许运行中的内核加载以及运行另一个内核,可以缩短启动的时光。典型的实现有kexec,它有2个组件,即用户空间组件kexectools和内核补丁。另外一种方法是在内核指令行中加
3、入reboot=soft参数,同样可以跳过firmware,但是缺点在于无法从用户空间调用。对于正常启动,可以挑选速度比较快的bootloader,并对内核举行小型化处理;还可以用法高速的映像复制技术(如dma2ram),从而缩短复制的时光。为了缩短解压消耗的时光,可寻求比较高效的压缩算法。但普通状况下,压缩比越高,算法越复杂,解压速度就越慢,从而造成复制时光(与压缩比成反比)和解压时光(普通与压缩比成正比)之间的冲突。2.2 内核阶段内核初始化时要对realtime clock (rtc)举行同步。此过程要占用1s的时光,可去掉以节省时光,但这样cpu会与正确的时光有1s的偏差,假如关机时c
4、pu时钟又要保存在rtc中,偏差就会不断累积。但对于用法外部时钟源举行同步的系统,则可平安地跳过这个阶段。preset lpj可以用来缩短每次启动时调用calibrate_delay()来校准loops_per_jiffy消耗的时光。这个时光开销与cpu频率无关,在典型的嵌入式硬件环境下会消耗300ms左右。lpj值对于固定硬件平台应当是全都的,可以只计算一次,在后续的启动中就可以在启动参数中强制指定lpj值,而跳过实际的计算过程。详细办法是:在正常启动后记录下内核启动信息中的“calibrating delay”数值,在启动参数中以“lpj=xxxxxx”的形式强制指定。启动过程默认打开控制
5、台输出启动消息,但是控制台尤其是基于帧缓冲的控制台会减慢启动速度。因此在嵌入式linux产品中,将启动过程中的控制台设为静默状态,办法是在内核启动参数中加入“quiet”。设备搜寻和驱动安装是比较耗时的操作,因此要在编译内核时确定需要安装哪些驱动模块,以免系统搜寻那些根本不存在的设备,尤其是多余的ide设备。对于启动时临时不用安装的设备,尽量将驱动编译成模块,在以后空闲时或者用法设备时加载,而不是所有放在启动阶段。2.3 用户空间阶段传统linux的初始化脚本是由bash执行的,在内核引导后启动init进程(/sbin/init)。它用法一个ascii文件(/etc/inittab)来转变运行
6、级别,这个文件中又会调用rcsript,由rcsript查找/etc/rc.d/rc5.d/并启动相应链接指向的系统服务。消费类linux系统需要启用图形界面等须要的服务,未经优化的系统在这个过程中会默认启动无数根本用不到或者当前用不到的系统服务,这一部分会花去较大的时光开销。最容易的优化方法就是按照实际需要,通过改写服务配置文件定制系统服务。另外,init脚本的执行是串行的,在脚本量大时会导致引导过程十分长,因此可以考虑并行运行各种服务以加快启动的速度。现在已经浮现了一些初始化程序来替代init进程,下面介绍initng和upstart。initng(init nextgerneration
7、)能够并行启动服务从而迅速完成初始化工作。initng认为满足了依靠关系的服务就可以启动。在从外存加载一个脚本或等待硬件设备启动的同时,可以运行另一个脚原来启动别的服务,使系统在cpu 和 i/o 之间实现较好的平衡。作为一个基于依靠关系的解决计划,initng用法自己的初始化脚本集,它们对服务和守护进程的依靠性举行了编码。假如某个服务依靠(用法 need关键字定义)于其他服务,则要保证启动时它所依靠的全部服务均可用。无依靠关系的服务立刻并行启动,具有依靠关系的服务则要等待以平安启动。upstart与 initng的区分在于: upstart基于大事,任务/服务的启动/停止都取决于它所等待的大
8、事是否发生。upstart对大事的定义十分灵便,分为3类:edge (simple) events, level (value) events和temporal events。用法start/stop、大事名以及它所期盼的值(可选)组成条目对触发大事举行描述。大事依靠有两种方法:一种是任务自身导致大事发生,不管任务何时启动/结束都会有大事发生,对于启动时要执行的基本任务,这种方法比较有效;而对于较复杂的依靠关系,则可用法任务的shell脚本工具。2.4 预读取和预链接预读取(readahead)可以将文件(程序和库文件)在用法之前预先加载到ram缓存中,这样就不用在用法时为读取这个文件而拜访i
9、/o。假如知道下一步操作要拜访哪些文件,就可以提前将它们所有/部分读取到缓冲区,从而加快执行速度。嵌入式系统无数场合下对于下一步操作都是可预测的,比如系统启动时总是以同样的挨次拜访同样的可执行/数据文件,文件块的拜访往往是挨次的,应用程序启动时总是拜访同样的程序文件段、分享库、资源或者输入文件。这样用法预读取有很强的针对性,从而提高程序执行速度。elf(excutable and linkable file)是目前linux中的标准二进制格式,其启动需要以下步骤:将分享库映射到虚拟地址空间;解析符号引用;初始化每个elf文件。因为分享库是位置无关的,要在运行时完成部分重定位处理和符号查找的工作
10、,才干跳到程序的入口点,因此在带来灵便性的同时,也造成elf文件的启动速度缓慢,尤其是解析符号引用要消耗大量的时光,对于用法多个分享库的大型程序更是如此。但在无数嵌入式系统中,可执行文件和分享库极少变幻,而且每次程序运行时链接工作彻低相同。预链接(prelink)利用这一点,修改elf分享库和二进制文件,将链接信息加入到可执行文件中以简化动态链接重定位,从而使程序启动加快。预链接首先搜集要预链接的elf二进制文件及其所依靠的分享库,为每个库分配唯一的虚拟空间位置,并将分享库重新链接到这个基准位置(动态链接器要加载这个库时,只要虚拟空间地址未被占用,它就会将库映射到指定位置);然后预链接解析二进
11、制或者库中的全部重定位,并将重定位信息存放到elf对象,还要将全部依靠库的列表及校验和添加到二进制文件或库中。对于二进制文件,还需列出全部的矛盾(在分享库的自然搜寻范围内对符号的解析不相同)。在运行时,动态链接器先检查是否全部依靠的库都已经映射到指定的位置,而且库文件没有变幻,只考虑矛盾而不用处理每个库的重定位,这样大大提高了程序启动的速度。用法时要注重的是,若分享库发生了转变,则用法它的全部程序都要重新链接,否则程序仍要举行耗时的正常重定位。3 xip和文件系统优化3.1 代码执行方式嵌入式系统中代码的执行方式主要有3种: 彻低映射(fully shadowed)。嵌入式系统程序运行时,将全
12、部的代码从非易失存储器(flash、rom等)复制到ram中运行。 按需分页(demand paging)。只复制部分代码到ram中。这种办法对ram中的页举行导入/导出管理,假如拜访位于虚存中但不在物理ram中会产生页错误,这时才将代码和数据映射到ram中。 execute in place (xip)。在系统启动时,不将代码复制到ram,而是挺直在非易失性存储位置执行。ram中只存放需要不断变幻的数据部分,1所示。假如非易失性存储器的读取速度与ram相近,则xip可以节约复制和解压的时光。nor flash和rom的读取速度比较快(约100 ns),适合xip;而nand flash的读操
13、作是基于扇区的,速度相对很慢(s级),因此不宜实现xip。图1 彻低映射和xip的比较xip可以分为以下2种: 内核xip。挺直在flash/rom中运行内核,可以节约复制和映像解压的时光。linux 2.6.10内核已经包含了xip支持。 应用程序xip。挺直从应用程序代码的存储位置执行,而不用将它加载到ram中,这样应用程序的第一次执行速度会比较快。要用法应用程序xip,应当基于支持它的文件系统。3.2 xip文件系统目前xip文件系统的实现主要有2种: xip cramfs和advanced xip file system(axfs)。cramfs是一个压缩的只读文件系统,原来用于桌面l
14、inux系统的启动,但cramfs经过修改后可以支持嵌入式系统并支持xip。linear xip cramfs用一个sticky bit对它管理的文件举行区别,标志为压缩(按需分页)或者未压缩(xip)。假如文件标志为xip,则全部页都不压缩,而且要在flash中延续存储。在加载xip文件时,挺直对全部页地址举行映射;而按需分页的文件则在发生页错误时,将相应页解压到ram中。要创建linear xip cramfs文件系统映像,必需确定可执行文件和库文件的用法频率,频繁用法的文件适合于xip,而其他文件应当举行压缩。现在有一些工具(如ramust和cfsst)可以协助推断哪些文件需要xip,而
15、哪些不需要。下面就可以给xip文件加上标志并制作根文件系统,以用法mkfs.cramfs工具为例:chmod +t filenamesmkfs.cramfsx rootfs rootfs.bin另外,还要修改内核配置参数以支持xip:在启动选项中向默认内核指令字符串中加入rootfstype=cramfs,挑选内核xip并设置xip内核物理地址;在驱动程序中加入mtd对xip的支持;在文件系统中加入对linear xip cramfs的支持。接下来就可以生成xip映像了。linear xip cramfs的一个缺陷在于它是基于文件的,即一个文件中的全部页要么所有采纳xip,要么所有采纳压缩/按
16、需分页,但实际上同一文件中不同页的用法频率区分也很大。axfs是intel公司开发的一个新的只读文件系统,它从linear xip cramfs中继承了许多办法,同时也举行了一些改进。axfs的xip粒度是基于页的,并且自带工具来推断哪些页需要xip,哪些页需要压缩,从而更好地在速度和ram/flash的用法上取得平衡。3.3 非xip文件系统xip普通基于nor flash,成本相对较高。对于用户数据量大的应用,往往还要用法基于nand flash的,非xip的文件系统常用的有jffs2/yaffs。jffs2是一种基于压缩的文件系统。在多媒体应用中,假片、音视频已经经过压缩,则用法jffs2无疑会给cpu带来双重的压缩/解压负担,拜访速度也会受到影响。因此,在这类应用比较密集的应用中,采纳不压缩的文件系统(如yaffs/yaffs2)可以加快系统速度。yaffs/yaffs2是专为嵌入式系统用法nand flash设计的日志文件系统。与jffs2相比,削减了一些功能(例如不支持数据压缩),所以速度更快,挂载时光很短,对内存的占用较小。yaffs/yaffs2自带nand芯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC/IEEE 41062:2024 EN Software engineering - Life cycle processes - Software acquisition
- 【正版授权】 ISO 10924-4:2025 EN Road vehicles - Circuit breakers - Part 4: Medium circuit breakers with tabs (Blade type),Form CB15
- 【正版授权】 IEC TR 61364:1999 EN-D Nomenclature for hydroelectric powerplant machinery
- 2025年元旦晚会策划方案模板
- 元宵节主题活动方案2025年(精彩)
- 2025年幼儿园新学期个人工作方案
- 时尚知识全解析
- 护理科研文献检索与管理
- 护理临床教学病案讨论
- 生产简历工作总结
- 学习通《《诗经》导读》习题(含答案)
- 2025-2030智能代步车产业市场现状供需分析及重点企业投资评估规划分析研究报告
- 全媒体内容编辑技巧试题及答案
- 2025届广东省燕博园联考(CAT)高三下学期3月模拟测试物理试题(含答案)
- 2025-2030中国SP导电炭黑市场现状调研与前景研究报告
- 眼视光技术考试题(含答案)
- 垃圾清运合同范本模板
- 2025年“世界水日”活动知识竞赛考试指导题库100题(含答案)
- YS/T 3045-2022埋管滴淋堆浸提金技术规范
- 《煤矿安全生产责任制》培训课件2025
- T-SZSA 030.1-2024 医院及医疗机构建筑空间照明技术规范 第1部分:总规范
评论
0/150
提交评论