0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一张图秒懂嵌入式系统的启动流程

嵌入式开发爱好者 来源:嵌入式开发爱好者 2023-07-29 16:58 次阅读

一图胜千言!看图:

f65b2156-2d5f-11ee-815d-dac502259ad0.png

上图是嵌入式系统启动流程图,图中红色的数字圆点表示启动的先后顺序。主要分为 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 应用进行初始化,如文中以通信设备为例,此处主要完成对转发芯片的初始化,会涉及一些基础转发表项的初始配置,端口和各种通信总线的初始化。

接下来会初始化中间件,中间件是作为应用程序和操作系统之间的桥梁,向下屏蔽操作系统的差异,向上为应用程序提供平台化的技术支持;最后就是各种应用程序的初始化了,包括各种特性的初始化,心跳信息,单板信息,版本信息等等。

日常工作中,最容易出问题的地方其实都是在 app 的启动阶段,这部分才是最应该做一个详尽的图出来,后续笔者有了具体的项目案例后将会补充该图例。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119975
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3563

    浏览量

    129203
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1367

    浏览量

    114517

原文标题:一张图秒懂嵌入式系统的启动流程

文章出处:【微信号:嵌入式开发爱好者,微信公众号:嵌入式开发爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问怎样去设计嵌入式系统启动程序?

    如何去编写嵌入式系统启动程序?设计嵌入式系统启动程序的步骤流程有哪些?设计嵌入式
    发表于 04-25 09:18

    一张带你看懂嵌入式系统

    嵌入式系统种应用范围非常广泛的系统。可以说除了般用途的计算机外的所有计算机都属于嵌入式
    发表于 05-12 08:30

    嵌入式系统框架的相关资料下载

    1.系统框架对于嵌入式系统,最重要的当然是运算以及存储单元,基本的嵌入式
    发表于 10-27 06:51

    嵌入式系统的开发流程是怎样的

    嵌入式系统开发流程嵌入式系统般开发可以参照下图所示流程
    发表于 10-27 06:12

    嵌入式Linux的启动流程简介

    目录嵌入式 Linux 启动流程简介启动流程Bootloader 简介市面上可见的 bootloader入
    发表于 11-04 09:04

    详细分析嵌入式Linux系统启动流程

    嵌入式Linux专题()中已经对嵌入式Linux系统的架构及启动流程有了初步的介绍,本文将详
    发表于 11-05 09:25

    嵌入式系统与ARM启动流程简述

    Date:2019-5-131、嵌入式系统概述2、ARM启动流程简述2.1、Uboot执行流程2.2、Kernel执行
    发表于 12-14 06:04

    iny4412嵌入式Linux操作系统启动流程是怎样的

    本次介绍下友善之臂tiny4412嵌入式Linux操作系统分析首先,可以从官方提供的用户手册中得到这样一张,它简单表达了裸机烧写
    发表于 12-20 07:50

    嵌入式系统U盘实时启动技术

    本文给出了实现嵌入式实时系统优盘启动嵌入式主机硬件结构、软件协议栈以及主要程序流程,探讨了实现嵌入式
    发表于 07-20 15:09 1710次阅读

    嵌入式Linux快速启动技术综述全胜

    嵌入式Linux快速启动技术综述_全胜
    发表于 03-14 08:00 1次下载

    嵌入式系统框架----硬件篇

    1.1 系统框架对于嵌入式系统,我们从常见的嵌入式ARM板进行分析:(从淘宝上截取了
    发表于 10-20 11:51 3次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>框架----硬件篇

    嵌入式Linux专题()——嵌入式Linux系统构成及启动流程

    本文简单的介绍了什么是嵌入式系统,以及嵌入式Linux的系统结构,并且简单的介绍了Linux的启动流程
    发表于 11-02 12:36 15次下载
    <b class='flag-5'>嵌入式</b>Linux专题(<b class='flag-5'>一</b>)——<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>系统</b>构成及<b class='flag-5'>启动</b><b class='flag-5'>流程</b>

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

    如下图所示是嵌入式系统启动流程图,图中红色的数字圆点表示启动的先后顺序。主要分为4个阶段,分别是第阶段 bootloader,第二阶段ub
    发表于 03-07 09:44 827次阅读

    看懂RISC-V星光板的启动流程

    继《最全教程来啦!在RISC-V星光板上创建Debian系统镜像》之后,这期来聊聊RISC-V星光板的启动流程。如何更直观理解VisionFive的
    的头像 发表于 04-22 13:43 1990次阅读
    <b class='flag-5'>一</b><b class='flag-5'>图</b>看懂RISC-V星光板的<b class='flag-5'>启动</b><b class='flag-5'>流程</b>

    嵌入式系统启动流程

    嵌入式系统启动流程个复杂但有序的过程,它涉及从系统上电到操作
    的头像 发表于 10-05 17:44 278次阅读