找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3695

积分

0

好友

481

主题
发表于 4 小时前 | 查看: 5| 回复: 0

我有个做嵌入式的同事,叫老张。

这哥们是个 STM32 专家,熟悉到什么程度?闭着眼睛能手写 NVIC_PriorityGroupConfig,RTOS 移植对他来说跟喝水一样自然。公司里但凡有 MCU 相关的问题,大家第一个想到的就是他。

有一天在茶水间闲聊,我随口问了他一句:“你知道 STM32 里的 Cortex-M4 内核,最早是谁设计出来的吗?”

他想了一秒,说:“ARM 公司呗。”

“那 ARM 公司是谁建的?”

“……英国人?”

我再追问:“再往上追——最早那个 ARM 指令集,是谁、在哪、用什么搞出来的?”

他摇摇头。我知道他不知道,因为我自己做嵌入式那几年,也从来没想过这个问题。你天天用着 Cortex-M,就像拧开水龙头一样自然——但很少有人会追问,这水究竟是从哪条河流过来的。

而这条河的源头,藏着一个离奇到有点离谱的故事。

一切,要从一块坏掉的电路板说起。那块板子,差一点就让整个 ARM 架构的未来,终结在那个普通的下午。

一、1983 年,Acorn 快撑不住了

先交代一下背景。

1978 年,剑桥大学里一位叫 Hermann Hauser 的奥地利物理学家,和搭档 Chris Curry 一起,在英国剑桥创立了 Acorn Computers。

Acorn 这家公司的命运很奇特——靠着一个政府项目活了下来,又靠着这个项目迅速壮大。1981 年,英国政府推行了一项“让每间教室都有电脑”的计划,Acorn 成功拿下了这个合同,造出了 BBC Micro,从此火遍了英伦三岛的课堂。

BBC Micro 搭载的处理器是 MOS 6502。这颗芯片在当时已经算老将了,但胜在结构简单、功耗低、足够便宜。Acorn 的首席工程师 Steve Furber 和 Sophie Wilson 把它吃得很透,靠着 6502 完成了 BBC Micro 的设计。

但问题在于,到了 1983 年,6502 的天花板已经清晰可见了。

市场正在巨变。16 位、32 位处理器的时代要来了,Acorn 需要一颗更强的芯片来驱动下一代计算机。他们考察过 Intel 的 80286——太贵。又看了 Motorola 的 68000——太复杂,功耗太高,还得用陶瓷封装,成本根本压不下来。

Acorn 陷入了一个在芯片行业并不罕见的困境:市面上找不到合适的芯片,所有选项要么太贵、要么太慢、要么太耗电。

就在这时候,Furber 和 Wilson 去了一趟美国出差。他们参观了一家叫 Western Design Center 的公司——这家公司接过了 MOS 6502 的衣钵,还在做新版 65C02。让他们震惊的是,这家公司里,几个高中生正用着 Apple II 做芯片的布局设计。

这件事在 Furber 和 Wilson 脑子里直接引爆了一个念头:芯片设计,根本不是只有巨头才能干的事。

几乎同时,来自美国加州大学伯克利分校的一系列论文也传到了 Acorn。论文的核心是一套叫 RISC(精简指令集计算机)的架构理念。核心思想非常直白:更少的指令、更简单的执行路径,反而能让处理器跑得更快。

这跟 Intel x86 那种用越来越复杂的 CISC(复杂指令集)去覆盖所有可能操作的思路,完全背道而驰。

Hermann Hauser 把这些论文拍在 Furber 的桌上,大意是说了一句:“你们看看这个。”

1983 年 10 月,Acorn 做出了决定:自己设计处理器。

二、808 行 BBC BASIC,写出了一颗芯片的灵魂

这是整个 ARM 历史上,最让我感到震撼的一个细节。

Sophie Wilson 要设计这颗新处理器的指令集。她的工具,是她再熟悉不过的东西——BBC Micro,以及她自己用 BBC BASIC 写的解释器。

她就在那台 BBC Micro 上,用 808 行 BASIC 代码,写出了一个 ARM 处理器的完整指令集模拟器。

仅仅 808 行代码。

这个模拟器只要能跑起来,就说明指令集设计是自洽的。如果模拟器挂掉,那就说明指令集有毛病,改完再跑。Hermann Hauser 后来回忆起这段历史时,说过一句让我记了很久的话:“IBM 用大型机跑了好几个月去模拟他们的指令集。而 Sophie,在脑子里就全想明白了。”

