`
javasogo
  • 浏览: 1821985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于Linux的快速启动(fastboot)和低功耗(low power)的学习记录

阅读更多

  我今天想查一下Intel工程师放在CSDN的一个视频,名字倒是查出来叫:Moblin系统的快速启动核心技术剖析,但是怎么找也找不找了。这是一个好的技术介绍。难道给删除了。不知道CSDN是否上次查图片的时候,禁止了所有的视频。没办法了,翻箱倒柜,找到了以前做的一些笔记,先记录下来。不过不保证完全忠于原著。可能有删减。聊胜于无嘛。如果能再次公开那些技术视频就好了,我本来是想找codec和容器的资料,记得也是Intel工程师给的,后来发现什么都不见了。

  Intel在Meego(原Moblin)的革新,一是快速启动,二是低功耗,进入了Linux的mainline,使得阿土(ubutu)和fadora能号称在十秒的级别上开机启动。这在手持设备中是非常重要的。下面记录可能不完全反映原来视频的内容,加入了我的一些理解,对不感兴趣的部分跳过,如果有任何技术问题,应当不归于INTEL的工程师。

快速启动

  系统的开机,从我们按power开始到能够正常使用,包含三部分的内容:一、BIOS/BSP的启动时间;二、系统平台(操作系统)的启动时间;三、桌面UI和应用的启动时间。

  第一部分和硬件有关,和系统平台无关,不讨论。

  第二部分是实现快速启动的核心关键部分。有下面的四个关键技术:

关键技术1:内核模块(包括设备驱动)的快速加载

  • 尽可能将内核模块编译到Kernel image内部:减少需要另行独立加载的模块的方式,节省时间
  • 异步内核模块初始化:提高内核模块处理的并行化,可同时检测多个硬件设备来减少启动时间。

关键技术2:加速文件读取效率(Sreadahead:super read ahead)

  • 采用Sreadahead,提高对SSD的文件读取速度:对启动文件放入kernel page cache中。

关键技术3:优化显示驱动,实现X server的快速启动(fast X)

  • 减少显卡驱动加载所消耗的时间,减少显卡驱动所占内存
  • 加速X Server启动时间:对XKB(leyboard layouts)结果进行缓存,以便以后直接使用,X可直接使用kernel启动时检测到的使用模式。

关键技术4:优化init脚本

  • 精简不必要的后台程序和服务(nfs server, mail server)
  • 并行启动必要的后台程序服务(例如dbus,hal,connman)

  第三部分是我们启动上层应用和服务,在智能手机中要好好斟酌启动的顺序。

低功耗技术

关键技术1:减少设备组件/外设的功耗

  • 原则1:对不使用的组件/外设关闭,如果无法关闭,进入睡眠以降低功耗
  • 原则2:对于休眠的组件/外设,非必要时不唤醒
  • 原则3:在一个唤醒周期中,尽可能完成更多的工作,使得组件/外设可以更长的休眠时间
  • 基础:部件休眠控制技术
  • 方式:
    • 各功能块独立供电,优选底功耗器件,可进行开关控制,用户可设置节能模式
    • 电源优化管理功能设计、实现底层硬件、系统软件和应用软件多层协同
    • 状态切换机制:Idle态(调低CPU时钟频率,关闭部分部件,动态电压调节)
  • 例子:
    • 例子1:屏低功耗:背光自适应调节优先管理以及屏保
    • 例子2:智能的网络连接管理:对于wifi/wapi,避免长时间不断搜索,对与数据包的转发,先存起来,在周期广播信标帧是才发送,避免填写模块一直处于工作状态,提供休眠期
    • 例子3:USB,对于slave模式,从master中充电,对于master模式,不工作时进入休眠。

关键技术2:系统平台低功耗方案

  • 原则1:CPU在工作唤醒周期,尽可能多处理,以尽可能延长睡眠时期;
  • 原则2:多个事件同时唤醒,降低唤醒频率
  • 基础:CPU的低功耗工作模式
  • 方式1:kernel低功耗优化
    • 例子1:Linux Kernel对电源管理的优化:根据过往的历史记录判断当前进入哪个级别的C state 。
    • 例子2:对P State的智能控制:控制采用On demand cupfreq govener,即按需CPU频率调节技术。
    • 例子3:尽可能同步唤醒:包括kernel tickless idle, 全局Timer技术,合并/同步外设中断时钟
  • 方式2:用户空间程序的低功耗优化
    • 例子1:避免频繁的中断事件:优化系统各应用,合并/同步事件的触发事件
    • 例子2:减少频繁I/O处理,合并写操作,使用较大缓存,减少读写操作的频率
    • 例子3:在应用程序开发中:处理时应尽可能完成多的任务,允许休眠更长的时间
    • 例子4:硬件编解码比软件编解码效率高

背景知识:CPU的三个state

  • C State:A set of Idle States,即一系列休眠状态:关闭不使用的cycle,越高级别的C state,休眠越深,但唤醒需要的时间和耗电更大
  • P state方式:Performent State, 通过降低CPU频减少CPU点压(降频减压)来减少功耗,可采用按需频率管控进行优化(Ondemand cpufreq governor)。【按需分配是最理想的模式】
  • 此外还有T state,Thermal State:是用于处理CPU过热的情况

相关链接:我的嵌入式Linux相关文章我的Linux相关文章


分享到:
评论

相关推荐

    linux ubuntu fastboot 下载

    linux ubuntu fastboot 下载 方法1: GSI Flashing Procedure For Android-Q Fresh Launch Build(DP Enabled): Flash META Change directory to Apps path Flash below Apps and GSI image. Apps Build flashing ...

    Linux fastboot

    然而, Linux fastboot 的安装和配置过程可能会遇到一些问题,本文将详细介绍 Linux fastboot 的安装和配置过程,并解决可能遇到的问题。 一、Linux fastboot 的安装 fastboot 工具通常随 Android SDK 一起提供,...

    linux平台的adb和 fastboot

    在Linux平台上进行移动端开发,尤其是Android应用开发,`adb (Android Debug Bridge)` 和 `fastboot` 是两个不可或缺的工具。这两个工具是Android Studio官方提供的,用于帮助开发者与Android设备进行通信,进行调试...

    android 刷系统 必备工具 fastboot linux 版

    Fastboot是一种由Google开发的引导加载程序接口,它允许用户在设备启动到操作系统之前执行低级别的硬件操作。它通常与“adb”(Android Debug Bridge)一起使用,adb是Android的调试工具,可以在设备和计算机之间...

    linux fastboot 原始程序

    fastboot linux 版本程序,权限配置好后,在本人电脑 ubuntu 16.04 上 fastboot 命令成功烧录镜像到手机

    C# 编写的快速启动

    【标题】"C# 编写的快速启动"指的是使用C#编程语言开发的一款应用程序,它的主要功能是提供快速启动和本地硬盘电影的快速搜索。在Windows操作系统中,快速启动通常是指能够帮助用户迅速访问常用程序、文件或设置的...

    Linux_Fastboot.7z

    这个名为"Linux_Fastboot.7z"的压缩包文件很可能包含了与广和通4G模组相关的Fastboot工具和驱动程序,帮助用户进行设备的固件更新或故障排查。下面,我们将深入探讨Linux Fastboot的工作原理、用途以及如何使用它来...

    hi3798mv100-安卓-Linux双启动.zip

    这个压缩包提供了一个方案,让用户能够在设备上实现Android和Linux操作系统的双启动。 描述中提到的“改造安卓+Linux双启动”,意味着这是一项针对现有设备的操作系统升级,允许用户在开机时选择进入Android或Linux...

    fastboot驱动(兼容win10).zip

    Fastboot是一种由谷歌开发的Bootloader接口,主要用于在设备启动过程中进行低级别的系统操作,如刷入固件、分区格式化等。这个压缩包中的驱动程序是为了解决在Windows 10环境下使用fastboot工具时可能出现的兼容性...

    谷歌官方fastboot驱动

    Fastboot是一种Bootloader接口,它允许开发者在设备启动过程中对系统进行低级别的修改和更新,通常用于刷入新的固件或者进行系统恢复。 在Android开发、调试或设备维护中,Fastboot模式是不可或缺的工具。它属于...

    Android adb tool,fastboot tool

    在Android开发和调试过程中,adb(Android Debug Bridge)和fastboot是两个至关重要的工具。它们都是Android SDK平台工具的一部分,存储在`platform-tools`目录下,如`AdbWinApi.dll`、`AdbWinUsbApi.dll`、`adb.exe...

    fastboot驱动和工具

    Fastboot是一种由Google开发的通信协议,它是Android系统恢复模式的一部分,主要用于在设备启动加载器(如U-Boot)级别对设备进行低级硬件操作,如刷写固件、分区映像等。在这个场景中,我们将主要探讨Windows平台下...

    adb fastboot 工具

    fastboot是一种低级别的刷机工具,通常在设备启动到特定的“fastboot”模式下使用。它主要用于对设备的硬件分区进行修改,如更新引导程序、系统分区、恢复分区等。fastboot的主要功能包括: 1. **写入固件**:...

    fastboot工具

    Fastboot工具是Android系统开发和调试中不可或缺的一部分,它是一种基于USB通信的低级恢复模式。这个工具允许开发者对设备的硬件进行初始化,并对设备的分区进行修改,如刷入新的bootloader、系统镜像或者恢复镜像。...

    Ubuntu下安装adb和fastboot

    Fastboot则是在设备启动过程中进入一个特殊的恢复模式,它比常规的Android系统级别更低,允许对设备的硬件进行低级操作,如更新固件、擦除分区、解锁Bootloader等。这对于刷机、恢复系统或者进行设备的初始设置非常...

    android 调试工具 adb/fastboot

    Android调试桥(adb)与快速启动(fastboot)是Android开发者和系统工程师不可或缺的工具,它们构成了Android系统调试的核心组件。这两个工具都是Android SDK(软件开发工具包)的一部分,位于`platform-tools`目录下。 ...

    嵌入式Linux学习笔记—fastboot烧写Android

    本系列为本人在自学过程中的学习笔记,如有错误欢迎大家指正。 学习资料为讯为ITOP4412开发板。 fastboot烧写Android 1、主要工具 OTG 接口烧写方式也叫 fastboot 烧写方式。 硬件:开发板、OTG线。 软件:文件夹...

    adb工具fastboot工具

    - **cmd-here.exe**:这可能是一个方便的小工具,用于在当前目录下快速打开命令提示符窗口,这对于频繁使用adb和fastboot命令的开发者来说非常有用。 总的来说,adb和fastboot工具是Android开发的核心部分,它们...

Global site tag (gtag.js) - Google Analytics