01 2025 档案
摘要:RTG(Related Thread Group)是Linux内核调度器中的一个重要特性,主要用于优化关联线程的调度,其主要作用包括以下几个方面: 1. 选核优化 RTG将关联的线程(如主线程和渲染线程)尽量调度到同一个CPU簇上运行。这样做的好处包括: 提升性能:关联线程之间通常存在数据共享,将它
阅读全文
摘要:当Message Header中的Number of Data Objects字段设置为0,控制消息仅由一个Message Header和一个CRC组成。协议层发起控制消息(如,Accept Message, Reject Message 等)。 控制消息类型在消息头的Message Type字段(
阅读全文
摘要:很早就听说过board-id能用来区分项目,没负责过这个,也一直没有时间去了解。board-id的可以通过gpio或者eeprom来存放,board-id也就是CDT中的部分内容,如果时gpio的方式,可配置的项目有些而且在主板上的都是hardcode,这样不利于维护。 XBL-CDT defaul
阅读全文
摘要:在上一篇博文中主要描述了启动流程,及代码执行流程,并重点介绍了一下我重点关注的部分。这个sbl部分也算有点庞大,我们没有精力也没有必要去分析全部,所以接下来就来分析一下sbl1中另外几个需要格外关注的部分: CDT :主要提供平台设备数据 log system:log日志系统,当然没有kernel里
阅读全文
摘要:高通8k平台的boot过程搞得比较复杂, 我也是前段时间遇到一些问题深入研究了一下才搞明白。不过虽然弄得很复杂,我们需要动的东西其实很少,modem侧基本就sbl1(全称:Secondary boot loader)的代码需要动一下,ap侧就APPSBL代码需要动(对此部分不了解,可参照:boota
阅读全文
摘要:正文 这里以滑动列表为例 ,我们截取主线程和渲染线程一帧的工作流程(每一帧都会遵循这个流程,不过有的帧需要处理的事情多,有的帧需要处理的事情少) ,重点看 “UI Thread ” 和 RenderThread 这两行 这张图对应的工作流程如下 主线程处于 Sleep 状态,等待 Vsync 信号
阅读全文
摘要:简介 某次调图形性能的时候(启动后台录屏,下(或)称case)发现Android SurfaceFlinger Vsync机制并没有以前想的这么简单粗糙,特别是这次调图形性能发现一些跟Vsync有关联,因此做个总结详解。 跟不上旋律节奏的VSYNC 一份追踪报告,发现Vsync信号非常不规律,于是从
阅读全文
摘要:Systemd程序 Systemd其实是Linux系统用来管理系统的一个程序,用来代替原来的init进程(用来管理启动系统其它的服务进程),现在很多Linux发行版都已经自带Systemd程序了。 systemctl命令 1. Unit systemctl命令是Systemd中最重要的一个命令,用于
阅读全文
摘要:怎么定义掉帧? Systrace 中可以看到应用的掉帧情况,我们经常看到说主线程超过 16.6 ms 就会掉帧,其实不然,这和我们这一篇文章讲到的 Triple Buffer 和一定的关系,一般来说,Systrace 中我们从 App 端和 SurfaceFlinger 端一起来判断掉帧情况 App
阅读全文
摘要:Android 手机使用中的卡顿问题 , 一般来说手机厂商和 App 开发商都会非常重视 , 所以不管是手机厂商还是 App 开发者 , 都会对卡顿问题非常重视 , 内部一般也会有专门的基础组或者优化组来进行优化 . 目前市面上有一些非常棒的第三方性能监控工具 , 比如腾讯的 Matrix ; 手机
阅读全文
摘要:在UEFI开发中,inf、dsc、FDF 和 DEC 文件是EDK II构建系统的重要组成部分,各自有不同的作用。 1. INF 文件 (Module Information File) 作用: 描述模块的构建信息,如源代码、依赖库、编译选项等。 内容: 包括模块类型、GUID、源文件、库依赖、PC
阅读全文
摘要:inf文件介绍 inf是属于UEFI的标准应用程序工程模块的工程文件,每个程序工程模块,由工程文件和源文件组成。源文件就是c/asm这些程序文件,工程文件就是inf文件。inf文件相当于Makefile文件一样,是对源文件去做整合编译成模块文件的工程文件,用于让edk2编译工具去自动编译模块。 in
阅读全文
摘要:AER AER(Advanced Error Reporting)是一种用于检测和报告PCIe设备中发生的错误的机制,它允许PCIe设备检测到并报告各种类型的错误。错误类型包含Correctable Errors 和Uncorrectable errors两种,其中Uncorrectable err
阅读全文
摘要:USB 链路训练和USB 枚举是 USB 设备与主机之间成功通信的两个重要阶段,它们虽然各自独立,但紧密相连,并共同确保 USB 设备能够正常工作。 1. USB 链路训练 (Link Training) 链路训练是USB主机与设备之间在物理连接层进行的初始化过程,目的是确保数据传输的物理链路处于正
阅读全文
摘要:1.概述 配置空间是PCIe设备/桥的标识符,其保存了设备/桥的信息。主机在枚举设备/桥的时候需要先访问配置空间,获取设备厂家、型号、类型、所需资源等信息,然后再分配资源,最后才能访问PCIe设备的存储或IO地址空间。PCIe总线规定了三种类型的配置空间,分别是PCIe Agent设备使用的配置空间
阅读全文
摘要:在 PCI Express (PCIe) 中,Base Address Registers (BARs) 用于定义设备使用的内存或 I/O 地址空间。BAR 可以配置为 预取(Prefetchable) 或 非预取(Non-Prefetchable),这两种类型的主要区别在于对内存访问的优化方式和访
阅读全文
摘要:在 PCI Express (PCIe) 中,Type 0 配置空间头部用于描述单一功能设备(Single-Function Device)。每个 Function 代表一个独立的功能单元,通常对应一个 PCIe 设备中的一个逻辑设备。以下是 Type 0 设备中每个 Function 的详细说明:
阅读全文
摘要:在 PCIe(Peripheral Component Interconnect Express)架构中,Type 0 和 Type 1 是两种不同的配置空间头类型(Configuration Space Header Types),用于描述 PCIe 设备的功能和拓扑结构。它们的主要区别在于设备在
阅读全文
摘要:1.概述 PCIe总线的最大特点是像CPU访问DDR一样,可以直接使用地址访问PCIe设备(桥),但不同的是DDR和CPU同属于存储器域,而CPU和PCIe设备属于两个不同的域,PCIe设备(桥)的地址空间属于PCIe总线域。存储器域访问PCIe总线域或者PCIe总线域访问存储器域,需要经过一系列的
阅读全文
摘要:1.概述 早期的计算机使用PCI(Peripheral Component Interconnect)总线与外围设备相连,PCI总线使用单端并行信号进行数据传输,由于单端信号很容易被外部系统干扰,其总线频率很难进一步提高。目前,为了提高总线频率以获得更高的总线带宽,高速串行总线逐步替代了并行总线,P
阅读全文
摘要:PCIe TLP(事务层数据包)路由主要分为以下几类及其作用: 1. 基于地址的路由 (Address-Based Routing) 作用:用于Memory Read/Write和I/O Read/Write等事务,TLP头中包含目标地址,交换机根据该地址将TLP转发到正确的设备。 2. 基于ID的
阅读全文
摘要:scheduler若干个基础结构体简介 scheduler初始化 CFS调度算法基本思想 CFS调度算法 bandwidth throttle CPU拓扑和调度域调度组的建立和初始化 fork/clone等方式创建的进程如何被调度的 被wake_up_process之后的进程是如何被调度的 CFS调
阅读全文
摘要:模糊路由(Implicit Routing,又译为隐式路由)只能用于Message的路由。前面的文章中多次提到过,PCIe总线相对于PCI总线的一大改进便是消除了大量的边带信号,这正是通过Message的机制来实现的。 PCIe定义的Message主要有以下几种类型: Power Managemen
阅读全文
摘要:地址路由(Address Routing)的地址包括IO和Memory。对于Memory请求来说,32bit的地址使用3DW的Header,64bit的地址使用4DW的Header。而IO请求则只能使用32bit的地址,即只能使用3DW的Header。 注:再次强调,IO请求是为了兼容早期的PCI设
阅读全文
摘要:eUSB 和 repeater 都与 USB信号传输 和 USB拓展 有关,尤其是在处理较长距离或多个设备连接时,但它们的功能和目的不同。下面是两者之间的关系和区别: 1. eUSB(Enhanced USB) eUSB 是一种改进的 USB 技术,旨在提高信号质量和传输速度。它通常用于 增强 US
阅读全文
摘要:ID 路由(ID Routing)有的时候也被称为BDF路由,即采用Bus Number、Device Number和Function Number来确定目标设备的位置。这是一种兼容PCI和PCI-X总线协议的路由方式,主要用于配置请求(Configuration Request)的路由,在PCIe
阅读全文
摘要:首先来分析一个例子,如下图所示: 当包(Packet)到达Switch的输入端口(Ingress Port)时,端口首先会检查包是否有错误,然后根据包的路由(Routing)信息,来做出以下三种处理方式之一: 1、 接受这个包,并自己(Switch)使用它(Internal Use); 2、 将其通
阅读全文
摘要:在 USB Type-C 接口中,SBU1 和 SBU2 是辅助信号线(Sideband Use),它们在不同的应用场景中有不同的用途12。以下是它们的一些主要作用: DisplayPort 替代模式(Alt Mode):在 DisplayPort 替代模式下,SBU1 和 SBU2 通常用作音频辅
阅读全文
摘要:一、Type-C的DP AlT Mode Type-C 上 配置 Alternative Mode(Alt Mode)。这种配置可以使得其他协议比如DP、HDMI、Thunderbolt™、MHL(mobile high-definition link),以及PCIe等在 Type C线缆上传输。以
阅读全文
摘要:A/B 系统之 bootctl 工具 分别介绍了调试动态分区和虚拟 A/B 分区最常用的工具 snapshotctl 和 dmctl,这一篇介绍 bootctl(boot control),一个专门用于设置 BootControl HAL 接口的工具。 这个工具最常用的地方就是在 Android 系
阅读全文
摘要:Achitecture 在Android A/B System概述中有讲到A升B的一个例子。下面这张图是想说明两个问题: 启动的时候是如何知道要从A启动还是B启动? 升级的时候是如何要更新A还是B? 图中有两个流程,和涉及的一些模块: 模块: bootloader:启动的早期阶段,叫preloade
阅读全文
摘要:Journald是systemd引入的用于收集和存储日志数据的系统服务。它试图使系统管理员可以在越来越多的日志消息中更轻松地找到有趣且相关的信息。为了实现此目标,日记中的主要更改之一是用为日志消息优化的特殊文件格式替换简单的纯文本日志文件。这种文件格式使系统管理员可以更有效地访问相关消息。它还为单个
阅读全文
摘要:前言 本文继续整理CPU调度WALT相关内容,主要整理如下内容: WALT是什么? WALT 计算? WALT 计算数据如何使用? 1. WALT是什么? WALT:Windows-Assist Load Tracing的缩写: 从字面意思来看,是以window作为辅助项来跟踪CPU LOAD; 实
阅读全文
摘要:上一篇文章介绍了Type0型配置空间Header中的BAR的作用和用法,但是PCIe中的桥设备(Switch和Root中的P2P)又是如何判断某一请求(Request)是否属于自己或者自己的分支下的设备的呢?(定义范围) 这实际上是通过Type1型配置空间Header中的Base和Limit寄存器来
阅读全文
摘要:基地址寄存器(BAR)在配置空间(Configuration Space)中的位置如下图所示: 其中Type0 Header最多有6个BAR,而Type1 Header最多有两个BAR。这就意味着,对于Endpoint来说,最多可以拥有6个不同的地址空间。但是实际应用中基本上不会用到6个,通常1~3
阅读全文
摘要:近来集中遇到不少user抱怨手机卡顿的case,能引起系统卡顿的原因可以成千上万,但最核心的起因通常避不开CPU被限制频率或多核CPU部分cpu被关核了。 本文将从几个工作中遇到的实际案例出发(只分析与CPU调控有关的案例),先尽可能地还原出完整的案发现场,再分析具体情况下CPU频率和核心的变化情况
阅读全文
摘要:1. 前言 在当前移动处理芯片性能过剩的时代,用户对手机的温度要求越来越高,更加苛刻的标准,最好永不发热。在这种背景下,温控领域的工作变得日益重要,众多大厂都在不断魔改和优化他们的温控技术。今天我们也带大家看看温控技术的其中一部分:Thermal Engine。下面,我们将基于 GitHub 上的源
阅读全文