last_kmsg和ram console
相關(guān)文章
Android 7.1使用腳本保存LOGCAT和KMSG日志到文件
首先,在kernel里面通過(guò)printk吐log的時(shí)候會(huì)是下面的一個(gè)過(guò)程:
printk會(huì)將信息格式化到kernel log buffer里面去。
然后將這些格式化信息送到console去,在我們的系統(tǒng)里面有兩個(gè)console,一個(gè)是uart console,一個(gè)是ram console。uart console里面的內(nèi)容呢就是我們看到的uart log了。
#那ram console是如何工作的呢?
RAM Console是位于Internal SRAM上面的一個(gè)小的buffer。
結(jié)合上圖與下圖我們可以知道,系統(tǒng)運(yùn)行的時(shí)候kernel log將不會(huì)被記錄在RAM Console里面。
一旦發(fā)生了重啟,log將會(huì)停止記錄到RAM console,直到RAM Console再次初始化好。
在RAM Console初始化的時(shí)候會(huì)將buffer里面原有的數(shù)據(jù)做備份,拷貝到另外一個(gè)buffer,這個(gè)buffer的數(shù)據(jù)我們可以通過(guò)/proc/last_kmsg來(lái)訪(fǎng)問(wèn)。
#那結(jié)論是什么呢?
RAM Console是一種log機(jī)制,它可以記錄重啟前最后時(shí)刻的一段log,來(lái)說(shuō)明系統(tǒng)最后做了哪些事情。
只要是重啟,不管是異常重啟還是通過(guò)adb reboot,或者通過(guò)菜單重啟,都會(huì)有l(wèi)ast_kmsg,這是一種log機(jī)制,與exception機(jī)制沒(méi)有直接聯(lián)系。
#但是這里面也有一些限制:
由于重啟之后DRAM數(shù)據(jù)會(huì)丟失,所以只能將RAM Console放到Internal SRAM。
但是由于Internal SRAM空間有限,只能劃分出7KB~9KB的空間給RAM Console使用,所以能夠記錄的log是很短的。
推薦閱讀:
? ??專(zhuān)輯|Linux文章匯總
? ??專(zhuān)輯|程序人生
? ??專(zhuān)輯|C語(yǔ)言
嵌入式Linux
微信掃描二維碼,關(guān)注我的公眾號(hào)?
總結(jié)
以上是生活随笔為你收集整理的last_kmsg和ram console的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IAR (10.10.1) 安装与破解
- 下一篇: 性能强悍的MCU,主频干到GHz