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

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

3天内不再提示

实战经验 | TrustZone 架构下 LPBAM 使用导致的 HardFault

STM32单片机 来源:未知 2023-10-20 15:05 次阅读
wKgaomUyJ8mAUJSZAAHUHXdxAL4994.gif

关键词:TrustZone,HardFault

目录预览

1、简介

2、问题分析

3、总结

01

简介


客户使用 STM32U5 进行开发,并使能了 TrustZone 架构,程序需要从 bootloader 跳转到app。在之前版本都是正常跳转的,某一天 IAR 从 9.20 升级到 9.30 后,程序跳转失败,并且会导致 hardfault,想知道为什么会失败。

wKgaomUyJ8qAXhuzAAWv_yD84y0479.png

图1.IAR9.20 和 IAR9.30 生成的汇编代码对比

02

问题分析


通过断点和单步调试,我们发现出现问题的指令如下所示:

wKgaomUyJ8qAQSBjAAVSMORkRzs862.png

图2.程序下一步将 Hardfault

而没有发生 hardfault 的版本汇编代码,如下图:

wKgaomUyJ8qAIr2yAAlBO4Ea5y0597.png

图3.程序不会发生 Hardfault

通过单步调试,我们知道了 VLSTM SP 这条指令导致了 hardfault。接着我们再确认下 SP 指针,错误版本的 SP 的内容为:0x300020b4,正确版本的 SP 内容为:0x30000258。首先,我们对比了生成的 map 文件中 stack 的地址信息,发现其中 Stack 的地址和这里 SP 指令是相符的。

然后继续查找了 VLSTM 这条指令相关的描述,关于 VLSTM 在 PM0264 中有以下描述:

wKgaomUyJ8qAJ8EWAAIos6_SmHs908.png

图4.关于 VLSTM 指令

从上图可以看到,VLSTM SP 这条指令会把安全的浮点运算寄存器的值保存到 SP 地址中,并清除安全浮点寄存器的内容,如果 CPU 的状态是非安全的,那么这条指令相当于空指令,也不会导致 hard fault,所有从这里也还是分析不出为什么会导致 hard fault。

重新回到这条指令,现在问题可能比较大的就是 SP 的地址了。有问题的版本的 SP 内容为:0x300020b4,会不会是对齐导致的呢?

基于这个猜测,我们直接在 IAR 界面强制修改了 SP 的地址为 0x300020b8,并继续单步执行,然后程序可以正常执行了。所以目前所知的结论就是 VLSTM SP 这条指令,要求 SP 必须 8 字节对齐,可能 IAR 在编译的时候并没有注意到这一点。

然后,把这些信息反馈到 IAR 以后,IAR 的工程师回复如下:

根据目前的信息,问题应该是在 VLSTM 要求 8 字节对齐上。在 9.30.1 中,由于 PUSH.W {R4, R5, R7-R11}指令执行后,相当于占用了 28 个字节的栈空间,导致了 SP 和 9.20.1 相比,不是 8 字节对齐。

03

总结

在调试 TrustZone 工程的时候,由于使用了新的架构及新的汇编指令,需要对这些指令有一定基本的了解。在调查问题的时候,可以进行单步调试来定位发生问题的指令,然后再继续深入了解下为什么会导致 hardfault。

wKgaomUyJ8qAFOqEAAHiBpzEGaQ933.png

完整内容请点击“阅读原文”下载原文档。


原文标题:实战经验 | TrustZone 架构下 LPBAM 使用导致的 HardFault

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

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

    关注

    6002

    文章

    43990

    浏览量

    620990
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348882

