一张图了解嵌入式系统启动流程

更新时间:2025-05-08 18:18:22 阅读: 评论:0

<a href=http://www.ranqi119.com/ge/78/699806.html style=一张图了解嵌入式系统启动流程"/>

一张图了解嵌入式系统启动流程

来源 | 混说Linux

知圈 | 进“滑板底盘群”请加微yanzhi-6,备注底盘

如下图所示是嵌入式系统启动流程图,图中红色的数字圆点表示启动的先后顺序。占着茅坑不拉屎主要分为4个阶段,分别是 第一阶段 bootloader,第二阶段uboot,第三阶段内核启动,第四阶段app启动。

bootloader阶段

主要完成第一阶段系统的引五彩斑斓的近义词导和初始化工作朴龙河,包括序号1~3。系统上电后,首先是cpu开始工作,此时引导程序(通常是汇编代码)从ROM被加载到RAM 中,对cpu的寄存器初始化,启动核0,如果是核1或者其他艹字头核则处于休眠状态,等待核0在内核启动正常后通过中断或者事件将其唤醒(图中10的位置)。接下来就是完成flash和ddr初始化,为后面从flash加载bin文件,在DDR中运行程序提供基本环境,一般情况下都是从flash为0的位置,将flash中的bootloader镜像文件加载到RAM或DDR中,该引导程序最终将uboot从flash复制到DDR中,然后交接给uboot一直走下去进行下一步处理。

uboot阶段

首先对dram,flash,串口进行检查,保障uboot的运行环境是ok的,同时为linux分配内存空间;接下来初始化网络配置,包括mac地址的设置、通信端口的工作模式设置,可以让用户通过网络加负责载程序;最后将linux从flash中复制到内存中,linux镜像文件中包含内核、文件系统和设备管理树(FDT)三个基本组件,uboot会根据设备管理树定义的信息进行检查,然后依次加载到内存中 。包括序号4~5,这个阶段最后将linux加载后,就可以交接给内核进行操作。

内核启动阶段

主要负责创建进程、绑定进程、划分内存、唤醒核1、加载文件系统等基本工作,包括序号6~13。首先会冰尜生成一个初始init0进程,后续创建的所有进程都是从该进程中产生,该进程还负责对内存和虚拟内存进行划分,然后vfork出一个主核进程,绑定到核0上,接下来由cpu主核(核0)唤醒其他的核,从init进程vfork出副核进程,并将该进程绑定到核1上,最后是基于设备管理树完成对系统中其他设备的初始化。

app启动阶段

这一阶段主要对各类app应用进行初始化,如文中以通信设备为例,此处主要完成对转发芯片的初始化,会练声涉及一些基础转发表项的初始配置,端口和各种通信总线的初始化。接夸自己的话下来会初始化中间件,中间件是作为应用程序和操作系统之间的桥梁,向下屏蔽操作系统的差异,向上为应用程序提供平台化的技术支持;最后就是各种应用程序的初始化了,包括各种特性的初始化,心跳信息,单板信息,版本信息等等。日常工作中,最容易出问题的地方其实都是在ap老师你好骚p的启动阶段,这部分才是最应该做一个详尽的图出来,后续笔者有了具体的项目案例后将会补充该图例。

转自:

本文发布于:2023-07-22 23:17:03,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/ge/78/607618.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|站长工具|软件玩家|水木编程|编程频道