嵌入式linux开机时间,嵌入式Linux启动时间优化的秘密之五-Bootloader

本文主要讲述嵌入式Linux启动时间优化的秘密,我们继续上篇没有讲完的嵌入式Linux启动时间优化方法,本文主要会讲Bootloader。想看上一篇的请查看本文结尾的链接。

Bootloader

1. 裁剪

删除不必要的功能。

通常引导加载程序包括许多仅用于开发所需的功能。用较少的功能编译您的bootloader。

优化所需的功能。调整引导加载程序以获得最快的性能。

U-Boot是事实上的嵌入式bootloader标准,对于U-Boot而言,以下一些功能在产品中可能不需要:

在include / configs / 《soc》-《board》 .h中禁用尽可能多的功能

示例:MMC,USB,以太网,dhcp,ping,命令行版本,命令完成提示。

较小且更简单的U-Boot加载速度更快,初始化速度更快。

移除启动延时:

消除启动延迟,这样通常可以节省几秒钟!:

setenv引导延迟0

在执行此操作之前,请先使用

CONFIG_ZERO_BOOTDELAY_CHECK重新编译U-Boot,

参考文档在doc / README.autoboot中。即使启动延迟设置为0,它也可以通过敲键来停止自动启动过程。

2. 简化脚本

有些情况,脚本很复杂,如:

4f5a3a9af835c92b2dbb09daede5f9f8.png

在ARM9(400MHz)可节省大约56ms

3. 拷贝准确大小的内核

将内核从ROM复制到RAM时,仍然看到许多系统复制了太多无用字节,而没有考虑确切的内核大小。

在U-Boot中,使用nboot命令:

nboot ramaddr 0 nandoffset

U-Boot使用存储在uImage标头中的内核大小信息来知道要复制多少字节。

4. 优化内核加载

将内核uImage复制到RAM之后,U-Boot始终将其移动到uImage标头中指定的加载地址。还执行CRC检查。

可以通过将uImage直接加载到正确的地址来使U-Boot跳过memmove操作。

计算此地址:

Addr = Load Address - uImage header size

Addr = Load Address - (size(uImage) - size(zImage))

Addr = 0x20008000 - 0x40 = 0x20007fc0

在生产中时数据一般不会损坏将内核复制到RAM时,可以考虑禁用CRC检查

禁用带有U-boot环境变量的CRC检查:

setenv verify no

关闭U-Boot控制台输出。需要使用以下命令编译U-Boot

CONFIG_SILENT_CONSOLE和setenv silent yes.

有关详细信息,请参见doc / README.silent。

5. 跳过bootloader直接启动内核

原理:立即加载内核,而不是先加载引导加载程序,再加载内核!

例如在Microchip AT91上,使用at91bootstrap v3即可轻松实现。

您只需要使用linux或linux_dt配置之一进行配置:

make at91sama5d3xeknf_linux_dt_defconfig

make

对于 U-Boot Falcon 模式:

U-Boot分为两部分:SPL(二级程序加载程序)和U-Boot映像。 然后,U-Boot可以配置SPL来直接加载Linux内核,而不是U-Boot映像。

有关详细信息,请参见doc / README.falcon和

http://schedule2012.rmll.info/IMG/pdf/LSM2012_UbootFalconMode_Babic.pdf进行原始演示。

所有支持SPL的U-Boot板上均以相同的方式支持此功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值