自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 中断子系统(1)--- 异常中断

一个linux内核工程师需要对kernel中的中断子系统有深刻的理解,才能在实际工作中更好更快的定位到问题所在。

2023-08-08 10:26:39 223

原创 HDA codec相关(2) - verbtable相关

Verb结构function group和widgets都通过verbs来访问parameters和controls。Parameters为function group或widget的能力或配置选项(只读信息),通过GET_xxx verb来获取。Control是用来改变codec的某些行为,大部分是可读写的,可通过独立的verbs来设定或访问各项控制信息。如RESET这样的control是只写的,不能通过verb来读取这项控制信息。如上图所示:(1)CAD占4个BIT,0xF的功能为广.

2021-06-07 16:49:27 3398 1

原创 HDA codec相关(1) - 基本原理

1 基本概念HDA Codec结构将不同的codec functions描述成一系列参数化模块。每个模块(以及模块的组合)为一个addressable node,每个node都可通过一系列只读的capabilities(parameters)和一系列可读写的command(controls)来进行配置和操作。Function Group分为Audio Function Group和Modem Function Group,function group中的节点又称为widget。每个widget都有一

2021-06-07 11:54:26 4193

原创 PCI相关(6)- PCIe中断-MSI/MSIX

在 PCI 总线中,通过INTx 引脚提交中断请求,而 MSI 机制是一个可选机制。而在 PCIe 总线中,PCIe 设备必须支持 MSI 或者 MSI-X 中断请求机制,而可以不支持 INTx 中断消息。在 PCIe 总线中,MSI 和 MSI-X 中断机制使用存储器写请求 TLP 向处理器提交中断请求。不同的处理器使用了不同的机制处理这些 MSI/MSI-X 中断请求,如 PowerPC 处理器使用 MPIC 中断控制器处理 MSI/MSI-X 中断请求;而 x86处理器使用 FSB Interru

2021-05-21 16:48:58 2704

原创 PCI相关(5)- PCIe总线事务-TLP报文

4.3 存储器、I/O 和配置读写请求 TLP在 PCIe 总线中,存储器读写,I/O读写和配置读写请求TLP 由以下几类报文组成。存储器读请求 TLP 和读完成 TLP当 PCIe 主设备,RC 或者 EP,访问目标设备的存储器空间时,使用 Non-Posted 总线事务向目标设备发出存储器读请求 TLP,目标设备收到这个存储器读请求 TLP 后,使用存储器读完成 TLP,主动向主设备传递数据。当主设备收到目标设备的存储器读完成 TLP 后,将完成一次存储器读操作。存储器写请求 TLP在

2021-05-21 15:53:31 4438

原创 PCI相关(4)- PCIe总线事务-TLP格式及路由

事务层是 PCIe 总线层次结构的最高层,该层次将接收 PCIe 设备核心层的数据请求,并将其转换为 PCIe 总线事务,PCIe 总线使用的这些总线事务在 TLP 头中定义。PCIe 总线继承了 PCI/PCI-X 总线的大多数总线事务,如存储器读写、I/O 读写、配置读写总线事务,并增加了 Message 总线事务和原子操作等总线事务。在 PCIe 总线中,Non-Posted 总线事务分两部分进行,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(Completion)报文。PC

2021-05-21 15:50:30 2104

原创 PCI相关(3)- PCIe概述

介绍PCIe之前要搞清楚的问题,为什么要用PCIe总线?首先PCI总线存在的下列缺陷:(1)带宽问题PCI 总线的最高工作频率为66M,最大位宽为64b,从理论上讲,PCI 总线可以提供的最大传输带宽为532MB。然而 PCI 总线作为一个共享总线,在其上的所有 PCI 设备必须要共享PCI 总线的带宽。同时由于 PCI 总线的协议开销,导致 PCI 总线可以实际利用的数据带宽远小于其峰值带宽。(2)服务质量问题PCI 总线在设计之初并没有考虑服务质量的问题。有些实时数据采集卡,音频或者

2021-05-21 11:16:42 4413 1

原创 PCI相关(2)- PCI桥与配置

