ARM Cortex-M程序指定初始入口点

发布时间:2026/10/17 11:04:00
ARM Cortex-M程序指定初始入口点 在ARM Cortex-M程序中指定初始入口点的方式本质上都是围绕一个核心硬件事实展开的Cortex-M内核上电复位后硬件会强制从地址0x00000000读取MSP主堆栈指针并从0x00000004读取复位向量即入口点地址。因此所有指定“入口点”的方法最终都是为了让0x00000004这个地址处存放着你希望CPU第一个执行的函数地址。在ARM开发中可以通过以下四种主要方式来指定这个初始入口点。1. 标准方式使用汇编启动文件中的ENTRY指令最常见这是最标准、最推荐的做法。启动文件如startup_device.s中会使用ENTRY指令来声明入口点。工作原理汇编指令ENTRY Reset_Handler告诉链接器Reset_Handler是一个入口点。同时启动文件将Reset_Handler的地址放在向量表的第二个位置偏移量0x04。这样CPU复位后就能从正确的位置开始执行。常规流程Reset_Handler函数会依次调用SystemInit()进行时钟等底层初始化然后跳转到__main。__main是C库的初始化入口负责完成全局变量、堆栈等C运行时环境的初始化最后才跳转到用户的main()函数。优点规范、稳定能自动完成C运行环境初始化是绝大多数工程的标准做法。2. 直接指定方式使用链接器选项--entry你正在使用的方法这是你之前问到的--entrysystem_init这种方法。它通过一个链接器选项强制将入口点设置为一个指定的函数。工作原理在Keil的链接器设置中添加--entrysystem_init。这会直接修改最终生成的可执行文件ELF头部的“初始入口点Initial Entry Point”字段。同时为了让system_init的地址被放置在向量表的正确位置可能还需要配合修改链接脚本.sct或使用--keep选项来防止它被优化掉。特点精确控制直接指定入口函数例如--entryReset_Handler或--entrysystem_init。高风险这种方法通常会跳过启动文件中的标准Reset_Handler流程因此system_init函数必须自己负责初始化MSP、.data段、.bss段等所有底层工作否则程序极易崩溃。适用场景主要用于实现极简的Bootloader或需要对启动过程进行完全定制的情况。3. GNU工具链方式链接器选项-eGCC环境如果你使用的是GCC编译器而非ARM Compiler指定入口点的方式是使用链接器的-e选项。工作原理用法与--entry类似例如在链接命令中加入-e my_entry_point即可指定my_entry_point为程序的入口点。注意需要留意Cortex-M的Thumb指令模式要求入口点地址通常应为奇数。4. 高级定制方式修改分散加载文件.sct这种方式更为底层通过直接修改链接脚本Keil中为分散加载文件.sct来控制入口点。工作原理可以在.sct文件中使用ENTRY(system_init)这样的语句来声明入口点。这种方式通常在需要对内存布局进行精细控制时使用。注意如果同时在链接器选项--entry和分散加载文件ENTRY中指定了入口点可能会引发“multiple choices”的冲突导致链接器报错L6305W。因此通常只选择其中一种方式。 总结与对比方法实现方式关键指令 / 文件特点与风险标准启动文件汇编ENTRY指令startup_device.s最推荐安全、标准自动完成C环境初始化。链接器选项--entry命令行/IDE选项--entryfunction_name精确但高风险直接指定入口常需跳过标准启动函数需自理底层初始化。GNU-e选项GCC链接器选项-e function_name功能同上适用于GCC工具链。分散加载文件修改链接脚本.sct文件中的ENTRY()高级定制精细控制需注意与--entry选项冲突。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询