This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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



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

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

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

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

如何优化?

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

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

由于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进行

上述部分可以参考www.deyisupport.com/.../52550.aspx

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

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

该部分可以参考www.deyisupport.com/.../68813.aspx