<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>U-Boot on Yun 的个人博客</title><link>https://yun7211.github.io/tags/u-boot/</link><description>Recent content in U-Boot on Yun 的个人博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 18 May 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://yun7211.github.io/tags/u-boot/index.xml" rel="self" type="application/rss+xml"/><item><title>嵌入式 Linux 启动流程速记</title><link>https://yun7211.github.io/embedded-linux/boot-system/linux-boot-flow/</link><pubDate>Mon, 18 May 2026 10:00:00 +0800</pubDate><guid>https://yun7211.github.io/embedded-linux/boot-system/linux-boot-flow/</guid><description>&lt;h2 id="启动主线"&gt;启动主线
&lt;/h2&gt;&lt;p&gt;嵌入式 Linux 的启动过程可以先抓住一条主线：硬件上电后，Boot ROM 找到第一阶段启动程序，随后加载 U-Boot，再由 U-Boot 加载 Linux Kernel、设备树和根文件系统。&lt;/p&gt;
&lt;p&gt;完整路径通常是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Power On -&amp;gt; Boot ROM -&amp;gt; SPL/TPL -&amp;gt; U-Boot -&amp;gt; Kernel -&amp;gt; init -&amp;gt; user space
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;不同芯片的细节会变化，但定位问题时先把当前卡在哪一段确认清楚，排查效率会高很多。&lt;/p&gt;
&lt;h2 id="boot-rom"&gt;Boot ROM
&lt;/h2&gt;&lt;p&gt;Boot ROM 是芯片内部固化代码，负责根据启动引脚或熔丝配置选择启动介质，例如 eMMC、SD 卡、SPI NOR、NAND 或 USB 下载模式。&lt;/p&gt;
&lt;p&gt;这一阶段常见问题包括启动介质不可读、镜像偏移不对、签名校验失败、供电和时钟没有满足芯片要求。&lt;/p&gt;
&lt;h2 id="u-boot"&gt;U-Boot
&lt;/h2&gt;&lt;p&gt;U-Boot 负责初始化更多硬件，并准备 Kernel 运行环境。常见动作包括初始化 DRAM、加载镜像、传递启动参数、加载设备树和设置 &lt;code&gt;bootargs&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;调试时优先确认：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;串口是否有输出&lt;/li&gt;
&lt;li&gt;DRAM 大小是否识别正确&lt;/li&gt;
&lt;li&gt;Kernel、DTB、rootfs 地址是否正确&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bootcmd&lt;/code&gt; 和 &lt;code&gt;bootargs&lt;/code&gt; 是否符合当前启动介质&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kernel"&gt;Kernel
&lt;/h2&gt;&lt;p&gt;Kernel 接管后会解压、初始化内核子系统、解析设备树、挂载根文件系统并启动第一个用户态进程。&lt;/p&gt;
&lt;p&gt;如果 Kernel 已经打印日志但最终 panic，重点看 panic 前的最后几行。根文件系统挂载失败时，常见原因是驱动缺失、设备节点不匹配、文件系统类型不支持或 &lt;code&gt;root=&lt;/code&gt; 参数错误。&lt;/p&gt;
&lt;h2 id="小结"&gt;小结
&lt;/h2&gt;&lt;p&gt;启动问题不要一开始就陷入全部日志。先判断卡在 Boot ROM、U-Boot、Kernel 还是用户态，再按阶段收集证据，问题会清楚很多。&lt;/p&gt;</description></item></channel></rss>