RK3568笔记3:开发板启动流程

在这里插入图片描述

第1章 启动流程

在这里插入图片描述

1.1 上电复位

  • CPU 复位,进入启动模式。
  • 系统硬件查找启动设备(如 eMMC)。

1.2 ROM Code 阶段(硬件引导)

  • 在片上 ROM 中存储的启动代码(BootROM)运行。
  • ROM Code 从 eMMC 的 Boot 分区读取 Bootloader 的第一阶段程序(通常是 SPL,Secondary Program Loader)。
  • 如果系统支持多种启动设备(如 eMMC、NAND、SPI Flash 等),ROM Code 会根据启动模式选择设备。

1.3 Bootloader阶段

SPL 或 MLO 负责 第一阶段 的启动,初始化一些基本硬件,并从存储设备加载第二阶段 Bootloader(U-Boot)。

U-Boot 负责 第二阶段 的启动,完成硬件的完整初始化,加载操作系统内核,最终启动操作系统。

​ 因此,SPLMLOU-Boot 是两个不同的 Bootloader 阶段,U-Boot 主要负责第二阶段的启动。SPLMLO 并不是 U-Boot 的一部分,而是一个精简的引导加载程序,通常由 U-Boot 提供支持和构建。如果 U-Boot 配置了 SPL(如 U-Boot SPL),那么它们就可以协同工作:SPL 进行初步引导,U-Boot 负责后续完整的引导和系统启动。

1.3.1 第一阶段 Bootloader

​ 第一阶段SPL或者 MLO是系统引导的第一部分,它通常运行在片上存储(如 SRAM)中,并在硬件上电后执行。SPL或 MLO作用:

  • 硬件初始化:
    • 初始化基本的硬件组件,如 CPU、时钟、电源管理、外设等。
    • 初始化 DDR 内存,但通常是非常基本的初始化,只为加载第二阶段 Bootloader 做准备。
  • 加载 U-Boot:
    • SPL 或 MLO 从存储介质(如 eMMCNAND FlashSD卡)加载第二阶段的 Bootloader(即 U-Boot)到 DDR 或者 SRAM 中。
  • 启动:
    • 当第一阶段 Bootloader(SPL 或 MLO)完成硬件初始化和加载任务后,它会跳转到第二阶段 Bootloader(U-Boot),以继续引导过程。

运行环境

  • SPLMLO 代码非常精简,通常不依赖复杂的文件系统或网络支持,只进行基本的硬件初始化和加载 U-Boot。

1.3.2 第二阶段 Bootloader(U-Boot)

U-Boot 是第二阶段的 Bootloader,通常运行在 DDR 中,负责完成启动过程的剩余部分。U-Boot 是嵌入式系统中最常用的开源 Bootloader。U-Boot作用:

  • 硬件初始化
    • 完成更复杂的硬件初始化,包括配置所有外设、网络、文件系统等。
  • 加载操作系统
    • U-Boot 从存储设备(如 eMMCNAND FlashSD卡 等)加载操作系统内核(例如 Linux kernel)到 DDR 中。
    • 它还可以加载 设备树(Device Tree)和根文件系统。
  • 内核启动
    • 在内核加载到内存后,U-Boot 会跳转到内核的入口点,启动操作系统。
  • 其他功能
    • 提供命令行接口,可以在启动过程中进行系统调试、修改引导参数、进行设备驱动加载等。
    • 支持多种启动方式,比如网络启动(TFTP)、U-boot 命令行交互、从不同的存储设备启动等。

运行环境

  • U-Boot 可以运行在 DDR(大容量内存)中,提供完整的启动环境和更强大的功能。
  • 它支持文件系统(如 FATEXT4)和网络协议(如 TFTPNFS),用于更灵活的启动配置。

1.4操作系统加载

  • 内核开始运行,从 DDR 中加载驱动程序、初始化外设。
  • 文件系统挂载后,用户空间启动。

第2章 数据流解析

从CPU到BootROM

  • CPU上电第一段开始执行的引导程序是从地址0xFFFF0000地址去运行BootROM