与此同时,Steve Furber 负责微架构设计。这里面包含了三级流水线、桶形移位器,以及后来成为 ARM 标志性特性的条件执行。你知道整颗芯片用了多少个晶体管吗?

只有 25,000 个。

作为对比,同时期 Intel 的 80286 用了 134,000 个晶体管,后来的 80386 更是飙升到 275,000 个。

Acorn 没有自己的晶圆厂,他们委托了美国一家叫 VLSI Technology 的公司负责流片,采用的是 3 微米 CMOS 工艺。然后,就是漫长而焦灼的等待。

三、1985 年 4 月 26 日,下午 3 点,那块指针归零的万用表

“1985 年 4 月 26 日下午 1 点,第一批 ARM 芯片样品从制造商那边回来了。它们被直接插进了开发板,做了一些微小调整后,下午 3 点,屏幕上赫然显示:‘Hello World, I am ARM’。”

——Steve Furber 事后回忆

芯片第一次上电,就正常工作了。

但有一件事怎么都不对劲。Furber 瞟了一眼串联在电源线上的那块万用表,指针稳稳地指向零。

处理器明明在正常跑——屏幕上正往外蹦着字符,可万用表却显示它消耗的电流为零。

Furber 重新检查了一遍测试设备,又捋了一遍接线,然后才意识到一件让人目瞪口呆的事实:开发板上有一个故障。芯片的 VCC 电源供电线,压根就没接通。

那颗 ARM1 处理器,居然是靠着 I/O 信号线上微弱的漏电流在运行。

Sophie Wilson 后来是这样描述的:“ARM 今天最被人称道的东西——低功耗,让 ARM 钻进了所有手机里的那个特性——完全是个意外。”

Wilson 无心插柳,设计出了一颗功耗不足 0.1 瓦的 32 位处理器。

这件事总带着一点寓言般的荒诞感:你花了整整两年时间,去说服公司、去委托流片、去焦灼地等待样品,结果到头来发现,这颗芯片最重要的一个特性,竟然是因为一块坏掉的测试板才被意外发现的。

但这,恰恰就是它真实的诞生故事。

四、省掉 FPU 的减法哲学:简单,才是真正的强大

RISC 架构的核心哲学,用一句话就能讲清楚:把能砍掉的东西,全砍掉。

ARM1 没有硬件乘法器,没有浮点运算单元,甚至没有除法指令。

这可不是因为设计团队偷懒,或者时间来不及——这是一种主动的哲学选择。RISC 的前提假设很明确:真正频繁执行的指令,永远就那么几条。你只需把这少数的几条做到极致,让它们每一个都能在一个时钟周期内完成,整体吞吐量就会远远超过那些指令丰富但执行效率低下的 CISC 处理器。

浮点运算当然有用。但在 1983 年,Acorn 要的是一颗能跑桌面程序、文字处理和图形渲染的芯片,而不是科学计算工作站。省掉 FPU,虽然晶体管数量不会从 25,000 一下子变成 25,001,但整个芯片的设计复杂度、功耗预算和散热需求,全都被砍掉了一大截。

Furber 后来直言,当时设计 ARM,核心约束其实不是低功耗,而是便宜:

“我们设计 ARM 是为了 Acorn 的台式机,功耗不是首要目标。但它必须得便宜。便宜就意味着要用塑料封装,而塑料封装的热阻很高,所以功耗必须得控制在 1 瓦以内。”

你看,低功耗其实是 RISC 简洁哲学自然而然的结果,并不是一开始就主动追求的目标。

这背后折射出的工程哲学对比,特别有意思。Intel x86 的思路是,把所有可能的操作都包进来,让软件开发者省事。而 ARM RISC 的思路是,只保留最核心的几条指令,把芯片设计做得干干净净,剩下的事情就交给编译器。

这两种思路没有对错之分,只是面向的权衡点不同。但 ARM 这套“减法哲学”,在二十年后,与便携设备对电池续航的饥渴需求不期而遇,撞出了一场影响深远的架构革命。

至于 FPU,它后来当然被加了回来——但不是加在 ARM1,也不是 ARM2,而是很多年以后,以协处理器扩展的方式,用 VFP(矢量浮点)这个名字,逐步融入了架构。这段“后来才加”的历史,在今天的 计算机基础 Cortex-M 开发中,留下了不少让人头疼的坑,这个我们后面再细说。

五、Acorn 倒了,ARM 活了:谷仓里的十二个人

