Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1385677
  • 博文数量: 478
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4833
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 11:12
文章分类

全部博文(478)

文章存档

2019年(1)

2018年(27)

2017年(21)

2016年(171)

2015年(258)

我的朋友

分类: Android平台

2015-09-09 10:08:57

[FAQ09185]log里面有last_kmsg是系统有异常了么?
2013-09-27
软件分支GB3ICSICS2JB...
FAQs 66 of 108
为什么开机30s机器就重启了? 如何在代码中Kick Watchdog呢?

内容

[DESCRIPTION]
有时候我们在mtklog的文件夹里面会看到last_kmsg这样的文件。那这是我们的系统出现了异常了么?我们先讲答案,这两者之间没有直接的联系。再来看last_kmsg是怎么产生的。
 
[KEYWORD]
last_kmsg, 异常, ram console, log, mtklog,
 
[SOLUTION]
在讲last_kmsg之前,我们讲一下什么是ram console。
 
首先,在kernel里面通过printk吐log的时候会是下面的一个过程:
1. printk会将信息格式化到kernel log buffer里面去。
2. 然后将这些格式化信息送到console去,在我们的系统里面有两个console,一个是uart console,一个是ram console。uart console里面的内容呢就是我们看到的uart log了。
那ram console是如何工作的呢?
1. RAM Console是位于Internal SRAM上面的一个小的buffer。
2. 结合上图与下图我们可以知道,系统运行的时候kernel log将不会被记录在RAM Console里面。
3. 一旦发生了重启,log将会停止记录到RAM console,直到RAM Console再次初始化好。
4. 在RAM Console初始化的时候会将buffer里面原有的数据做备份,拷贝到另外一个buffer,这个buffer的数据我们可以通过/proc/last_kmsg来访问。
 
那结论是什么呢?
1. RAM Console是一种log机制,它可以记录重启前最后时刻的一段log,来说明系统最后做了哪些事情。
2. 只要是重启,不管是异常重启还是通过adb reboot,或者通过菜单重启,都会有last_kmsg,这是一种log机制,与exception机制没有直接联系。
 
但是这里面也有一些限制:
1. 由于重启之后DRAM数据会丢失,所以只能将RAM Console放到Internal SRAM。
2. 但是由于Internal SRAM空间有限,只能划分出7KB~9KB的空间给RAM Console使用,所以能够记录的log是很短的。
阅读(3397) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~