打印
[开发工具]

使用STM32的MPU实现代码隔离和访问控制

[复制链接]
921|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxs0026|  楼主 | 2020-7-22 15:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
目标:只允许“高级函数”访问OTP中的数据,其它应用程序不能直接读取OTP内容
例程@ F413-Nuclo,F401-Nucleo

• 需要解决的问题和达到的目标• 用户需要将一部分数据写入NVM,一次性希望写入后该部分数据不能再被修改
• 该端数据只能被部分关键代码访问,其他的应用数据无法直接读取该段数据的内容
• 目标环境
• 应用程序使用的MCU为STM32F4
• 分析(以F413为例)
• F413带有528字节的OTP,可以满足数据一次性写入之后无法被修改的需求
• 为了实现只允许部分代码访问OTP的要求,需要将代码分区,并设置不同的访问权限
• F413带有MPU功能,通过合理配置MPU和不同代码的运行级别,可以实现访问控制
• 首先可以将代码区分为运行于特权级别的代码(关键函数),和运行于用户级别的代码(普通应用)
• 设置不同的MPU region及其访问权限,使得OTP所在的region只能被运行在特权级别的代码读取


使用特权

评论回复
沙发
lxs0026|  楼主 | 2020-7-22 15:48 | 只看该作者
使用MPU实现访问控制的思路

使用特权

评论回复
板凳
lxs0026|  楼主 | 2020-7-22 15:49 | 只看该作者
构建示例程序——通过MPU实现访问控制

• 代码结构变化
• Main函数
• 调用MPU配置函数,进入应用程序前降级到用户模式
• MPU配置源文件
• 配置MPU region,使能MPU
• 关键代码源文件
• 实际访问OTP区域的代码和操作
• 关键代码wrapper源文件
• API函数,供用户级应用程序调用
• 触发SVC中断进入特权级别
• 调用关键代码实际操作函数
• 退回用户级别,返回应用程序
• SVC中断Handler
• 处理SVC call中断,判断PC range
• 转入特权级别执行应用程序
• Linker文件配合
• Linker file中定义两个RAM区,用于分别放置特权
级和用户级代码使用的堆栈
• Linker file中定义放置关键代码wrapper目标文件
的block,及其对应在Flash中的地址
• SVC中断处理函数将使用该地址做PC范围检查
• MPU region考虑
• OTP区域,特权级只读访问
• 用户级代码使用的SRAM区,完全读写访问,不
可执行
• 一般外设,完全读写访问,不可执行
• DMA(假设应用不使用)完全不可访问(避免应用通过
DMA访问OTP区域)
• Flash代码区,只读访问,可执行
• 其他:缺省模式,只允许特权模式访问


使用特权

评论回复
地板
lxs0026|  楼主 | 2020-7-22 15:49 | 只看该作者

使用特权

评论回复
5
lxs0026|  楼主 | 2020-7-22 15:50 | 只看该作者

使用特权

评论回复
6
lxs0026|  楼主 | 2020-7-22 15:51 | 只看该作者

使用特权

评论回复
7
lxs0026|  楼主 | 2020-7-22 15:52 | 只看该作者

使用特权

评论回复
8
lxs0026|  楼主 | 2020-7-22 15:56 | 只看该作者

使用特权

评论回复
9
lxs0026|  楼主 | 2020-7-22 15:58 | 只看该作者

使用特权

评论回复
10
lxs0026|  楼主 | 2020-7-22 16:04 | 只看该作者

使用特权

评论回复
11
lxs0026|  楼主 | 2020-7-22 16:04 | 只看该作者

使用特权

评论回复
12
lxs0026|  楼主 | 2020-7-22 16:11 | 只看该作者

使用特权

评论回复
13
lxs0026|  楼主 | 2020-7-22 16:14 | 只看该作者

使用特权

评论回复
14
lxs0026|  楼主 | 2020-7-22 16:20 | 只看该作者

使用特权

评论回复
15
lxs0026|  楼主 | 2020-7-22 16:24 | 只看该作者

使用特权

评论回复
16
lxs0026|  楼主 | 2020-7-22 16:27 | 只看该作者

使用特权

评论回复
17
lxs0026|  楼主 | 2020-7-22 16:29 | 只看该作者

使用特权

评论回复
18
得不到的光| | 2020-8-28 09:18 | 只看该作者
在吗,楼主。我想请教你关于F413的程序问题,方便加一下微信吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

1050

帖子

1

粉丝