type
status
date
slug
summary
tags
category
icon
password
URL
一、问题现象
从导出的/dev/logfs中的UefiLog日志中存在乱码,且日志不全

C3F项目正常、C3F2项目异常
二、问题分析
- 从现象来看存在的乱码其实是‘0’,所以有可能是因为初始化的log buffer过大 大于实际的log buffer size,导致初始化的补0 打印了出来
- 数据乱序
下面从以上两个怀疑点验证问题
2.1 怀疑XBL log buffer size设置异常


2.1.1 follow C3F项目
从C3F2的代码来看,当前有问题的版本关于XBL log buffer的初始化 走在了静态分配的函数里,我check了C3F项目的代码,发现C3F走在了132行里面,故更改逻辑让代码走入132行
https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/723596

验证结果:现象一致,排除
2.1.2 增大XBL Log buffer
https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/720217/2

验证结果:现象一致,排除
2.1.2 减少XBL Log buffer
https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/720217/3

验证结果:现象一致,排除
2.2.3 改为动态分配XBL log buffer
https://gerrit.odm.mioffice.cn/c/platform/vendor/qcom/non-hlos/+/721722
验证结果:现象一致,排除
2.2 怀疑SBL log buffer初始化过小

初始化流程不详细介绍,主要是这块,受SCL_SBL1_BOOT_LOG_BUF_SIZE控制
C3F2:

C3F:

同时,复制正常C3F SBL阶段到ddr_training的log 保存到一个新文件,可以得到这个阶段的log正好为4KB,看起来确实是因为限制了size为4KB 导致超过4KB大小的sbl log从开头开始覆盖了。

更改为SIZE_8KB
验证结果:进EDLmode 长按电源键开机也是直接进EDLmode,没有串口log输出
更改为SIZE_6KB
验证结果:正常开机,导出的UefiLog0.txt无乱序问题


尽管打开还有乱码,但是log已经没有出现丢失,覆盖等现象。下方为对应的串口输出
