NVIDIA Bluefield DPU上的启动流程4个阶段分别是什么?作用是什么?

文章目录

  • Bluefield上的硬件介绍
  • 启动流程
    • 启动流程:
    • eMMC中的两个存储分区:
    • ATF介绍
      • ATF启动的四个阶段:
    • 四个主要步骤:
      • 各个阶段依赖的启动文件
  • 一次烧录fw失败后的信息看启动流程
  • 综述

Bluefield上的硬件介绍

本文以Bluefield2为例,可以看到RSHIM实际上是Boot相关的集合。也能看到eMMC上的2个分区。
Bluefield硬件单元图:(尤其可以看到RSHIM在硬件形态上是一个单独的硬件)
在这里插入图片描述
Bluefield接口图:在这里插入图片描述

启动流程

The default BlueField bootstream (BFB) shown above is a standard boot BFB that is stored on the embedded Multi-Media Card (eMMC) as can be seen by the boot path that points to a GUID partition (GPT) on the eMMC device

启动流程:

reset(echo "SW_RESET 1" > /dev/rshim0/misc )之后先进入BL1的BootROM
在这里插入图片描述

在这里插入图片描述
参考:https://docs.nvidia.com/networking/display/bluefielddpuosv385/upgrading+boot+software

eMMC中的两个存储分区:

When booting from eMMC, these stages make use of two different types of storage within
the eMMC part:
• ATF and UEFI are loaded from a special area known as an eMMC boot partition. Data
from a boot partition is automatically streamed from the eMMC device to the eMMC
controller under hardware control during the initial boot-up. Each eMMC device has two
boot partitions, and the partition which is used to stream the boot data is chosen by a nonvolatile configuration register in the eMMC.
• The operating system, applications, and user data come from the remainder of the chip,
known as the user area. This area is accessed via block-size reads and writes, done by a
device driver or similar software routine.

从eMMC启动,使用eMMC中两种类型的分区。

  • 一个是boot分区。在启动boot-up阶段,在硬件的控制下数据自动从eMMC设备流转到eMMC控制器。(无需软件参与)。
  • 一个是系统和数据分区。通过block-size方式读写,需要驱动或者软件模拟支持。

ATF介绍

ATF is used in Armv8 systems for booting the chip and then providing secure interfaces. It
implements various Arm interface standards like PSCI (Power State Coordination Interface),
SMC (Secure Monitor Call) and TBBR (Trusted Board Boot Requirements). ATF is used as
the primary bootloader to load UEFI (Unified Extensible Firmware Interface) on the
BlueField platform.
ATF是主要的bootloader,用来加载UEFI,实现是通过ARM标准的接口实现的。

ATF启动的四个阶段:

四个主要步骤:

The BlueField™ boot flow is comprised of 4 main phases:
• Hardware loads Arm Trusted Firmware (ATF)
• ATF loads UEFI—together ATF and UEFI make up the booter software
• UEFI loads the operating system, such as the Linux kernel
• The operating system loads applications and user data

  • BL1:硬件直接load ATF固件,通常所说的bootrom。直接硬件搬运执行。流片后无法修改
  • BL2:ATF加载UEFI。一般是SRAM,该部分不用像DDR初始化才能用。系统启动后直接将ATF加载到SRAM中直接运行。
  • BL3:UEFI加载系统OS
  • BL4:OS加载用户程序

在这里插入图片描述

ATF has various bootloader stages when loading:
• BL1 – BL1 is stored in the on-chip boot ROM; it is executed when the primary core is
reset. Its main functionality is to do some initial architectural and platform initialization
to the point where it can load the BL2 image, then it loads BL2 and switches execution to
it.
• BL2 – BL2 is loaded and then executed on the on-chip boot SRAM. Its main functionality is to perform the rest of the low-level architectural and platform initialization (e.g. initializing DRAM, setting up the System Address Mapping and calculating the Physical
Memory Regions). It then loads the rest of the boot images (BL31, BL33). After loading
the images, it traps itself back to BL1 via an SMC, which in turn switches execution to
BL31.
• BL31 – BL31 is known as the EL3 Runtime Software. It is loaded to the boot RAM. Its
main functionality is to provide low-level runtime service support. After it finishes all its
runtime software initialization, it passes control to BL33.
• BL33 – BL33 is known as the Non-trusted Firmware. For this case we are using EDK2
(Tianocore) UEFI. It is in charge of loading and passing control to the OS. For more detail on this, please see the EDK2 source.

  • BL1:存储在on-chip中的boot ROM中。主要作用做一些架构初始化和平台初始化,直到能够启动BL2,然后将执行权限交给BL2。从实际板子日志可以看到:打印就一句话:Mellanox BlueField-2 A1 BL1 V1.1
  • BL2:是在SRAM执行的。用来进一步初始化低级别的架构和平台。比如 内存DRAM,后文例子就是DRAM初始化失败。设置系统地址映射和物理内存。以及加载后面的BL31和BL33。执行结束后回到BL1,交给里面的SMC来切换execution给BL31。从日志中的NOTICE: Finished initializing DDR
  • BL31:属于EL3的runtime software。加载boot RAM,主要作用提供低级别的运行时服务。比如日志中的GNU GRUB version 2.04
  • BL33:使用Tianocore的UEFI启动。加载OS并且交给OS。更多可以参考EDK2的源码:https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-User-Documentation

