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

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

3天内不再提示

利用SAU和安全AHB控制器调查HardFault的方法

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:刘豪 2021-11-21 09:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

TrustZone

恩智浦基于Cortex M33内核的MCULPC55S6x/LPC55S1x, RT600/RT500等产品提供了对TrustZone的支持,并在SOC上提供了安全AHB控制器等功能,旨在帮助客户完成良好的安全隔离,并建立可信执行环境。

在产品设计之初,我们就要有一个基本的“隔离”的概念。

需要考虑的问题大致有以下两个方面:

产品中的哪些功能和模块应该放在安全区?(这部分代码往往是核心且精简,且经过安全审查的,安全区的内容不允许非安全区的代码触碰);

哪些功能应该放在非安全区?(这样放在非安全区中的代码,即使出现安全漏洞(例如栈溢出漏洞等等)后被攻击,MCU的安全区中的资源和外设也无法被攻击者利用)。

令人头疼的HardFault

对于MCU工程师,TrustZone是一个比较新的技术,在开发调试过程中,由于TrustZone配置问题,时常遇到各种意料之外的HardFault,我们也经常调侃,这个TrustZone也太安全了,连我们自己都进不去。

其实这种问题往往是由于在开发阶段,我们实际的行为和我们对TrustZone的划分不一致。

平常我们认为正常的行为与操作,对于TrustZone来说,已经越界违规了,这就会使TruztZone触发HardFault,并阻止违规行为。

在这种情况下,我们就需要找到导致HardFault的原因,并调整对于TrustZone的配置。

注:TrustZone相关的故障会触发SecureFault异常。在芯片上电后的默认情况下,SecureFault异常并没有被使能,因此,此异常会被“升级”为HardFault。在通常情况下,建议使用默认的设置,因为HardFault拥有更高的中断优先级,可以使故障在第一时间被响应。

获取违规操作的蛛丝马迹

Cortex M33内核本身在SAU中提供了两个寄存器:SFSR(Secure FaultStatus Register,安全故障状态寄存器)和SFAR(Secure Fault Address Register,安全故障地址寄存器)。

SFSR寄存器用于指示出现错误的类型,例如非安全区试图访问安全区,从安全区到非安全区的非法跳转等。

SFAR寄存器用于指示出现错误的内存地址。

看起来这两个寄存器就足以帮助我们查到问题的根源了。但是,有时候,我们从这两个寄存器拿到了错误的原因和地址,仔细检查后发现无论是安全区还是非安全区的程序,都没有显式的访问这个地址。

这是由于MCU系统愈发复杂,总线上除了M33内核之外,还有许许多多的其他的外设,例如DMAUSB等等。肇事者不一定是M33内核,还有可能是其他的外设,例如DMA。

下面是一种常见的事故:被划分为非安全的DMA在工作中访问了安全区的地址或外设,违反了TrustZone的配置,造成了HardFault。

恩智浦的MCU在SOC层面提供了一个安全AHB控制器,能够帮我们侦查肇事现场,找出肇事者的蛛丝马迹。

其实原理很简单,安全AHB控制器提供了三个寄存器,SEC_VIO_INFO_VALID,SEC_VIO_MISC_INFO和SEC_VIO_ADDR。

SEC_VIO_INFO_VALID用来指示肇事现场,这个寄存器中存储了肇事现场的AHB 的端口号(port number),端口号与外设的对应关系参见用户手册的”Memory map overview”章节。

每一个AHB端口都相应有一个SEC_VIO_MISC_INFO寄存器,用来指示肇事的信息,例如违规操作是读操作引起的还是写操作引起的等等,最重要的是会指出肇事者的身份:

每个AHB端口还有一个SEC_VIO_ADDR,用来指示肇事现场的地址。

有了上述信息,我们就捉到了真正的肇事者。在开发阶段,我们就可以利用这些信息去调整我们的TrustZone的配置。

更进一步

当然,上述功能不只能在开发阶段帮我们排查HardFault。我们也可以利用这个机制在产品出厂之后为我们提供防御措施。

产品出厂后,当我们检测到由TrustZone产生的HardFault的原因之后,可以将其记录,以便于后续分析。如果设备有联网能力,可以将其传输至服务器。利用这些信息我们可以发现产品的哪些模块受到了攻击,方便我们后续针对性地进行OTA升级。云端和设备本地也可在此时检测镜像以及存储介质的完整性,以检查程序和存储介质是否被恶意篡改。

小结

综上所述,利用SAU和安全AHB控制器调查HardFault的方法并不复杂,NXP的MCUXpresso SDK也提供了一个完整的demo。

以LPC55S69为例,demo的路径如下:SDKoardslpcxpresso55s69 rustzone_examplessecure_faults。

这个demo中,人为制造了几种TrustZone触发HardFault的案例,在产生HardFault后,使用上文描述的方法,处理相关寄存器并打印事故信息。

通常来说,在开发阶段,我们可以参考demo中HardFault的处理代码,按需移植到自己的工程中。

