linux启动速度优化

#1. 概述

##1.1 编写目的
介绍TinaLinux下启动速度优化使用方法。

##1.2 适用范围
硬件平台:全志R/V/F/MR/H系列芯片。

软件平台: Tina V3.5 及其后续版本。

##1.3 相关人员
适用于TinaLinux平台的客户及相关技术人员。

#2. 启动速度优化简介
启动速度是嵌入式产品一个重要的性能指标,更快的启动速度会让客户有更好的使用体验,在某些方面还会节省能耗,因为可以直接关机而不需要休眠。

启动速度优化可提升产品的竞争力。对于某些系统来说,启动速度是硬性要求。

##2.1 启动流程

TinaLinux系统当前的启动流程如下:

brom --> boot0 --> (monitor/secure os) --> uboot --> rootfs --> app

brom固化在IC内部,芯片出厂后就无法更改。

后续将从boot0开始分阶段介绍启动优化的方法。

对于某些方案,会存在monitor或secure os,这两者耗时很短,本文略过。

下文涉及到一些配置文件,提前在此说明。

env配置文件路径:

tina/device/config/chips/<chip>/configs/<board>/env.cfg  #优先级高
tina/device/config/chips/<chip>/configs/<board>/linux/env-<kernel-version>.cfg  #优先级中
tina/device/config/chips/<chip>/configs/default/env.cfg  #优先级低
tina/target/allwinner/<board>/configs/env-<kernel-version>.cfg #旧SDK

sys_config.fex路径:

tina/device/config/chips/<chip>/configs/<board>/sys_config.fex  #新SDK
tina/target/allwinner/<board>/configs/sys_config.fex #旧SDK

uboot-board.dts路径:

tina/device/config/chips/<chip>/configs/<board>/uboot-board.dts

::: warning
如果存在uboot-board.dts,uboot会使用uboot-board.dts中配置;如果不存在uboot-board.dts,uboot会使用sys_config.fex中的配置。
:::

##2.2 测量方法

###2.2.1 printk time
打开kernel配置,使能如下选项:

kernel hacking --->
    [*] Show timing information on printks

linux4.9

kernel hacking --->
    	printk and dmesg options  ---> 
    		[*] Show timing information on printks

将会在内核的log前加入时间戳。

注: 此方法主要用来测量内核启动过程中各个阶段的耗时。

###2.2.2 initcall_debug

修改env文件, 在kernel的cmdline中加入参数,

# 增加initcall_debug变量
initcall_debug=1

# 将initcall_debug=${initcall_debug} 加入 setargs_xxx 中,如 setargs_nand, setargs_mmc, setargs_nor, setatgs_nand_ubi 等,
setargs_nand=setenv bootargs console=${console} earlyprintk=${earlyprintk} root=${nand_root} initcall_debug=${initcall_debug} init=${init}

开启之后,启动中会打印每个initcall函数调用及其耗时。

注: 此方法主要用来测量内核initcall的耗时。

一般需同时配置上内核符号表,即 kallsyms 选项,以打印函数名。

###2.2.3 bootgraph
在内核源码中自带了一个工具(scripts/bootgraph.pl)可用于分析启动时间。

  • kernel编译时需要包含CONFIG_PRINTK_TIME选项。
  • 在kernel cmdline加上"initcall_debug=1"
  • 在系统启动完毕后执行"dmesg | perl $(Kernel_DIR)/scripts/bootgraph.pl > output.svg"
  • 使用SVG浏览器(比如Inkscape,Gimp,Firefox等)来查看输出文件output.svg。

注: 此方法主要用来测量内核启动过程中各个阶段的耗时。

###2.2.4 bootchart
bootchart是一个用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值