ARMv7和ARMv8在引导流程上面完全不同的思路。ARMv8要兼容secure boot,需要在不同的异常等级做相应的处理,而且还需要给SoC厂商一些可配的灵活度,所以在boot上会引入不同的概念,相应的,比ARMv7(及以前)设计层面的复杂度要高很多。
参考:https://github.com/carloscn/blog/issues/65
在这里插入图片描述
详细ARM的流程参考这边文章非常详细: https://github.com/carloscn/blog/issues/65

各个阶段依赖的启动文件

在这里插入图片描述

一次烧录fw失败后的信息看启动流程

卡在了BL2阶段的ERROR: DDR Values not val
在这里插入图片描述

打开rshim日志查看简要信息:看到BL2 start然后异常(打开日志方式: echo "DISPLAY_LEVEL 2" > /dev/rshim0/misc ,然后查看:cat /dev/rshim0/misc
在这里插入图片描述
可以看到BL2显式boot mode是emmc,然后emmc启动异常。
尤其可见是UEFI坏了

日志分析:
在这里插入图片描述
参考:https://docs.nvidia.com/networking/display/bluefielddpubspv422/logging

该问题类似报错: “Memory Device: 0 BIST Failed” and “DDR BIST POST failed!”
https://forums.developer.nvidia.com/t/install-doca-on-bluefield-2-failed/231797

综述

了解Bluefield上DPU的启动流程,对于理解Bluefield各个功能组件和工具有极大的帮助。并且能够更好的理解DPU整体架构的实现。

参考:https://docs.nvidia.com/networking/display/bfswtroubleshooting/software+installation+and+upgrade
https://docs.nvidia.com/networking/display/bluefieldbsp480/upgrading+boot+software#src-3094733907_UpgradingBootSoftware-UEFISystemConfiguration

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

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

相关文章

计算机是如何输入存储输出汉字、图片、音频、视频的

计算机是如何输入存储输出汉字、图片、音频、视频的 为了便于理解,先了解一下计算机的组成。 冯诺依曼计算机的五大组成部分。分别是运算器、控制器、存储器、输入设备和输出设备。参见下图: 一、运算器 运算器又称“算术逻辑单元”,是计算…

SQLI LABS | SQLI LABS 靶场初识

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:SQLI LABS 靶场简介 SQLi-Labs 靶场是一个专门用于学习和测试 SQL 注入漏洞的开源靶场,该靶场提供了多个具有不同漏洞类型和难度级别的 Web 应用程序的环境。这些应用…

Facebook减肥产品广告投放攻略

有不少刚开始投放facebook广告的小伙伴会感到疑惑,为什么别人的减肥产品跑的风生水起,销量羡煞旁人,自己的广告要不就是被拒要不就是没有流量,甚至还可能被封号,如果你也有这样的困扰,那一定要看完这篇文章…

图片颜色通道提取

目录 读取和显示图像分离和合并颜色通道通道分离显示总结 读取和显示图像 import cv2def img_show(name, img):"""显示图片:param name: 窗口名字:param img: 图片对象:return: None"""cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindow…

机器视觉AI场景为什么用Python比C++多?

好多开发者在讨论机在机器视觉人工智能领域的时候,纠结到底是用Python还是C,实际上,Python 和 C 都有广泛的应用,选择 Python而不是 C 可能有以下一些原因: 语言易学性和开发效率 语法简洁: Python 语法简…

基于协同过滤的景区旅游可视化与景区推荐系统(自动爬虫,地点可换)

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍过程展示项目移植每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 本项目是一个综合性的旅游景区数据管理与分析推荐系统,集成了用…

《深度学习》OpenCV 风格迁移、DNN模块 案例解析及实现

目录 一、风格迁移 1、什么是风格迁移 2、步骤 1)训练 2)迁移 二、DNN模块 1、什么是DNN模块 2、DNN模块特点 1)轻量 2)外部依赖性低 3)方便 4)集成 5)通用性 3、流程图 4、图像…

