news 2026/6/9 21:22:29

嵌入式系统硬件组成与启动流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
嵌入式系统硬件组成与启动流程

前言

很多嵌入式初学者都会有两个核心疑问:

1. 嵌入式板子支持 SPI Flash、SD卡、UART、USB 等多种设备启动,CPU 真的能直接运行这些设备里的代码吗?

2. 板子一上电,CPU 执行的第一条指令到底来自哪里?

这两个问题的核心答案,都离不开一个关键概念——XIP 本地执行。本文从基础概念、硬件组成、核心问题拆解到完整启动流程,一次性讲透嵌入式系统底层启动逻辑。


一、XIP 本地执行概念

1. XIP设备(eXecute In Place,本地执行设备)

XIP即原地本地执行,是嵌入式启动最核心的基础概念,也是CPU执行指令的唯一原生方式。简单来说,XIP设备就是可以被CPU直接寻址、直接执行代码,无需提前拷贝到内存的存储设备。

核心特点:设备存储的二进制指令,可被CPU实时读取、直接运行,无需中转、无需搬运,启动响应速度快、逻辑简单。

硬件代表:芯片片内ROM、Nor Flash。

核心定位:嵌入式系统上电启动的基石,负责执行系统第一条指令、完成底层硬件初始化。

2. 非XIP设备

非XIP设备是嵌入式项目中最常用的存储介质,和XIP设备完全相反,CPU无法直接寻址、无法直接执行其中的代码。

核心特点:仅具备数据和代码存储能力,无直接执行权限,必须依靠其他引导程序,将内部代码搬运至内存后,CPU才能执行。

硬件代表:SPI Flash、SD卡、U盘、NAND Flash。

核心定位:长期存储系统程序、用户固件、业务数据,是嵌入式系统的“硬盘”。


二、嵌入式系统硬件整体组成

嵌入式主控芯片基本都是 SOC(片上系统),即将 CPU、存储、各类控制器、外设接口全部集成在一颗芯片内,这也是嵌入式体积小、集成度高的核心原因。

1. SOC 核心硬件模块

一颗完整的 ARM 嵌入式芯片,核心集成部件如下:

  • CPU:核心运算执行单元

  • 片内 ROM:只读存储器,XIP设备,存放出厂固化启动代码

  • 片内 RAM:高速临时内存,用于临时缓存代码和数据

  • DDR 内存控制器:管控片外DDR内存

  • SD/MMC 控制器:驱动 SD 卡设备

  • SPI 控制器:驱动 SPI Flash 存储设备

  • USB 控制器:支持USB存储设备启动

  • UART 控制器:串口调试、串口启动

  • 中断控制器:管理系统各类中断

2. 嵌入式SOC vs PC 硬件架构类比

很多人熟悉PC架构,通过类比可以快速理解嵌入式硬件逻辑:

嵌入式SOC

PC电脑

作用

片内ROM启动代码

BIOS芯片

上电初始化硬件,引导系统启动

CPU

CPU

指令运算与执行

片外DDR

电脑内存条

程序运行内存

SPI Flash/SD卡

电脑硬盘

存储系统程序与用户数据


三、嵌入式系统完整启动流程详解

嵌入式系统支持SPI Flash、SD卡、USB、UART等多种启动方式,所有非XIP设备启动逻辑完全一致,全程依靠片内ROM引导完成,以下是标准化上电启动全流程:

1. 上电复位,执行第一条指令

板子上电瞬间,硬件强制将CPU程序计数器指向片内ROM起始地址,CPU直接执行ROM中的固化代码。这是系统上电的第一条指令,也是所有嵌入式启动的起点。

核心关键点:片内ROM是唯一出厂固化、原生支持XIP的设备,是CPU上电唯一可直接执行的程序载体。

2. ROM程序完成底层硬件初始化

ROM固化程序作为一级引导程序,优先完成基础硬件初始化,为后续代码加载、程序运行铺垫环境:

初始化系统时钟:提升CPU、各类外设的工作频率,保障硬件正常工作;

初始化DDR内存:DDR上电无默认工作状态,必须初始化后才可读写使用;

初始化外设硬件:配置SD卡、SPI、看门狗等启动相关外设,打通设备通信通道。

3. 筛选启动设备(多启动方式适配)

芯片支持多设备启动,ROM程序会通过硬件配置自动选择启动源,行业通用三种适配方式:

方式一:跳线/拨码开关手动指定单一启动设备;

方式二:预设设备列表,按顺序逐个检测可用启动设备;

方式三:厂商固化固定启动优先级,无需用户配置。

