STM32无法更新程序

[复制链接]
7534|8
 楼主| fygj2093 发表于 2010-9-15 17:15 | 显示全部楼层 |阅读模式
本帖最后由 fygj2093 于 2010-9-15 19:11 编辑

本人购买了一块STM32F103ZET6评估板,配有KEIL3和ULINK下载器。后因需要防止程序被读出,想尝试下读保护功能,于是在程序中添加了使能读保护的代码。板子复位后正常运行,查询读保护状态位已置位,但无法更新程序。查阅资料得知使能读保护后前4页FLASH会自动写保护,觉得是因此导致无法更新程序,故想通过擦除FLASH来解除写保护,在KEIL的Options--Utilities--Flash Download Setup中点选了Erase Full Chip,下载时提示擦除完成但下载失败,之后选择部分擦除,提示Flash Timeout.Reset the Target and try it again。
是否芯片的启动代码也被我擦除了?只能报废或返厂?
现有的工具还能否解决此问题?
请大虾些指点一下。十分感谢
airwill 发表于 2010-9-17 10:25 | 显示全部楼层
本帖最后由 airwill 于 2010-9-17 10:26 编辑

STM32_Flash_RM_CH_V6.pdf   
P11 上这么描述

当保护字节被写入相应的值以后:
1  只允许从用户代码中对主闪存存储器的读操作(以非调试方式从主闪存存储器启动)。
2  第0~3页(小容量和中容量产品),或第0~1页(大容量和互联型产品)被自动加上了写保护,
其它部分的存储器可以通过在主闪存存储器中执行的代码进行编程(实现IAP或数据存储等
功能),但不允许在调试模式下或在从内部SRAM启动后执行写或擦除操作(整片擦除除
外)。


3  所有通过JTAG/SWD向内置SRAM装载代码并执行代码的功能依然有效,亦可以通过
JTAG/SWD从内置SRAM启动,这个功能可以用来解除读保护。当读保护的选项字节转变
为存储器未保护的数值时,将会执行整片擦除过程。



不过我也没有试验过, 等待楼主的进一步试验.
zhongyb 发表于 2010-9-17 10:44 | 显示全部楼层
方法1.使用片上的ISP功能执行全片擦除;
方法2.使用JLINK以及JLINK自带的STM32解锁软件解锁,也就是全片擦除。
ENJOY

评分

参与人数 1威望 +1 收起 理由
fygj2093 + 1 感谢

查看全部评分

gavin_li 发表于 2010-9-19 16:20 | 显示全部楼层
 楼主| fygj2093 发表于 2010-9-21 10:51 | 显示全部楼层
方法1.使用片上的ISP功能执行全片擦除;
方法2.使用JLINK以及JLINK自带的STM32解锁软件解锁,也就是全片擦除。
ENJOY
zhongyb 发表于 2010-9-17 10:44

我手上只有ULINK呀。
zhongyb 发表于 2010-9-21 17:22 | 显示全部楼层
不是还有方法1吗?
方法1.使用片上的ISP功能执行全片擦除;
不需要使用任何仿真器,只需要串口线就能操作。
 楼主| fygj2093 发表于 2010-9-27 16:12 | 显示全部楼层
使用ISP方法已解决问题了。非常感谢
baidudz 发表于 2010-9-27 18:28 | 显示全部楼层
那得恭喜楼主了:lol
yingxuexuan 发表于 2013-3-14 11:08 | 显示全部楼层
flash timeout.reset the target and try it again
请看附件
11.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部