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

从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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版