0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

揭秘TEE深度休眠唤醒“低概率报错”:从概念到解决方案的全解析

jf_44130326 来源:Linux1024 2026-02-09 16:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式物联网设备的底层技术领域,TEE(可信执行环境)是保障系统安全的关键组件之一。但在RK3562RK3588等芯片的深度休眠唤醒场景中,却出现了一类低概率却影响致命的报错问题。今天我们就从概念入手,一步步拆解问题、剖析解决方案。

一、是什么:TEE与深度休眠的技术画像

TEE(可信执行环境):是与设备主操作系统(如Linux)并行的独立执行环境,能在隔离、可信的环境中运行加密、认证等敏感任务,常见的实现如OP-TEE

tee-supplicant进程:是TEE与主系统之间的通信桥梁,负责处理TEE驱动发起的RPC(远程过程调用)请求,保障安全任务的协同执行。

深度休眠:设备为节省功耗,将大部分模块断电/冻结的低功耗状态,唤醒时需快速恢复系统运行。

二、场景:深度休眠唤醒的刚需场景

在物联网网关、工业控制设备、智能终端等场景中,设备常常需要长时间处于深度休眠状态(如夜间待机、无任务时节能),并在外部事件触发时快速唤醒。以RK3562/RK3588平台为例,这类芯片广泛应用于:

智能家居中控设备(长时间待机,被指令唤醒后快速响应);

工业传感器节点(休眠节能,被数据触发后唤醒上报);

边缘计算设备(空闲时休眠,任务到达时唤醒运算)。

在这些场景中,TEE的安全功能(如身份认证、数据加密)必须在深度休眠唤醒后立即可用,这就对TEE子系统的休眠-唤醒兼容性提出了极高要求。

三、问题:深度休眠唤醒时的低概率崩溃

RK3562/RK3588的深度休眠唤醒过程中,偶尔会出现系统报错,核心日志如下:

[...T2036]Warning, Interrupting an RPCtosupplicant![...CF80211-ERROR]...wlan0:error (-26)E/TC:? TA panicked with code0xffff000e

问题根源可拆解为三步:

1.深度休眠触发时,系统会冻结用户空间进程,tee-supplicant也被纳入冻结范围;

2.TEE驱动在唤醒后发起RPC请求,等待tee-supplicant响应,但由于tee-supplicant冻结,响应超时;

3.TEE驱动因超时中断RPC调用,最终导致TEE中的可信应用(TA)因错误码触发“panic”(崩溃)。

简单来说:深度休眠冻结了通信桥梁tee-supplicant,导致TEE驱动超时报错,进而引发安全子系统崩溃

四、解决:从超时等待状态感知的技术突破

为解决这个问题,技术团队提出了**“不依赖时间,通过shutdown标志判断tee-supplicant状态”**的方案,核心改造分为三部分(结合代码补丁解析):

1.状态标记:新增shutdown标志

optee_supp结构体中新增shutdown布尔值,用于标记系统是否处于关机/重启触发的shutdown流程