原文标题:实战经验 | TrustZone 架构下 LPBAM 使用导致的 HardFault

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HardFault 调试与处理

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

    docker微服务架构实战

    的容器化技术,为微服务架构的实施提供了强大的支持。本文将介绍Docker微服务架构实战经验,包括Docker的概述、微服务架构的设计原则以及实际应用中的具体实践。 一、Docker概
    的头像 发表于 11-23 09:26 317次阅读

    基于CmBacktrace库,如何快速追踪和定位产生HardFault的原因

    基于CmBacktrace库,如何快速追踪和定位产生HardFault的原因
    的头像 发表于 10-27 09:51 835次阅读
    基于CmBacktrace库,如何快速追踪和定位产生<b class='flag-5'>HardFault</b>的原因

    STM32U5 LPBAM模式介绍

    STM32U5 LPBAM模式介绍
    的头像 发表于 10-26 17:59 435次阅读
    STM32U5 <b class='flag-5'>LPBAM</b>模式介绍

    调试TrustZone时,如何处理HardFault

    调试TrustZone时,如何处理HardFault
    的头像 发表于 09-27 16:33 383次阅读
    调试<b class='flag-5'>TrustZone</b>时,如何处理<b class='flag-5'>HardFault</b>?

    embOS如何支持Arm TrustZone

    通过ARMv8-M架构支持的TrustZone技术,可以将关键安全固件和私有程序(如安全引导、固件更新和密钥)与其余应用程序隔离,极大降低被攻击的可能性,增加嵌入式系统安全。SEGGER的embOS目前已支持ARMv8-M TrustZ
    发表于 09-22 12:16 207次阅读
    embOS如何支持Arm <b class='flag-5'>TrustZone</b>

    一个地址未对齐引起的HardFault异常

    一个地址未对齐引起的 HardFault 异常
    的头像 发表于 09-18 10:57 439次阅读
    一个地址未对齐引起的<b class='flag-5'>HardFault</b>异常

    STM32 MCU TrustZone开发调试技巧分享

    系统隔离与ARM V8-M TrustZone技术、TrustZone地址安全区及资源安全属性配置、TrustZone架构
    发表于 09-05 06:16

    AMBA 3 TrustZone中断控制器(SP890)技术概述

    TrustZone中断控制器(TZIC)是一款高级微控制器总线架构(AMBA)兼容的片上系统(SoC)外围设备,由ARM有限公司开发、测试和授权。 TZIC为TrustZone设计中的安全中断系统
    发表于 08-21 06:07

    了解体系结构-适用于AArch64的TrustZone介绍

    在本指南中,我们介绍了TrustZoneTrustZone通过内置在CPU中的硬件强制隔离,提供了一种高效的全系统安全方法。 我们介绍了TrustZone添加到处理器体系结构中的功能
    发表于 08-10 07:02

    TrustZone Technology微控制器系统硬件设计概念用户指南

    TrustZone技术可用于实施PSA认证的信任根。 PSA认证计划是用于内置安全的通用行业框架和方法,使芯片制造商、系统软件提供商和原始设备制造商能够使用经过验证的安全架构和相应的开源实施来确保
    发表于 08-09 07:25

    STM32U5系列使用LPBAM进行功耗优化

    电子发烧友网站提供《STM32U5系列使用LPBAM进行功耗优化.pdf》资料免费下载
    发表于 08-01 16:42 0次下载
    STM32U5系列使用<b class='flag-5'>LPBAM</b>进行功耗优化

    从硬件架构与软件架构TrustZone

    ARM TrustZone技术是芯片级的安全解决方案,通过在CPU内核的设计中集成系统安全性扩展,同时提供安全软件平台,为安全支付、数字版权管理(DRM, Digital Rights Management)、企业服务等应用提供了安全的运行环境。
    的头像 发表于 07-26 15:58 1547次阅读
    从硬件<b class='flag-5'>架构</b>与软件<b class='flag-5'>架构</b>看<b class='flag-5'>TrustZone</b>

    Arm® TrustZone® 技术简介

    为例,不同厂家芯片可能不同需要参考对应的手册。 二.TrustZone介绍 Arm TrustZone 技术是Armv8-M 架构一个可选的架构扩展。 其核心思想就是朴素的硬件隔离思想
    的头像 发表于 07-04 08:44 2268次阅读
    Arm® <b class='flag-5'>TrustZone</b>® 技术简介

    Top和Block实战经验以及DDR接口时序

    IO约束在顶层和模块级的主要命令都是以下几个,但是实际应用的复杂程度不可同日而语,本篇会先介绍模块级IO约束实战经验,然后讲解顶层IO约束复杂性,过程中会介绍DDR接口时序。
    的头像 发表于 06-27 15:07 597次阅读
    Top和Block<b class='flag-5'>实战经验</b>以及DDR接口时序