ARM1 点火成功的那一年,Acorn 自己却快要完蛋了。

1983 年,因为一次对 BBC Micro 订单量的误判,大量库存积压,公司现金流直接断裂。就在 ARM1 样品回来前几个月,意大利的计算机公司 Olivetti 给 Acorn 注了资。到 1985 年底,Olivetti 实际上已经控制了 Acorn。

Furber 后来说道:“Olivetti 买下 Acorn 的时候,根本没人告诉他们 ARM 的事。等他们自己发现后,完全不知道该拿它怎么办。”

这种“战略资产没人看得懂”的无奈,大概是很多先进技术都走过的路。

但 Wilson 和 Furber 还是想方设法推动了 ARM 的首次商业亮相:一套面向 BBC Micro 的 ARM 开发系统,售价高达 4500 英镑,是一块面向专业开发者的扩展板。1987 年,Acorn 推出了第一台完整的 ARM 计算机——Acorn Archimedes,那年的广告骄傲地宣称它是“世界上最快的家用电脑”。

然而,Acorn 的规模和资源,根本支撑不起 ARM 真正需要的市场推广。

1990 年,一件彻底改变 ARM 命运的事情发生了。苹果公司想用 ARM 技术。他们正在捣鼓一个叫 Newton 的掌上电脑项目,急需一颗低功耗处理器。但他们不想把自己的产品,建立在一家已经风雨飘摇的 Acorn 公司的知识产权上。

于是,一场三方谈判开始了:Acorn、Apple 和 VLSI Technology。

1990 年 11 月 27 日,一家名叫 Advanced RISC Machines Ltd 的新公司,在英国剑桥郊区正式注册成立,办公地点是一个 17 世纪的老谷仓。

Apple 掏了 150 万英镑现金,VLSI 提供 EDA 工具。而 Acorn 出了什么?12 名工程师。这当中,就包括了那六位在 1985 年亲眼见证 ARM1 第一次点火的人。

这十二个人,就在那个谷仓里,开始试图把 ARM 变成一门真正的生意。

六、Robin Saxby 的那句话,决定了 ARM 的命运

1991 年,Robin Saxby 加入公司,出任 ARM 的首任 CEO。

Saxby 此前在 Motorola 和欧洲几家半导体公司摸爬滚打多年,是那种见识过半导体行业各种商业模式的老江湖。他上任后做的第一件事,就是主持了一场 SWOT 分析会。会上,ARM 面临着最致命的一个问题:靠什么活下去?

VLSI 曾经尝试过直接拿 ARM 的设计去卖芯片,结果行不通。自己造芯片就得建晶圆厂,ARM 那点钱根本不够烧。

Saxby 后来那句已经成为行业传说的名言,就是在那个背景下说出来的:“把芯片卖给我,等于让我去死。”

ARM 不造芯片。ARM 只卖设计授权。

想用 ARM 内核做芯片?没问题,先交一笔预付授权费,谈妥之后每出货一颗芯片再给一笔版税。ARM 拿到钱,就继续投入研发更新更先进的架构;芯片公司拿到设计蓝图,回去用自己的工厂流片,再卖给终端客户。

这个模式在今天看来理所当然,但在 1990 年代初,这想法简直“离经叛道”。那个年代的半导体公司,身份认同就是:我设计、我制造、我来卖。

Saxby 硬生生地把 ARM 变成了一家“不卖芯片,只卖图纸”的公司。

第一款基于 ARM 的商业产品,是 1993 年的 Apple Newton——那款后来被归来的乔布斯骂得狗血淋头的 PDA,手写识别常常闹笑话,市场反应一片惨淡。ARM610 是 Newton 的大脑,但 Newton 的失败并没有把 ARM 一起拖进坟墓。因为就在 Newton 折戟沉沙的几年后,一个意外的机会主动敲开了 ARM 的门。

七、从 Nokia 6110 到 iPhone:那个意外敲门的 GSM 芯片

1990 年代中期,德州仪器正在研发一款 GSM 基带芯片。

GSM 是全球第一代标准的移动通信协议。那时候手机还像块砖头,但第一批真正意义上的数字手机正在孕育之中。TI 在做基带调制解调器,需要一颗微控制器来统筹管理整套芯片的运转。

他们开始选型,然后,用 ARM 现任 CEO Rene Haas 在后来访谈中的原话说,他们“偶然发现了 ARM 在做什么”。

