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

嵌入式Linux启动时间优化方法——启动脚本

[复制链接]
gaosmile 发布时间:2020-4-22 20:00
本文主要讲述嵌入式Linux启动时间优化的秘密,我们继续上篇没有讲完的嵌入式Linux启动时间优化方法,本文主要会讲启动脚本。想看上一篇的请查看本文结尾的链接。
  启动脚本
  1.优化初始化脚本和系统启动
  有多种方法可以减少启动应用程序之前执行启动脚本中花费的时间:
  仅在启动必要的依赖项之后,尽快启动应用程序。
  简化shell脚本
  可以尝试执行启动脚本之前启动应用程序
  1.1.bootchart
  如果想更详细地了解用户区的引导顺序,则可以使用使用grabserial中的bootchart来实现,例如:
  untitled.png
  那么如何配置并使用bootchart呢?
  在busybox中配置使用bootchartd(CONFIG_BOOTCHARTD = y)
  通过命令行init = / sbin / bootchartd引导您的开发板
  将/var/log/bootlog.tgz从目标复制到开发主机
  生成时间表:
  cd bootchart-《version》
  java-jar bootchart.jar bootlog.tgz
  bootchart 参见 http://www.bootchart.org
  1.2. systemd
  如果将systemd用作初始化程序,则可以使用systemd-analyze。
  1.3. init 进程
  在所有依赖项启动之后,应尽快启动:
  取决于您的init进程。在这里,我们假设使用sysVinit脚本。
  init脚本按字母数字顺序运行,并以字母开头(K表示停止(杀死),S表示开始)。
  将应用程序启动脚本使用最小的号码。
  甚至可以用应用程序替换init!如果可以成为第一个启动的应用程序,启动速度无疑大大加快!
  直接通过一个启动脚本启动所有服务(例如/etc/init.d/rcS)。这消除了对/ bin /sh的多次调用。
  甚至可以直接在应用程序的C代码中挂载文件系统:如
  1.4 减少fork的使用
  fork/exec系统调用开销很大。故从Shell调用可执行文件的速度很慢。
  即使BusyBox实现的shell中echo也会导致fork 系统调用!
  在BusyBox配置中选择Shells-》 Standalone shell,以使Shell尽可能调用小程序。
  管道和反引号也由fork/exec实现。应减少它们在脚本中的使用。例:
  cat /proc/cpuinfo | grep model
  应修改为:
  grep model /proc/cpuinfo
  更详细,请参考:
  http://elinux.org/Optimize_RC_Scripts
  又例如:
  3.png
  仅此一项优化就可以在ARM AT91SAM9263系统(200MHz)上节省87毫秒!
  1.5 减小固件的尺寸
  剥离可执行文件和库,删除仅用于开发和调试的ELF部分。strip命令由交叉编译工具链提供。默认情况下在Buildroot中完成的。
  superstrip超级剥离
  使用strip可以剥离出Linux未用于启动可执行文件的更多位。Buildroot停止支持它,因为它可能破坏可执行文件。 仅在保存一些字节至关重要时才尝试。
  还可以尝试https://packages.debian.org/sid/mklibs上提供的mklibs:
  mklibs产生精简的共享库,其中仅包含一组特定的可执行文件所需的例程。对于像OpenGL和QT这样的大型库确实很有用。它甚至可以在没有源代码的情况下工作。
  在Yocto中可用,但在Buildroot中不可用(2019.02状态)。
  限制:mklibs可以删除倾斜的库(由应用程序手动加载),因为它看不到它们。
  3.5.5 快速启动画面显示
  可以使用fbv显示启动画面,
  使用armel,可以只使用我们的静态编译二进制文件:
  http://github.com/bootlin/staTIc-binaries/tree/master/fbv/
  但是在MicrochipAT91SAM9263系统上很慢为878毫秒!
  为了更快地执行此操作,可以转储帧缓冲区framebuffer中的内容:
  fbv -d 1/root/logo.bmp
  cp /dev/fb0/root/logo.fb
  lzop -9/root/logo.fb
  然后尽早在initramfs中将其复制回:
  lzopcat/root/logo.fb.lzo 》 /dev/fb0

收藏 评论1 发布时间:2020-4-22 20:00

举报

1个回答
likang1202 回答时间:2020-4-23 08:45:32
顶大佬

所属标签

STM32团队

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


最新内容

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