STM32芯片启动全过程详解:Cortex-M3内核与ARM7/9差异
需积分: 15 30 浏览量
更新于2024-09-11
收藏 47KB DOC 举报
本文详细解析了STM32芯片从启动到运行的全过程,特别是针对Cortex-M3内核架构的变化。相较于ARM7/ARM9内核,Cortex-M3具有不同的启动模式,主要区别在于复位后的起始地址和中断向量表的位置。以下是关键步骤:
1. 复位启动机制:
- 在ARM7/ARM9内核中,复位后CPU从0x000000固定地址开始执行,而中断向量表的位置不是固定的。
- Cortex-M3引入了更多的灵活性,可通过boot引脚设置:
- 将中断向量表定位在SRAM(地址0x2000000),PC指针同样在此处。
- 定位在FLASH(地址0x8000000)。
2. Cortex-M3特定规则:
- 起始地址需存放堆顶指针和复位中断入口向量地址。
- 在复位后,Cortex-M3自动从堆顶指针后的地址获取中断向量并执行相应的服务程序。
3. 内存区域划分:
- "stm32f10x_vector.s" 文件定义了数据段(DATA_IN_ExtSRAM)、栈空间(STACK)和堆空间(HEAP)。这些区域的大小、初始化状态和访问权限都有明确的规定。
- "__initial_sp" 表示初始栈指针,用于记录堆栈顶的地址。
- "__heap_base" 和 "__heap_limit" 分别标识堆空间的起始和结束地址。
4. 指令集和预处理器指令:
- 使用THUMB指令集,这是一种低功耗模式,适合嵌入式应用。
- PRESERVE8 指令可能与处理字节对齐有关。
5. 异常处理:
- 引入了 NMIException 和 HardFaultException 异常处理函数的导入,这两个函数在遇到相应的中断时会被调用。
总结起来,理解STM32的启动过程涉及理解其内核特性、内存管理以及异常处理机制。通过分析"stm32f10x_vector.s" 文件中的代码,开发者能够更好地配置STM32的初始化过程,确保设备在不同启动模式下都能正确地执行初始化任务。这对于深入研究硬件开发和嵌入式系统编程至关重要。
2011-07-26 上传
2021-10-01 上传
点击了解资源详情
2024-02-12 上传
2018-10-14 上传
2022-07-13 上传
2014-04-22 上传
170 浏览量
点击了解资源详情
konglingzhi000
- 粉丝: 1
- 资源: 10
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析