最近在搞启动时间优化,首先必须要知道整个启动流程,然后统计时间消耗在哪个阶段,具体消耗多少,然后有针对性的去优化,做到有的放矢。

首先是时间统计函数
rct_timer_get_count()
这个是安霸平台提供的函数,读取ticks寄出去的值,然后再转换成毫秒ms,用这个函数来统计时间,可靠性和准确度还是非常有保障。

通过时间打印,发现在镜像加载时差不多使用了700ms时间,显然这个时间是有大量提升空间的。

uboot启动时间优化,网上查找了下,有好几个方面,具体要根据自己的代码来取舍。

1、打开icache和dcache
尝试将cache打开,效果立竿见影,读取镜像时间降到280ms左右
那么问题就来了,cache是什么?启动速度加快这么多,为什么默认没有将它打开呢?
第一个问题,网上搜一下,或者是专业的书籍上应该可以找到答案,反正我是没怎么搞清楚。。。
第二个问题,找了下,基本上就是运行速度加快的机制,让主处理器直接从cache中去取指令和数据,在系统起来之后,长时间的运行,会导致读取不到正确的数据。
列出一些文章链接,有兴趣的去看看
http://blog.csdn.net/bytxl/article/details/50275377
http://blog.csdn.net/iodoo/article/details/8954014
(刚说不稳定,真的就暴出来了,开启cache后,用tftp下载大文件时,会中断死机)

2、uboot启动流程
建议看下面这篇文章:
http://blog.csdn.net/andy_wsj/article/details/8614905
主要是它把内核加载的两种方式讲出来了,而且正好是我需要的,这一部分到时我也会整理一篇文章出来的

u_boot_hush_start –> install_auto_complete –> getenv(“bootcmd”) –> abortboot(bootdelay) –> parse_string_outer

u_boot_hush_start和parse_string_outer开启以hush的方式来解析命令,parse_string_outer将bootcmd的启动运行命令逐一解析。
bootcmd=kload 0x2000000;bootm 0x2000000
kload为加载内核镜像命令,bootm为运行内核命令。
parse_string_outer具体实现不要深入去追究它的实现,它的功能就是去逐一解析bootcmd的命令。

kload实现相对较简单,本质就是将内核镜像从flash中加载到内存中指定的位置。
bootm命令,是uboot自身命令,其实现过程可参考下面这篇文章:
http://blog.csdn.net/g_salamander/article/details/8463854
最后调用的启动函数,arm架构下是bootm.c的do_bootm_linux
do_bootm流程:
bootm_start –>disable_interrupts –> usb_stop –> bootm_load_os –> boot_os[] –> boot_fn

bootm_start :分析镜像信息,包括内核镜像头信息,加载地址,长度,压缩类型等。主要调用函数:boot_get_kernel –> image_get_kernel
bootm_load_os:主要判段镜像是否需要解压,并且将镜像移动到加载地址

abortboot(bootdelay)

