当前位置: 首页 > news >正文

Android设备日志分析与电源管理问题

这份日志显示了一个Android设备从唤醒(Resume)到再次休眠(Suspend)的完整过程,其中出现了两个关键错误:

主要问题分析:

1.MSDC/eMMC通信失败(核心问题)

[149013.510436][C1000000] mtk-msdc 11230000.mmc: msdc_cmd_done: cmd=6 arg=0x30F0001; rsp 0x0; cmd_error=-110; host_error=0x2 [149013.510513][C1000000] mtk-msdc 11230000.mmc: msdc_cmd_done: cmd=6 arg=0x30F0001; rsp 0x0; cmd_error=-110; host_error=0x2
  • 错误代码-110=ETIMEDOUT(超时错误)
  • 命令6:MMC_SWITCH(切换eMMC工作模式)
  • 具体表现:eMMC存储控制器在尝试切换模式时无响应,连续两次失败

2.设备访问权限违规(DEVAPC Violation)

[149013.511080][C1000000] [DEVAPC]: catch it from INFRAAXI_MI Master is: MCU_AP_M [149013.511096][C1000000] [DEVAPC]: Violation - master: MCU_AP_M access violation slave: MSDC0_S-1 [149013.511108][C1000000] [DEVAPC]: Reason: power/clock is not enabled
  • 违规源:MCU_AP_M(主处理器)尝试访问MSDC0(eMMC控制器)
  • 根本原因电源或时钟未开启状态下进行了非法访问
  • 违规类型:WRITE Violation(写操作违规)

完整的事件链分析:

阶段1:正常唤醒(149012.91秒附近)

  • 系统从休眠中恢复,由WLAN中断触发
  • eMMC控制器正常初始化,进行HS400调校
  • 各模块(WLAN、BT、CAMERA等)依次恢复

阶段2:RPMB操作期间(149013.48秒附近)

  • Trustonic TEE(安全环境)进行RPMB(安全存储)操作
  • 读取和写入RPMB分区数据
  • 这些操作触发了对eMMC的访问

阶段3:系统再次休眠(149013.42秒)

  • 系统准备进入s2idle(浅度休眠)
  • 开始冻结用户进程和可冻结任务
  • 各模块开始挂起流程

阶段4:错误发生(149013.51秒)

  1. eMMC超时:在休眠过程中,eMMC控制器无响应
  2. 访问违规:由于eMMC时钟/电源可能已关闭,但MCU仍尝试访问
  3. 系统状态:此时已开始关闭外设电源,但TEE的RPMB操作仍在进行

