


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
仁人教育怎样在1秒内启动Linux尽可能快的启动系统,对于自动化设备是非常重要的。系统能够在用户无法感知的时间内启动,也就意味着在不需要工作时,可以完全切断电源,而不是挂起 进入休眠状态。本文基于Atmel AT91系列片上系统和NAND闪存,经过一系列的优化,将Linux系统启动时间,从最初的11秒,降低到最终的656毫秒。背景知识系统从上电到完全启动,需要经过许多过程。一个简化的启动流程大概包含:硬件重置启动引导程序(bootloader)操作系统初始化应用程序执行其中硬件非常关键,但是硬件一般难以更改。后续的优化,主要针对引导程序、Linux内核和应用程序展开。引导程序优化引导程序主要完成对CPU的基础设置,处理ARM标记(ATAGS,ARM TAGS)或设备树(device trees),切换存储管理单元(MMU,Memory Management Unit)等工作。对于U-Boot,常用的优化方式有:删除不不要的功能:如网络加载等,如果不需要,那么直接移除这些代码吧;关闭不需要的功能关闭内核镜像验证关闭引导程序输出关闭启动延迟将通用功能的引导程序修改成一个优化后的初始程序加载器(Initial Program Loader,IPL),对于U-Boot,可以通过SPL(Second Program Loader,第二阶段程序加载器)来实现。内核优化Linux内核被设计的非常灵活,可以针对需要的功能做各种配置优化。因此,优化内核对于系统启动速度是至关重要的。首先,移除一切不要的驱动,尽可能的减少内核加载的内容,能够大大缩短系统启动时间。其次,还有很多内核选择可能需要进一步尝试,比如内核压缩方 式,对于嵌入式系统来说,LZO压缩方式,通常会是一个不错的选择。最后,还可以通过定制一些启动参数,达到加快启动的目的。例如可以通过“lpj=”参 数,预设每个循环需要的节拍数(loops per jiffy,lpj)的值,避免系统在启动时自动推算。这样在基于ARMv5的系统中,可以节省100ms以上的时间。对于内核启动的优化,可以通过bootgraph.pl脚本(位于内核源码的script/bootgraph.pl)来绘制内核启动耗时图表,用以分析启动最耗时的地方。这个脚本使用非常简单,直接将dmesg的输出作为其输入,即可生成svg图表:?dmesg|perlscripts/bootgraph.ploutput.svg生成的图表如下图,图中每一个色段表示一个功能的初始化耗时。可以简单的关闭不需要的功能,或者针对功能进行特定的优化。除了内核本身之外,内核所在的文件系统也对系统启动有着非常大的影响。对于使用闪存芯片作为存储的系统来说,UbiFS是一个很好的选择。它能够容忍意外断电,有着出色的挂载速度,以确保系统快速启动。应用程序优化内核完成系统启动之后,接来下就是执行应用程序。对于应用程序的优化,主要有两部分,一部分是由应用程序来接管启动的INIT进程,另一部分是优化应用程序的链接方式。标准的SystemV INIT程序,需要执行一堆启动脚本。对于嵌入式系统来说,大部分是没有意义的。另一部分(比如挂载文件系统),可以由应用程序自己来实现。然后,可以在内核启动参数中通过“init=”参数,将INIT进程直接指定为应用程序。应用依赖的动态链接库,会按照以下顺序查找:LD_PRELOAD环境变量指定的路径(一般对应文件/etc/ld.so.preload);ELF .dynamic节中DT_RPATH入口指定的路径,若DT_RUNPATH入口不存在的话;环境变量LD_LIBRARY_PATH指定的路径,但如果可执行文件有setuid/setgid权限,则忽略这个路径;编译时指定-library-path会覆盖这个路径;ELF .dynamic节中DT_RUNPATH入口指定的路径;ldconfig缓存中的路径(一般对应/etc/ld.so.cache文件),若编译时使用了-z nodeflib的链接选项,则此步跳过;/lib,然后/usr/lib路径 ,若使用了-z nodeflib链接选项,则此步亦跳过;因此,尽可能的将应用程序依赖的动态链接库放到优先查找的路径,可以加快链接速度。对于交叉编译环境特别需要注意,主机上的动态链接库位置和目标系统上的位置可能不一致,这会增加应用程序执行时动态链接库的加载时间。总结基于上面提到的三个优化点,可以将系统的启动时间,从最初的11s降低到656ms(数据参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品组合管理
- 幼小衔接培训老师
- 医院冬季消防法律培训
- 销售月度工作总结及计划
- 儿童哮喘护理
- 表单填写说明培训
- 有效沟通机制培训
- 职业教育管理学理论与实践
- 肢体无力护理查房
- 子宫颈癌护理诊断
- 企业市场营销策略顾问服务合同范本
- 贵州省贵阳市部分学校2024-2025学年高二下册期末联考数学试卷(附答案)
- 2024-2025学年人教版 2024小学数学一年级下册教学工作总结(共3套)
- 学生高层宿舍管理制度
- 薪资发放协议
- T/CAR 7-2021绿色高效自携式商用冷藏陈列柜技术要求和评价方法
- 合作账号合伙协议书
- 2025-2030年国内冷藏集装箱行业市场现状供需分析及投资评估规划分析研究报告
- 警务技能抓捕课件
- 广东省广州市南沙区2025届七下生物期末教学质量检测试题含解析
- DB13T 2700-2018 水工柔性生态防护结构设计规范
评论
0/150
提交评论