OpenEdv-开源电子网

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

Cotrex-m3运行FLASH内的代码流程问题

[复制链接]

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
发表于 2017-11-9 16:10:14 | 显示全部楼层 |阅读模式
10金钱
所有问题都以STM32F103位例:
第一个问题:当STM32上电之后,内核的PC指针指向的地址是0X00000000,还是FLASH的主存储区地址0X800000
第二个问题:如果PC指针处于0X00000000,而程序的存储区在0X8000000,是不是内核在0X00000000~0X8000000什么都没干,一直等到PC指针执行到FLASH主存储区?
第三个问题:ST把FLASH映射到以0X8000000为起始的存储地址存储代码,如果同样的内核,不同厂商FLASH映射到内核上的地址不一样,程序的执行地址是不是也会不一样?
第四个问题:又或者是0X00000000存放的是MSP栈顶地址,0X00000004之后存放的中断向量表地址,内核得到地址之后,又跳转到FLASH的中断服务函数中执行程序,再执行主程序。

最近搞bootloader,所以想把程序的执行流程理清楚,希望讨论一下

最佳答案

查看完整内容[请看2#楼]

1、Cortex-M内核允许上电以后不从0X00000000开始运行,可以从其它地址开始运行,对于STM32来说使用boot引脚就可以设置上电以后STM32从哪个地址开始运行,比如BOOT0,BOOT1都拉低就是从FLASH的0X80000000开始运行。 2、0x00000000~0x80000000怎么可能不防数据!看STM32数据手册内存分布章节,里面哪些外设占用哪些地址范围给你写的清清楚楚! 3、从哪里启动完全取决于半导体厂商自己的定义,完全可以不定义到0X80000000。 4、代码 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-11-9 16:10:15 | 显示全部楼层
1、Cortex-M内核允许上电以后不从0X00000000开始运行,可以从其它地址开始运行,对于STM32来说使用boot引脚就可以设置上电以后STM32从哪个地址开始运行,比如BOOT0,BOOT1都拉低就是从FLASH的0X80000000开始运行。
2、0x00000000~0x80000000怎么可能不防数据!看STM32数据手册内存分布章节,里面哪些外设占用哪些地址范围给你写的清清楚楚!
3、从哪里启动完全取决于半导体厂商自己的定义,完全可以不定义到0X80000000。
4、代码从0X80000000启动,中断向量表就必须偏移到这个地方,在STM32的官方库中就有中断向量表偏移代码,函数SystemInit()中就设置了中断向量表偏移,如下图:

V@I@B2U2AV$W9SHC2{QPSUV.png

开往春天的手扶拖拉机
回复

使用道具 举报

26

主题

105

帖子

0

精华

高级会员

Rank: 4

积分
894
金钱
894
注册时间
2015-10-25
在线时间
117 小时
 楼主| 发表于 2017-11-10 08:10:41 | 显示全部楼层
谢谢大佬,通过你的回答,很多问题都一下子清楚了,真心感谢了
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-11-10 08:37:25 | 显示全部楼层
ARM可以说是开放ARM核的公司,芯片厂家要ARM公司授权试验arm核;
芯片厂家就是在ARM核4G(32位)的地址配置各个外设,并生成.S文件进行启动描述。
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-7 00:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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