uboot启动时间优化相关推荐

  1. 嵌入式linux的调试时间,嵌入式LINUX启动时间优化

    目录: 1. 实践过程 2. 参考帖子 2.1 嵌入式Linux-启动时间优化: 要点如下: 优化第一步: ?? 修改u-boot,把QSPI的读取速度进行提升 优化第二步: ??? 对内核进行裁剪, ...

  2. Linux内核启动速度优化,嵌入式Linux启动时间优化的秘密之五-Bootloader

    描述 本文主要讲述嵌入式Linux启动时间优化的秘密,我们继续上篇没有讲完的嵌入式Linux启动时间优化方法,本文主要会讲Bootloader.想看上一篇的请查看本文结尾的链接. Bootloader ...

  3. Linux系统启动时间优化

    优化系统启动时间 前提(******重点): (1) 首先要熟悉系统启动流程,以及每个流程中具体所做的事情 (2) 测量系统启动流程中每一步所花费的时间(这个时间需要与最终优化时间进行对比) A. 分 ...

  4. struts启动时加载_iOS优化篇之App启动时间优化

    原文:橘子不酸丶http://www.zyiner.com/article/5 前言 最近由于体验感觉我们的app启动时间过长,因此做了APP的启动优化.本次优化主要从三个方面来做了启动时间的优化,m ...

  5. T级内存,创建效率提升10倍以上,阿里云 KVM异构虚拟机启动时间优化实践

    简介:阿里云工程师李伟男和郭成在 KVM Forum 2020 上详细介绍了阿里云 KVM 虚拟机创建及启动时间优化的具体技术实现,本文根据其演讲整理而成. 对于云计算用户来说,过长的 KVM 虚拟机 ...

  6. Linux脚本5秒后启动程序,嵌入式Linux启动时间优化的秘密之四-启动脚本

    本文主要讲述嵌入式Linux启动时间优化的秘密,我们继续上篇没有讲完的嵌入式Linux启动时间优化方法,本文主要会讲启动脚本.想看上一篇的请查看本文结尾的链接. 启动脚本 1.优化初始化脚本和系统启动 ...

  7. 博通机顶盒平台启动时间优化(一)

    博通机顶盒平台启动时间优化(一)CFE启动时间优化 博通机顶盒BCM97583平台上,默认不做裁剪和优化的情况下,从上电CFE启动到进入Linux命令行,这个过程大约需要4.48S.通过一系列功能裁剪 ...

  8. IOS App 启动时间优化实战

    当用户使用一款IOS App,打开App界面时,过长的等待时间会使用户陷入焦虑,对用户的留存率产生不良影响,虽然精致的启动页能对等待焦虑有一定的缓解作用,但是最好还是尽可能地减少App的启动时间.最近 ...

  9. Linux 启动时间优化实战,2.41 秒启动应用!

    来源于:老吴嵌入式 今天看了一个关于启动优化的讲座,简单总结一下. 本文的目标是尝试一些比较简单有效的方法,并不会覆盖所有的优化技巧. 目标系统 硬件: Beagle Bone Black (Cort ...

最新文章

  1. 成就更卓越、更有意义的人生
  2. 分享一套超棒的iOS “空状态” (empty state) 界面UI设计
  3. codeforces round25
  4. javascript window和document
  5. JavaScript代码(一)
  6. MFC UI按钮多线程
  7. leetcode413. 等差数列划分(动态规划)
  8. 【Machine Learning 五】Coursera无法观看课程解决方案
  9. 2018年4月10日--python解决乱码和作业
  10. jQuery模拟鼠标点击事件失效的问题
  11. CleanMyMac v4.10.1支持Monterey 12.x
  12. 陕西大数据产业建设总投资达500亿元
  13. RestTemplate请求oauth获取token报401错误
  14. 漫步者蓝牙只有一边有声音_为什么我蓝牙耳机只有一边有声音啊.
  15. 一不小心薅了「支付宝」的羊毛
  16. 室内地图导航应用小程序-前端知识体系图
  17. 瑞萨单片机c语言程序,瑞萨单片机学习笔记(1)基本配置
  18. linux 好书推荐
  19. Javaer换坑指南之Linux
  20. FPGA分频电路实现(奇数,偶数,小数半分频,任意分频)

热门文章

  1. @Async不生效原因
  2. 参观 Google 总部(截图)
  3. 创文html5作品欣赏,我市举办创文作品展暨陆丰记忆20年图片展
  4. 2021年11月墨天轮国产数据库排行榜:openGauss闯入前三,Kingbase流行度与日俱增,TDengine厚积薄发
  5. 安卓使用无障碍服务监听微信和QQ的收款信息
  6. 电脑系统32位和64位有哪些区别 32位和64位是什么意思
  7. SSM毕设项目唯物志公司班服商店管理系统beng4(java+VUE+Mybatis+Maven+Mysql)
  8. [ZZ]淘宝被曝更像媒体隐忧:80%收入来源在线广告
  9. 现货黄金技术培训:减少无谓
  10. 区块宝周报:区块链一周大事排行榜0930