你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103如何取消写保护

[复制链接]
soul24k123456 提问时间:2018-2-7 14:43 /
我在产品当中使用了IAP,然后在IAP里面有使能了读保护功能,看网上的资料有讲它会默认将前面的几个扇区使能写保护,通过实验证明确实如此。目前想通过程序来更新IAP,但因为上面有几页无法擦除,所以造成失败。

在V3.5的库里面有看到写保护的,是否有取消写保护。

收藏 评论15 发布时间:2018-2-7 14:43

举报

15个回答
wenyangzeng 回答时间:2018-2-8 11:26:37
STM32F103系列好像没有写保护功能,
使用STM32 ST-LINK Utility工具解除这些扇区保护试看看:

无标题.png

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

Tcreat 回答时间:2018-2-7 17:54:17
Flash 上电默认都是写保护的 如果需要对flash写操作操作 需要开启写保护的

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

soul24k123456 回答时间:2018-2-7 18:08:00
依据我测试的结果,好像默认没有写保护的,这个只是我写了读保护后,才会出现前面几个扇区写保护了,如果不写读保护则可以通过内部代码进行擦写操作
不吃肉的羊 回答时间:2018-2-7 18:23:17
使用JLINK,清除整个芯片

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Tcreat 回答时间:2018-2-7 18:37:54
本帖最后由 Tcreat 于 2018-2-7 18:53 编辑
soul24k123456 发表于 2018-2-7 18:08
依据我测试的结果,好像默认没有写保护的,这个只是我写了读保护后,才会出现前面几个扇区写保护了,如果不 ...

有的写保护机制 上电默认都是写保护的  需要对flash解锁才可以写操作
soul24k123456 回答时间:2018-2-7 20:09:54
不吃肉的羊 发表于 2018-2-7 18:23
使用JLINK,清除整个芯片

我的目的是实现在线反过来升级IAP程序,IAP有一个bug需要修复,而且数量有点多。
soul24k123456 回答时间:2018-2-7 20:14:28
Tcreat 发表于 2018-2-7 18:37
有的写保护机制 上电默认都是写保护的  需要对flash解锁才可以写操作

在我的IAP代码里面,只添加了一了读保护的动作
FLASH_ReadOutProtection(ENABLE);
如果IAP第一次上电还没有执行上面的语句或在烧录的时候没有点选读保护,就可以成功的通过Application来反升IAP,否则就会擦除失败。
Tcreat 回答时间:2018-2-7 20:20:37
soul24k123456 发表于 2018-2-7 20:14
在我的IAP代码里面,只添加了一了读保护的动作
FLASH_ReadOutProtection(ENABLE);
如果IAP第一次上电还没 ...

读保护机制 好像有几个级别的  这个你可以参考数据手册响应的章节  读保护机制开启后 好像只能全部擦除  具体你看下相关的资料吧
七哥 回答时间:2018-2-7 23:38:27
本帖最后由 toofree 于 2018-2-7 23:44 编辑

如8楼所说,读保护开启后,如果你要清除读保护,那么整片Flash将会自动擦除。
这个是我之前工程应用中验证过的,当时使用的片子是STM32F103RBT6。
当设置读保护后,无法用ulink下载程序,直接擦除也不好使,点擦除只是复位后程序跑不起来了,但无法重新下载,没用其它仿真器验证过。
这种情况,只有建一个在RAM中跑的工程清除读保护,或者用ISP模式用串口清除读保护。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wudianjun2001 回答时间:2018-2-8 08:22:47
先解锁,再写,写完再加锁

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

soul24k123456 回答时间:2018-2-8 16:15:42
toofree 发表于 2018-2-7 23:38
如8楼所说,读保护开启后,如果你要清除读保护,那么整片Flash将会自动擦除。
这个是我之前工程应用中验证 ...

经我测试在RAM清除读保护同样不行的,因为一旦执行了清除读保护,系统感觉会重新启动,这样RAM当中的程序自然也没有了。
soul24k123456 回答时间:2018-2-8 16:32:02
wudianjun2001 发表于 2018-2-8 08:22
先解锁,再写,写完再加锁

我是按照这个流程来操作的,现在的问题点是我在IAP里面有设置了读保护,而读保护又会自动默认设置前面4页的写保护,造成APP不能更新IAP的程序段。所以要先去写保护,而去写保护又要重启(STM官网的资料是这样要求的),而APP无法早于IAP启动,所以这个点就无法跳过
无薪税绵 回答时间:2018-3-5 13:51:26
能否把程序改一下:
就是在实现更新时,在外部FLASH中,保存一个表示升级的标志,
当程序重启时,在IAP中判断,
如果外部FLASH中有升级标志,就停止读保护,
然后启动APP,在APP中进行升级,
升级完成后,把标志i设置为升级完成。
重启,IAP中判断,如果标志为升级完成,清除标志,并设置读保护。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

Angel_YY_ST 回答时间:2018-3-6 17:29:54
提示: 作者被禁止或删除 内容自动屏蔽
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版