硬汉嵌入式论坛

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

[问题解答] 使用H7TOOL设置芯片STM32H750VBT6读保护,断电复位后仍然可以读出Flash,为什么?

[复制链接]

27

主题

150

回帖

231

积分

高级会员

积分
231
发表于 9 小时前 | 显示全部楼层 |阅读模式
本帖最后由 ifree 于 2026-5-5 10:12 编辑

stm32h750下载截图.png


软件配置如图所示(PS:软件界面“自动接触读保护”应该写错了“自动解除读保护”),
使用的芯片是STM32H750VBT6,因为芯片内部实测有2MFlash,所以选择的2M的下载算法。
执行一键下载后,切换到读芯片页面功能,仍然可以读取Flash数据。


下载后,为了确保断电复位,我把电源切断十几秒后,重新上电,读保护好像也没有使能成功。

是哪里操作不对吗?
我在读芯片选型卡执行“使能读保护”读取选项字,在执行“解除读保护”,读取选项字,从数据来看,好像选项字没有成功。


[C] 纯文本查看 复制代码
写选项字...
OB_SECURE_ON = 	F055D60B F055D60B 00000000 FF000000 	...
MCU_ProgOptionBytes()
等待OB编程完成.......
写选项字成功, 耗时 = 1010 ms
执行掉电复位
core_id = 0x6BA02477
Option bytes Address:
5200201C 5200201D 5200201E 5200201F 52002028 52002029 5200202A 5200202B 52002030 52002031 52002032 52002033 52002038 52002040 52002041 52002042 52002043 52002128 52002129 5200212A 5200212B 52002130 52002131 52002132 52002133 52002138
Option bytes data:
F0 AA 1E 14 FF 00 00 80 FF 00 00 00 FF 00 08 F0 1F FF 00 00 00 FF 00 00 00 FF 

写选项字...
MCU_RemoveProtect()
MCU_ProgOptionBytes()
等待OB编程完成.......
解除芯片保护执行完毕
硬件复位
执行掉电复位
core_id = 0x6BA02477
Option bytes Address:
5200201C 5200201D 5200201E 5200201F 52002028 52002029 5200202A 5200202B 52002030 52002031 52002032 52002033 52002038 52002040 52002041 52002042 52002043 52002128 52002129 5200212A 5200212B 52002130 52002131 52002132 52002133 52002138
Option bytes data:
F0 AA 1E 14 FF 00 00 80 FF 00 00 00 FF 00 08 F0 1F FF 00 00 00 FF 00 00 00 FF 

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122361
QQ
发表于 9 小时前 | 显示全部楼层
1、这个是我的软件版本,2.3.1b

1.png

2、硬件接线,TOOL独立供电(TOOL独立供电,选择断电才有意义),方便断电上电,保证选项字节生效

硬件芯片STM32H750VBT6

2.png

3、我的配置,下载后

3.png

实际读取

4.png




回复

使用道具 举报

27

主题

150

回帖

231

积分

高级会员

积分
231
 楼主| 发表于 9 小时前 | 显示全部楼层
我换了一个你图片中的小系统板做实验,确实可以成功开启读保护。
但是我自己的板子,我确实只使用H7Tool供电,我把下载算法换成H750VB也是无法成功开启读保护。
屏幕截图 2026-05-05 104038.png

屏幕截图 2026-05-05 104258.png

[C] 纯文本查看 复制代码
-------第1步: 制作烧录配置文件lua-------
输出文件夹: 
D:\01DevTool\h7toolPC_release(V2.3.1b)\h7toolPC_release\EMMC\H7-TOOL\Programmer\User\Demo
  1K_0x55.lua
  1K_0x55.ini
  1K_0x55.bin
数据文件累加校验和 : 0x00015400
制作配置文件成功!


-------第2步: 下载到H7-TOOL-------
0:/H7-TOOL/Programmer/User/Demo
  文件相同
0:/H7-TOOL/Programmer/User/Demo/1K_0x55.lua (6741)
  文件相同
0:/H7-TOOL/Programmer/User/Demo/1K_0x55.ini (66)
  传输成功
0:/H7-TOOL/Programmer/User/Demo/1K_0x55.bin (1024)
  文件相同
