Uboot启动分析

启动分析
固定的启动顺序:
1. Firmware和bootloader阶段
   目标板确定后,Firmware运行的时间就无法改变,Flash和RAM的读写速度也随之确定。
***   如:复位能够绕过Firmware和Bootloader,运行中的内核加载以及运行另一个内核,可以缩短启动时间。


***  对正常启动,可以选择速度较快的bootloader,并对内核进行小型化处理;
***  还可以使用高速的映像复制技术(DMA2RAM), 从而缩短复制的时间。


2. 内核阶段
内核初始化时,村对RealTime Clock(RTC)进行同步。此过程会占用1S的时间,可以去掉。
这样CPU会与正确的时间有1S的偏差,如果关机时CPU时钟又要保存在RTC中,偏差就会不断累积。
*** 如使用外部时钟源进行同步的系统,可以安全的跳过此阶段。


Preset LPJ可以用来缩知每次启动时调用calibrate_delay()来校准loop_per_jiffy消耗的时间。这个时间与CPU无关,典型的嵌入式硬件环境下会消耗300ms左右。LPJ值对于固定的硬件平台应该是一致的,可以只计算一次,在后续的启动中可以在启动参数中强制指定LPJ值,而跳过实际的计算过程。
*** 具体方法:在正常启动后记录下内核启动信息中的“Calibrating Delay”数值,在启动参数中以"lpj=xxxxx"r 的形式强制指定。


启动过程,默认是打开控制台输出启动消息,但是控制台尤其是基于帧缓冲的控制台会减慢启动速度。因此在嵌入式LINUX产品中,将启动过程中的控制台设为静默状态。
*** 具体方法:在内核启动参数中加入"quiet"。


设备搜索和驱动安装是较消耗时间的, 因此要在编译内核时确定需要安装哪些驱动模块,以免系统搜索那些根本不存在的设备,尤其是多余的IDE高备。
***对于启动是暂不需要安装的高备,尽量将驱动编译成模块,在以后空闲时或使用时再加载。而不是全放在启动项中。


3. 用户空间阶段
未经优化的系统默认会启动很多根本用不到的系统服务,会消耗很多时间。
*** 简单的方法:根据需要,通过改写服务配置文件定制系统服务。
init脚本的执行是串行的,在脚本量大时,会导致引导过程变慢。可以并行运行各种服务以加快启动速度。
*** initng和upstart可以进行并行启动服务,从而加快完成初始化的工作。


4. 预读取和预链接
预读取可以将文件(程序和库文件)在使用之前预先加载到RAM缓存中,这样就不用在使用时为读取这个文件而访问I/O。
嵌入式系统在很多场合下,对于下一步的操作都是可预测的,比如系统启动时总是以同样的顺序访问同样的可执行/数据文件,文件声的访问往往是顺序的,应用程序启动时总是访问同样的程序文件段、共享库、资源或都输入文件。这样使用预读取有很强的针对性,从而提高程序执行速度。
*** ELF是目前LINUX中使用的标准二进制格式。
预链接利用这一点,修改ELF共享库和二进制文件,将链接信息加入到可执行的文件中以简化动态链接重定位,从而使程序启动加快。


5.代码执行方式:
嵌入式系统中,代码的执行方式主要有3种:
5.1 完全映射: 嵌入式系统启动时,将所有的代码从FLASH,ROM中复制到RAM中执行。
5.2 按需分页:只复制部分代码到RAM中,这种方法对RAM中的页进行导入/导出管理。
5.3 execute in place(XIP):系统启动时,不将代码复制到RAM中,而是直接在FLASH中执行。
*** 目前XIP文件系统的实现主要有2种:Linear XIP CRAMFS和Advanced XIP File System(AXFS)


6.非XIP文件系统
XIP一般基于NOR Flash,成本相对较高,对一用户数据量大的应用,往往还要使用基于NAND FLASH的,非XIP的文件系统常用的有JFFS2/YAFFS.


JFFS2是一种基于压缩的文件系统。在多媒体应用中,如图片,音视频己经经过压缩,则使用JFFS2会给CPU带来双重的压缩/解压负担,访问会受到影响。在这类应用比较密集的应用中,采用不压缩的文件系统(YAFFS/YAFFS2)可以加快系统速度。


YAFFS/YAFFS2是专为嵌入式系统使用NAND Flash设计的日志文件系统。与JFFS2相比,少了一些功能,所以速度更快,挂载时间很短,对内存的占用较小。YAFFS仅支持小页(512字节)NAND FLASH, YAFFS2支持大页(2KB)NAND FLASH.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值