高通 MSM8K bootloader 之四: ramdump
前面说过高通平台,系统crash发生时,抓取crash ramdump非常重要,否则很难定位crash原因。
平台默认抓取ramdump的方法都有很强的局限性,如下:
1、PC端工具QPST提供的 Memory Debug Application工具。
局限性:完全信赖PC
2、sbl1将crash现场dump到外置sdcard。 boot_sd_ramdump.c
局限性:很多手机根本没有配置外置sdcard。
3、今天再看高通代码,还有种ram dump 方法,直接dump到raw partition :boot_raw_partition_ramdump .c
boot_procedure_func_type sbl1_pre_dload_procs[] =
{
............
/*-----------------------------------------------------------------------
* Ram dump to eMMC raw partition, this function will reset device
* after successful dump collection if cookie is set
*----------------------------------------------------------------------*/
(boot_procedure_func_type) boot_ram_dump_to_raw_parition,
#ifdef FEATURE_BOOT_RAMDUMPS_TO_SD_CARD
/*----------------------------------------------------------------------
* Take the Ramdumps to SD card if cookie file is
* present in SD card
*---------------------------------------------------------------------*/
boot_ram_dumps_to_sd_card,
#endif /*FEATURE_BOOT_RAMDUMPS_TO_SD_CARD*/
NULL
};
对于没有外置sdcard的手机,我考虑按如下方法改进ramdump机制,大概思路如下:
1、emmc分区添加一个400M左右的新分区,格式化成fat文件系统。
2、external/zlib中的gzip到boot_images,minigzip要针对内存压缩做一些修改。
3、boot_ram_dumps_to_sd_card函数修改:ramdump先使用minigzip对内存压缩,而后保存到添加的新分区。
根据我测试2G ram 以binary gzip压缩后都在200M左右。
4、android启动起来后,将这个添加的新分区mount到/storage/sdcard1,当作外置sdcard供用户使用,不浪费存储空间。
这种改进机制工作还是挺大的,但如果做好,对抓取ramdump是非常有好处,且一劳永逸的事情。
但具体方案是否可行?还需进一步实做!
最近又想了一下,应该不需要额外添加一个分区存储ramdump。
似乎可以使用cache分区来做这个工作。 android 默认cache分区mount成ext4格式,显然sbl无法访问。
所以,我想sbl进行ramdump时将cache分区直接格式化成fat32, 将ramddump压缩到这个fat分区,然后重启手机。
==========》两个重要工作:格式化fat32分区、并mount ; zlip压缩ramdump
重启过程中,将这个fat分区的数据拷贝到内置sdcard后,重新将cache格式化成ext4格式,供android系统使用。
==========》data mount起来,sdcard正常挂载后,将ramdump gzip 拷贝到内置sdcard,然后格式化cache分区ext4。
哈哈,可行不? 实现难度适中啊!
May be hard to develop these works in SBL ,
So , it is a good idea to move ramdump function to bootloader LK .
we can use MTK's zip : bootable/bootloader/lk/lib/zlib .
or lz4 : bootable/bootloader/lk/lib/lz4
WOW ! it is not a good idea using cache partition to save ramdump .
please using data partition tail to save ramdump !!!!~ perfect idea !
高通 MSM8K bootloader 之四: ramdump的更多相关文章
- 高通 MSM8K bootloader : SBL1 .
一. MSM8K Boot Flow 图1: 高通MSM8K平台bootloader启动流程基本类似,但具体各平台,比如MSM8974.MSM8916.MSM8994等,会有微小区别. 从上图,可以看 ...
- 高通 MSM8K bootloader之一: SBL1
MSM8K Boot Flow 转自:http://www.cnblogs.com/liang123/p/6325257.html http://blog.csdn.net/F ...
- 高通 MSM8K bootloader 之三: LK
- Android图形合成和显示系统---基于高通MSM8k MDP4平台
介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...
- 高通平台Bootloader启动流程【转】
本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...
- 高通安卓调试LCD几方面总结
来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...
- 高通LCD驱动调试
本文转载自:http://www.itgo.me/a/x6305658852004979994/lcd%20qcom 来自 :http://blog.csdn.net/dacaozuo/article ...
- 高通、猎户机型Android典型bootloader分析
1.bootloader是什么? 简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一 ...
- 高通平台的bootloader过程【转】
====================基本知识=======================LK是(L)ittle (K)ernel的缩写.高通平台android普遍采用LK作为其bootloade ...
随机推荐
- PHP Filter 函数
PHP Filter 简介 PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤. 安装 Filter 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP Filte ...
- JavaScript 流程语句知识脑图
- 分布式服务框架Dubbo
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个应用, ...
- [图论]最大流问题(Maximum flow)的定义
首先定义网络(network)N =(V,E), V表示顶点(Vertices)集合, E表示边(Edges)集合. s,t是V中的两个顶点,分别表示网络N中的源点(source)和汇点(sink). ...
- Linux 高性能服务器编程——TCP协议详解
问题聚焦: 本节从如下四个方面讨论TCP协议: TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流 TCP状态转移过程:TCP连接的任意一 ...
- pdflush的工作原理
大家知道,在linux操作系统中,写操作是异步的,即写操作返回的时候数据并没有真正写到磁盘上,而是先写到了系统cache里,随后由pdflush内核线程将系统中的脏页写到磁盘上,在下面几种情况下,系统 ...
- EBS开发性能优化之查找需要优化的程序
1.登陆数据库LINUX环境 使用 top 命令查看进程状况 [oratest@ebsdb~]$top top - 15:58:59 up 8 days, 22:04, 1 user, load ...
- 1.使用C++封装一个链表类LinkList
使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸********** ...
- Hibernate 缓存机制全面讲解
简介 为了降低应用程序访问我们的数据的时候的频率,提高数据读取的速率.比如计算机中为了缓解CPU和内存之间速度差异而引入的缓存是一样的道理.Hibernate同样对缓存进行了支持,使得程序的运行效率得 ...
- mysqldump的几个主要选项探究
0.前言 本文主要探讨 mysqldump 的几种主要工作方式,并且比较一下和 mk-parralel-dump的一些差异,为备份方式的选择提供更多的帮助. 1.mysqldump 首先来看下 mys ...