postman变量,断言,参数化

环境变量 1.创建环境变量 正式环境是错误的,方便验证环境变化 2.在请求中添加变量 3.运行前选择环境变量 全局变量 能够在任何接口访问的变量 console中打印日志 console.log(responseBody);//将数据解析为json格式 var data JSON.parse(responseBody); conso…

linux上的smb共享文件夹

需求描述 公司的打印机使用扫描功能的时候,需要发送大量文件。然鹅公司的电脑都是加入了AzureAD的,不能在公司电脑上简单设置共享。好在公司有很多阿里云上的服务器,Linux和Windows的都有,所以就来尝试用阿里云的服务器来进行smb…

科研绘图系列:R语言绘制SCI文章图2

文章目录 介绍加载R包导入数据图a图b图d系统信息介绍 文章提供了绘制图a,图b和图d的数据和代码 加载R包 library(ggplot2) library(dplyr) library(readxl) library(ggpmisc)导入数据 数据可从以下链接下载(画图所需要的所有数据): 百度网盘下载链接: https://pan.baid…

【算法思想·二叉树】用「遍历」思维解题 II

本文参考labuladongsuanfa笔记[【强化练习】用「遍历」思维解题 II | labuladong 的算法笔记] 如果让你在二叉树中的某些节点上做文章,一般来说也可以直接用遍历的思维模式。 270. 最接近的二叉搜索树值 | 力扣 | LeetCode | 给你二叉搜索树的根节点 root 和一个目…

解决新版Android studio不能连接手机的问题

我要说的是一个特例,装了22年的版本AS可以正常连接手机,装了23年以后新版本,AS不能正常连接手机了,但是在CMD控制台可以正常的执行adb命令,并且CMD和AS都是指向D:\android_sdk\platform-tools\adb.exe 一、 为什么会出…

通信工程学习:什么是SDRAM同步动态随机存取存储器

SDRAM:同步动态随机存取存储器 SDRAM,全称为Synchronous Dynamic Random Access Memory,即同步动态随机存取存储器,是一种广泛应用于计算机和嵌入式系统中的内存技术。以下是对SDRAM的详细介绍: 一、SDRAM的定义与特点…

linux线程 | 线程的控制(二)

前言: 本节内容是线程的控制部分的第二个小节。 主要是列出我们的线程控制部分的几个细节性问题以及我们的线程分离。这些都是需要大量的代码去进行实验的。所以, 准备好接受新知识的友友们请耐心观看。 现在开始我们的学习吧。 ps:本节内容适合了解线程…

云轴科技ZStack入选信通院《高质量数字化转型产品及服务全景图》AI大模型图谱

近日,由中国互联网协会中小企业发展工作委员会主办的“2024大模型数字生态发展大会暨铸基计划年中会议”在北京成功召开。会上发布了中国信通院在大模型数字化等领域的多项工作成果,其中重点发布了《高质量数字化转型产品及服务全景图(2024上…

前端开发笔记--html 黑马程序员1

文章目录 前端开发工具--VsCode前端开发基础语法VsCode优秀插件Chinese --中文插件Auto Rename Tag --自动重命名插件open in browserOpen in Default BrowserOpen in Other Browser Live Server -- 实时预览 前端开发工具–VsCode 轻量级与快速启动 快速加载:VSCo…

怎么ping网络ip地址通不通

怎么Ping网络IP地址通不通?要检查网络中的IP地址是否连通,可以使用‌Ping命令。Ping命令通过发送ICMP(Internet Control Message Protocol,因特网控制消息协议)Echo请求报文并等待回应,来判断目标主机是否可…

微知-Mellanox网卡如何导出firmware中的config文件以及文件中有些什么?(ini配置文件,8个区)

背景 Mellanox网卡早期版本以及Engineer simple的DPU支持导出配置文件,该配置文件就是用来告诉firmware的行为。但不是mlxconfig真正设置的文件(mlxconfig -d xxx -e -q应该就是把这个文件读取出来,并且有3个文件,包括默认的,当前…

WebGl学习使用attribute变量绘制一个水平移动的点

在WebGL编程中,attribute变量是一种特殊类型的变量,用于从客户端传递数据到顶点着色器。这些数据通常包括顶点的位置、颜色、纹理坐标等,它们是与每个顶点直接相关的信息。attribute变量在顶点着色器中声明,并且对于每个顶点来说都…

【linux】信号(下)

8. 阻塞信号 (一)信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)进程可以选择阻塞 (Block )某个信号被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作(即被阻塞的信…