一、存储域和总线域在PCI 体系结构中,含有两类桥片,一个是 HOST 主桥,另一个是 PCI 桥。在每一个 PCI设备中(包括 PCI 桥)都含有一个配置空间。这个配置空间由 HOST 主桥管理,而 PCI 桥可以转发来自 HOST 主桥的配置访问。在 PCI 总线中,PCI Agent 设备使用的配置空间与 PCI 桥使用的配置空间有些差别,但这些配置空间都是由处理器通过 HOST 主桥管理。1.1 PCI总线域PCI 总线域(PCI Segment)由 PCI 设备所能直接访问的地址空间组

2021-05-20 20:49:20 3235

原创 PCI相关(1)- 基础认识

一、简介在处理器体系结构中,PCI 总线属于局部总线(Local Bus)。主要功能是为了连接外部设备。PCI 总线推出之后,迅速统一了当时并存的各类局部总线。EISA、VESA 等其他32位总线很快就被PCI 总线淘汰了。从那时起,PCI 总线一直在处理器体系结构中占有重要地位。目前 PCI Express 总线逐步取代了 PCI 总线成为 PC 局部总线的主流,从软件层面上看,PCI Express 总线与 PCI 总线基本兼容;从硬件层面上看,PCI Express 总线在很大程度上继承了 P

2021-05-20 17:27:30 1338

原创 ACPI相关(12)- ACPI对IPMI的支持

一、IPMI介绍1、平台管理平台管理表示的是一系列的监视和控制功能,操作的对象是系统硬件。比如通过监视系统的温度,电压,风扇、电源等等,并做相应的调节工作,以保证系统处于健康的状态。当系统不正常时,可以选择复位来重启系统。同时平台管理还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。以上的这些功能可以集成到一个控制器上来实现,这个控制器被称为基板管理控制器(Baseboard Manager Controller,简称BMC)。一般服务器中会用到BMC。注:.

2021-05-19 09:46:34 2962

原创 ACPI相关(11)- PCC实例

