硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5296|回复: 12
收起左侧

[Flash] STM32H7内部Flash的读保护说明(Level0默认,Level1连接保护,Level2设备和自举保护)

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2020-2-29 14:16:12 | 显示全部楼层 |阅读模式
RDP(read out protection)

1、Level 0(无保护)

  默认设置,所有读写和擦除操作都可以正常支持。

2、Level 1 (Flash连接保护)

(1)可以防止连接调试器时读取Flash内容,或者RAM中存有恶意获取代码,也是禁止的。

        因此只要调试器连接芯片,或者从内部RAM启动运行代码,都是禁止访问内部Flash的

(2)如果没有检测到从内部RAM启动,从系统bootloader启动且没有连接调试器,对用户Flash的读写和擦除操作都是允许的,并且其它安全存储区也是可以访问的。否则是禁止访问的,一旦检测到对Flash的读请求,将产生总线错误。

(3)如果将Level 1切换到Level 0时,用户Flash区和安全区域将被删除。

3、Level 2(设备保护和自举保护)

(1)所有调试特性被关系。
(2)禁止从RAM启动。
(3)除了选项字节里面的SWAP位可以配置,其它位都无法再更改。
(4)禁止了调试功能,且禁止了从RAM和系统bootloader启动,用户Flash区是可以执行读写和擦除操作的,访问其它安全存储区也是可以的。

特别注意:Level2修改是永久性的,一旦配置为Level2将不再支持被修改。

一览表:
1.png


设置读保护的话,使用HAL的API可以设置,也可以使用STM32CubeProg设置:

QQ截图20200229142129.png




回复

使用道具 举报

22

主题

250

回帖

321

积分

高级会员

积分
321
发表于 2020-2-29 17:38:06 | 显示全部楼层
如果使用Level 2之后,能不能再次通过boot模式下,串口写进去程序呢?还是只要使能Level 2后,这个芯片永远无法从外部读写程序,包括调试。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2020-2-29 17:44:54 | 显示全部楼层
wujialing3000 发表于 2020-2-29 17:38
如果使用Level 2之后,能不能再次通过boot模式下,串口写进去程序呢?还是只要使能Level 2后,这个芯片永远 ...

系统bootloader不能使用了,但是如果用户自己做的boot是可以用的。
回复

使用道具 举报

2

主题

22

回帖

28

积分

新手上路

积分
28
发表于 2020-2-29 23:31:13 | 显示全部楼层
硬汉老师,采样了Level 2后,就不能通过JLINK 或者串口下载程序了。但是程序自己接收云端固件还是可以自己升级的对吧。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2020-3-1 00:09:39 | 显示全部楼层
asd951886 发表于 2020-2-29 23:31
硬汉老师,采样了Level 2后,就不能通过JLINK 或者串口下载程序了。但是程序自己接收云端固件还是可以自己 ...

对,自己做的boot是可以正常的使用的。如果串口bootloader也是自己做的,也是能升级的。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
发表于 2021-1-11 16:22:01 | 显示全部楼层
如果设置成Level2,自己的IAP程序本身也没法更新了吧,还是说有别的办法能更新IAP程序本身。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2021-1-12 08:54:13 | 显示全部楼层
kokoromi 发表于 2021-1-11 16:22
如果设置成Level2,自己的IAP程序本身也没法更新了吧,还是说有别的办法能更新IAP程序本身。

设置成level2后,用户自己做的bootloader还可以继续更新程序。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
发表于 2021-1-12 11:24:11 | 显示全部楼层
eric2013 发表于 2021-1-12 08:54
设置成level2后,用户自己做的bootloader还可以继续更新程序。

我的意思是用户自己做的这个bootloader本身怎么更新?是不是只能一锤子买卖
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2021-1-12 12:23:31 | 显示全部楼层
kokoromi 发表于 2021-1-12 11:24
我的意思是用户自己做的这个bootloader本身怎么更新?是不是只能一锤子买卖

如果是level2方式下自己作做bootloader,随时都都可以更新,即boot+app的方式。
回复

使用道具 举报

41

主题

112

回帖

235

积分

高级会员

积分
235
发表于 2021-2-5 09:49:14 | 显示全部楼层
“使用HAL的API可以设置”,没找到啊,是哪个API啊?谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2021-2-6 07:42:58 | 显示全部楼层
bear_yh 发表于 2021-2-5 09:49
“使用HAL的API可以设置”,没找到啊,是哪个API啊?谢谢

有的,找下。
回复

使用道具 举报

5

主题

19

回帖

34

积分

新手上路

积分
34
发表于 2022-9-21 08:07:38 | 显示全部楼层
stm32 H7B0  使能lvevl 1 都保护时 ,,用H7-TOOL 的离线烧写功能就烧写不了了。但是用jlink 时可以烧写的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2022-9-21 10:37:35 | 显示全部楼层
1824789902 发表于 2022-9-21 08:07
stm32 H7B0  使能lvevl 1 都保护时 ,,用H7-TOOL 的离线烧写功能就烧写不了了。但是用jlink 时可以烧写的

使用H7-TOOL的高速DAPLINK配合OpenOCD做芯片读写保护和解除保护也非常方便(2022-03-13)
https://www.armbbs.cn/forum.php? ... 1402&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 02:52 , Processed in 0.196644 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表