uboot启动时间优化
最近在搞启动时间优化,首先必须要知道整个启动流程,然后统计时间消耗在哪个阶段,具体消耗多少,然后有针对性的去优化,做到有的放矢。
首先是时间统计函数
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启动时间优化相关推荐
- 嵌入式linux的调试时间,嵌入式LINUX启动时间优化
目录: 1. 实践过程 2. 参考帖子 2.1 嵌入式Linux-启动时间优化: 要点如下: 优化第一步: ?? 修改u-boot,把QSPI的读取速度进行提升 优化第二步: ??? 对内核进行裁剪, ...
- Linux内核启动速度优化,嵌入式Linux启动时间优化的秘密之五-Bootloader
描述 本文主要讲述嵌入式Linux启动时间优化的秘密,我们继续上篇没有讲完的嵌入式Linux启动时间优化方法,本文主要会讲Bootloader.想看上一篇的请查看本文结尾的链接. Bootloader ...
- Linux系统启动时间优化
优化系统启动时间 前提(******重点): (1) 首先要熟悉系统启动流程,以及每个流程中具体所做的事情 (2) 测量系统启动流程中每一步所花费的时间(这个时间需要与最终优化时间进行对比) A. 分 ...
- struts启动时加载_iOS优化篇之App启动时间优化
原文:橘子不酸丶http://www.zyiner.com/article/5 前言 最近由于体验感觉我们的app启动时间过长,因此做了APP的启动优化.本次优化主要从三个方面来做了启动时间的优化,m ...
- T级内存,创建效率提升10倍以上,阿里云 KVM异构虚拟机启动时间优化实践
简介:阿里云工程师李伟男和郭成在 KVM Forum 2020 上详细介绍了阿里云 KVM 虚拟机创建及启动时间优化的具体技术实现,本文根据其演讲整理而成. 对于云计算用户来说,过长的 KVM 虚拟机 ...
- Linux脚本5秒后启动程序,嵌入式Linux启动时间优化的秘密之四-启动脚本
本文主要讲述嵌入式Linux启动时间优化的秘密,我们继续上篇没有讲完的嵌入式Linux启动时间优化方法,本文主要会讲启动脚本.想看上一篇的请查看本文结尾的链接. 启动脚本 1.优化初始化脚本和系统启动 ...
- 博通机顶盒平台启动时间优化(一)
博通机顶盒平台启动时间优化(一)CFE启动时间优化 博通机顶盒BCM97583平台上,默认不做裁剪和优化的情况下,从上电CFE启动到进入Linux命令行,这个过程大约需要4.48S.通过一系列功能裁剪 ...
- IOS App 启动时间优化实战
当用户使用一款IOS App,打开App界面时,过长的等待时间会使用户陷入焦虑,对用户的留存率产生不良影响,虽然精致的启动页能对等待焦虑有一定的缓解作用,但是最好还是尽可能地减少App的启动时间.最近 ...
- Linux 启动时间优化实战,2.41 秒启动应用!
来源于:老吴嵌入式 今天看了一个关于启动优化的讲座,简单总结一下. 本文的目标是尝试一些比较简单有效的方法,并不会覆盖所有的优化技巧. 目标系统 硬件: Beagle Bone Black (Cort ...
最新文章
- 成就更卓越、更有意义的人生
- 分享一套超棒的iOS “空状态” (empty state) 界面UI设计
- codeforces round25
- javascript window和document
- JavaScript代码(一)
- MFC UI按钮多线程
- leetcode413. 等差数列划分(动态规划)
- 【Machine Learning 五】Coursera无法观看课程解决方案
- 2018年4月10日--python解决乱码和作业
- jQuery模拟鼠标点击事件失效的问题
- CleanMyMac v4.10.1支持Monterey 12.x
- 陕西大数据产业建设总投资达500亿元
- RestTemplate请求oauth获取token报401错误
- 漫步者蓝牙只有一边有声音_为什么我蓝牙耳机只有一边有声音啊.
- 一不小心薅了「支付宝」的羊毛
- 室内地图导航应用小程序-前端知识体系图
- 瑞萨单片机c语言程序,瑞萨单片机学习笔记(1)基本配置
- linux 好书推荐
- Javaer换坑指南之Linux
- FPGA分频电路实现(奇数,偶数,小数半分频,任意分频)
热门文章
- @Async不生效原因
- 参观 Google 总部(截图)
- 创文html5作品欣赏,我市举办创文作品展暨陆丰记忆20年图片展
- 2021年11月墨天轮国产数据库排行榜:openGauss闯入前三,Kingbase流行度与日俱增,TDengine厚积薄发
- 安卓使用无障碍服务监听微信和QQ的收款信息
- 电脑系统32位和64位有哪些区别 32位和64位是什么意思
- SSM毕设项目唯物志公司班服商店管理系统beng4(java+VUE+Mybatis+Maven+Mysql)
- [ZZ]淘宝被曝更像媒体隐忧:80%收入来源在线广告
- 现货黄金技术培训:减少无谓
- 区块宝周报:区块链一周大事排行榜0930