二、PCC实例应用2.1 概述平台通信通道(PCC)是用于PC和服务器平台的ACPI规范定义的机制,作为平台固件(如系统固件或管理控制器)和操作系统(OSPM)之间双向通信的标准机制。PCC是一种通用机制,是一种管道,可用于其他基于ACPI的特性。一些基于ACPI的特性使用PCC在平台固件和OSPM之间建立通信的例子是RASF, MPST等。PCC共享内存区为了在平台固件和OPSM之间建立通信,PCC定义了一个邮箱和一个事件接口。邮箱称为“通用通信通道共享内存区域”。平台固件(如系统固件

2021-05-19 09:24:50 2660

原创 ACPI相关(10)- Platform Communications Channel

一.ACPI规范中定义1.1概述平台通信通道是OSPM与平台中的实体(例如平台控制器,或基板管理控制器(BMC))通信的通用机制。在本节中既没有定义与OSPM通信的实体,也没有定义来回传递的信息的任何方面。该信息是根据使用的PCC寄存器地址空间作为通信通道的实际接口定义的。PCC定义了一个新的地址空间类型(PCC space, 0xA),它被实现为一个或多个独立的通信通道或子空间。1.2 PCCT表Table 14-351 Platform Communications Channel

2021-05-19 09:11:26 1356

原创 ACPI相关(9)- Generic Button Device

下文介绍了ACPI规范对通用按钮设备的支持情况。1、概述通用按钮设备是一种标准设备,用于通过硬件中断报告按钮事件,并将这些中断映射到人机接口设备(HID)规范中定义的特定usage。这些设备包括:音量控制,摄像头控制,背光控制,wifi控制。为了向OS表示按钮的功能,需要两条信息:HID控件的Usage和控件所属的HID集合的Us/age。这类设备的HID值为:ACPI0011。Usage是HID Report Descriptor的一部分,可用来表明一个特殊的控制,或一组控制。每个Usage包

2021-05-18 10:15:20 1627

原创 ACPI相关(8)- ACPI Platform Error Interfaces

一、简介平台上的硬件使用多样的方式向上层软件报告硬件错误,有的通过 PCI-E 总线传递错误消息,有的需要读写特定的寄存器组来得到错误信息,还有的通过产生特定的中断或者异常来报告错误状态。在这些各式各样方法的背后,是硬件设计人员和软件开发人员耗费大量的时间用来定义接口以及接口实现。这样做的直接后果是增加了太多不必要的开销。因此,一个统一高效的接口无疑是非常有必要的,APEI(Advanced Platform Error Interfaces)的出现,正是为了解决这一长久存在的问题。新的 APEI 规范

2021-05-18 10:10:37 10267 1

原创 ACPI相关(7)- ACPI对ata的管理

一、SATA在acpi规范中的描述ATA控制器有两种类型:IDE控制器(也称为ATA控制器)和串行ATA (SATA)控制器。IDE控制器是那些使用传统IDE编程接口的控制器,可以支持并行ATA (P-ATA)或SATA连接。SATA控制器可以设计为仅在仿真模式、本机模式下运行,也可以设计为同时支持本机和非本机SATA模式。不管支持何种模式,SATA控制器都被设计为仅与支持串行ATA物理接口的驱动器一起工作。如下所述,SATA控制器的处理方法与传统的IDE控制器类似,但不是完全相同。包含支持本机和非

2021-05-18 10:04:19 1452

原创 ACPI相关(6)- ACPI对USB的管理

ACPI对USB的管理1、_UPC (USB端口功能)这个可选对象是一个方法,它允许平台与操作系统通信,通过当前USB主机总线适配器规范(如UHCI、OHCI和EHCI)没有提供的某些USB端口功能。如果由平台实现,此对象将出现在给定USB主机总线适配器上的每个USB端口(子端口);操作系统软件可以在启动时检查这些特征,以获得有关系统的USB拓扑结构、可用的USB端口等方面的知识。此方法适用于USB根集线器端口以及通过集成的USB集线器实现的端口。参数:无返回值:一个包如下所述的返回..

2021-05-18 10:01:17 3198

原创 ACPI相关(5)- PCI热插拔(三)

PCIE热插拔PCI_E设备和PCI设备通过一种称作无意外(no surprises)方式实现热插拔。用户不允许在未告知系统软件的情况下插入或者移除一个PCI_E设备。用户告知软件将要插入或者移除一个设备之后,软件将进行相关操作,之后告知用户是否可以进行安全的进行这个操作(通过相应的指示器)。然后用户才可以进行接下来的操作。同时PCI_E设备也可以通过突然意外(surprise removal)的方式移除设备。它通过两根探测引脚(PRSNT1#,PRSNT2#)来实现,这两个引脚比其余的引脚更短,那

2021-05-18 09:53:09 4186 1

原创 ACPI相关(5)- PCI热插拔(二)

ACPI热插拔在系统中的实现1、系统初始化阶段在上电阶段PCI设备的扫描节点,ACPI模式根节点(主桥)被PCI总线驱动枚举,从驱动程序的角度上来看可以把root看作一个PCI桥,包含4个地址区间用于描述PCI桥下次一级的总线的地址分配情况,通过扫描PCI root得到root,把从ACPI BIOS获得的资源(中断,总线号)绑定在PCI的root的描述结构acpi_pci_root上。1.初始化root :acpi_pci_root_init是初始化root的第一步,在这里首先调用注册函数ac

2021-05-18 09:22:39 2371

原创 ACPI相关(5)- PCI热插拔(一)

PCI ACPI相关1、热插拔流程1) 设备状态模式检测的信号脚---- 对应的GPEx_STS的位2) 在DSDT中编写对应的_LXX控制方法。(用于表示某个GPE事件中GPEx_STS状态响应位来指明当前的设备插入事件)来描述事件执行策略。并通过初始化节点对象绑定通告函数(Notify Handler)通告到OSPM执行相关设备的PCI枚举操作,以下是设备插入后所发生的事件:1. 用户插入PCI热拔插设备到Slot内;2. HPPC(南桥中热插拔控制器)生成GPE事件;3. A.

2021-05-18 09:20:38 3025

原创 ACPI相关(4)- PCI电源管理

