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

【经验分享】基于cubemx6.0的stm32l5trustzone使用(一)-点亮led灯

[复制链接]
STMCU小助手 发布时间:2022-1-3 10:00
STM32L552使用前提配置- I- ~$ b" o5 Q* g
本次学习的开发板为NUCLEO_L552ZE_Q,使用trustzone功能,点亮LED灯,代码保存至trustzone里。
3 Q% E7 r" u: h( Q5 R8 T. t5 G前提配置如下:: e& \: P7 s; g; D
1、下载STM32CubeProgrammer,打开该软件,点击右侧connect,连接开发板。
# C% I4 Q6 X6 O6 W
/ S  d5 t6 ?7 e* Y% R
20200803230155368.png
5 {; ~! x1 W  o4 Q
0 B5 _1 \9 j2 B, l
2、点击左侧OB按钮,点击User Configuration选项,将 TZEN 选项打钩,再点击apply按钮。
/ `# R' h& O2 G2 J! s; j' a8 V' ^6 f- b5 x! ^4 _6 ?
20200803230404500.png
* |" b7 ^  j8 _8 E! i/ }
$ z) P2 T9 r7 v3 @: F
3、在Secure Area 1进行如下配置:4 ~5 X& o0 F% T; o, ~4 a

& U* @+ J9 b4 W' Q
20200803230448808.png
. {- s! G7 ]" d8 P2 r+ |0 p/ w
: _3 U' t+ h4 x/ J3 X
4、在Secure Area 2进行如下配置:' }! ?1 I! V5 {  d% e

" a. V$ ]6 X+ j: U! B
20200803230533623.png

8 i" M% R7 w' W) O5 G, Z9 H
7 W- P& \' b/ ?- s0 M5、最后点击apply,将配置保存进开发板里。
, {3 P' Q4 @. ?6 j
, f* H" F* j! z; W" G( Z1 Qcubemx初始化
3 V/ L: s" |' V! i" e1、点击yes,使能trustzone功能。
$ i9 [4 c# e5 [" [) \0 e
, B; Y# w5 k! u" N
20200803122006752.png
7 A, i  s+ Z( J# u

; z4 _. r8 `, u- g$ \2、配置系统时钟,这里使用HSI+PLL模式。) g9 Y  S* p9 I2 f3 i- [
2 G; b: Q4 M0 B
20200803122955756.png
8 t  ~. h! F& e- `* E+ x

; \9 T# }9 g9 ]* M6 e3、开发板led灯引脚为PC7,这里选择把PC7配置成GPIO输出模式,这里切记要把PC7的Pin context assignement配置成cortexm33 secure或者non secure模式,若配置成free,则不能成功初始化。7 C1 A. @1 D  n; R$ V

7 T8 I$ A7 d% \# ~
20200803123033365.png

9 q: C" T( E0 k" j% j1 G( m& }
9 \' n( m4 X, z0 {7 ?2 ?; k4、cubemx配置好后,生成工程。
. U: t+ K9 B" q# M( e  X
7 x$ z* c9 B0 W0 G* _# {" h
20200803123253439.png

4 w# v( v  k9 J8 }. ~( T" B" k6 P& H% x8 l1 |4 ?+ f8 J
keil程序配置& o. E$ l: G) Q
1、keil工程介绍:1 r: D5 s% p1 W/ ?$ @: k, E6 F- N
cubemx生成的文件里包括两个工程:一个为secure工程,另一个为non-secure工程。两个工程必须先后编译,先编译secure工程,再编译non-secure。下载程序时,先下载non-secure的工程,后下载secure工程。# v7 n( A8 f3 b- F- |+ o- F4 A. N
20200803123538687.png

' g2 w6 J: r) [% ?6 A8 |/ }% S2 B* |" `
2、secure工程配置
' Y  E$ U5 J+ b% S(一)、程序下载地址配置,本次使用采用官方推荐的空间配置,即256krom和96kram给trustzone。在rom地址配置为0xC000000,256k的大小为0x40000;ram地址配置为0x30000000,96k的大小为0x18000。4 r* K7 V  Z' r! I

2 d' D& ?) y" |: r6 E% C! m& ^
20200803123911847.png

- g% Q: J. K! M; s
$ o- P+ i8 H- ]& H(二)、下载算法配置,这里选择secure_flash。
- L! z5 l' r1 y' I4 ?" S. N" n; K
; q& J! R5 ~1 w6 F' [( o" ^
2020080312440292.png
: x4 M( w/ N8 X6 e- P4 B

% S7 w; _* B: Z3 K' q7 X0 v(三)、GPIO初始化程序。这里可以发现,cubemx在secure工程的main文件里生成了PC7的初始化代码,验证了之前cubemx里的Pin context assignement配置。
# X# }. V6 z: h3 l/ P( ?$ E; f! c- {$ L1 G( Y+ n7 g3 q
20200803124619140.png

/ }; G5 Y6 m* j7 x# g4 p, P/ Z, [2 ^3 g- B
3、non-secure工程配置
& e, v8 b* f  W' n* ](一)、程序下载地址配置,本次使用采用官方推荐的空间配置,即256krom和160kram给non-trustzone。在rom地址配置为0x8040000,256k的大小为0x40000;ram地址配置为0x20018000,160k的大小为0x28000。
' |6 h# u2 F0 V! f, x* L3 ~  {- ?' |4 R
20200803124928323.png

( D9 I6 d$ ?* K  V
  ~/ l1 c, y; K, [, [$ @2 {(二)、下载算法配置,这里选择Nsecure_flash。
* O: G- g; p( ^9 i
, ~* e$ z" `. e: S
20200803125007176.png
$ k2 X# j: q3 k  t0 B( j
- w8 U& M: Y* a$ @( Z
程序编译和下载; e% N9 ]" ~! Q2 ]( j4 x
1、程序编译:! s; U2 p+ I: z! I# i7 t
包含trustzone的工程里需要先编译trustzone工程,之后再编译non-trustzone工程。因为在trustzone机制里,non-trust可以使用trust允许的api函数,为保证trust开放的函数能在non-trustzone工程里被准确编译,所以必须先编译trustzone工程。
1 o' {6 g# P# Q1 ?2、程序下载$ O! o6 p) F3 h% p2 }- t2 t
这里建议先下载non-trustzone工程,再下载trustzone工程。2 @1 G6 q3 @* U, B1 D6 T0 l$ n  R

4 w2 X' A% \5 V, |; z% E  H- H) v: s
/ y  v; B: o# _$ }" f
3 q$ V3 f7 a( O2 ^6 y4 j
赞 收藏 评论0 发布时间:2022-1-3 10:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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