4. 解析固件信息,搬运代码至内存

确定启动设备后,ROM程序读取设备内的固件程序,解决加载地址、加载长度两大核心问题:

固件头部自带配置信息,明确程序需要加载的内存地址、有效数据长度;无自定义配置时,默认加载至芯片固定内存位置、固定长度;

设备内程序存储格式分为两种:原始二进制(raw bin)格式、分区文件格式。

最终将非XIP设备中的完整固件代码,搬运至片内RAM或片外DDR内存中。

5. 跳转执行用户程序,完成启动

代码搬运完成后,ROM引导程序完成全部工作,CPU跳转至内存指定地址,开始执行加载好的系统固件/业务程序,嵌入式系统正式启动完成。


四、二者核心本质区别(XIP与非XIP启动逻辑)

1. 执行逻辑本质区别

XIP设备启动:无需代码搬运,CPU直接读取设备内指令运行,启动流程极简、实时性极强;

非XIP设备启动:无直接执行权限,必须依靠ROM引导程序完成硬件初始化、代码搬运、内存加载,间接实现系统启动。

2. 硬件能力本质区别

XIP设备:可被CPU直接寻址,兼具存储和可执行属性,适合存放启动引导代码;

非XIP设备:仅具备纯存储属性,无法被CPU直接寻址,仅适合存放大容量固件和数据。

3. 应用场景本质区分

XIP设备:仅用于系统初始启动引导,存放固化、固定逻辑的启动代码,不存放用户业务程序;

非XIP设备:是嵌入式主力存储介质,存放系统程序、用户业务代码、多媒体数据,适配绝大多数项目启动场景。

五、常见误区答疑

误区1:SPI Flash/SD卡可以启动系统,说明CPU可以直接执行其代码?

错误。SPI Flash、SD卡均为非XIP设备,CPU永远无法直接执行其代码。设备能启动系统,核心是依靠片内ROM中转搬运代码,并非CPU直接读取执行。

误区2:系统启动代码存放在SD卡/SPI Flash,上电优先执行这里的代码?

错误。嵌入式上电优先级固定:片内ROM代码优先执行,这是硬件固化机制,无法修改。外部存储设备的代码,必须等待ROM程序初始化、搬运后才可执行。

误区3:所有Flash都是XIP设备?

错误。仅Nor Flash支持XIP本地执行,常见的SPI Flash、NAND Flash均为非XIP设备,不具备直接执行能力。


六、核心知识点总结

  1. XIP核心:原地执行,无需拷贝代码到内存,CPU可直接寻址执行

  2. 设备区分:ROM、Nor Flash为XIP设备;SPI Flash、SD卡、U盘为非XIP设备

  3. 上电第一指令:永远来自芯片片内ROM,这是嵌入式启动的核心基石

  4. 非XIP启动原理:ROM初始化硬件 + 搬运代码到内存 + 跳转执行

  5. 多启动方式本质:只是ROM支持的外设读取方式不同,底层启动逻辑完全一致

后续会持续更新ARM架构与编程,感兴趣的可以点赞收藏+关注。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:13:38

FATFS学习笔记

声明这个笔记是基于B站“李述铜聊嵌入式”老师的《FATFS文件系统详解系列之一:5小时快速入门嵌入式文件系统FATFS》课程的个人学习笔记。一1.1 什么是文件系统1.为什么需要文件系统对于一些较小的简单的数据,可以直接储存在MCU内部的Flash里,…

作者头像 李华
网站建设 2026/6/9 21:12:10

直播间快递丢失破损:电商链条末端责任真空

“我在直播间下单买了护肤品,收到快递发现瓶子碎了。找主播,主播让找发货方;找品牌,品牌说物流是第三方;找物流,物流说包装没问题。最后我成了‘皮球’,被踢来踢去。”这个场景,每天…

作者头像 李华
网站建设 2026/6/9 21:11:23

IDM永久激活终极指南:5种简单方法告别30天试用期限制

IDM永久激活终极指南:5种简单方法告别30天试用期限制 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager的30天试用期而…

作者头像 李华
网站建设 2026/6/9 21:08:07

i.MX 6SoloX引脚配置与电源管理设计实战指南

1. 项目概述与核心价值在嵌入式硬件设计领域,尤其是面对像NXP i.MX 6SoloX这类功能丰富的工业级应用处理器时,引脚配置与电源管理往往是决定项目成败的第一道关卡。这不仅仅是把芯片焊到板子上、接上电源那么简单。它更像是在一个极其有限的物理空间&…

作者头像 李华