基于内核启动优化的嵌入式Linux快速启动方案

  • 格式:pdf
  • 大小:260.18 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)驱动模块化:充分利用Linux的驱动加载机制,把设备 按用户需要的频率和程度进行分类。那些开机时就使用的设 备的驱动程序采用静态编译到内核的方式,在系统启动的时 候和内核一起加载;那些开机时不使用的设备的驱动程序采 用模块化加载的方式,在系统启动后,按照用户的需要手动加 载。这样,在启动的时候只需要加载很少一些设备驱动,而将 全部设备的驱动加载时间随用户的需要进行分散。
摘要:快速启动是嵌入式Linux需要解决的关键问题。在比较目前加速嵌入式Linux启动的几种方法的基础上,给出了一 种针对内核启动优化的快速启动方案。通过测量内核启动过程时间,荻取了主要的延时因素,以此为依据,引入Kernel XIP 技术消除了内核映像拷贝解压时间,提出了不检测、并行检测、驱动模块化、驱动管理优化等加速设备初始化策略,设计了 一种既适合快速启动叉实用的文件系统架构。试验结果表明,该方案明显地加快了嵌入式Linux的启动速度。 关键词:嵌入式Linux;快速启动;XIP;设备初始化:文件系统 中图法分类号:TP316 文献标识码:A 文章编号:1000.7024(2009)01.0016.03
0引 言
嵌入式系统作为以应用为中心的专用计算机系统,需要 在启动速度、实时性、系统尺寸、电源管理等方面进行优化“1。 近年来,Linux凭借其优良特性广泛地应用于嵌入式系统。但 是,作为一种原本为PC机设计的操作系统,设计者开始并没 有考虑嵌入式应用对启动速度的要求,导致其典型的启动时 间一般在几十秒或以上,这对于用户来说是不能容忍的嘲。此 外,随着Linux内核的不断膨胀,启动时间越来越长。因此,加 快启动速度已经成为嵌入式Linux亟待解决的关键问题之一“l。
图1 XIP技术原理
2.2设备初始化策略 (1)不检测不存在的设备:嵌入式系统一般具有固定的硬
件设备,在内核编译的时候,只需配置目标系统上所具备的设 备驱动,如Nor Flash、LCD等;去掉不存在的设备,如IDE设 备、红外等。
(2)并行检测和初始化设备:把串行化的设备驱动初始化 方式改用并行化的方式,在某些设备驱动初始化的忙等待时 问里同时进行其它设备的初始化。
optimizes the drivers management is brought forward to speed up the device initializations.Moreover,a file system framework which
is both suitable for fast booting and applicable is designed.The method is proven capable of improving boot time obviously. Key words:embedded Linux;fast booting;XIP;devices initialization;file system
男,博士,副教授,研究方向为计算机网络与通信; 廖孝勇,男,博士,研究方向为嵌入式技术和智能交通系统。
万方数据
段红祥,孙棣华,刘卫宁,等:基于内核启动优化的嵌入式Linux快速启动方案
2009,30(1)
17
百度文库
性的内核启动过程进行研究。
l影响内核启动速度的主要因素
准确找到主要的延时因素是优化启动速度的关键。本文 使用PrintkTimes、LinuxTraceToolkit、KernelFunctionTrace等工具 测量启动时间,在实际测试中发现,内核映像拷贝解压、设备 驱动初始化、根文件系统挂载足最耗时的,占到9006以上。此 外,通过预置LPJ值和关闭串口控制台输出发现,速度可以提 高约0.5s。以下是主要延时因素的分析:
电,导致功耗较高啪。 (2)休眠技术。开机时,系统首先启动bootloader,对休眠所
需的器件进行初始化,然后把快照映像从闪存复制到RAM,不 经过正常启动流程,实现系统的快速启动。这种技术既能加快 启动速度,又能克服待机技术功耗高的缺点,但需要把操作系 统和应用程序完成启动的寄存器和RAM信息制作成快照映 像,制作快照映像的方法是主要的技术难点,索尼、松下等参 与的非营利性消费电子论坛CELF和TfiPeaks公司已开发出一 些基础技术,但目前还不成熟,正在由设备厂商进行评估Ⅲ。
“)驱动管理及编写优化:Linux设备驱动程序无论是静态 编译进内核还是模块化加载,都需要首先经过内核驱动管理 部分的判断模块是否重复加载、建立模块问依赖关系等步骤, 然后调用具体设备驱动程序的init module0完成设备的初始 化。因此,可以从内核驱动管理部分和驱动程序编写两方面 来优化启动时间。嵌入式系统一般具有固定的功能相对独立 的硬件设备,内核驱动管理部分可以不必判断模块是否重复 加载以及减少模块间依赖关系,从而减少循环次数;编写设备 驱动程序的init module()时,尽可能的少用或不用循环,以及 不执行初始化时不需要的操作。 2.3文件系统构建策略
(4)LPJ值计算:在Linux系统启动时,会运行calibrate_delay 计算LPJ的值,作为衡量处理器速度的一个基准。通过执行 一定次数的周期为ljiffy的循环来确定其数值,因此其值取决 于执行的循环次数以及每次循环的周期。2.4内核定义ljiffy 为10ms,而循环次数是20-25次,所以计算LPJ值一般会耗时 约240ms。
(5)控制台输出:Linux系统启动时,一般使用串口控制台或 VGA控制台打印启动信息,打印速度取决于串口的速度和处 理器的速度,这在大多数嵌入式系统中要用数百毫秒的时间。
2基于内核启动优化的快速启动方案
根据前述的延时因素测量和分析,本文针对每个主要的 延时,采用相应的加速方法,提出如下优化方案:
(1)针对内核映像的拷贝解压延时,引入KernelXIP技术; (2)针对设备初始化延时,提出不检测不存在的设备、并行 初始化、驱动模块化、驱动管理优化等设备初始化策略; (3)针对根文件系统挂载延时,采用cramfs with XIP根文 件系统类型,并考虑实用性,提出文件系统架构策略; “)针对LPJ值计算延时,提出硬编码预置LPJ方法; (5)针对串口控制台输出延时,提出传递“quiet”启动参数 方法。 2.1使用KernelXIP技术 KernelXIP指的是,启动时,bootloader初始化后直接跳转
Fast booting method based on kernel booting improvement in embedded Linux
DUAN Hong—xian91, SUN Di—hual,LIU Wei·nin92, SONG Wei2, L从O Xiao—yon91
(1.College ofAutomation,Chongqing University,Chongqing 400044,China; 2.College of Computer Science,Chongqing University,Chongqing 400044,China)
Abstract:Reducing boot time is a key problem that needs to be resolved when Linux is applied in embedded systems.On the basis of analyzing the existing methods to reduce the boot time,a method based on the improvement ofkernel booting is put forward.By means ofmeasuring the time ofkernel boot process,the key delay facts are found.Furthermore,kernel XIP is introduced to eliminate the time of kernel’S copying and decompressing,the policy that avoids probing,initializes the drivers in parallel,modulates the drivers,and
目前,对加快嵌入式Linux启动速度的研究主要在以下3 个方面:
(1)待机技术。关机时,系统首先把CPU、I/O寄存器及其 它需保存的信息保存到RAM,然后关闭除RAM及其它必要
器件之外的所有设备;下次启动时,系统根据RAM中保存的
内容迅速恢复到关机前的状态。这种技术可以让系统在1s内 恢复到关机前状态,但由于待机时仍然给RAM等必要器件供
16
2009,30(1)
计算机工程与设计ComputerEngineering andDesign
·嵌入式系统·
基于内核启动优化的嵌入式Linux快速启动方案
段红祥1, 孙棣华1, 刘卫宁2, 宋伟2, 廖孝勇1 (1.重庆大学自动化学院,重庆400044;2.重庆大学计算机学院,重庆400044)
鉴于此,本文采用常规启动优化方法,针对具有相对通用
收稿日期:2008-01.12
E.marl:hx_duan@163.com
基金项目:国家863高技术研究发展计划基金项目(2006AA04A124)。
作者简介:段红祥(1984--),男,河南驻马店人,硕士,研究方向为嵌入式技术和RFID技术; 孙棣华,男,教授,博士生导师,研究方向为 控制理论与控制工程、系统工程、智能交通系统; 刘卫宁,女,教授,博士生导师,研究方向为计算机网络与通信、RFID技术及应用; 宋伟,
(3)常规启动优化。一般把LintLX正常启动过程分为固件 初始化、内核初始化和用户应用层初始化,针对其中比较耗时 的部分进行优化,研究比较多的主要有㈨:RC脚本优化,如并
行服务加载、使用busybox等:应用程序启动优化,如read ahead、Pre-link、mmap等。这些技术主要针对用户应用层初始 化,但嵌入式系统作为专用系统,不同的应用场合下其应用程 序差异很大,用户应用层优化不具有通用性和可比性Ⅲ。
(3)根文件系统的挂载:嵌入式Linax系统通常使用RAM- DISK技术,根文件系统建立在RAMDISK上。启动时,bootloader 将RAMDISK映像拷贝到RAM中,Linux利用lnitrd机制对 RAMDISK上的根文件系统进行解压、挂载,拷贝、解压会耗费 很长时间。另外,不同的文件系统类型,其挂载时间也不一样, 选用挂载时间长的根文件系统类型将会影响系统的启动时间。
(1)内核映像拷贝解压:嵌入式Linux一般采用SnD(store anddownload)技术,内核映像以压缩的形式存放在磁盘或Flash 等存储设备中,启动时由boofloader将其拷贝到RAM中,然后 再解压执行,在内核映像的拷贝解压过程中耗费了大量时间。
(2)设备驱动初始化:启动时,Linux会对静态编译进内核 的所有总线和设备进行检测。如果编译时配置了目标系统中 没有的总线或设备,系统启动时对这些不存在的设备驱动初始 化,会耗费额外的时间,如系统默认会搜索6个或lO个IDE设 备。另外,Linux系统一般采用串行的方式来检测和初始化设 备,其总时间就等于每个设备的检测和初始化时间之和,而某 些设备驱动要耗费很长的忙等待时间完成其检测和初始化,如 IDE检测要调用78次ide_delay_50ms0和8次try_to_identifyO。
万方数据
到内核的第一条指令处,内核指令直接从NOR Flash中执行, 从而省去内核映像的拷贝和解压过程。使用KernelXIP,需要 软硬件的支持,其原理如图1所示。在软件上,首先,需要修 改内核代码或打补丁,使之能在发生缺页中断时,直接映射 NorFlash上的代码页到虚拟地址空间上,而不是拷贝到RAM, 再映射到虚拟地址空间;另外,由于在NorFlash中进行读操作较 快,但写操作速度相对较慢,所以要使之能根据需要拷贝部分可 写的数据段到RAM中。其次,在内核编译时需要配置内核XIP 选项,配置Kernel Execute-In-Place from ROM,设置XIP kernel physicallocation为XIPkemel映像在Flash上的地址,配置XIP awareMTD support支持。在硬件上,需要把生成的XIPKernel 映像以非压缩的形式存放在支持随机存取的NORFlash中。