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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版