从BootROM到存储设备(如eMMC)

  • 引导设备检测:根据系统设计,BootROM 会检测并确定从哪个存储设备加载引导程序。
    • 设备的检测顺序:SPI NAND Flash > NAND Flash > EMMC > SDMMS > USB;

从 eMMC 到 DDR

  • Bootloader 通过存储接口(如 MMC/SD 接口)读取 eMMC 上的系统文件。
  • 读取的数据通过总线(如 AXI、AHB)传输到 DDR。

从 DDR 到 CPU

如 MMC/SD 接口)读取 eMMC 上的系统文件。

  • 读取的数据通过总线(如 AXI、AHB)传输到 DDR。

从 DDR 到 CPU

  • 数据和指令从 DDR 送入 CPU 缓存,以供执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重邮+数字信号处理实验三:z变换及离散LTI系统的z域分析

实验目的: ( 1 )学会运用 Matlab 求离散时间信号的有理函数 z 变换的部分分式展开; ( 2 )学会运用 Matlab 分析离散时间系统的系统函数的零极点; ( 3 )学会运用 …

dolphinScheduler 任务调度

#Using docker-compose to Start Server #下载:https://dlcdn.apache.org/dolphinscheduler/3.1.9/apache-dolphinscheduler-3.1.9-src.tar.gz $ DOLPHINSCHEDULER_VERSION3.1.9 $ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.t…

node.js中跨域请求有几种实现方法

默认情况下&#xff0c;出于安全考虑&#xff0c;浏览器会实施同源策略&#xff0c;阻止网页向不同源的服务器发送请求或接收来自不同源的响应。 同源策略&#xff1a;协议、域名、端口三者必须保持一致 <!DOCTYPE html> <html lang"en"> <head>&l…

【机器学习】机器学习的基本分类-监督学习-决策树(Decision Tree)

决策树是一种树形结构的机器学习模型&#xff0c;适用于分类和回归任务。它通过一系列基于特征的条件判断来将数据分割为多个子区域&#xff0c;从而预测目标变量的值。 1. 决策树的结构 根节点&#xff08;Root Node&#xff09; 决策树的起点&#xff0c;包含所有样本。根据某…

支付宝租赁小程序助力便捷生活新方式

内容概要 支付宝租赁小程序为现代人带来了许多惊喜&#xff0c;它不仅仅是一个简单的租赁平台&#xff0c;更是生活中不可或缺的好帮手。想象一下&#xff0c;无论你缺少什么&#xff0c;从工具到家居用品&#xff0c;只需轻轻一点&#xff0c;便能轻松找到需要的物品。这个小…

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践

搭建高可用负载均衡系统&#xff1a;Nginx 与云服务的最佳实践 引言 在项目开发过程中&#xff0c;我们通常在开发和测试阶段采用单机架构进行开发和测试。这是因为在这个阶段&#xff0c;系统的主要目的是功能实现和验证&#xff0c;单机架构足以满足开发人员的日常需求&…

2024年12月5日Github流行趋势

项目名称&#xff1a;HelloGitHub 项目维护者&#xff1a;521xueweihan, yaowenqiang, daixiang0等项目介绍&#xff1a;分享 GitHub 上有趣、入门级的开源项目。项目star数&#xff1a;95,244项目fork数&#xff1a;9,707 项目名称&#xff1a;Best-websites-a-programmer-sh…

乾元通渠道商中标福州市人防信息化建设项目

乾元通渠道商中标福州市人防信息化建设项目&#xff0c;乾元通作为应急通讯设备厂家&#xff0c;为项目提供车载版多链路聚合通信保障设备 QYT-X1s。 青岛乾元通数码科技有限公司作为国家应急产业企业&#xff0c;深耕于数据调度算法研究&#xff0c;参与了多项国家及省部级信息…

unity3d—demo(实现给出图集名字和图片名字生成对应的图片)

目录 实现给出图集名字和图片名字生成对应的图片&#xff1a; 代码示例&#xff1a; dic: 键 是图集名称 值是一个字典 该字典键是图片名称 值是图片&#xff0c;结构如图&#xff1a; 测试代码&#xff1a; 结果&#xff1a; SpriteRenderer 讲解&#xff1a; Resour…

小型商贸公司用什么进销存软件?

