OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4886|回复: 3

关于bootloader到APP的跳转

[复制链接]

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2016-4-2
在线时间
17 小时
发表于 2016-9-23 16:23:31 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 happydog 于 2016-9-23 16:34 编辑

MCU: STM32F10X
0x0800_0000  ~ 0x0800_3000共 12KB空间放置了bootloader
通过串口成功将 hex文件(APP) 烧写到FLASH
0x0800_3000~开始的空间中。
注:编译hex时已经将IROM1的start地址设为 0x0800_3000
debug后发现bootlaoder成功跳转到了0x0800_3004指定的开始地址。
但是接下去运行一段就发现APP运行不了了。


在bootloader切换APP前关掉全部外部中断:__set_PRIMASK(1);
在进入到APP后开启全部外部中断 :__set_PRIMASK(0);

跳转到APP后,发现系统的中断处理函数还是使用的bootloader中的中断向量表中的。(处于0x0800_0000开始处)
请问:
如何让中断使用APP的中断向量表?系统初始化,对中断向量表重新映射是在跳到APP的+4后,进入RESET HANDLER由LIB完成的吗?
上述bootloader->APP的跳转是否妥当?为何我的APP没有正确执行起来。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2016-4-2
在线时间
17 小时
 楼主| 发表于 2016-9-23 16:35:40 | 显示全部楼层
本帖最后由 happydog 于 2016-9-23 16:36 编辑

自问自答:
问题1:
“如何让中断使用APP的中断向量表?系统初始化,对中断向量表重新映射是在跳到APP的+4后,进入RESET HANDLER由LIB完成的吗?”

在SystemInit中,由它重新映射中断向量表
[mw_shl_code=applescript,true]SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;[/mw_shl_code]
问题2:还没解决
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2016-4-2
在线时间
17 小时
 楼主| 发表于 2016-9-23 16:42:10 | 显示全部楼层
happydog 发表于 2016-9-23 16:35
自问自答:
问题1:
“如何让中断使用APP的中断向量表?系统初始化,对中断向量表重新映射是在跳到APP的+ ...

问题2
已解决:

重新设定APP的FLASH_BASH为0x0800_3000
就OK了。

回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2016-4-2
在线时间
17 小时
 楼主| 发表于 2016-9-23 16:44:35 | 显示全部楼层
@正点原子 麻烦关贴。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 19:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表