OpenEdv-开源电子网

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

复位以后程序是从哪启动的?

[复制链接]

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2018-7-12
在线时间
34 小时
发表于 2018-10-19 17:12:36 | 显示全部楼层 |阅读模式
1金钱
问问大家如果用串口下载程序,那么复位后程序是从0x8000000开始运行的吗?是不是不同的下载方式复位以后的程序开始运行地址不一样啊?


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

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-10-19 18:41:38 | 显示全部楼层
会从 复位向量里读出起始地址开始执行
Capture.PNG
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-10-17
在线时间
2 小时
发表于 2018-10-19 19:21:22 | 显示全部楼层
这个要看 BOOT0和BOOT1的引脚电平设置吧
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-10-20 08:23:21 | 显示全部楼层
和BOOT0 BOOT1设置有关。

正常boot0=0,boot1=0的话,是从复位中断向量处开始运行;
其他情况则是从对应的ISP程序入口处开始运行。
十六进制带我飞。
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2018-7-12
在线时间
34 小时
 楼主| 发表于 2018-10-22 08:55:58 | 显示全部楼层
edmund1234 发表于 2018-10-19 18:41
会从 复位向量里读出起始地址开始执行

这个里面看不出来复位向量的起始地址啊,只有个复位向量啊
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2018-7-12
在线时间
34 小时
 楼主| 发表于 2018-10-22 08:57:22 | 显示全部楼层
DreamWaterPro 发表于 2018-10-20 08:23
和BOOT0 BOOT1设置有关。

正常boot0=0,boot1=0的话,是从复位中断向量处开始运行;

ISP的程序入口是0x8000000吗?
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-10-22 09:25:47 | 显示全部楼层
castle 发表于 2018-10-22 08:57
ISP的程序入口是0x8000000吗?

肯定不是啊,这个数据手册上也没有说,算是ST的商业机密吧
十六进制带我飞。
回复

使用道具 举报

4

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-9-22
在线时间
5 小时
发表于 2018-10-22 10:11:34 | 显示全部楼层
都是从首地址开始运行
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-10-22 14:21:19 | 显示全部楼层
castle 发表于 2018-10-22 08:55
这个里面看不出来复位向量的起始地址啊,只有个复位向量啊

你在startup_stm32f10x_hd.s文件搜“Reset_Handler”,
就会看到这句 Reset_Handler   PROC
这就是你说的地址了
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2018-7-12
在线时间
34 小时
 楼主| 发表于 2018-10-22 15:55:59 | 显示全部楼层
edmund1234 发表于 2018-10-22 14:21
你在startup_stm32f10x_hd.s文件搜“Reset_Handler”,
就会看到这句 Reset_Handler   PROC
这就是你 ...

这个并没有具体的地址啊
捕获.PNG
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-10-22 16:16:24 | 显示全部楼层
本帖最后由 edmund1234 于 2018-10-22 16:26 编辑
castle 发表于 2018-10-22 15:55
这个并没有具体的地址啊

你这样问, 就要先给你解释一下, 这个具体地址是编译器自行决定, 当然你可以通过某些手段把它固定在某个地址, 你要具体地址有N个方式, 但需要在编译通过后去查看才是有效的值, 正如上面说的, 这具体地址编译器会因应整个代码的分布的最高效率而自动产生的
一) 可以在编译后产年的Map文件里找
二) 在Debug模式下, 打开Symbo窗口, 在左上角输入Reset_Handler, 就自然看到具体地址

不要以这图的0x0801D0D4为你的答案, 因为我的代码跟你不一样, 编译器会安排不一样的地址, 也许是同样是你的代码, 你稍微更改一下, 它就变了
Capture.PNG
回复

使用道具 举报

14

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2018-9-14
在线时间
157 小时
发表于 2018-10-22 16:19:46 | 显示全部楼层
正常启动进入0x04[0x8000004]对应的地址
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2018-7-12
在线时间
34 小时
 楼主| 发表于 2018-10-22 17:13:44 | 显示全部楼层
edmund1234 发表于 2018-10-22 16:16
你这样问, 就要先给你解释一下, 这个具体地址是编译器自行决定, 当然你可以通过某些手段把它固定在某 ...

噢噢,懂了,谢谢哦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 17:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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