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

stm32f103的bootloader和用户app问题

[复制链接]
zhxqiao 提问时间:2018-1-29 17:23 /
bootloader下面简称iap    用户程序简称app
本人自己写的bootloader的代码,跳转和复位都有.app用 的iar开发的,生成的hex文件,解析里面的数据传输到mcu的首地址0x08002000.数据2头校验都是通过的,说明数据应该是没有错的,且都写进了flash;
但是升级之后 不能正常运行.是不是app程序的iar环境哪里需要特殊设置吗?
期待大神解答,不胜感激!
收藏 评论13 发布时间:2018-1-29 17:23

举报

13个回答
zhao.zhao 回答时间:2018-1-30 20:42:39
改2个地方
1、在"OPTION"的"target"中作如下改动
2、在"system_stm32f1xx.c"中,改变中断向量表的偏移
//#define VECT_TAB_OFFSET  0x0 //原来的数值
#define VECT_TAB_OFFSET  0x4000  //改动后的数值

// 偏移量在下面指令中被执行
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
target.jpg

评分

参与人数 2ST金币 +1 蝴蝶豆 +5 收起 理由
fyp0303-1309862 + 1 很给力!按照你说的,总算解决问题了。.
zero99 + 5

查看全部评分

yu0405jie 回答时间:2018-1-29 17:29:15
编译app时链接文件需要设置,app里面的中断向量表需要设置,论坛里讨论iap的帖子应该挺多了,你搜一下吧。

评分

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

查看全部评分

toofree 回答时间:2018-1-29 18:23:02
app编译时,要带偏移地址的。
就是要把0x0800000,改成0x08002000。

评分

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

查看全部评分

zhxqiao 回答时间:2018-1-29 19:07:20
yu0405jie 发表于 2018-1-29 17:29
编译app时链接文件需要设置,app里面的中断向量表需要设置,论坛里讨论iap的帖子应该挺多了,你搜一下吧。 ...

设置了
在app的main里面
zhxqiao 回答时间:2018-1-29 19:08:56
yu0405jie 发表于 2018-1-29 17:29
编译app时链接文件需要设置,app里面的中断向量表需要设置,论坛里讨论iap的帖子应该挺多了,你搜一下吧。 ...

在app的main里面加了
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
在linker里面也配置了0x8002000  
肯定的是升级的程序都写好了
但是app在把中断向量该回来,代码地址该回来的时候,都好的
回答时间:2018-1-30 08:44:00
bootloder中的程序是否开启了中断?先保证程序运行无措情况下进行测试。

评分

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

查看全部评分

yu0405jie 回答时间:2018-1-30 09:42:14
zhxqiao 发表于 2018-1-29 19:08
在app的main里面加了
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
在linker里面也配置了0x8002000 ...

那你把bootloader中关于到app跳转部分的代码贴出来看看吧
wudianjun2001 回答时间:2018-1-30 13:49:42
生成文件的地址要和程序里的对应起来

评分

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

查看全部评分

Johnson Cao 回答时间:2018-1-30 13:55:31
应该跳转代码问题吧.
Johnson Cao 回答时间:2018-1-30 13:56:30
JumpAppEntry        PROC
                                EXPORT  JumpAppEntry             [WEAK]
                                LDR           R1, =APP_ADDRESS
                                LDR           R0, [R1, #4]
                                BX            R0
                                NOP
                                ENDP
给你一个代码看看.不能跳到0x8002000地址的,这是SP地址.要偏移4个字节.

评分

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

查看全部评分

12下一页

所属标签

相似问题

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