linux
文章平均质量分 88
程序猿不会起名字
这个作者很懒,什么都没留下…
展开
-
中断子系统(1)--- 异常中断
一个linux内核工程师需要对kernel中的中断子系统有深刻的理解,才能在实际工作中更好更快的定位到问题所在。原创 2023-08-08 10:26:39 · 240 阅读 · 0 评论 -
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 · 3522 阅读 · 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 · 4378 阅读 · 0 评论 -
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 · 4520 阅读 · 1 评论 -
ACPI相关(12)- ACPI对IPMI的支持
一、IPMI介绍1、平台管理平台管理表示的是一系列的监视和控制功能,操作的对象是系统硬件。比如通过监视系统的温度,电压,风扇、电源等等,并做相应的调节工作,以保证系统处于健康的状态。当系统不正常时,可以选择复位来重启系统。同时平台管理还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。以上的这些功能可以集成到一个控制器上来实现,这个控制器被称为基板管理控制器(Baseboard Manager Controller,简称BMC)。一般服务器中会用到BMC。注:.原创 2021-05-19 09:46:34 · 3095 阅读 · 0 评论 -
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 · 2785 阅读 · 0 评论 -
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 · 1394 阅读 · 0 评论 -
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 · 1699 阅读 · 0 评论 -
ACPI相关(8)- ACPI Platform Error Interfaces
一、简介平台上的硬件使用多样的方式向上层软件报告硬件错误,有的通过 PCI-E 总线传递错误消息,有的需要读写特定的寄存器组来得到错误信息,还有的通过产生特定的中断或者异常来报告错误状态。在这些各式各样方法的背后,是硬件设计人员和软件开发人员耗费大量的时间用来定义接口以及接口实现。这样做的直接后果是增加了太多不必要的开销。因此,一个统一高效的接口无疑是非常有必要的,APEI(Advanced Platform Error Interfaces)的出现,正是为了解决这一长久存在的问题。新的 APEI 规范原创 2021-05-18 10:10:37 · 10917 阅读 · 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 · 1510 阅读 · 0 评论 -
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 · 3402 阅读 · 0 评论 -
ACPI相关(5)- PCI热插拔(三)
PCIE热插拔PCI_E设备和PCI设备通过一种称作无意外(no surprises)方式实现热插拔。用户不允许在未告知系统软件的情况下插入或者移除一个PCI_E设备。用户告知软件将要插入或者移除一个设备之后,软件将进行相关操作,之后告知用户是否可以进行安全的进行这个操作(通过相应的指示器)。然后用户才可以进行接下来的操作。同时PCI_E设备也可以通过突然意外(surprise removal)的方式移除设备。它通过两根探测引脚(PRSNT1#,PRSNT2#)来实现,这两个引脚比其余的引脚更短,那原创 2021-05-18 09:53:09 · 4379 阅读 · 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 · 2455 阅读 · 0 评论 -
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 · 3123 阅读 · 0 评论 -
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 · 9202 阅读 · 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 · 2824 阅读 · 0 评论 -
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 · 1653 阅读 · 0 评论