资讯动态

芯片Boot流程详解:从ROM Code到Kernel的四棒接力

发布时间:2026/10/29 12:12:45 来源:尧图企业网站定制
简介面向嵌入式开发初学者与底层系统学习者的芯片启动流程入门资料围绕芯片从上电复位到操作系统加载的完整链路展开帮助读者建立对 boot 阶段划分与各阶段职责的整体认知。压缩包内为 1 个 docx 文档约 1.41MB以图文与文字说明结合的方式梳理 ROM Code、SPL、U-Boot、Kernel 四个阶段的衔接关系并涉及 UART、USB、SD 卡、EMMC 等多种启动模式的适用场景。内容从 CPU 进入 handler 模式、ROM Code 完成 CPU 与系统初始化讲起说明 SD 卡启动时如何将前 70KB 程序搬入 SRAM 运行 SPL再加载剩余内容至 DDR 执行 U-Boot 与内核同时提及 ptset 测试模式与下载模式的区别。目前已有 923 人学习适合需要理清启动链路、为后续驱动开发或系统移植打基础的读者参考。1. 芯片的boot过程从按下电源到系统跑起来中间发生了什么你按下设备的电源键屏幕亮起几秒后系统界面出现。这中间芯片到底做了什么很多人以为“上电就该跑系统”其实芯片刚通电时内存是空的存储里的系统也还没被读出来它必须先靠自己内部一小段固化的代码一步步把更大的程序“接力”搬进来。这套接力流程就是芯片的boot过程。搞懂它你再看启动卡住、黑屏、反复重启这类问题就不会只停留在“玄学”层面而是知道该往哪个阶段去怀疑。下面用一次接力赛的视角把ROM Code、SPL、U-Boot、Kernel这四棒讲清楚。2. 四棒接力boot过程到底分几个阶段2.1 第一棒ROM Code芯片出厂就焊死的“起跑指令”芯片上电复位的一瞬间CPU会进入handler模式也就是复位中断的处理入口然后开始执行ROM里固化好的指令。这段代码叫ROM Code它烧在芯片内部出厂就定死了用户改不了。你可以把它理解成芯片的“本能反应”不需要任何外部程序它自己就会跑。ROM Code先做CPU初始化把最基础的运行环境搭起来。接着判断是否进入ptset测试模式如果不进就开始system init主要完成键盘、UART等模块的初始化配置——这些是后续通信和下载所依赖的通道。然后它要回答一个关键问题这次从哪儿启动是SD卡、eMMC还是UART/USB下载模式。如果判断为SD卡启动ROM Code会配置SD卡控制器把卡里的内容读到片内的SRAM里运行。这里有个容易忽略的细节片内SRAM很小装不下完整的引导程序所以它先搬一小段进来跑这就是下一棒SPL的由来。如果是UART或USB下载模式则先走download流程把引导程序传进来再读取执行。提示ROM Code阶段出错通常表现为设备完全无反应连串口都没有任何输出因为第一棒就没跑起来。2.2 第二棒SPL为什么非要先搬“前70KB”SPL全称Secondary Program Loader中文常叫二级程序加载器。它存在的理由很朴素片内SRAM容量有限而完整的引导程序往往比它大得多没法一次性塞进去。所以ROM Code只把存储介质最前面的一小段大约70KB搬到SRAM里先跑起来。这70KB的SPL任务不轻。它要在极其有限的资源下把DDR内存初始化好——DDR上电后是不能直接用的需要一套时序配置把它“唤醒”。DDR能用之后SPL再把存储里剩下的引导程序内容搬运到DDR中交给下一棒。打个比方SPL像搬家时的第一趟小车先把最必要的工具运进新房子把水电接通后面的大件家具才能顺利搬进来。这里也是踩坑高发区。SPL体积被严格限制如果你自己改引导程序不小心让它超过了SRAM能容纳的大小链接阶段可能不报错但实际启动时就会翻车表现为串口打印到一半就停住。血泪经验是改完SPL先看它的体积再看它初始化DDR的参数是否和板子上的内存颗粒匹配。2.3 第三棒U-Boot真正干“搬运内核”这件大事U-Boot运行在DDR里空间宽松多了能做的事情也多。它的核心职责是把内核kernel从存储介质读到DDR中并把启动参数准备好最后跳转到内核入口。除此之外它还提供多种boot模式的支持比如UART、USB、SD卡、eMMC开发者可以按场景选择从哪个通道加载系统。U-Boot阶段是开发者最常打交道的地方因为它有命令行交互。启动时如果按下特定按键就能停在U-Boot命令行手动查看存储分区、加载镜像、设置启动参数。设备启动到一半停住、反复打印同一段信息很多时候就是U-Boot没找到可用的内核镜像或者启动参数指向了错误的分区。2.4 第四棒Kernel把系统交给用户空间内核被加载到DDR并跳转执行后开始接管系统资源管理初始化内存管理、驱动、文件系统最后挂载根文件系统启动用户空间的第一个进程。到这一步屏幕亮起、系统界面出现boot流程才算走完。前面三棒任何一棒出问题内核都到不了而内核自己初始化失败通常表现为启动日志打到某个驱动就卡住或者挂载根文件系统时报错。3. 为什么boot要拆成这么多段分工背后的现实约束3.1 片内SRAM太小逼出了“分段搬运”的设计如果芯片内部有一块足够大的、掉电不丢的存储理论上可以一步到位把系统读进来。但现实是片内SRAM又小又贵ROM更是容量有限且不可修改。于是设计上只能“小步快跑”ROM Code只负责最基础的初始化和第一段搬运SPL在有限空间里完成DDR初始化这个关键动作等DDR可用了空间不再是瓶颈后面的U-Boot和内核才能放开手脚。这种分段不是故意复杂化而是被硬件资源逼出来的合理妥协。3.2 每一棒只信任上一棒启动链条的依赖关系四个阶段是严格串行的ROM Code搬SPLSPL初始化DDR并搬U-BootU-Boot搬内核。任何一棒没交接好后面全部停摆。这也解释了为什么排查启动问题要“看最后一句话”串口最后打印到哪个阶段问题大概率就在那个阶段或它的上一棒。比如串口完全没有输出怀疑ROM Code或硬件供电打印了SPL字样后停住重点查DDR初始化参数进了U-Boot但找不到内核查存储分区和镜像路径。3.3 多种boot模式并存不是为了炫技而是为了救场UART、USB下载模式的存在本质是给设备留一条“后悔药”。当存储里的引导程序被写坏、设备变砖时还能通过UART或USB把可用的引导程序传进去让设备重新活过来。SD卡和eMMC启动则对应量产和日常使用场景。这套多模式设计让芯片既能正常启动也能在异常时被救回是产品可维护性的重要一环。4. 易混概念辨析这几个说法别再搞混4.1 ROM Code和Bootloader一个是本能一个是可改的程序易混点在于两者都叫“启动代码”。为什么混因为它们都在系统起来之前运行。怎么区分ROM Code固化在芯片内部出厂后不可更改负责最底层的初始化和选择启动介质Bootloader这里指SPL和U-Boot这类存放在外部存储里可以被烧写和替换负责加载内核。简单记ROM Code你改不了Bootloader你能改改坏了还能用下载模式救。4.2 SPL和U-Boot都是引导程序但跑的“场地”不同易混点在于两者常被统称为bootloader。为什么混因为功能上都是“搬东西”。怎么区分SPL运行在片内SRAM空间极小核心任务是初始化DDR并把后续程序搬进DDRU-Boot运行在DDR空间充裕核心任务是加载内核并提供交互功能。SPL是“开路的”U-Boot是“干主活的”。4.3 SRAM和DDR一个临时小桌一个大仓库易混点在于两者都是内存。为什么混因为都用于存放运行中的程序。怎么区分SRAM在芯片内部容量小、上电即可用、不需要额外初始化DDR在芯片外部容量大、上电后必须经过时序配置才能使用。SPL之所以存在就是因为一开始只有SRAM这张小桌子能用得先在小桌子上把DDR这个大仓库的门打开。4.4 下载模式和启动模式一个用来救砖一个用来日常跑系统易混点在于两者都涉及“从外部获取程序”。为什么混因为UART/USB既能下载也能启动。怎么区分启动模式是从存储介质SD/eMMC读取已有的引导程序正常开机下载模式是通过UART/USB把程序传进来多用于生产烧录或设备异常后的恢复。日常开机走启动模式救场走下载模式。5. 什么时候该关心boot流程排查思路与边界真正需要你盯住boot流程的场景其实很集中。第一类是设备启动异常完全无输出、打印到某一行停住、反复重启。第二类是 bring-up 新板子DDR参数、SPL体积、启动介质选择每一项都可能让流程卡住。第三类是量产烧录需要理解下载模式和启动模式的区别才能设计出可靠的产线流程。反过来如果你只是应用层开发系统能正常启动那就不必深挖每一棒的细节知道“串口最后一行输出对应哪个阶段”这个排查入口就够了。过度深挖反而会分散精力。下面这张表可以作为排查时的对照参考现象大概率卡在优先检查完全无串口输出ROM Code或供电供电、复位信号、启动介质选择引脚打印SPL后停住SPLDDR初始化参数、SPL体积是否超限进入U-Boot但找不到内核U-Boot存储分区、镜像路径、启动参数内核日志打到某驱动停住Kernel该驱动初始化、根文件系统挂载举个具体例子。某开发者拿到一块新板子串口只打印了SPL几个字符就没了。他一开始怀疑内核镜像坏了换了好几个版本都没用。后来按上面的表往回查发现是DDR时序参数沿用了另一块板子的配置内存颗粒型号不同初始化根本没成功SPL搬完程序跳过去就崩了。改对参数后一次点亮。这个坑说明一件事boot流程是串行的现象在后面的阶段根因往往在前一棒。从那以后我每次碰新板子都强制走一遍“看最后一行输出、对照阶段、回查上一棒”的流程不再凭感觉换镜像。希望这套接力赛的视角能帮你在下次遇到启动问题时少走一点弯路。完整的boot流程梳理和阶段对照资料已经整理好需要的话可以取来对照着看。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