TI 拿下了 ARM 授权,打造出了基于 ARM7 内核的芯片,并将其装进了 1997 年发布的 Nokia 6110 里。Nokia 6110,也由此成为历史上第一款采用 ARM 架构处理器的 GSM 手机。

它卖疯了。紧接着,Symbian 操作系统被移植到了 ARM 平台上。再然后,越来越多的手机厂商开始在自己的手机 SoC 里集成 ARM 内核。就这样,ARM 几乎是误打误撞地、一头扎进了移动通信这条超级赛道。

1998 年,ARM 在伦敦证交所和纳斯达克双双上市。

接着到了 2007 年,苹果发布 iPhone,Samsung 为其提供的应用处理器,用的正是 ARM 架构。自那之后,在智能手机爆炸式增长的黄金十年里,ARM 几乎成了移动处理器的唯一选择。今天,全球 99% 的智能手机应用处理器,都是 ARM 架构。

而在嵌入式领域,2004 年发布的 Cortex-M3 更是开辟了一个新纪元——它专为微控制器量身打造,把 ARM 彻底送进了工业控制、物联网和消费电子的每一个角落。今天的 STM32、nRF52、GD32,它们的内核,全部可以追溯到 Wilson 和 Furber 在 1983 年对着 RISC 论文说出“我们来试试”的那个瞬间。

八、从业者的坑:用 ARM Cortex-M 做嵌入式,这些你迟早会踩到

做嵌入式的朋友,只要是用 Cortex-M 系列的,我觉得下面这几个坑,你迟早都会踩上。它们很多都直接或间接地跟 ARM 架构早期“节省硬件”的哲学有关:

现象 实际原因 解决思路
STM32F4/F7 上浮点计算奇慢,慢得离谱 Cortex-M4/M7 虽有 FPU 硬件,但默认启动后 FPU 是关闭的,浮点操作会 fallback 到软件模拟 在 startup 的最早期写入 SCB->CPACR 来使能 FPU
移植到 Cortex-M4 后,RTOS 任务切换时浮点变量值错乱 中断或上下文切换时,没有保存 FPU 的寄存器(S0–S15) 在 RTOS 的 port 层开启 Lazy Stacking,或者确认移植代码里包含了 FPU context 的保存逻辑
同一份代码从 M4 移到 M0,编译直接报错 Cortex-M0 根本没有硬件除法指令,也不支持 SIMD;某些 C 语言的除法操作会生成 M0 不支持的指令 重新配置工具链的目标架构为 -mcpu=cortex-m0,避免隐式除法,并改用 libgcc 的软件库来替代
用了 -mfloat-abi=hard 去链接一个第三方库,立刻 HardFault 那个第三方库是用 softsoftfp 的 ABI 编译的,导致调用约定不兼容,栈被破坏 强制所有模块统一 float-abi,打死也别混用不同 ABI 的预编译库
在 FPU 初始化代码之前有任何浮点操作,启动时直接 HardFault Cortex-M 复位后 FPU 默认是 disabled 状态,此时执行任何浮点指令都会触发 UsageFault 把 FPU 的使能代码放在 Reset_Handler 的最开头,甚至要比 SystemInit() 更早执行

最后一条我想特别强调一下。在 RTOS 项目里,如果把 FPU context 的保存搞错了,踩出来的 bug 极其诡异:任务跑着跑着,浮点运算的精度会突然跳变,有时候复现概率极低,很容易被误判为时序问题或者内存损坏。我就见过有人排查了整整三天,最后才发现,是中断处理程序里漏掉了 FPSCR 的保存。

九、今天的 ARM:统治者、挑战者,以及诚实的局限

ARM 如今的地位,用几个数字就能一目了然:

  • 超过 350 亿颗 ARM 架构芯片已累计出货(截至 2025/2026 年统计)
  • 99% 的全球智能手机应用处理器,都是 ARM 架构
  • ARM 在嵌入式和 IoT 领域的市场份额,约为 65%
  • 2025 财年营收约 40 亿美元,员工约 8300 人——这几乎是一家不制造任何实物的公司

这个数字背后,有一件很值得停下来琢磨的事:ARM 从来不生产哪怕一颗芯片。它就靠着卖设计授权,在短短三十五年里,成了这颗星球上被引用次数最多的处理器架构。

但 ARM 也绝非无懈可击,有几件事我不想绕开不谈。

首先是授权模式的代价。ARM 的模式让芯片公司能各自发展差异化的产品,但也直接导致了生态的碎片化。同样是 Cortex-A,不同厂商的 SoC,其板级支持包可能完全不兼容,移植成本高得惊人。对于中小开发团队而言,这是实打实的痛点。

