Cortex-M3:为什么 +FIRST 必须用在向量表上? 难度:★★本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。打开任何一个 Cortex-M3 工程的分散加载文件,你一定会看到这一行:*.o (RESET, +First)+First是什么意思?字面上看,是“放在最前面”。但“最前面”是哪个前面?为什么向量表必须抢这个第一?如果我不写+First,把向量表放在第二个位置会怎样?今天这篇文章,就来拆开+First背后的硬件强制机制。它的答案,比“放在最前面”这五个字要深得多。一、+First 在分散加载文件里的语法含义ARM 链接器对+First的官方定义是:将该匹配的段放在当前执行域的第一个位置,且该段的起始地址等于执行域的基地址。换句话说,+First强制链接器做两件事:把这个段放在当前执行域的最开头。确保这个段的起始地址 = 执行域的起始地址。如果有多个目标文件都有RESET段,且都写了+First,链接器只认