传输成功 (0.016 s) 共4个文件
更新文件 0:H7-TOOL/Programmer/User/autorun.ini 成功

-------第3步: 开始烧录-------
控制H7-TOOL进入脱机烧录界面成功
load "STM32H7x_2M.lua" ok
dofile : 	0:/H7-TOOL/Programmer/Device/ST/Lib/STM32H7_Lib_5C001000.lua
load "fix_data.lua" ok. V1.6(2025-03-05)
load "prog_lib.lua" ok. V3.8(2024-03-15)
load "machine_if.lua" ok.  V2.1(2024-04-12)
单路模式
开始烧录...
单路烧录
ST(意法半导体)	STM32H7xx	STM32H7x_2M
SWCLK时钟延迟: 	0
TVCC电压: 3.261V   TVCC电流:75mA
复位模式 = 0
出错立即中止 = 1
core_id = 0x6BA02477
检查读写保护...
  0x5200201D :0xAA & 0xFF == 0xAA
  无保护
uid1 = 1D 00 26 00 08 51 39 30 35 34 30 38 
------------------------
FLM : 0:/H7-TOOL/Programmer/Device/ST/STM32H7xx/FLM/STM32H7x_2M.FLM
Data: 1K_0x55.bin
Addr: 0x08000000, cfg = 1
InitUnderReset()
..DeviceID = 20036450 
OK
.NVIC_CPUID = 411FC271, Cortex-M7 r1p1
正在检查空片 
  25ms, 0.00%
  29ms, 100.00%
正在擦除整片...
  31ms, 0.00%
  33ms, 0.00%
..........................................
  10657ms, 100.00%
正在编程...
  10685ms, 0.00%
  10692ms, 100.00%
正在校验...(FLM_CRC32)
  10694ms, 0.00%
  10700ms, 100.00%

写选项字...
OB_SECURE_ON = 	F055D60B F055D60B 00000000 FF000000 	...
MCU_ProgOptionBytes()
等待OB编程完成.......
写选项字成功, 耗时 = 1000 ms
编程成功
core_id = 0x6BA02477
Option bytes Address:
5200201C 5200201D 5200201E 5200201F 52002028 52002029 5200202A 5200202B 52002030 52002031 52002032 52002033 52002038 52002040 52002041 52002042 52002043 52002128 52002129 5200212A 5200212B 52002130 52002131 52002132 52002133 52002138
Option bytes data:
F0 AA 1E 14 FF 00 00 80 FF 00 00 00 FF 00 08 F0 1F FF 00 00 00 FF 00 00 00 FF 
address = 0x08000000, len = 1024
08000000 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000020 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000040 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000060 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000080 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080000A0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080000C0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080000E0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000100 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000120 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000140 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000160 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000180 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080001A0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080001C0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080001E0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000200 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000220 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000240 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000260 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000280 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080002A0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080002C0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080002E0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000300 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000320 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000340 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000360 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
08000380 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080003A0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080003C0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
080003E0 : 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 

写选项字...
OB_SECURE_ON = 	F055D60B F055D60B 00000000 FF000000 	...
MCU_ProgOptionBytes()
等待OB编程完成.......
写选项字成功, 耗时 = 1001 ms
执行掉电复位
core_id = 0x6BA02477
Option bytes Address:
5200201C 5200201D 5200201E 5200201F 52002028 52002029 5200202A 5200202B 52002030 52002031 52002032 52002033 52002038 52002040 52002041 52002042 52002043 52002128 52002129 5200212A 5200212B 52002130 52002131 52002132 52002133 52002138
Option bytes data:
F0 AA 1E 14 FF 00 00 80 FF 00 00 00 FF 00 08 F0 1F FF 00 00 00 FF 00 00 00 FF 

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122361
QQ
发表于 9 小时前 | 显示全部楼层
ifree 发表于 2026-5-5 10:43
我换了一个你图片中的小系统板做实验,确实可以成功开启读保护。
但是我自己的板子,我确实只使用H7Tool供 ...

是不是你的板子复位时间长之类的问题。

