ARM 之九 Cortex-M/R 内核 Keil(ARMCC) 程序启动流程

本文详细介绍了ARM Cortex-M/R 内核的复位启动过程,包括从地址0x0000_0000处取MSP初始值,地址0x0000_0004处取PC初始值开始执行。文章探讨了启动流程,如__main、__scatterload和__rt_entry等函数的作用,以及如何在启动过程中初始化堆栈、堆和其他C库子系统。此外,还分析了启动文件和中断向量表布局,并提到了ARM C库的启动代码和链接器如何根据应用需求定制启动代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内核规范

  ARM Cortex-M/R 内核的复位启动过程也被称为复位序列(Reset Sequence)。ARM Cortex-M/R 内核的复位启动过程与其他大部分 CPU 不同,也与之前的 ARM 架构(ARM920T、ARM7TDMI 等)不相同。大部分 CPU 复位后都是从 0x00000000 处取得第一条指令开始运行的,然而在 ARM Cortex-M/R 内核中并不是这样的。其复位序列为:

  1. 从地址 0x0000_0000 处取出 MSP 的初始值;
  2. 从地址 0x0000_0004 处取出 PC 的初始值,然后从这个值对应的地址处取指令。事实上,地址 0x00000004 开始存放的就是默认中断向量表
    在这里插入图片描述

  ARM Cortex-M/R 内核的中断向量表布局情况如下图所示(注意:中断向量表的中中断位置可以改变,此处是默认情况下的设置):
在这里插入图片描述

  在 ARM Cortex-M/R

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZC·Shou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值