这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 简析STM32的启动过程

共23条 2/3 1 2 3 跳转至
高工
2013-08-11 19:26:36     打赏
11楼
多谢楼主给予美誉,哈哈哈

高工
2013-08-11 19:27:12     打赏
12楼
记下了,欢迎楼主多提宝贵意见

高工
2013-08-11 19:27:56     打赏
13楼
这个太血腥了,下不了手要不楼主试一根,哈哈哈

高工
2013-08-11 20:46:54     打赏
14楼
Sam3s的启动文件也是c写的

高工
2013-08-24 09:26:45     打赏
15楼
我想问问,不修改启动文件,那么栈的首地址是固定的还是变化的?

高工
2013-08-24 11:05:08     打赏
16楼

相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC =0x000000)同时中断向量表的位置并不是固定的。

而Cortex-M3内核则正好相反,Cortex-M3内核规定,起始地址必须存放堆顶指针,而第二个地址则必须存放复位中断入口向量地址,这样在Cortex-M3内核复位后,会自动从起始地址的下一个32位空间取出复位中断入口向量,跳转执行复位中断服务程序。对比ARM7/ARM9内核,Cortex-M3内核则是固定了中断向量表的位置而起始地址是可变化的。

正面回答你的问题就是对于CortexM内核的架构来说,桟地址是固定的,不同的启动方式会进行映射,也就是将首地址重新映射到启动空间(0x0000 0000)


高工
2013-08-24 11:24:48     打赏
17楼
好厉害

院士
2013-08-24 14:09:10     打赏
18楼
可以当作我的教材来读,谢谢版主。

高工
2013-09-08 11:51:39     打赏
19楼

引导加载程序是被设计用来通过USART1 把程序代码下载到用户闪存的。为了使STM32运行在bootloader模式,外部BOOT0和BOOT1必须分别保持为低,高。随着BOOT0,BOO1 固定在这个模式中,开机后系统存储区会被映射到0x00000000。复位后STM32 将开始执行引导程序,而不是在用户FLASH 的应用程序代码.


菜鸟
2016-04-29 22:48:18     打赏
20楼

关于“启动模式”部分

 1、 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;


红色字部分错误:应该为0x20000000


共23条 2/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]