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

B-U585I-IOT02A--5.TrustZone非安全区操作安全区资源点灯

[复制链接]
奇迹 发布时间:2021-10-17 17:34
题目起得跟绕口令一样,转来转去。本文主要说的就是非安全的代码怎么去操作安全区的资源。
非安全区不能操作安全区资源,不过非安全区可以调用安全区允许的代码。

工程设置跟上一个一样,还是俩小灯,PH6属于非安全区资源,PH7属于安全区资源。
QQ截图20211009123622.png
首先我们试一下直接操作寄存器(这样是不行滴)。
非安全区 main函数里
  1. /* USER CODE BEGIN WHILE */
  2.   while (1)
  3.   {
  4.     HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_7);
  5.     HAL_Delay(1000);
  6.     /* USER CODE END WHILE */

  7.     /* USER CODE BEGIN 3 */
  8.   }
  9.   /* USER CODE END 3 */
复制代码

编译下载到芯片,不能运行,说明非安全区代码是不能直接操作安全区资源的。

正统的方式是使用函数的方式调用。而且这个函数不是普通函数(肯定的,毕竟是俩工程)。需要使用__attribute((cmse_nonsecure_entry)) 进行修饰(不修饰的话,编译都过不了)。

重新写一下代码
安全区
  1. CMSE_NS_ENTRY void LED_toggle_S(void)
  2. {
  3.     HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_7);
  4. }
复制代码

这里的CMSE_NS_ENTRY__attribute((cmse_nonsecure_entry)) 是等价的。如果追求严谨的话,可以把这个函数定义到secure_nsc.c里面,并在secure_nsc.h做声明,声明时只需像普通函数一样即可,即void LED_toggle_S(void);

非安全区 main函数里
  1. /* USER CODE BEGIN WHILE */
  2.   while (1)
  3.   {
  4.       LED_toggle_S();
  5.       HAL_Delay(1000);
  6.     /* USER CODE END WHILE */

  7.     /* USER CODE BEGIN 3 */
  8.   }
  9.   /* USER CODE END 3 */
复制代码

编译下载,绿灯开始正常闪烁。

注:因为非安全区可以调用安全区允许的代码,所以,编译的时候建议先编译安全区的程序,再编译非安全区的程序。

收藏 评论13 发布时间:2021-10-17 17:34

举报

13个回答
子曰好人2号 回答时间:2021-10-27 10:14:49
不错的指导例程,没关注U5的测评消息,错过了试用申请
昱枫 回答时间:2021-10-27 10:15:26
意味着,写代码都要在线又安全区的方式调用一次
昱枫 回答时间:2021-10-27 10:19:27
工程实例挺好,说明的挺清晰,那之后操作安全区是不是麻烦点
joshua天宇 回答时间:2021-10-27 10:25:47
学习了
wudianjun2001 回答时间:2021-10-27 10:25:54
有安全区的概念了,很不错
zhangt0713 回答时间:2021-10-27 10:37:46
学习了  谢谢
ghost110 回答时间:2021-10-27 10:57:10
学习了,很详细。感谢大神分享。
QIANYING79 回答时间:2021-10-27 14:31:10
很详细的帖子,学习了
moluxiyan 回答时间:2021-10-27 16:22:45
说的很清晰
orima 回答时间:2021-10-27 21:57:49
学习了,很详细。感谢!

qiangtech 回答时间:2021-10-28 09:52:17
解释得很清楚调用的关系。
VegardCheng 回答时间:2021-10-28 22:33:30
总感觉操作起来比较麻烦
BEEE 回答时间:2021-10-28 23:40:03
想赶快使用ST新推出这款STM32U5系列产品,学习学习

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版