基于cubemx6.0的stm32l5trustzone使用(三)-非安全区调用安全区代码

访问权限说明

stm32l5trustzone开启时,访问权限如下:
1、安全空间的代码可以访问安全和非安全的外设。
2、非安全空间的代码不可访问安全的外设。
3、安全空间的代码可以随意调用非安全空间的代码。
4、非安全空间的代码只能调用安全空间允许的代码。

非安全空间的代码不可访问安全的外设。

非安全空间的代码不可访问安全空间的外设寄存器,当非安全区操作安全区的外设时,会被cpu所屏蔽,使操作无效。
本次操作如下:
1、将PB7(LED灯)初始化在trustzone里。
在这里插入图片描述
2、在non-trust工程的main.c文件里添加每秒翻转PB7电平代码。
在这里插入图片描述
3、按使用(一)中的方法烧写程序,验证自己的代码。
发现PB7(蓝灯)并没有每秒发生翻转,证实非安全区代码不可访问安全区外设。
在这里插入图片描述

非安全区可调用安全区允许的代码

非安全区若要操作安全区的代码(寄存器)时,需要在trustzone工程里的secure_nsc.c里定义函数,并在函数前加入CMSE_NS_ENTRY关键字。
本次操作如下:
1、将PB7(LED灯)初始化在trustzone里。
在这里插入图片描述
2、在trustzone工程里的secure_nsc.c里添加翻转PB7电平函数,并添加CMSE_NS_ENTRY关键字。
在这里插入图片描述
3、在secure_nsc.h里申明该函数,此时不需要添加关键字。
在这里插入图片描述
4、在non-trust工程的main.c文件里添加secure_nsc.c中的代码。
在这里插入图片描述
5、按使用(一)中的方法烧写程序,验证自己的代码。
发现PB7(蓝灯)每秒发生翻转。

猜你喜欢

转载自blog.csdn.net/qq_41776159/article/details/107798668