TI中文支持网
TI专业的中文技术问题搜集分享网站

Linux启动时间优化讨论一:基本优化

关于Linux启动时间,相信很多应用上都有要求。

优化前,需要明确目标和目前的状况,即

(1)目标启动时间:一般以系统上电到Linux命令行提示登陆为前后界限,或者从上电到应用程序运行,或者是上电到显示QT界面,目标启动时间为多少秒为目标。

(2)目前系统启动时间的情况: 这是优化必须做的工作。必需知道目前启动时间为多少秒,通过多种方式,比如UART输出前加时间打印来确定启动过程中哪些部分的初始化,或哪些部分读写flash最占用时间,以便优化时有的放矢。

如何优化?

首先,使用excel表格,列出如下信息:

  • 目标启动时间
  • 系统中必须的外设
  • 优化前测试的前5大比较占时间的部分,如外设或flash读写操作: 如何通过在UART打印信息前加时间信息,可以参考http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Boot_Time_Reduction

其次, 针对第一步的分析进行优化,基本的思想是精简系统和解决瓶颈。

由于TI sdk包中linux源码是针对多种EVM板的。简单来说,即一套软件需要支持包括GPEVM, Starterkit, Beaglebone, Beaglebone Black, ICE, IDK等多种EVM板。

所以也不能理解,其代码冗余性比价高。而客户在具体应用时,所需要的系统应用是固定的,所以需要去掉不需要的外设初始化,及用于兼容多种EVM而添加的代码。

在此,

(1)去掉不需要的外设初始化代码

该部分设计SPL, U-BOOT, linux三部分, 目标很明确,主要

SPL: u-boot\board\ti\am335x\board.c中void s_init(void)函数

void am33xx_spl_board_init(void)函数

U-boot:  u-boot\include\conifgs\am335x_evm.h 通过对宏的设置去掉某些外设的初始化

Linux, 可通过menuconfig进行

上述部分可以参考http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/52550.aspx

(2)去除为兼容多种EVM而添加的冗余设计

  • I2C及读EEPROM程序:为了兼容多种EVM,TI在没种EVM上都设计了一个EEPROM,启动时通过I2C读取EEPROM的内容进行判断是哪一种EVM,然后调用相关的板级配置结构体。可以去除该部分的I2C配置及读EEPROM的操作。 
  • PMU配置及调用程序:部分客户不需要PMU进行电容管理,当然也使用的非PMU,所以可以对u-boot和linux的该部分进行去除。

该部分可以参考http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/68813.aspx

leo chen:

这个话题不错,最好能够把优化前和优化后的时间贴上来,有个比较

文件系统也是可以更换的

我觉得使用ramdisk比ext4要快一些

赞(0)
未经允许不得转载:TI中文支持网 » Linux启动时间优化讨论一:基本优化
分享到: 更多 (0)