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

STM32L073RZ Bootloader跳转到Application问题

[复制链接]
希望在转角 提问时间:2019-10-28 15:14 /
悬赏10ST金币未解决
     我在用“NUCLEO-L073RZ”开发板调试IAP功能。    Bootloader定义在0x8000000开始的16KB地址范围,Application定义在0x8004000开始的Flash地址。
    已经通过GUI和Bootloader,将一个LED闪烁功能的Application下载到了MCU的0x8004000开始的Flash地址(通过软件已经读出Flash数据)
    Bootloader程序里在最后跳转到Application的程序调用之后,发现程序已经跳出了Bootloader,但是Application并没有运行起来;
    我后来又尝试了直接软件复位MCU(因为我的Bootloader程序初始化时会判断,如果Application的Flash地址有数据,则会跳转到Application去),Application没有运行起来;
    但是,最后当我按了复位按键之后,Application就运行起来了!
    百思不得其解!我把源代码放到了百度网盘,有兴趣的朋友请帮忙一起分析一下:

     Bootloader: https://pan.baidu.com/s/1uUU7lItNWMpmK_DJ9cknDg

     Application: https://pan.baidu.com/s/16N-lUtGi0Bx0E98Uf5nmsA
     谢谢大家!



收藏 评论14 发布时间:2019-10-28 15:14

举报

14个回答
废鱼 回答时间:2019-10-28 16:17:00
楼主,APP对应的中断向量地址是否有重新设置。需要根据配置的FLASH地址进行配置。
希望在转角 回答时间:2019-10-29 08:39:24
安 发表于 2019-10-28 16:17
楼主,APP对应的中断向量地址是否有重新设置。需要根据配置的FLASH地址进行配置。 ...

多谢回复!
APP的中断向量地址有重新设置的:
#define VECT_TAB_OFFSET  0x4000U
另外,硬件复位之后APP能够正常运行,也说明APP实际已经正确地进行了升级。
废鱼 回答时间:2019-10-29 09:18:14
boot中用到哪些中断?再跳转到APP后,是否没有关闭无用的中断?
Ankky 回答时间:2019-10-29 13:37:53
各种奇葩的问题啊。
希望在转角 回答时间:2019-10-30 10:26:44
安 发表于 2019-10-29 09:18
boot中用到哪些中断?再跳转到APP后,是否没有关闭无用的中断?

试过了,在Bootloader跳转之前关中断__disable_irq(),在Application初始化时再开中断__enable_irq();也不行。有时间可以帮忙看看源代码吗?我附了百度网盘的链接。多谢了!
希望在转角 回答时间:2019-10-30 10:27:37
caoenq 发表于 2019-10-29 13:37
各种奇葩的问题啊。

是啊,我刚从SiliconLabs切到ST,遇到各种各样的问题,不过好在大部分都搞定了,现在就差在线升级最后跳转的这一步了
废鱼 回答时间:2019-10-30 13:51:28
不是关闭中断,是要把你不用的中断配置设置为关闭。比如USB中断,定时器中用不到就需要关闭NVIC的配置,而不是单纯的disable。

评分

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

查看全部评分

希望在转角 回答时间:2019-11-1 14:28:10
安 发表于 2019-10-30 13:51
不是关闭中断,是要把你不用的中断配置设置为关闭。比如USB中断,定时器中用不到就需要关闭NVIC的配置,而 ...

这些不用的中断我根本都没开启过,何来关闭之说?
希望在转角 回答时间:2019-11-1 14:29:57
安 发表于 2019-10-30 13:51
不是关闭中断,是要把你不用的中断配置设置为关闭。比如USB中断,定时器中用不到就需要关闭NVIC的配置,而 ...

麻烦有空帮忙看看我的源代码,多谢了!
废鱼 回答时间:2019-11-2 09:17:41
楼主,请把附件上传到本贴中。外部连接无法下载。
希望在转角 回答时间:2019-11-5 14:15:17
安 发表于 2019-11-2 09:17
楼主,请把附件上传到本贴中。外部连接无法下载。

文件太大了,上传不了。百度网盘的链接都不行吗
butterflyspring 回答时间:2019-11-5 15:54:03
跳转的主要问题就是跳转方式和偏移地址。APP软件编译时要在编译器设置好偏移地址,因为你前面已经放置了IAP(bootloader是官方内置的程序,当然很多用户把自己编写的启动升级程序习惯叫BOOTLOADER)。 其次就是跳转方式,主要是跳转的位置。位置是由中断向量表里的内容决定的。官方有这个参考例程,你可以打开详细看,其实也可以直接用。

\STM32Cube_FW_L0_V1.10.0\Projects\STM32L073Z_EVAL\Applications\IAP\IAP_Main\EWARM
STM32L0 IAP Jump.PNG

评分

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

查看全部评分

希望在转角 回答时间:2019-11-6 13:20:42
butterflyspring 发表于 2019-11-5 15:54
跳转的主要问题就是跳转方式和偏移地址。APP软件编译时要在编译器设置好偏移地址,因为你前面已经放置了IAP ...

我就是参考了官方的说明和例程来做的哈。可以帮忙看看源代码吗?
希望在转角 回答时间:2019-11-6 13:21:26
butterflyspring 发表于 2019-11-5 15:54
跳转的主要问题就是跳转方式和偏移地址。APP软件编译时要在编译器设置好偏移地址,因为你前面已经放置了IAP ...

可以加我QQ吗?我QQ传给你。
289846318

所属标签

相似问题

官网相关资源

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