加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Uboot启动分析

发布时间:2020-12-15 06:52:42 所属栏目:百科 来源:网络整理
导读:启动分析 固定的启动顺序: 1. Firmware和bootloader阶段 ? ?目标板确定后,Firmware运行的时间就无法改变,Flash和RAM的读写速度也随之确定。 *** ? 如:复位能够绕过Firmware和Bootloader,运行中的内核加载以及运行另一个内核,可以缩短启动时间。 *** ?
启动分析 固定的启动顺序: 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读