责任编辑:haq

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

    关注

    147

    文章

    19126

    浏览量

    403726
  • 控制器
    +关注

    关注

    114

    文章

    17877

    浏览量

    195100
  • 恩智浦
    +关注

    关注

    14

    文章

    6122

    浏览量

    153968

原文标题:调试TrustZone时,如何处理HardFault

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TMS570LS0914:高性能安全控制器的技术剖析

    TMS570LS0914:高性能安全控制器的技术剖析 在汽车电子、工业控制等对安全性要求极高的领域,高性能且具备安全特性的微
    的头像 发表于 04-23 15:20 114次阅读

    TMS570LS3137微控制器:高性能与安全的完美结合

    TMS570LS3137微控制器:高性能与安全的完美结合 在电子工程师的世界里,寻找一款性能卓越且安全可靠的微控制器是一项至关重要的任务。今天,我们就来深入探讨一下德州仪器(TI
    的头像 发表于 04-23 15:05 120次阅读

    内置氮化镓成主流?AHB技术你又了解多少?

    控制器芯片中一个值得关注的方向 目前东科有着多款内置氮化镓方案的 AHB 控制器,将 GaN 功率器件与控制器进一步整合,有助于简化外围设计、缩短关键回路、优化 PCB 空间
    发表于 04-18 10:35

    MAXQ1010:用于安全令牌的深度安全控制器

    MAXQ1010:用于安全令牌的深度安全控制器 在当今数字化时代,数据安全至关重要。对于电子工程师而言,选择一款合适的安全
    的头像 发表于 04-08 14:40 166次阅读

    探秘 ZA9L1:高性能安全 32 位 ARM 微控制器

    探秘 ZA9L1:高性能安全 32 位 ARM 微控制器 在电子设备日新月异的今天,高性能且安全的微控制器成为了众多应用领域的核心需求。今天,我们就来深入了解一下 Maxim 推出的
    的头像 发表于 04-04 15:15 587次阅读

    深度剖析DS2252T安全控制器模块:特性、应用与设计要点

    深度剖析DS2252T安全控制器模块:特性、应用与设计要点 在电子设计领域,安全控制器的重要性日益凸显。今天我们就来详细探讨一下DS2252T
    的头像 发表于 04-01 15:35 130次阅读

    探秘 TC23xL - AURIX™ 微控制器家族:安全应用的理想之选

    探秘 TC23xL - AURIX™ 微控制器家族:安全应用的理想之选 在汽车电子领域,安全至关重要。英飞凌(Infineon)的 AURIX™ 微控制器家族凭借其卓越性能和先进特性,
    的头像 发表于 03-29 10:40 345次阅读

    深度解析 MAX32592:安全控制器的卓越之选

    深度解析 MAX32592:安全控制器的卓越之选 在电子设备安全需求日益增长的今天,安全控制器的重要性愈发凸显。MAX32592 作为一
    的头像 发表于 03-26 17:00 644次阅读

    立宏安全#SM-602可编程安全控制器#LHS可编程安全控制器

    作为安全回路最重要环节,安全控制器/安全PLC已经越来越多的被人们所认知,但是在使用的过程中,仍然有很多使用者困惑,安全继电器和普通继电器到
    的头像 发表于 12-18 14:26 274次阅读
    立宏<b class='flag-5'>安全</b>#SM-602可编程<b class='flag-5'>安全</b><b class='flag-5'>控制器</b>#LHS可编程<b class='flag-5'>安全</b><b class='flag-5'>控制器</b>

    Cortex-M0+处理HardFault错误介绍

    在ARM处理中,如果一个程序产生了错误并且被处理检测到,就会产生错误异常。Cortex-M0+处理只有一种异常用以处理错误:HardFault
    的头像 发表于 10-14 10:50 3647次阅读
    Cortex-M0+处理<b class='flag-5'>器</b>的<b class='flag-5'>HardFault</b>错误介绍

    一文详解AHB-Lite协议

    AHB(Advanced High-performance Bus)高速总线,接高速master设备,APB(Advanced Peripheral Bus)外设总线,用来接低速slave,AHB
    的头像 发表于 08-27 09:23 3251次阅读
    一文详解<b class='flag-5'>AHB</b>-Lite协议

    SM-602可编程安全控制器

    控制器
    lihongsc
    发布于 :2025年08月12日 13:19:51

    车载整机控制器 工程机械主机控制器#硕博电子#国产控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年05月26日 09:09:02

    MAXQ1741用于磁卡读卡的DeepCover安全控制器技术手册

    DeepCover 嵌入式安全方案采用多重先进的物理安全机制保护敏感数据,提供最高等级的密钥存储安全保护。 DeepCover安全控制器
    的头像 发表于 05-15 09:48 1023次阅读
    MAXQ1741用于磁卡读卡<b class='flag-5'>器</b>的DeepCover<b class='flag-5'>安全</b>微<b class='flag-5'>控制器</b>技术手册

    工程机械控制器厂家 控制器国产替代 #国产控制器#控制器厂家#控制器品牌

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年04月29日 14:15:05