根本原因推断:

  1. 时序竞争:在系统休眠过程中,TEE的RPMB操作与eMMC控制器电源管理存在竞争条件

  2. 电源管理冲突

    • eMMC控制器正在被挂起(msdc_runtime_suspend
    • 但安全环境(TEE)仍在进行RPMB读写操作
    • 导致访问时时钟/电源已部分关闭
  3. 可能的具体原因

    • RPMB操作未在eMMC挂起前完成
    • eMMC控制器提前进入低功耗状态
    • 电源管理策略冲突

影响评估:

  • 严重性:中度
  • 影响范围:可能影响RPMB数据完整性
  • 系统稳定性:可能导致休眠失败或数据损坏

建议解决方向:

  1. 检查TEE驱动:确保RPMB操作在系统休眠前完成
  2. 调整挂起顺序:eMMC控制器应在所有安全操作完成后才挂起
  3. 增加同步机制:在eMMC挂起和RPMB操作间添加同步锁
  4. 调试电源管理:检查MSDC0的时钟和电源管理策略

这是一个典型的电源管理时序问题,需要协调TEE安全操作与eMMC控制器电源管理的先后顺序。

系统恢复(Resume)过程:

一开始,系统从挂起状态恢复,由IRQ 138(wlan0)触发。

各个模块(如MDP、SCP、VCP、WLAN、BT等)依次恢复。

eMMC(msdc)进行了重新初始化(包括时钟设置和调校)。

系统再次挂起(Suspend)过程:

在恢复后不久(约0.5秒后),系统再次进入挂起状态(s2idle)。

挂起过程开始,冻结用户空间进程和剩余可冻结任务。

在挂起过程中,Trustonic TEE(可信执行环境)进行了多次RPMB(Replay Protected Memory
Block)操作,包括读取和写入。

错误发生:

在挂起过程中,出现了两个主要错误: a. eMMC命令超时(cmd_error=-110)。 b.
设备访问权限(DEVAPC)违规(Violation)。

错误分析:

a. eMMC命令超时:

在时间戳149013.510436和149013.510513,eMMC控制器(msdc)在发送命令6(CMD6)时超时(cmd_error=-110),这通常表示设备无响应。

这可能是由于在挂起过程中,eMMC设备已经进入低功耗状态,或者时钟被关闭,导致无法响应命令。

b. 设备访问权限违规:

紧接着,在149013.510595开始,出现了设备访问权限违规(DEVAPC)的中断。

违规信息显示,master(MCU_AP_M)试图访问slave(MSDC0_S-1)时发生违规,原因是“power/clock is
not enabled”(电源/时钟未开启)。

这进一步证实了在挂起过程中,eMMC的时钟或电源可能已经被关闭,但仍有访问尝试。

可能的根本原因:

在挂起过程中,系统可能正在关闭eMMC控制器的时钟或电源,而与此同时,TEE的RPMB操作仍在进行,导致eMMC设备无法响应命令,进而产生超时和访问违规。

日志中的其他相关事件:

在挂起过程中,TEE进行了多次RPMB操作,包括读取和写入。这些操作可能需要访问eMMC设备。

在eMMC命令超时之前,有msdc_runtime_suspend: success to release
vcore的日志,表明eMMC控制器正在被挂起(可能正在关闭电源或时钟)。

结论:

这个错误是由于在系统挂起过程中,eMMC设备被挂起(电源/时钟关闭)的同时,TEE的RPMB操作仍在尝试访问eMMC,导致访问超时和违规。

建议的解决方向:

检查TEE的RPMB操作在系统挂起过程中的处理。确保在挂起过程中,所有对eMMC的访问都已完成,并且挂起eMMC控制器的操作应在这些访问之后进行。

检查系统挂起和恢复过程中eMMC控制器与TEE的同步问题,可能需要调整挂起顺序或增加同步机制。

http://www.cnnetsun.cn/news/100158.html

相关文章:

  • 基于单片机的智能镜子系统设计(有完整资料)
  • 国产化替代SSD的标杆之路:天硕TOPSSD以自主可控存储解决方案重塑高端工业存储格局
  • EmotiVoice本地化部署优势:数据安全与响应效率兼得
  • 【Java毕设全套源码+文档】基于springboot的数据库课程在线教学系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 【Java毕设全套源码+文档】基于springboot的实验室安全考试系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 基于QT(C++)实现的翻金币游戏
  • 基于 Spring·Boot和 Vue 框架的校园快递代领系统设计与实现
  • NVIDIA设置疑难杂症诊所:万字终极实战指南
  • 边缘Agent的Docker监控实践(资源利用率提升90%的秘密)
  • 揭秘Docker Scout漏洞导出功能:如何快速获取镜像安全报告
  • 【云原生Agent资源调度实战】:Docker环境下高效分配CPU与内存的5大黄金法则
  • 增长有毒?流血三闯港股!希迪智驾带病叩钟:115亿市值撑得住“白条狂欢”吗?
  • 多模态Agent性能骤降?可能是Docker网络隔离没做好(附诊断清单)
  • 为什么你的Docker镜像总被攻破?:可能是扫描频率设置错了
  • 背胶条分类识别:基于计算机视觉的修复状态差异检测与质量评估系统
  • 【新】基于SSM的高校实验室管理系统【包括源码+文档+调试】
  • Python 爬虫实战:沪深 300 股票(下)—— 适当进阶!爬取往期批量数据
  • 超声波传感器:无人机低空飞行的“隐形守护者”
  • 我的服务器被被DDOS攻击了
  • Docker MCP 网关协议转换(企业级应用案例深度剖析)
  • 【编程实践】Windows + PySide6 + Matplotlib 绘图时 WinError 32 的完整排查与解决方案
  • 手把手教你实现生产者-消费者模型(条件变量版)
  • Tool-to-Agent_Retrieval:连接工具与智能体的统一检索框架,让大模型多智能体系统更高效
  • 【Matlab】matlab代码实现随机潮流计算
  • 【Agent服务Docker隔离实战】:20年专家揭秘高效环境隔离的5大核心策略
  • WVP-GB28181-Pro视频监控平台实战部署:企业级解决方案深度解析
  • 揭秘机器视觉环形光源:95%的检测难题迎刃而解!
  • 计算机毕设java的水果销售系统 基于Java的水果销售管理系统设计与实现 Java技术驱动的水果销售信息化平台开发
  • 项目的时间线项目从启动到这周 大概是5周的时间10/28-10/31 Week 1项目初始化/需求讨论/设计文档/后端next.js, typescript技术熟悉 项目运行/调试基
  • Vercel AI SDK部署失败?你可能忽略了这4个Docker版本陷阱