奇迹
发布时间:2021-10-20 18:11
|
题目起跟上一篇很接近啊。本文主要说的就是安全区的代码怎么去操作非安全区的资源。' u" N9 ~+ w% Q2 y! d 安全区可以操作非安全区资源,安全区可以调用非安全区的代码。; P8 ^) Z: v- o$ _4 ? 工程设置跟上一个一样,还是俩小灯,PH6属于非安全区资源,PH7属于安全区资源。 \. B8 p, }0 q% d
首先我们试一下直接操作寄存器,接着上次的程序来。1 T+ _, X; K; Q. [- q 这次程序是非安全区调用安全区代码,然后安全区代码操作非安全区的小灯,嗯,听起来很绕。! h. j. k% }0 P! l 非安全区 main函数里
安全区代码+ R& S2 Y% h8 |1 l
编译下载,红灯开始正常闪烁。 一切正常。 接下来是安全区代码调用非安全区函数,好像有点怪,如果安全区代码调用非安全区代码,同时非安全区代码也调用安全区代码,是不是就出现互相依赖的问题了?所以它并不是直接调用的函数,因为安全区代码对非安全区所有的资源都有操作权限,那我就直接操作地址就好了啊,直接访问非安全区代码的地址,调用它(实际使用中还需要点修饰)。接着刚才的程序。 非安全区8 Q; V, ~9 s" F; m1 l
非安全区 main函数里/ y: L4 @ [( c! b5 X
创建一个操作小灯的代码,并编译到0x8101000地址上。 \! K( \" }2 ^4 p( I6 }5 N 安全区代码
就是调用了非安全区的程序,嗯,这是一个非安全区代码调用安全区代码,然后安全区代码调用非安全区代码,然后通过操作非安全区程序控制小灯,嗯,绕口令越来越熟练了。 编译下载,红灯开始正常闪烁。2 F: H A1 m1 M t( m ! Y; R/ j) K! J& f/ } funcptr_NS 是ST给我们提供的一个定义好的接口,不光上面一种写法。 : O9 Z( n: t4 C9 W6 N3 i; W 善良守序
绝对中立, J) a7 d2 L1 j7 E9 |
混乱邪恶
全展开确实太刺激了点,哈哈。 |
|
学习学习6 X9 O% W) F9 m, N, ` |
|
学习学习$ k) ?! _3 U, E( l8 ?# h |
|
不错,学习学习$ ^. _1 t* }7 K |
|
学习学习,大神很牛5 ^7 F; E8 ^7 T! s* x6 L- _ |
|
善良守序、绝对中立、混乱邪恶 期待你的展开1 E+ j) {6 b9 E: R3 y! o' i7 S$ H |
|
打卡打卡* R" D9 C1 e! s3 ~ |
|
很绕 得多看几遍 |
|
学习了,很详细。感谢!6 O. j2 `$ u: A: P3 G |
|
确实让人有点绕和混乱啊,要实际操作理解一下。* ~. i5 q2 ]: u0 v# Y7 k" |1 ^ |
|
绕晕了,要实际操作才更清晰 |
想赶快使用ST新推出这款STM32U5系列产品,学习学习![]() |
微信公众号
手机版