概述

 

 

 

blackbox模块驻留在内核驱动层,与平台驱动对接,检测底层整机重启故障。当有故障发生时,blackbox会自动重启设备并在data/log/bbox 目录下生成对应时间点的故障日志同时在history.log中写入故障事件。

blackbox依赖于内核原生pstore系统,把相关故障信息转存到一个不能被其他用户重写的指定RAM区域或者BLK块设备上,重启后,这个区域会被挂载到pstore(默认sys/fs/pstore目录),这样就可以在用户空间以文件的形式访问这些数据。

故障检测流程

适配步骤:

1、配置内核Kconfig参数

在产品内核配置文件中添加pstore blackbox kconfig配置参数

1)、配置pstore

CONFIG_PSTORE=y
# 记录内核控制台消息 
CONFIG_PSTORE_CONSOLE=y
# 存储自定义故障日志 
CONFIG_PSTORE_BLACKBOX=y
# Log panic/oops to a RAM buffer
CONFIG_PSTORE_RAM=y
#存储压缩默认压缩方式ZLIB 
CONFIG_PSTORE_COMPRESS=y
CONFIG_PSTORE_COMPRESS_DEFAULT="deflate"
CONFIG_PSTORE_DEFLATE_COMPRESS=y
CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y

 

2)、配置blackbox

CONFIG_BLACKBOX=y
CONFIG_BLACKBOX_LOG_ROOT_PATH="/data/log/bbox"
CONFIG_BLACKBOX_LOG_PART_REPRESENTATIVE="/data"
CONFIG_BLACKBOX_STORAGE_BY_PSTORE_RAM=y

 

 

2、DTS文件中配置预留内存

在产品dts配置清单中添加预留内存配置:blackbox-size 

例如:

ramoops:ramoops@bff80000{
    compatible = "ramoops";
    reg = <0xbff80000 0x40000>;
    record-size = <0x8000>;
    console-size = <0x8000>;
    pmsg-size = <0x8000>;
    ftrace-size = <0x0>;
    blackbox-size = <0x8000>;
}

 

 

3、添加system_adapter.c适配代码

1)、system_adapter.c获取并添加:

下载社区3.2release 代码并编译,获取目录out/kernel/src_tmp/linux-5.10/drivers/staging/blackbox/rockchip 下的system_adapter.c文件并复制到 产品代码目录/kernel/linux/linux-5.10/drivers/staging/blackbox 文件夹下

2)、system_adapter.c编译:

在产品代码目录/kernel/linux/linux-5.10/drivers/staging/blackbox 文件中的Makefile文件中添加编译指

obj-$(CONFIG_BLACKBOX_STORAGE_BY_PSTORE_RAM) +=system_adapter.o
 

4、编译并测试

1)、清除out目录,重新整编整个项目,并烧写开发板

2)、使用指令模拟生成一个panic故障

hdc shell
echo c > /proc/sysrq-trigger

3)、测试结果:

      1、系统自动重启

      2data/log/bbox 文件夹中新增一个故障文件夹,其中有last_kmsg日志,日志中包含一条panic故障信息和堆栈。

      3data/log/bbox 文件中history.log 中新增加一条category[PANIC],event[PANIC] 故障记录

上述3个结果均出现说明功能适配成功。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