一 ACPI模式下设备的休眠唤醒ACPI规范假设设备可以处于四个电源状态之一,分别标记为D0,D1,D2和D3,大致对应于本机PCI PM D0-D3状态(尽管D3hot和D3cold之间的差异并未考虑在内) ACPI)。此外,对于设备的每个电源状态,必须启用一组电源才能使设备进入该状态。这些功率资源借助自己的控制方法_ON和_OFF进行控制(即启用或禁用),必须分别为它们定义。为了使设备进入ACPI电源状态Dx(其中x是介于0和3之间的数字,包括x),内核应:(1)使用其_ON控制方法启用处于

2021-05-18 09:17:36 8861 1

原创 ACPI相关(3)- PCI枚举

pci主桥acpi框架1、匹配DSDT中(PCI0)调用.attachkernel调用acpi_init执行,acpi_init->acpi_scan_init->acpi_bus_scan->acpi_bus_check_add->acpi_scan_init_hotplug->acpi_scan_match_handler->acpi_scan_handler_matchingstatic bool acpi_scan_handler_matching(stru

2021-05-18 09:15:11 2727

原创 UEFI secure boot(3)- 安全引导的实现

1、先决条件1)固件必须支持UEFI和SecureBoot。2)固件必须支持Setup Mode,或至少清除密钥。3)一个PKI,以及一种管理(生成和签名)您的X.509证书的方法。2、生成及添加密钥参考上述签名过程,简言之,配置包括:1). 生成初始的已允许数据库(Allowed Database)2). 生成初始的被禁止数据库(Forbidden Database)3). 生成初始的秘钥交换秘钥数据库(KEK Database)4). 设置平台秘钥(PK).

2021-05-18 09:06:19 3545

原创 UEFI secure boot(2)- UEFI variable及签名认证过程

UEFI中Variable的实现安全启动涉及到的关于启动模式变量以及上述密钥变量的保存,在uefi中,设置开机的启动项,设置开机密码等功能.这部分功能在标准的uefi中都是使用Variable这套机制实现的。而安全启动中的变量的保存也是通过这套机制来实现的。这些变量将分别保存到内存以及flash中。(1)Variable变量在flash中数据结构当安全启动禁用时即在系统中只保存关于一些启动过程中的相关变量时,格式如下:在flash中的基地址是0x900000001fc01048typed

2021-05-17 19:57:32 5224

原创 UEFI secure boot(1)- 简介

1、公钥加密和数字签名加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息y,但因不知道解密的方法,仍然无法了解信息的内容x。 对称密钥和非对称密钥对称密钥:在双方之间通信,有一个共同密钥来加减密非对称密钥:不需要事先约定且不需要知道通信对方是谁,公钥部分和私钥部分共同组成新形式的密钥——非对称密钥。好比是通信双方,有一个人建立了一个保险柜(将保险柜的制造方法理解为私钥),将信息存入其中,并把保险柜的钥匙(公钥)交给另一方,而另一方当然可以拿着这个钥匙获取保险柜

2021-05-17 19:54:54 1981

原创 linux内核(1)- S3功能

(1)s3实现原理STR(suspend to ram),待机到内存,cpu和外设电源关闭。只有内存处于自刷新的状态。(2)s3实现流程1)睡眠流程应用程序通知系统进入待机状态 系统保留当前状态,保存当前进程状态、保存外设寄存器的值到内存。 cpu 进程睡眠,留一个核将外设断电。 cpu断电,进入s3状态唤醒流程不执行正常dxe阶段,仅执行sec和pei阶段,这两个阶段在cache中执行(避免将内存中的内核数据破坏) 执行boot script table中外设的配置脚本来初始化

2021-05-17 19:47:23 1539

原创 PMON分析(5)- PMON的使用

1、启动流程pmon 是cpu 上电后执行的代码,相当于x86PC 机中的BIOS,兼有 bootloader的功能,pmon 的二进制代码存放于主板上的一块 512KB 的 flash 芯片上。这块flash 芯片的地址是确定的,虚拟地址 0xbfc00000,物理地址 0x1fc00000。cpu 上电后,会在第一时刻从虚拟地址为 0xbfc00000 的读取指令执行。下面介绍一下 pmon 文件相关的地址问题。cpu 眼中的地址是虚拟地址,cpu 取指和取数据的地址是物理地址,经过北桥解释