最近&#xff0c;一个商贸公司的客户在了解产品时&#xff0c;向我们倾诉了自己的烦恼&#xff1a;“因为公司规模比较小&#xff0c;所以没有使用专业的进销存软件来进行管理&#xff0c;平时记录数据什么的也是使用比较简单的Excel表格。但是&#xff0c;随着业务的扩大&…

学习SqlSugar调用达梦数据库的存储过程的基本用法

将之前学习达梦数据库递归用法的SQL语句封装为存储过程&#xff0c;然后使用SqlSugar在C#程序中调用。   打开达梦管理工具&#xff0c;在SCHOOL数据库的存储过程文件夹新建存储过程&#xff0c;这里需注意&#xff0c;存储过程名称及参数名称都需要大写&#xff0c;且参数名…

记录一次老平台改造通知用户刷新页面,纯前端实现

记录一次老平台改造通知用户刷新页面&#xff0c;纯前端实现 方案概述背景现状问题本质 方案设计前提设计实现 其他补充写在最后的话抛出一个问题 方案概述 背景 前端构建完上线&#xff0c;用户还停留还在老页面&#xff0c;用户不知道网页重新部署了&#xff0c;跳转页面的时…

【WRF理论第十三期】详细介绍 Registry 的作用、结构和内容

目录 1. Introduction&#xff1a;介绍 Registry 的作用和功能。2. Registry Contents&#xff1a;详细描述 Registry 的结构和内容&#xff0c;包括各个部分的条目类型。2.1. DIMSPEC ENTRIES&#xff08;维度规格条目&#xff09;2.2. STATE ENTRIES&#xff08;状态变量条目…

微信小程序提交测试版,但是扫描体验版的二维码 显示 页面不存在

检查路径首页是否和我们微信小程序中的首页路径一致。 显然我的不一致。 {"pagePath": "pages/index/index","text": "产品","iconPath": "icons/Group 450.png","selectedIconPath": "/icons/组 …

GitToolBox插件:让IntelliJ IDEA的Git操作如虎添翼

GitToolBox插件介绍 GitToolBox是一款针对IntelliJ IDEA的插件&#xff0c;旨在增强IDE内置的Git功能&#xff0c;使Git操作更加便捷和高效。无论是单独开发者还是团队中的一员&#xff0c;这个插件都能帮助更好地管理代码和协作流程。 功能特点 分支管理&#xff1a;GitToolBo…

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发&#xff0c;安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD&#xff0c;TB等业务定制&#xff0c;子账号业务逻辑API 非常详细&#xff0c;方便内置…

Artec Leo 3D扫描仪 革新家具行业的数字化展示【沪敖3D】

随着科技的飞速进步&#xff0c;三维扫描技术已被广泛应用于包括家居行业在内的多个行业。面对现代消费者对家居产品日益增长的个性化和多样化需求&#xff0c;传统的家居设计和展示方法已难以满足市场需求。三维扫描技术的出现&#xff0c;为家居行业带来了新的发展机遇&#…

解决el-select数据量过大的3种方法

在准备上线的后台管理系统中&#xff0c;我们发现有两个下拉框&#xff08;select&#xff09;&#xff0c;其选项数据量超过 1 万条&#xff0c;而在测试环境中这些数据量只有几百条。这导致在页面加载时&#xff0c;浏览器性能出现瓶颈&#xff0c;页面卡顿甚至崩溃。 想了一…

人大金仓(KingBaseEs)数据库操作手册

人大金仓数据库&#xff08;KingbaseES&#xff09;是由北京人大金仓信息技术股份有限公司&#xff08;简称人大金仓&#xff09;自主研发的、具有自主知识产权的通用关系型数据库管理系统。 官方下载地址&#xff1a;KingbaseES 人大金仓数据库 KES技术文档在线手册&#xf…

MATLAB 最小二乘平面拟合(90)

MATLAB 最小二乘平面拟合(90) 一、算法介绍二、算法实现1.代码2.结果:一、算法介绍 平面方程: ax+by+cz+d = 0 执行任务:读取一组点云(这里用自定义生成的平面模拟点云代替,在其中添加了噪声来模拟真实的数据),使用最小二乘拟合平面,来输出平面参数,并可视化显示拟…