可以TOOL独立供电,不要接任何其它电源,烧录完毕后,将TOOL的SWD线从你的板子端拔掉,等待会插入SWD读取试试,还是不行,你再找找那里的问题导致的。
回复

使用道具 举报

27

主题

150

回帖

231

积分

高级会员

积分
231
 楼主| 发表于 8 小时前 | 显示全部楼层
奇了怪了,难道有的芯片的读保护是坏的?同一个板子,测试了6个,有4个读保护可以成功,另外2个板子读保护始终无法正常启用。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122361
QQ
发表于 7 小时前 | 显示全部楼层
ifree 发表于 2026-5-5 11:37
奇了怪了,难道有的芯片的读保护是坏的?同一个板子,测试了6个,有4个读保护可以成功,另外2个板子读保护 ...

解决了,深究了下所有选择字节的配置项,发现细节了,是选项字节里面这个ST_RAM_SIZE的影响。你选择了读写保护后,这个选项的D6,改成DE烧录即可,你试试应该就正常了。

你所有的板子都可以使用DE这个配置

123.png


回复

使用道具 举报

27

主题

150

回帖

231

积分

高级会员

积分
231
 楼主| 发表于 7 小时前 | 显示全部楼层
谢谢!改为DE解决了。这个设置是什么意思呢?
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122361
QQ
发表于 4 小时前 | 显示全部楼层
ifree 发表于 2026-5-5 12:32
谢谢!改为DE解决了。这个设置是什么意思呢?

没研究过这个是干什么用的

1.png

2.png
回复

使用道具 举报

27

主题

150

回帖

231

积分

高级会员

积分
231
 楼主| 发表于 4 小时前 | 显示全部楼层
这样做好像引入了新的问题,这样设置后,芯片不能被擦除,也不能重新下载程序了。
[C] 纯文本查看 复制代码
-------第3步: 开始烧录-------
控制H7-TOOL进入脱机烧录界面成功
load "STM32H7x_2M.lua" ok
dofile : 	0:/H7-TOOL/Programmer/Device/ST/Lib/STM32H7_Lib_5C001000.lua
load "fix_data.lua" ok. V1.6(2025-03-05)
load "prog_lib.lua" ok. V3.8(2024-03-15)
load "machine_if.lua" ok.  V2.1(2024-04-12)
单路模式
开始烧录...
单路烧录
ST(意法半导体)	STM32H7xx	STM32H7x_2M
SWCLK时钟延迟: 	0
TVCC电压: 3.237V   TVCC电流:175mA
复位模式 = 0
出错立即中止 = 1
core_id = 0x6BA02477
检查读写保护...
  0x5200201D :0x55 & 0xFF == 0xAA(已保护)
正在解除保护...

写选项字...
MCU_RemoveProtect()
MCU_ProgOptionBytes()
等待OB编程完成.......
解除芯片保护执行完毕
硬件复位
uid1 = 2C 00 34 00 01 51 38 30 38 39 36 36 
------------------------
FLM : 0:/H7-TOOL/Programmer/Device/ST/STM32H7xx/FLM/STM32H7x_2M.FLM
Data: sc1000-bootloader.hex_1.bin
Addr: 0x08000000, cfg = 1
InitUnderReset()
..DeviceID = 10036450 
OK
.NVIC_CPUID = 411FC271, Cortex-M7 r1p1
正在检查空片 
  1102ms, 0.00%
error:1100 swd_wait_until_halted() timeout
target_flash_check_blank() error, FlashAddr = 8000000, FileLen = 19400

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122361
QQ
发表于 2 小时前 | 显示全部楼层
ifree 发表于 2026-5-5 15:52
这样做好像引入了新的问题,这样设置后,芯片不能被擦除,也不能重新下载程序了。
[mw_shl_code=c,true]
...

没问题,这个提示是没有正常运行查空检测,与我们这里修改的选项字节无关。
你那边应该是解除保护后,没有正常恢复运行状态,解决办法从SWD线从板子端拔掉一会,然后重新插入测试,一般都可以解决。另外考虑把这个启用了

下载 (4).png

我这里的4套V7板子,8个H750核心板,轮番测试了一轮,均正常。

1.png


2.png


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-5 19:57 , Processed in 0.431323 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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