1-uboot流程——概述

2024-08-30 17:38
文章标签 uboot 流程 概述

本文主要是介绍1-uboot流程——概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[uboot] (第一章)uboot流程——概述

[uboot] uboot流程系列: 
[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)

建议先看《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》,根据例子了解一下上电之后的BL0\BL1\BL2阶段,以及各个阶段的运行位置,功能。

=================================================================================

一、bootloader & uboot

1、bootloader的概念

 Bootloader是在操作系统运行之前执行的一段小程序。而这段小程序的最终目的,正确地设置好软硬件环境,使之能够成功地引导操作系统。

2、bootloader的核心功能

bootloader的核心功能就是引导操作系统,部分工作如下

  • 初始化部分硬件,包括时钟、内存等等
  • 加载内核到内存上
  • 加载文件系统、atags或者dtb到内存上
  • 根据操作系统启动要求正确配置好一些硬件
  • 启动操作系统

3、bootloader的monitor功能

上述2是bootloader的核心功能,也就是引导操作系统的功能。 
但是部分bootloader还支持monitor功能,提供了更多的命令行接口,具体部分功能如下:

  • 进行调试
  • 读写内存
  • 烧写Flash
  • 配置环境变量
  • 命令引导操作系统

4、嵌入式几种常见的bootloader

  • uboot 
    这也是最常见的bootloader,开源,常用于ARM,MIPS等平台。 
    支持monitor功能,也是在项目project X中,使用的bootloader 
    所以后续两节会针对这个bootloader进行说明
  • superboot 
    不开源,友善之臂的tiny210代码中默认使用这个bootloader
  • LK(Little Kernel) 
    常用于高通平台,支持monitor功能。

二、uboot-spl & uboot

1、uboot-spl

由uboot编译生成,对应于BL1阶段,也就是BL1的镜像,uboot-spl.bin。 
根据《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》,其代码运行于IRAM中

  • 主要工作有: 
    • 初始化部分时钟(和SDRAM相关)
    • 初始化DDR(外部SDRAM)
    • 从存储介质上(比如SD\eMMC\nand flash)将BL2镜像加载到SDRAM上
    • 验证BL2镜像的合法性
    • 跳转到BL2镜像所在的地址上

后续会从编译和代码流程两方面来介绍uboot-spl。 
对应文章: 
《[uboot] (第二章)uboot流程——uboot-spl编译流程》 
《[uboot] (第三章)uboot流程——uboot-spl代码流程》

2、uboot

由uboot编译生成,对应于BL2阶段,也就是BL2的镜像,uboot.bin。 
根据《[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)》,其代码运行于SDRAM中.

  • 主要工作有: 
    • 初始化部分硬件,包括时钟、内存等等
    • 加载内核到内存上
    • 加载文件系统、atags或者dtb到内存上
    • 根据操作系统启动要求正确配置好一些硬件
    • 启动操作系统
  • monitor工作,主要是处理命令行的命令,以下是部分操作: 
    • flash操作
    • 环境变量操作
    • 启动操作

后续会从编译、代码整体流程以及部分功能的具体流程来介绍uboot-spl。 
对应文章: 
《[uboot] (第四章)uboot流程——uboot编译流程》 
《[uboot] (第五章)uboot流程——uboot整体代码流程》

这篇关于1-uboot流程——概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121489

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署