Android 启动性能优化 - uboot篇
2012-06-06 22:10
225 查看
http://blog.csdn.net/kickxxx/article/details/7361715
时间测量
在mx51平台上,使用get_timer可以获得比较精确的计时,get_timer的使用贯穿了uboot性能调整的整个过程
性能优化方法
1. 减小uboot镜像的大小,去掉不需要的驱动,不需要的命令,减少uboot的大小可以从两个方面获得好处,首先会节省驱动初始化时间,其次会使uboot镜像变小,从磁盘读取uboot镜像所需的时间也变小了。
2. 优化generic 的memcpy memset函数,通用的C实现 代码简单,但是性能较差,对于大块内存的操作,比如镜像的memcpy和memmove,会有十毫秒以上的优化空间,可以参考glibc和bionic的实现,C和汇编版本都行(二者性能差别不大)。
3. 优化读取镜像的IO速度:去掉或者改变不必要的延时;在我的平台上是MMC,原始的mmc驱动是PIO模式,改为DMA方式后,读取速度提升一倍以上达到20MB。IO占据了uboot启动时间的大部分,这部分的优化是必须的。
4. 合并kernel和ramdisk镜像的读取过程,一次读取两个镜像,这样可以合并两次启动IO开销为一次。
实现上有两种选择,第一,mkimage生成multi类型的镜像;第二,对读取过程做优化,一次初始化执行两次IO; 第一种最优,实现上稍微麻烦一点。
5. 缩小envoriment区大小,缺省的envoriment 区尺寸较大,根本用不上,改成16K即可。当然,最后作为产品,是不需要读取envoriment的。
6. 去掉image 的verify过程,这个节省时间比较小。
7. uboot中会把读取的kernel镜像稍微处理后,copy到执行位置,然后执行kernel镜像,这个copy对于未压缩的kernel是多余的,可以调整kernel镜像的加载位置,使得处理后的镜像恰好就在执行位置,避免了copy过程,对于2M的kernel,大约可节约10ms.
结论
uboot的启动过程 读取kernel 和ramdisk镜像的IO占了较大部分时间,优化的上限可以参考IO设备的速度上限;其他部分优化后总占用时间不应该超过100ms。
在我的开发板上,优化后启动时间大概为300多ms,其中load image大概为200ms
时间测量
在mx51平台上,使用get_timer可以获得比较精确的计时,get_timer的使用贯穿了uboot性能调整的整个过程
性能优化方法
1. 减小uboot镜像的大小,去掉不需要的驱动,不需要的命令,减少uboot的大小可以从两个方面获得好处,首先会节省驱动初始化时间,其次会使uboot镜像变小,从磁盘读取uboot镜像所需的时间也变小了。
2. 优化generic 的memcpy memset函数,通用的C实现 代码简单,但是性能较差,对于大块内存的操作,比如镜像的memcpy和memmove,会有十毫秒以上的优化空间,可以参考glibc和bionic的实现,C和汇编版本都行(二者性能差别不大)。
3. 优化读取镜像的IO速度:去掉或者改变不必要的延时;在我的平台上是MMC,原始的mmc驱动是PIO模式,改为DMA方式后,读取速度提升一倍以上达到20MB。IO占据了uboot启动时间的大部分,这部分的优化是必须的。
4. 合并kernel和ramdisk镜像的读取过程,一次读取两个镜像,这样可以合并两次启动IO开销为一次。
实现上有两种选择,第一,mkimage生成multi类型的镜像;第二,对读取过程做优化,一次初始化执行两次IO; 第一种最优,实现上稍微麻烦一点。
5. 缩小envoriment区大小,缺省的envoriment 区尺寸较大,根本用不上,改成16K即可。当然,最后作为产品,是不需要读取envoriment的。
6. 去掉image 的verify过程,这个节省时间比较小。
7. uboot中会把读取的kernel镜像稍微处理后,copy到执行位置,然后执行kernel镜像,这个copy对于未压缩的kernel是多余的,可以调整kernel镜像的加载位置,使得处理后的镜像恰好就在执行位置,避免了copy过程,对于2M的kernel,大约可节约10ms.
结论
uboot的启动过程 读取kernel 和ramdisk镜像的IO占了较大部分时间,优化的上限可以参考IO设备的速度上限;其他部分优化后总占用时间不应该超过100ms。
在我的开发板上,优化后启动时间大概为300多ms,其中load image大概为200ms
相关文章推荐
- Android 启动性能优化 - uboot篇
- Android 启动性能优化 - uboot篇
- Android性能优化之启动加速
- Android性能优化之app启动时间测量
- Android 性能优化之应用启动
- Android性能优化之加快应用启动速度
- Android 性能优化——解决应用启动白屏/黑屏问题
- android性能优化学习笔记(加快应用程序启动速度:)
- Android 性能优化-启动时间
- Android性能优化系列之App启动优化
- Android性能优化典范第5季-优化启动时间
- Android性能优化之App应用启动分析与优化
- Android 启动性能优化 - kernel篇
- Android 性能优化——启动时间优化指南
- Android性能优化第(八)篇---App启动速度优化上
- android 性能优化 -- 启动过程 冷启动 热启动
- Android性能优化(一)之启动加速35%
- Android性能优化之APP启动白屏
- Android性能优化学习之App启动性能优化
- android 性能优化 -- 启动过程 冷启动 热启动