名词解释
目录
实时操作系统(Real-time operatimh system. RTOS)
GPU (Graphics processing unit)
AHB(Advanced High performance Bus)
一、系统相关名词
-
实时操作系统(Real-time operatimh system. RTOS)
又称即时操作系统,强调实时性,严格按照优先级来进行调度,比如:QNX,如果低优先级的进程前面一直有高优先级的进程在执行的话,低优先级的进程可能永远没有机会被执行到。当然,这里只是为了说明实时操作系统的特性,实际QNX是主要是三种调度策略:
- “轮询”(Round Robin) SCHED_RR
- “先进先出”(First in first out) SCHED_FIFO
- “零星调度”(Sporadic) 算法。 SCHED_SPORADIC
有关这三种调度算法有机会我们写一篇文章好好整理一下
不像linux执行的是完全公平调度(Completely Fair Scheduler,CFS),当然linux也支持实时调度,这里我们不做多叙述,我们主要聊得是linux的宏观策略(根据nice值调度),linux中的高优先级进程可以得到更多的时间片,低优先级的则相反较少。
-
微内核(microkernel)
内核只提供最基本的调度,进程通讯与内存管理。除此之外的其他驱动都是作为应用程序去提供的,具体可以参考QNX的基本架构
-
IFS(Image Filesystem)
QNX的镜像文件系统,是一个包含操作系统、可执行文件以及与程序相关的数据文件的文件系统。它在QNX系统启动过程中起着关键作用。它主要包含了如下几个部分
- 启动代码(startup-xxx)
- 操作系统内核和进程管理器(procnto)
- 驱动程序和管理器(io-pkt、devnp-ncm.so、devc-ser8250、devb-eide、ksh等)
- 用户程序(用户定义的应用程序如:hmi、中间件以及其他的应用服务等等)
- 数据文件:与应用程序相关的数据文件(比如log、配置文件等等)
它主要是在bootrom阶段结束以后,在IPL阶段,将镜像文件加载到RAM中这个过程起作用。
二、启动相关名词
-
PBL(Primary boot loader)
PBL就是固化在高通芯片中的一个的引导加载程序,也是高通芯片的第一个启动程序,位于芯片内置的ROM中,用户端是无法修改的。它是芯片上电以后执行的第一个程序,主要作用有以下几种
- 初始化基本的硬件,如:时钟,电源管理还有启动媒介(flash、emmc、SD等)
- 加载SBL1并引导SBL1的启动
- 支持9008紧急烧录模式
-
SBL(Secondary Boot Loader)
SBL(Secondary Boot Loader)是高通芯片启动过程中的第二级引导程序。也是下面的XBL的一部分,它的主要任务是从存储介质(如eMMC、NAND、USB等)中读取应用程序和相关数据,并加载到内存中执行,最终启动整个系统运行。SBL通常由PBL(Primary Boot Loader)引导执行,是ECU软件的主引导程序,SBL一共有三个阶段,这里我们也不展开详细叙述,只是总结一下功能
Stage 1:
- 初始化DDR内存。
- 加载并验证下一阶段的引导程序SBL2。
- 初始化安全环境,加载QSEE(Qualcomm Secure Execution Environment)镜像。
- 加载DEVCFG(设备配置)镜像。
- 加载Debug Policy镜像.
Stage 2:
- 进一步初始化硬件,如CPU、GPU等。
- 加载并验证下一阶段的引导程序SBL3。
- 初始化更多的系统组件,如显示控制器等。
Stage 3:
- 完成所有必要的硬件初始化。
- 加载并验证下一阶段的引导程序APPSBL(Application Processor Boot Loader)。
- 准备系统环境,以便APPSBL可以顺利启动。
-
XBL(eXtensible boot loader)
XBL(eXtensible Boot Loader)是系统启动过程中的一个扩展引导加载程序(Secondary Bootloader),有时也被称为SBL(Secondary Bootloader)。它是UEFI(Universal Extensible Firmware Interface)架构中的一部分,用于在PBL(Primary Boot Loader)之后进一步初始化硬件和加载系统,其主要功能如下:
1. 硬件初始化:
XBL负责进行更深入的硬件初始化,如CPU、内存、时钟等,为系统启动做好准备
2. 加载和验证:
XBL会加载并验证后续的启动镜像(如ABL或内核)的签名,确保系统的安全性
3. 引导下一阶段的启动:
在完成初始化后,XBL会引导系统进行下一个阶段的启动,如:ABL(Application Bootloader)或者直接加载Linux内核
XBL里面也分很多模块,包含了用汇编语言写的文件还有C文件,目前还没深入研究过,以后如果工作上有需要研究后再写一篇文章进行记录总结
-
ABL(Application Boot Loader)
ABL(Application Boot Loader)是Android设备启动过程中的一个关键阶段,主要负责引导操作系统内核的启动。负责初始化操作系统启动环境,加载HLOS(High-Level Operating System),以下是ABL的主要作用:
引导内核启动:
1.接收并传递初始化信息:
- ABL接收来自XBL(eXtensible Boot Loader)的初始化信息,并将其传递给内核。这些信息包括硬件初始化状态、安全环境配置等,确保内核能够顺利启动
2.支持fastboot功能:
ABL包括芯片无关的应用,如fastboot,这些应用作为独立的UEFI应用存在。fastboot功能允许开发者通过USB接口对设备进行刷机和调试
3.初始化系统环境:
ABL进一步初始化硬件环境,确保系统在启动时处于良好的状态。这包括初始化CPU、内存、时钟等硬件组件。
4.安全启动环境:
ABL继续维护和扩展安全启动环境,确保只有经过授权的内核镜像能够被加载和执行。这通过签名验证机制实现,提高了系统的安全性
-
IPL(initial Program Loader)
IPL(Initial Program Loader)是嵌入式系统启动过程中的一个重要阶段,类似于Android中的uboot。在高通的QNX系统中,IPL负责对硬件进行最低限度的配置,以便后续的startup程序能够顺利运行。具体来说,IPL的初始化部分是用汇编实现的,因为此时内存控制器还未初始化,它只能从ROM执行。在初始化硬件之后,IPL会调用main()函数来初始化C语言环境,最后开始加载startup到RAM中,整个过程的主要功能如下:
1.硬件初始化:
IPL会进行最基本的硬件配置,以确保系统能够启动。这包括配置芯片选择、PCI控制器、时钟和内存控制器等。例如,它会设置一些GPIO管脚来控制复位管脚,配置一个定时器来精确测量延迟。
2.设置堆栈:
为C语言环境设置堆栈,以便后续的程序能够顺利运行。
3.查找并验证OS映像:
IPL会查找操作系统映像,并进行必要的验证,以确保其完整性和正确性。
4.加载操作系统映像到内存中:
将操作系统映像从存储设备(如eMMC、SD卡或SPI NOR闪存设备)加载到RAM中。
5.跳转到操作系统
startup
代码:完成上述步骤后,IPL会跳转到操作系统的
startup
代码,将控制权交给startup
程序,继续系统的启动过程。7.支持多种启动方式:
IPL可以支持从不同的存储设备启动,如线性映射设备(例如NOR闪存设备)或非线性映射设备(例如eMMC、SD卡或SPI NOR闪存设备)。
8.提供基本的调试和通信功能:
IPL还提供了一些基本的调试和通信功能,例如通过UART输出调试信息,帮助开发者进行系统启动过程的调试。
三、系统硬件相关
-
RPM(Resource Power Manager)
RPM(Resource Power Manager)**是高通MSM平台上的一个关键组件,它是一个独立的ARM核心,负责管理和控制整个系统的电源相关的共享资源,如LDO(低压差线性稳压器)、时钟(clocks)等。RPM的主要功能是与系统中的其他主控模块(如应用处理器子系统APSS、调制解调器Modem等)进行交互,以实现动态和静态的资源和电源管理,其主要功能如下:
电源管理:
RPM负责管理和控制整个系统的电源相关的共享资源,如LDO、时钟等,确保系统在不同负载和工作模式下的电源需求得到满足。
资源请求处理:
RPM接受来自多个主控模块的资源请求,进行仲裁和聚合,并配置共享资源。
睡眠和唤醒管理:
RPM管理系统的睡眠状态,通过与各个子系统的睡眠处理器(SPM)交互来实现系统的睡眠和唤醒。每个子系统都有其对应的SPM,它们会根据RPM的指令进入或退出不同的低功耗状态。
-
VPU(Video processing unit)
VPU(Video Processing Unit,视频处理单元) 是一种专门设计用于处理视频相关任务的处理器单元。它通常集成在SoC(System on Chip)中,用于加速视频编解码、图像渲染、视频分析和其他视频处理相关的计算密集型任务。VPU可以有效地提高视频处理的速度和效率,同时降低功耗,这对于移动设备、监控系统、游戏机、智能电视等需要高质量视频处理的设备尤为重要,其主要作用如下:
- 视频编解码:
VPU主要负责视频编解码的硬件加速处理。有了VPU,视频编解码的工作可以不经过CPU运算,从而降低录屏和视频播放的功耗,延长设备的电池寿命,同时释放CPU性能,减少对游戏体验的影响。- 图像增强:
VPU可以进行图像增强处理,如色彩校正、对比度增强、噪声 reduction 等,提升视频的视觉效果。- 实时处理:
VPU能够支持实时或接近实时的视频处理,满足对延迟敏感的应用需求,如视频监控和实时视频通信。
-
GPU (Graphics processing unit)
GPU(Graphics Processing Unit,图形处理单元) 是一种专门设计用于处理图形和图像相关任务的处理器。它在现代计算设备中扮演着至关重要的角色,特别是在图形渲染、图像处理、科学计算和机器学习等领域。以下是GPU的主要作用和应用场景:
1.图形渲染:
1.1 3D图形渲染:
GPU是3D图形渲染的核心组件,能够快速处理复杂的几何计算、光照效果、纹理映射和阴影效果,从而生成高质量的3D图像。这在游戏、虚拟现实(VR)和增强现实(AR)应用中尤为重要。
1.2 2D图形渲染:
GPU也用于2D图形的渲染,包括用户界面(UI)的绘制、文本渲染和图形元素的显示。这在桌面操作系统和移动设备中非常常见。
2.图像处理:
2.1图像增强:
GPU可以进行图像增强处理,如色彩校正、对比度增强、锐化和噪声 reduction,提升图像的视觉效果。
2.2图像分析:
GPU可以用于图像分析任务,如边缘检测、特征提取和图像分割,这些在计算机视觉和医学成像领域非常重要。
3.科学计算
3.1并行计算:
GPU具有高度并行的架构,能够同时处理大量数据,这使其在科学计算中非常有效。例如,GPU可以用于物理模拟、气象预测、分子动力学模拟和流体动力学模拟。
高性能计算:GPU在高性能计算(HPC)领域中被广泛使用,能够加速复杂的计算任务,如矩阵运算、傅里叶变换和数值积分。4. 机器学习和人工智能
4.1深度学习:
GPU在深度学习中扮演着关键角色,能够加速神经网络的训练和推理过程。例如,GPU可以用于训练卷积神经网络(CNN)和循环神经网络(RNN),这些在图像识别、自然语言处理和语音识别中非常有效。
4.2数据处理:
GPU可以用于大规模数据处理任务,如数据挖掘和数据分析,能够快速处理和分析大量数据。
-
DPU(Display processing unit)
DPU(Data Processing Unit,数据处理单元) 是一种新型的可编程处理器,专门用于处理数据中心内的大规模数据工作负载。DPU被视为数据中心继CPU和GPU之后的第三颗主力芯片,主要解决基础设施的“降本增效”问题,即将“CPU处理效率低下、GPU处理不了”的负载卸载到专用DPU,提升整个计算系统的效率、降低整体系统的总体拥有成本(TCO),其主要作用如下:
卸载任务:DPU能够从CPU卸载网络和通信工作负载,释放资源用于应用处理。 加速处理:通过将处理核心与硬件加速器块相结合,DPU能够大规模处理以数据为中心的工作负载,提高性能并减少延迟。 处理复杂任务:DPU旨在处理支持云环境的大型数据中心或驱动人工智能、深度学习算法、其他数据密集型应用的超级计算机中的数据密集型工作负载。
1.卸载任务:
DPU能够从CPU卸载网络和通讯工作负载,释放资源用于应用处理。
2.加速处理:
通过将处理核心与硬件加速器块相结合,DPU能够大规模处理以数据为中心的工作负载,提高性能并减少延迟。
3.处理复杂任务:
DPU旨在处理支持云环境的大型数据中心或驱动人工智能、深度学习算法、其他数据密集型应用的超级计算器中的数据密集型工作负载
-
AHB(Advanced High performance Bus)
高性能系统总线。AMBA规范中的系统总线标准。高数据吞吐,连接SRAM、CPU、DSP、DMA等。
1. 高性能连接
连接高性能模块:AHB用于连接CPU、DMA、高速RAM、NAND FLASH等高性能模块,确保这些模块之间的数据传输高效、快速。
支持高时钟频率:AHB设计用于高性能、高时钟频率的系统结构,典型的工作频率可达500MHz甚至600MHz。
2. 多主多从架构
多主设备支持:AHB支持多主设备(如CPU、DMA等)同时连接到总线上,仲裁器(Arbiter)负责管理多个主设备对总线的请求,确保同一时刻只有一个主设备控制总线。
多从设备支持:AHB支持多个从设备(如内存、外设等),通过地址译码器(Decoder)选择使用哪一个从设备。
3. 高效数据传输
突发传输:支持批量传输(Burst Transfers),可以一次性传输多个数据块,提高传输效率。
分段传输:支持分段传输(Split Transaction),允许在传输过程中插入其他操作,提高总线利用率。
流水线操作:支持流水线传输,提高数据处理效率。
-
APB(Advanced Peripheral Bus)
高级外设总线:AMBA的外设总线标准,为高级的低速外部设备提供低功耗的简易互连。连接Uart、中断、GPIO、定时器等
-
VPU、GPU和DPU的区别:
这三个控制单元都是与显示相关的处理器,其主要的区别如下:
- VPU是视频处理单元,主要是用于视频的编解码。
- GPU是图形处理单元,主要是用于图形的渲染。
- DPU是显示处理单元,主要是用于图形显示,负责将显示的图形数据输出到内存之中