尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

嵌入式系统启动流程对比

发布时间:2026/9/24 14:08:14

资讯中心
01
ARTICLE

嵌入式系统启动流程对比

嵌入式系统启动流程对比
裸机启动流程“裸机”指直接运行在硬件上的程序无操作系统通常是MCU/单片机启动流程极简硬件复位上电/复位后CPU强制从固定启动地址如0x00000000读取指令该地址通常映射到片内Flash或ROM。0x0000000此处存储的是向量表的起始地址向量表的第 1 项是栈顶地址第 2 项是复位中断服务程序Reset_Handler的入口地址。。初始化与执行启动地址的程序直接包含硬件初始化逻辑设置堆栈指针SP、配置时钟如晶振→PLL、初始化GPIO/UART等外设。这些代码通常位于启动文件如 STM32 的startup.s或初始化函数如SystemInit()。无中间层无BootLoader/OS初始化后直接运行应用逻辑如传感器采集、电机控制。特点程序必须包含所有硬件驱动和逻辑适用于简单场景如单片机控制LED、温湿度采集。STM32启动流程以Cortex-M内核为例STM32是基于ARM Cortex-M系列内核的嵌入式微控制器其启动流程由硬件复位逻辑和启动模式共同决定核心是从指定存储介质加载程序并跳转执行硬件复位阶段芯片上电或复位引脚触发后硬件自动执行复位序列关闭中断、初始化部分核心寄存器如PC指针、SP指针。复位后PC程序计数器强制指向启动地址0x00000000SP栈指针从启动地址4的位置读取即向量表第0项为栈顶地址第1项为复位中断服务程序入口。启动模式选择STM32通过BOOT0、BOOT1引脚电平决定启动介质如Flash、SRAM、系统存储器若从Flash启动最常用程序存储在片内Flash启动地址映射到Flash基地址0x08000000向量表默认位于此处。若从系统存储器启动ISP模式执行芯片出厂固化的BootLoader用于通过UART/SPI等更新程序。向量表与中断服务程序启动地址处是向量表中断服务程序入口地址的数组第1项为复位中断服务程序Reset_Handler。硬件自动跳转到Reset_Handler执行初始化系统时钟如PLL、配置外设、初始化堆栈最终调用main()函数。进入应用程序Reset_Handler执行完毕后跳转到用户编写的main()函数开始运行应用逻辑。Linux嵌入式设备启动流程嵌入式Linux设备如ARM开发板的启动依赖“硬件初始化→BootLoader→内核→根文件系统”的链式加载核心是从存储介质加载并启动操作系统BootROM阶段固化初始程序上电后CPU从固化的BootROM只读存储器开始执行如ARM的iROM、MIPS的BootROM。功能初始化最小硬件如时钟、SPI/NAND控制器检测启动介质eMMC、SD卡、NAND Flash加载BootLoader到片内RAM。BootLoader阶段如U-BootBootLoader是用户可定制的引导程序分两个阶段阶段1汇编实现初始化关键硬件DDR内存、串口将自身剩余部分加载到DDR。阶段2C实现解析启动参数如从环境变量读取内核地址加载Linux内核和设备树Device Tree到DDR指定地址。最终通过bootm或bootz命令跳转到内核入口如0x80008000。Linux内核启动内核启动解压自身若内核是压缩的初始化核心组件进程管理、内存管理、中断系统解析设备树识别硬件挂载根文件系统通过root参数指定如/dev/mmcblk0p2。启动init进程PID1如systemd、busybox init作为用户空间第一个进程。用户空间启动init进程加载配置文件如/etc/inittab启动服务如网络、驱动最终进入命令行或应用程序。Windows设备启动流程启动自检阶段设备通电后首先会读取BIOS基本输入/输出系统或UEFI统一可扩展固件接口对内存、CPU、硬盘、键盘等设备进行自检。此阶段屏幕上会显示自检相关的打印信息若检测到硬件故障可能会报警或显示错误提示。初始化启动阶段BIOS或UEFI会根据预设的启动顺序查找可启动的优先设备如本地磁盘、CD - Driver、USB设备等并准备从该设备启动系统。此时屏幕一般为黑屏状态。Boot加载阶段若从硬盘启动会从启动分区如C盘加载NtldrWindows Vista之前的系统或bootmgr.exeWindows Vista及之后的系统。Ntldr会设置内存模式若是x86处理器且操作系统为32位则设置为32 - bit flat memory mode若为64位操作系统64位处理器则设置为64位内存模式。然后启动文件系统读取boot.ini文件用于确定启动选项。如果按F8或存在多系统时会显示启动选项菜单否则屏幕仍为黑屏。检测和配置硬件阶段系统开始检查和配置一些硬件设备包括系统固件如时间和日期、总线和适配器、显示适配器、键盘、通讯端口、磁盘、软盘、输入设备如鼠标、并口以及在ISA总线上运行的设备等。此过程屏幕依旧是黑屏。内核加载阶段Ntldr或bootmgr.exe将首先加载Windows内核Ntoskrnl.exe和硬件抽象层HAL。接着从注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet下读取这台机器安装的驱动程序并依次加载。驱动程序加载完成后系统会创建系统环境变量启动win32.sysWindows子系统的内核模式部分、csrss.exeWindows子系统的用户模式部分和winlogon.exe创建虚拟内存页面文件还可能对一些必要的文件进行改名主要是驱动文件。此时屏幕会显示Windows logo界面和进度条。登录阶段系统会启动机器上安装的所有需要自动启动的Windows服务启动本地安全认证Lsass.exe然后显示登录界面等待用户输入用户名和密码进行登录登录成功后系统启动完成用户可开始使用计算机。总结复杂系统Linux电脑/嵌入式依赖“固件→BootLoader→内核→用户空间”的链式加载核心是分层初始化硬件并加载更大的程序。简单系统STM32裸机、无BootLoader直接从固定地址执行程序需包含所有硬件初始化逻辑。BootLoader的作用是“桥接硬件与目标程序”解决“目标程序太大无法直接从ROM执行”或“需要灵活加载不同程序”的问题。附录MCU启动过程全解析–从上电复位到进入main函数
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。