其次,在国产化的大背景下,ARM 的处境变得微妙起来。ARM 是一家英国公司,2016 年被日本软银以 234 亿美元收购,又在 2023 年重新在纳斯达克上市。在如今的地缘政治环境下,对国产芯片方案独立性的迫切需求,让 ARM 的地位变得不再那么稳固。这也是 RISC-V 能在国内嵌入式和服务器领域快速渗透的重要原因之一。

最后,RISC-V 构成了真实可见的威胁。RISC-V 作为一套开源的指令集架构,不收取任何授权费,正在成为越来越多嵌入式 MCU 方案的新选择。ARM 目前最坚固的护城河,是它成熟的软件生态和工具链,但这个优势正在被一步步追平。在 IoT 和工业控制这个领域,五年后的格局究竟会怎样,我想没人敢打包票。

说这些,并非是要唱衰 ARM。而是每一个做嵌入式开发的人,都该对自己手中工具链的根脉,保持一份清醒的认知。

写在最后

1985 年那个下午,一块坏掉的测试板、一根没有连通的 VCC 线、一块指针死死指零的万用表——以最戏剧化的方式,揭示了 ARM1 的真正价值所在。

但这个“意外”,其实有一个最不该被淡化的前提:Wilson 和 Furber 早就做出了正确的抉择。他们笃信 RISC 哲学,大刀阔斧地做减法,把一切繁杂和冗余都砍掉,只留下了最简单、最干净的内核。正是因为足够简单,芯片才足够省电。正是因为足够省电,手机才有了跑起来的可能。正是因为手机跑了起来,ARM 才得以统治这个时代。

意外,不过是将这个必然的结果,提前呈现在了他们自己眼前。

Sophie Wilson 如今在 Broadcom 做研究员,很少接受媒体采访,几十年来仍在持续影响着 ARM 指令集的演化。Steve Furber 则回到了剑桥和曼彻斯特大学,现在研究的领域是神经形态计算,正带领着他的 SpiNNaker 项目,尝试用硅芯片来模拟人类的神经元网络——他对下一代处理器的想象,早已比 ARM 走得更远了。

ARM 的关键人生时间线:

时间 事件
1978 年 Acorn Computers 由 Hermann Hauser 和 Chris Curry 在剑桥创立
1981 年 BBC Micro 发布,Sophie Wilson 设计其操作系统与 BASIC 解释器
1983 年 10 月 Wilson 写出 808 行 BASIC 指令集模拟器;Furber 设计芯片架构;“Acorn RISC Machine” 项目启动
1985 年 4 月 26 日 ARM1 样品回归,下午 3 点点火成功;测试板故障意外揭示了其超低功耗
1987 年 Acorn Archimedes 发布,这是第一台量产的 ARM 电脑
1990 年 11 月 Advanced RISC Machines Ltd 成立;Apple、Acorn、VLSI 三方合资;剑桥谷仓里的 12 名工程师
1991 年 Robin Saxby 出任首任 CEO,确立 “只卖授权,不造芯片” 的 IP 商业模式
1993 年 Apple Newton 发布,第一款 ARM 商业产品,但市场惨败
1997 年 TI 与 Nokia 6110,第一款 ARM 架构的 GSM 手机,大获成功
1998 年 ARM 在伦敦证交所与纳斯达克完成双线 IPO
2004 年 ARM Cortex-M3 发布,重塑了嵌入式 MCU 的生态格局
2007 年 苹果 iPhone 发布,搭载 ARM 架构的应用处理器
2016 年 软银以 234 亿美元收购 ARM
2023 年 ARM 在纳斯达克重新上市
2025/2026 年 超过 350 亿颗 ARM 芯片累计出货,99% 的智能手机处理器为 ARM 架构

致敬,Sophie Wilson 和 Steve Furber。

也致敬所有信奉“减法”的工程师们——那些在所有人都在堆砌功能、叠加复杂度的时候,依然选择把架构做干净、把接口做简单、把每一条指令都打磨到能在单个周期内执行完的人们。

你们刻写在硅晶体上的那份克制,比任何一篇关于“低功耗”的白皮书,都更加持久。




上一篇:Nginx 日志故障排查实战:超时问题与4xx/5xx状态码追踪
下一篇:Agent 时代的核心:Loop Engineering 是什么?与 Prompt/Context/Harness 的区别
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-6-14 06:35 , Processed in 0.721759 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表