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
    +关注

    关注

    146

    文章

    16857

    浏览量

    349823
  • 控制器
    +关注

    关注

    112

    文章

    16084

    浏览量

    176989
  • 恩智浦
    +关注

    关注

    14

    文章

    5815

    浏览量

    106241

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

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

收藏 人收藏

    评论

    相关推荐

    usb主机控制器位于ahp总线上吗

    关于“USB主机控制器是否位于AHP总线上”的问题,首先需要明确几个概念: USB主机控制器 :在USB系统中,主机控制器控制所有USB设备通信的关键组件。它负责组织数据传输,管理U
    的头像 发表于 09-25 09:20 224次阅读

    风机温度控制器的调整方法

    风机温度控制器是一种用于控制风机运行温度的设备,它能够根据设定的温度范围自动调节风机的运行状态,以保持设备在最佳工作温度下运行。调整风机温度控制器方法需要根据具体的设备型号和功能来操
    的头像 发表于 09-20 14:53 395次阅读

    软启动控制器的参数调整方法

    至关重要。本文将详细介绍软启动控制器的参数调整方法,包括参数设置、调整步骤、注意事项等内容。 一、软启动控制器的基本原理 1.1 软启动控制器的工作原理 软启动
    的头像 发表于 07-02 09:42 3718次阅读

    组合逻辑控制器和硬布线控制器一样吗

    、设计方法、实现技术以及应用场景。通过对两者的比较分析,揭示它们在计算机控制系统中的不同作用和优势。 关键词: 组合逻辑控制器;硬布线控制器;计算机
    的头像 发表于 06-30 10:24 539次阅读

    伺服控制器的常见故障及解决方法

    伺服控制器作为工业自动化领域的核心部件,其稳定性和可靠性对于整个系统的运行至关重要。然而,在实际应用中,伺服控制器也会遇到各种故障。本文将对伺服控制器的常见故障进行分析,并提出相应的解决方法
    的头像 发表于 06-20 18:25 1989次阅读

    机械压力控制器使用与调整方法

    机械压力控制器是一种广泛应用于工业领域,用于监测和控制压力的设备。它通过机械结构实现对压力的测量和控制,具有结构简单、可靠性高、维护方便等优点。本文将详细介绍机械压力控制器的使用
    的头像 发表于 06-19 11:00 801次阅读

    压力控制器的正确接线方法

    压力控制器是一种用于监测和控制压力的自动化设备,广泛应用于工业、科研和民用领域。正确接线是确保压力控制器正常工作的关键。本文将详细介绍压力控制器的接线
    的头像 发表于 06-19 10:46 2243次阅读

    压力控制器使用与调整方法

    详细介绍压力控制器的使用方法和调整方法。 一、压力控制器的工作原理 压力控制器主要由压力传感
    的头像 发表于 06-19 10:44 1754次阅读

    移动机械控制器 车载智能控制器 CAN总线控制器

    控制器机械
    长沙硕博电子科技股份有限公司
    发布于 :2024年06月13日 17:02:51

    电机控制器电控系统的作用

    随着电动汽车技术的快速发展,电机控制器电控系统作为电动汽车的核心技术之一,其重要性日益凸显。电机控制器电控系统不仅关系到电动汽车的动力性能、操控性能,还涉及到能源利用效率、行驶安全等方
    的头像 发表于 06-04 16:02 700次阅读

    压力控制器使用与调整方法 压力控制器工作原理

    压力控制器是一种控制和调整流体压力的装置,广泛应用于工业自动化系统中。它可以监测和控制流体压力,确保系统在设定的压力范围内稳定运行。本文将详细介绍压力控制器的工作原理以及其使用和调整
    的头像 发表于 02-01 10:55 4938次阅读

    集中电源控制器:工作原理与优势

    集中电源控制器是一种用于管理和控制多个电源的设备。它通过集中管理电源,可以提高电源的利用率,降低能源浪费,并确保电源的安全使用。 集中电源控制器
    的头像 发表于 01-30 15:26 878次阅读
    集中电源<b class='flag-5'>控制器</b>:工作原理与优势

    HardFault 调试与处理

    电子发烧友网站提供《HardFault 调试与处理.pdf》资料免费下载
    发表于 12-18 09:05 1次下载
    <b class='flag-5'>HardFault</b> 调试与处理

    电磁阀控制器控制方式以及安全

    述,电磁阀控制器控制方式有多种,每种方式都有其独特的优点和适用范围。在选择电磁阀控制器时,需要考虑控制方式的安全性。同时,电磁阀
    的头像 发表于 11-14 10:30 1191次阅读
    电磁阀<b class='flag-5'>控制器</b>的<b class='flag-5'>控制</b>方式以及<b class='flag-5'>安全</b>性

    利用MAX II CPLD实现LCD控制器

    电子发烧友网站提供《利用MAX II CPLD实现LCD控制器.pdf》资料免费下载
    发表于 11-10 09:36 0次下载
    <b class='flag-5'>利用</b>MAX II CPLD实现LCD<b class='flag-5'>控制器</b>