2021-05-17 17:15:41 1070

原创 ACPI相关(2)- 定义快

关于DSDT在ACPI中的实现ACPI定义了两种数据结构,它们在系统固件和操作系统之间共享:数据表和定义块。这两种数据结构是固件和操作系统之间的主要通信机制。其中DSDT由一个系统描述表头和定义块格式的数据组成。表头信息如下:struct acpi_table_header {char signature[ACPI_NAME_SIZE]; /* ASCII table signature */u32 length; /* Lengt...

2021-05-17 16:58:10 1932

原创 ACPI相关(1)- 简介

什么是ACPI?ACPI首先可以理解为一个独立于体系结构的电源管理和配置框架,它在主机OS中形成一个子系统。该框架建立一个硬件寄存器集来定义电源状态(休眠、hibernate、唤醒等)。硬件寄存器集可以容纳专用硬件和通用硬件上的操作。 标准ACPI框架和硬件寄存器集的主要目的是启用电源管理和系统配置,无需操作系统来直接调用固件。ACPI作为系统固件(BIOS)和OS之间的接口层,如图1和图2所示,有一定的限制和规则。Figure 1: ACPI overview 从根本上说,A...

2021-05-17 16:54:52 5505

原创 PMON分析(4)- 引导内核

固件在完成上述相关CPU、设备环境初始化后,将完成它最后的使命就是引导内核,在initmips最后条用main,对你没有看错,就是那个main。1、main函数1> 获取环境变量ShowBootMenu,如设置了bootlist,则进入函数load_menu_list函数,在usb设备(U盘)、CD-ROM、sata盘中查找boot.cfg文件(把欲引导的内核的目录和传给内核的参数以一定的格式放在 boot.cfg 的文件),如找到,则执行do_cmd(load),引导内核完成启动。2&g

2021-05-17 16:10:14 1007

原创 PMON分析(3)- 内存初始化

内存初始化:loongson3_ddr2_config.S文件大致过程分为个阶段:检测四个DIMM插槽的mc0/1,将信息存在s1中(PROBE_NODE_DIMM)。 使用PROBE_NODE_DIMM,根据上一步获取的信息检测对应内存大小 配置内存控制器(mc_init) 配置L2 X-bar,s1中的MC*_ONLY位决定是否使用这个MC,然后根据s1中的MC*_MEMSIZE位决定内存大小以及如何配置L2 X-bar窗口。注:目前仅使用一个内存控制器时,支持内存大小:512M、1

2021-05-17 16:01:18 1856

原创 PMON分析(2)- RAM阶段

1、initmipsvoid initmips(unsigned long long raw_memsz) //raw_memz = msize{unsigned int hi;unsigned long long memsz;unsigned short i;//core1 run wait_for_smp_call function in ramasmvolatile(".setmip...

2021-05-17 15:51:07 834

原创 PMON分析(1)- ROM阶段

PMON的运行过程分为两个阶段:第一阶段是在ROM FLASH中运行,主要进行基本硬件初始化,如:初始化核的一些配置寄存器,其中包括cpu状态和原因寄存器、pcie的配置寄存器、GPIO、sata、cache、tlb、内存控制器和串口初始化等;第二阶段在内存中执行,主要完成环境变量和基本数据结构的初始化、PCI总线扫描和设备初始化,网络协议和设备初始化,并对搜索到的PCI总线上的设备进行驱动程序的加载与配置等,最后引导内核启动。一、第一阶段1、配置cpu状态_start开始执行pmon的入口

2021-05-17 15:34:25 1786 1

ACPI简述.pdf

acpi定义了一个硬件界面,该结构与兼容ACPI的OS用于控制核心电源的管理特性;ACPI还提供了一个抽象界面,用于管理ACPI系统的电源管理和配置;ACPI定义了兼容操作系统和平台运行固件之间的界面。 为了让硬件供应商在选择时具有灵活性,ACPI使用表来描述系统信息、特性和控制这些特性的方法。这些表列出了系统和板卡上的设备及系统功能,如睡眠电源状态、时钟源、电池和系统指示灯等等。这使得OSPM能控制系统设备,而不需要知道设备的具体实现过程。

2020-01-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除