你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

从Bootloader的角度探讨如何优化嵌入式Linux缩短启动时间

[复制链接]
gaosmile 发布时间:2020-3-23 14:36
导读:嵌入式Linux在应用中往往希望系统能在尽量短的时间内启动,以提高用户体验。而且在有的应用场合,对启动时间具有严格的时间要求,尤其在工业或者医疗器械应用领域。此时如何加快Linux的启动,将成为一个挑战,对于大多数应用开发人员而言,由于Linux系统的复杂性,对于如何提高启动速度,往往无从下手。那么读完优化嵌入式Linux的启动时间系列文章,将获得清晰完整的解决思路。本文将从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. 简化脚本
有些情况,脚本很复杂,如:
微信图片_20200323142930.png
可以修改为:
微信图片_20200323142933.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板上均以相同的方式支持此功能。


在阅读完一系列的文章后,对于如何降低嵌入式Linux启动时间,将有一个完整的解决思路。

收藏 评论0 发布时间:2020-3-23 14:36

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版