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

    文章

    18605

    浏览量

    386967
  • 控制器
    +关注

    关注

    114

    文章

    17638

    浏览量

    190242
  • 恩智浦
    +关注

    关注

    14

    文章

    6051

    浏览量

    134391

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Cortex-M0+处理HardFault错误介绍

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

    codesys 3.5版本控制器联机指导:如何进行RS232联机?#codesys编程控制器 #控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年08月29日 09:07:25

    一文详解AHB-Lite协议

    AHB(Advanced High-performance Bus)高速总线,接高速master设备,APB(Advanced Peripheral Bus)外设总线,用来接低速slave,AHB
    的头像 发表于 08-27 09:23 2550次阅读
    一文详解<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 610次阅读
    MAXQ1741用于磁卡读卡<b class='flag-5'>器</b>的DeepCover<b class='flag-5'>安全</b>微<b class='flag-5'>控制器</b>技术手册

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

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

    工程机械控制器如何选型?控制器选型指南 #控制器 #车载控制器 #整车控制器 #控制器选型

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年03月14日 10:54:24

    在STM32微控制器中实现数据加密的方法

    在STM32微控制器中实现数据加密,可以通过多种方法和技术来确保数据的安全性。以下是一些常见的方法和步骤: · 使用内置加密库: · · STM32提供了专门的加密库STM32Cryp
    发表于 03-07 07:30

    Y1620工程机械主机控制器 车载智能控制器 CAN总线 #工程机械控制器 #整车控制器 #车载控制器

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年02月10日 15:32:21

    温度控制器上下限设定,温度控制器上下限怎么调

    在现代工业自动化、家庭温控以及各类需要精确温度控制的场合中,温度控制器发挥着至关重要的作用。温度控制器的上下限设定是确保其正常工作、实现精准温控的关键步骤。本文将详细介绍温度控制器上下
    的头像 发表于 01-29 15:30 1.3w次阅读

    温度控制器参数含义,温度控制器参数设置方法

    在现代工业自动化和温控系统中,温度控制器扮演着至关重要的角色。它通过对环境温度的精确监测与调控,确保生产过程的稳定性和产品质量。然而,要充分发挥温度控制器的效能,了解其参数含义并掌握正确的设置方法显得尤为重要。本文将深入探讨温度
    的头像 发表于 01-29 15:27 7855次阅读

    电机控制器故障排除方法

    电机控制器故障排除方法 1. 故障诊断前的准备 在进行故障排除之前,确保您已经做好了以下准备: 安全措施 :关闭电源,确保电机和控制器处于断电状态,以防止触电或设备损坏。 工具和设备
    的头像 发表于 01-22 09:25 3910次阅读

    电流控制器怎么调节

    电流控制器的调节是电子设备和电力系统中一个至关重要的环节。正确调节电流控制器不仅可以确保设备的正常运行,提高系统的效率和稳定性。下面,我们将详细探讨电流控制器的调节方法,并结合具体的应
    的头像 发表于 12-25 16:19 3698次阅读