structoptee_supp { // 原有成员... boolshutdown;// 新增:标记是否处于shutdown流程};

2. shutdown流程中主动标记状态

在设备shutdown阶段,主动设置shutdown标志,并预留等待时间,确保资源释放:

staticvoidoptee_shutdown(structplatform_device *pdev){ structoptee *optee = platform_get_drvdata(pdev); // 标记shutdown状态,通知请求线程中断RPC  smp_store_mb(optee->supp.shutdown,true); // 等待请求线程释放资源  mdelay(200);  optee_disable_shm_cache(optee);}

3.基于状态的RPC中断判断

修改RPC等待逻辑,区分深度休眠导致的freeze”系统shutdown导致的进程退出

while(wait_for_completion_interruptible(&req->c)) { if(supp->shutdown) {   //若处于shutdown流程,判定为进程退出,中断RPC    interruptable = true;  }else{   //若为深度休眠,`tee-supplicant`只是被冻结,继续等待   continue;  }  // ...后续资源释放逻辑}

五、流程图:问题与解决的逻辑可视化

原问题流程:

wKgZPGkaiwOAPhBNAABTCAUU5r0192.png

解决后流程:

wKgZPGkaiwSAbTHhAAB4os0SAkY204.png

总结

TEE作为系统安全的核心组件,在深度休眠唤醒这类极端场景下的稳定性至关重要。本次问题的解决,通过**“状态感知替代超时判断”**的思路,精准区分了进程冻结进程退出两种场景,既保障了深度休眠唤醒的兼容性,又不影响系统正常shutdown流程。

对于嵌入式与物联网开发者而言,这类从现象到本质,从补丁到架构的分析思路,也为解决类似底层兼容性问题提供了有益参考。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20625

    浏览量

    336758
  • 操作系统
    +关注

    关注

    37

    文章

    7432

    浏览量

    129597
  • RK3588
    +关注

    关注

    8

    文章

    585

    浏览量

    7540
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    干货分享 | TSMaster—LIN 唤醒休眠机制

    目录Catalog1.网络管理2.唤醒3.休眠1网络管理在LIN2.1协议当中网络管理指的是网络的休眠唤醒管理,图1为LIN节点的通讯状
    的头像 发表于 09-25 08:03 5419次阅读
    干货分享 | TSMaster—LIN <b class='flag-5'>唤醒</b>与<b class='flag-5'>休眠</b>机制

    求助,关于PSoC6在CM0+中用于进入休眠深度休眠的函数的问题

    : \" 执行 WFI 指令时,CPU 进入休眠深度休眠状态(取决于 SCR 寄存器的 SLEEPDEEP 位),并在中断请求(优先级高于当前优先级)或调试请求时唤醒。 WFE 指令
    发表于 07-05 06:27

    RK3128 Android 7.1 进入深度休眠流程分析

    4. 唤醒流程当以下任一事件发生时,系统深度休眠唤醒: 电源键按下 RTC闹钟触发 其他预设的唤醒
    发表于 07-22 10:45

    深度休眠状态下外部所有的IO都可以唤醒MCU吗?

    深度休眠状态下,外部所有的IO都可以唤醒MCU吗?
    发表于 12-04 06:00

    CC2541进入PM3深度休眠的条件解析

    CC2541进入PM3深度休眠的条件解析一、CC2541进入PM3深度休眠的条件①osal_timeout = 0;②llTimeout =
    发表于 04-12 10:50

    请问,CC2530深度休眠时,能用串口接收唤醒吗?深度休眠时串口还工作吗?深度休眠后,串口需要重新设置吗?

    本帖最后由 一只耳朵怪 于 2018-5-22 14:33 编辑 请问,CC2530深度休眠时,能用串口接收唤醒吗?深度休眠时串口还工
    发表于 05-22 02:22

    CPU CY8C4247LQI定期唤醒深度睡眠模式怎么实现?

    你好,我想CPU CY8C4247LQI定期唤醒深度睡眠模式,我应该遵循什么?或休眠模式唤醒
    发表于 09-20 08:03

    CH549设置进入深度休眠模式后无法唤醒是什么问题呢?

    CH549设置进入深度休眠模式后无法唤醒,重新上电不能正常运行,按住下载按键电脑也无法识别USB,无法进行USB下载,也不能进行串口下载,哪位大哥知道是什么问题吗?谢谢!下面是控制进入深度
    发表于 06-06 06:40

    LM3S系列单片机休眠深度休眠应用笔记

    介绍 LM3S 系列单片机如何进入休眠深度休眠模式,以及休眠后如何唤醒
    发表于 11-07 13:57 35次下载

    SSI技术-概念到现实

    -概念到现实 SOC和NOC概念传统的SoC现在很常见,现在用的手机CPU等都是采用这种方式,常见的架构如下: 系统采用总线互连结构,多核间的通讯问题已经成为制约系统性能提升的主要瓶颈。 NOC的
    的头像 发表于 08-10 17:25 9916次阅读
    SSI技术-<b class='flag-5'>从</b><b class='flag-5'>概念到</b>现实

    APM32F103C8T6_RCM_休眠唤醒后,灯概率性闪烁异常

    APM32F103C8T6_RCM_休眠唤醒后,灯概率性闪烁异常
    发表于 11-09 21:03 0次下载
    APM32F103C8T6_RCM_<b class='flag-5'>休眠</b><b class='flag-5'>唤醒</b>后,灯<b class='flag-5'>概率</b>性闪烁异常

    LIN休眠唤醒及测试心得

    这次我们的介绍主题是LIN休眠唤醒,一起看看标准和差异性,开发和测试的关系,实际的案例分享也来了。
    的头像 发表于 11-23 08:43 2497次阅读
    LIN<b class='flag-5'>休眠</b><b class='flag-5'>唤醒</b>及测试心得

    EMC技术:基础概念到应用的解读?

    EMC技术:基础概念到应用的解读?|深圳比创达电子
    的头像 发表于 03-11 11:55 1811次阅读
    EMC技术:基础<b class='flag-5'>概念到</b>应用的解读?

    以太网休眠唤醒利器OPEN Alliance TC10介绍

    TC10 为OPEN Alliance 中的一个技术委员会小组,专注于研究基于车载以太网的休眠唤醒机制,旨在为汽车应用场景提供灵活的休眠唤醒解决方案
    的头像 发表于 02-13 09:06 1417次阅读
    以太网<b class='flag-5'>休眠</b><b class='flag-5'>唤醒</b>利器OPEN Alliance TC10介绍

    SiC+Si混碳融合逆变器 · 概念到系统方案落地的全景解析

    以下内容发表在「SysPro电力电子技术」知识星球-关于SiC+Si多变量融合逆变器·概念到系统方案落地的全景解析-原创文章,仅用于SysPro内部使用,非授权不得转载-本篇节选,完
    的头像 发表于 08-15 08:32 4169次阅读
    SiC+Si混碳融合逆变器 · <b class='flag-5'>从</b><b class='flag-5'>概念到</b>系统<b class='flag-5'>方案</b>落地的全景<b class='flag-5'>解析</b>