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

做stm32L476RG的IAP功能遇到了问题

[复制链接]
jinguang2020 提问时间:2017-9-12 14:04 /
本帖最后由 jinguang2020 于 2017-9-12 14:05 编辑

  问题描述:最近做stm32L476RG的IAP功能,设计思路是初始程序运行在BANK1,用串口接收更新程序,存储在BANK2,再置位选项字节中的BFB2,程序跳转到BANK2运行;如果串口又收到更新程序,则存储在BANK1,清零选项字节中的BFB2,程序跳转到BANK1运行;如此反复。
  但是实际做的过程中遇到了问题,调试了几天都没有进展。实现上述的第一步是成功的,BANK1中的程序收到更新程序存储在BANK2并能够正确运行。BANK2中的程序又收到更新程序,先擦除BANK1也是OK的,但是将新程序写入BANK1时就会产生错误。通过ST-LINK utility能够观察到,新程序存储在BANK2,地址为0x08080000起始,BANK1已经擦除,但是没有写入数据。
  开始使用的是快速写FLASH,即FLASH_TYPEPROGRAM_FAST,出错时错误标志位有PGSERR、PGAERR、PROGERR;又尝试了FLASH_TYPEPROGRAM_DOUBLEWORD,出错时的标志位是PGAERR、PROGERR、OPERR。
  调试过程中还遇到一个很奇怪的问题,当更新程序运行在BANK2时,程序地址空间应该是从0x08080000起始,但是我读一个函数的地址却是0x08002861,属于BANK1的地址空间。
  试了ST给的例程,也存在同样的问题。
  以上是我遇到的一些问题,欢迎大家一起讨论,更欢迎同行的高手和ST的专家指教。在此先谢谢大家!

IAP.png
收藏 评论7 发布时间:2017-9-12 14:04

举报

7个回答
废鱼 回答时间:2017-9-12 15:47:29
楼主生成少些文件时,工程配置中是否修改了FLASH的其实地址?

评分

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

查看全部评分

jinguang2020 回答时间:2017-9-12 17:21:35
安 发表于 2017-9-12 15:47
楼主生成少些文件时,工程配置中是否修改了FLASH的其实地址?

工程配置中没有修改Flash起始地址,这个会有什么影响呢?
废鱼 回答时间:2017-9-13 08:39:14
这样的影响就是。写入的代码可能会有问题,他的起始地址是不一样的。楼主可以按照实际应用的地址修改一下FLASH起始地址,然后再测试一下。

评分

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

查看全部评分

埃斯提爱慕 回答时间:2017-9-13 14:47:52
提示: 作者被禁止或删除 内容自动屏蔽
PaulRambo 回答时间:2018-1-23 15:02:10
楼主,我最近也遇到这个问题。请问您解决了吗?
随风飘扬 回答时间:2018-1-23 16:21:45
在编写程序的时候,需要根据你的FLASH起始地址,更改工程的链接文件,编译器会根据你的链接文件内容规划各函数的地址,在经过链接之后也会将调用的函数名更改为地址。如果在BANK2的函数地址放在了BANK1中,那实际也会执行BANK1中的指令,这样擦除BANK1的内容之后,相关函数指令也会擦除,就影响了BANK1的再次写入。

评分

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

查看全部评分

PaulRambo 回答时间:2018-1-23 16:30:43
非常感谢yu0405jie,按照你的提醒修改了配置文件,我自己的IAP可以用了。谢谢

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版