你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

TrustZone 架构下 LPBAM 使用导致的 HardFault

[复制链接]
STMCU小助手 发布时间:2023-2-14 21:52
1. 简介客户使用 STM32U5 进行开发,并使能了 TrustZone 架构,程序需要从 bootloader 跳转到app。在之前版本都是正常跳转的,某一天 IAR 从 9.20 升级到 9.30 后,程序跳转失败,并且会导致 hardfault,想知道为什么会失败。
  N* T& N5 U' v  t  X1 B$ L, m
- o7 a7 W/ z' Z! v; J2 i3 J" Y
! T2 Z0 E) s  u) O
DJ}AQJWLSUBH01A}%T`OR$F.png
8 o6 f& v3 \* Y6 W9 F7 ?
# F2 D; Q1 I  u$ T; P0 ~! w- S6 O2. 问题分析
+ w% T. I/ C, v3 u- q" v9 \% |, v通过断点和单步调试,我们发现出现问题的指令如下所示:0 D7 ~$ s$ W! Q9 g% L

% m' Q+ Q- N! R+ X
0 }- o% u5 Z3 o
}A)MJM6_WAM5JC125$Z]N.png
. g( Q3 R0 r0 y1 v
$ L# p7 b* G$ Y7 R4 F. F

+ l2 q2 m$ G& w, }6 [而没有发生 hardfault 的版本汇编代码,如下图:
2 R  x; u( @# d7 |* Z
, \; g- W8 l; z

, J8 t! p' d$ p' G$ W7 C $`((IMHV83{96`4R5M$IQLY.png
8 s6 Y1 y9 w: S! m0 _3 H% g
$ |/ [  @; Z6 t
' \, E# M# i! q' k# R. _; }
通过单步调试,我们知道了 VLSTM SP 这条指令导致了 hardfault。接着我们再确认下 SP 指针,错误版本的 SP 的内容为:0x300020b4,正确版本的 SP 内容为:0x30000258。首先,我们对比了生成的 map 文件中 stack 的地址信息,发现其中 Stack 的地址和这里 SP 指令是相符的。
/ H( f( f( E' C" P- Y" C: r$ D然后继续查找了 VLSTM 这条指令相关的描述,关于 VLSTM 在 PM0264 中有以下描述:% e  z1 x7 a& b* ?: H* d, b

5 z7 W7 s3 s2 N

$ y* \" t8 k% Q1 W7 y. V& m (`[9%DR]]9]HOY{YR6F]BBX.png $ M: y& r, s/ @, S; w' P- i. t

4 V0 |0 q) H7 O: g% T6 o
! ]. Z7 H5 g: [. k
从上图可以看到,VLSTM SP 这条指令会把安全的浮点运算寄存器的值保存到 SP 地址中,并清除安全浮点寄存器的内容,如果 CPU 的状态是非安全的,那么这条指令相关于空指令,也不会导致 hard fault,所有从这里也还是分析不出为什么会导致 hard fault。0 l& ^( a) U: n  }
重新回到这条指令,现在问题可能比较大的就是 SP 的地址了。有问题的版本的 SP 内容为:0x300020b4,会不会是对齐导致的呢?
2 n( _& P) {, o1 D- g% M基于这个猜测,我们直接在 IAR 界面强制修改了 SP 的地址为 0x300020b8,并继续单步执行,然后程序可以正常执行了。所以目前所知的结论就是 VLSTM SP 这条指令,要求 SP 必须 8 字节对齐,可能 IAR 在编译的时候并没有注意到这一点。# c9 O1 Y( [7 k7 l" Y9 P: p
然后,把这些信息反馈到 IAR 以后,IAR 的工程师回复如下:
) c8 W/ l9 h3 ?6 F" N根据目前的信息,问题应该是在 VLSTM 要求 8 字节对齐上。 在 9.30.1 中,由于 PUSH.W {R4, R5, R7-R11}指令执行后,相当于占用了 28 个字节的栈空间,导致了 SP 和 9.20.1 相比,不是 8 字节对齐。
2 Q! x2 V% i0 s: G) G: e2 x, O
/ ]9 L# I3 I7 O! H6 b) e( K8 ]% M% R4 d. t- A  p' V# T8 u

- x0 g: X2 _% }* B8 Q完整版请查看:附件 TrustZone架构下程序跳转导致的HardFault.pdf (1.14 MB, 下载次数: 3)
赞 收藏 评论0 发布时间:2023-2-14 21:52

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版