最近在调试Inter平台core i7,基于X86架构的工控产品,在移植驱动的过程中,发现GPIO和I2C的device ID添加到pnp驱动框架后无法进入probe函数,后面找了下原因,因为pnp遵循的是ACPI规范,是由于如下Hardware ID字段是需要从BIOS中进行描述的,而目前的驱动匹配不到对应的字段,自然就不可能注册成功了。

PNP是什么东西?不是三极管的那个PNP啦,这个PNP表示的是:Plug-and-Play,译文为即插即用。

PnP的作用是自动配置底层计算机中的板卡和其他设备,然后告诉对应设备都做了什么。PnP的任务是把物理设备和软件设备驱动程序相配合,并操作设备,在每个设备和它的驱动程序之间建立通信信道。然后,PnP分配下列资源给设备和硬件:I/O地址、IRQ、DMA通道和内存段。即插即用设备配置的控制权将从系统BIOS传递到系统
软件,所以驱动中一定会有代码进行描述,到时可以跟一下这部分的代码深入了解一下。由于PNP遵循ACPI的规范,那么既然是规范,那肯定要照着做了,规范怎么说,那就怎么做。

以下是关于ACPI Spec中对Hardware ID的描述,描述如下:

有关ASL语言可以参考ACPI SPEC手册的ACPI Source Language (ASL)Reference章节。

如上,关于Hardware ID手册中的意思大致如下:

该对象用于向OSPM提供设备的PNP ID或ACPI ID。 在描述平台时,任何_HID对象的使用都是可选的。但是,_HID对象必须是用于描述将由OSPM枚举的任何设备。 当总线枚举器不能检测到设备ID时,OSPM只枚举一个设备。当总线枚举器不能检测到设备ID时。例如,ISA总线上的设备是由OSPM列举。除了OSPM使用_ADR对象来描述总线枚举器枚举的设备。

其中OPSM是:OSPM(OS-directed Power Management) :OSPM 操作系统支持 ACPI 的一个部分,操作系统 (OS)可以从操作系统下驱动程序的角度控制 ACPI 子模块,同时支持 ACPI 包括 SCI 中断,设备事件,系统事件模式,这些事件模式可以充分支持 Hot-plug 方式。

所以解决驱动匹配不上的问题,只要在BIOS中的ASL工程中对应Hardware描述的部分添加一个字段描述,确保驱动中的字段和BIOS中的字段一致,这样就可以匹配成功了。

OSPM

操作系统支持

ACPI

的一个部分,操作系统

OS

)可以从操作系统下驱动程

序的角度控制

ACPI

子模块,

同时支持

ACPI

包括

SCI

中断,

设备事件,

系统事件模式,

这些事件模式可以充分支持

Hot-pl

ug

方式。

以下是ACPI中关于PNP ID和ACPI ID的规范信息:

网址:http://www.uefi.org/PNP_ACPI_Registry

PNP ID AND ACPI ID REGISTRY

This is an industry registry of PNP ID and ACPI ID used in the _HID (Hardware ID), _CID (Compatibility ID) or _SUB (Subsystem ID) objects as described in the ACPI Specification for devices that do not have standard enumeration mechanism.  All these devices must contain a _HID (and possibly _CID and _SUB as well) in order to allow the operating system to uniquely recognize the device so that it can load the appropriate driver software. Each device manufacturer is responsible for assigning the PNP ID or ACPI ID for each of these products.

Both PNP ID and ACPI ID consist of two parts: a Vendor ID, followed by a product identifier. Each manufacturer of these devices must be assigned an industry-unique Vendor ID. Your company may already have a Vendor ID from previous work, such as EISA boards or other Plug and Play devices (PNPISA cards, PNP serial devices, PNP monitors, and so on). If you do not have a vendor ID, or do not know if you have one, the UEFI Forum can assign one for you as described on this page, or can verify an existing ID.

The format of Vendor IDs varies depending on the form of ID you choose:

  • PNP ID: PNP Vendor IDs consist of 3 characters, each character being an uppercase letter (A-Z).
  • ACPI ID: ACPI Vendor IDs consist of 4 characters, each character being either an uppercase letter (A-Z) or a numeral (0-9).

It is important to note that the use of PNP ID and ACPI ID are completely interchangeable for use with ACPI. The decision is strictly related to the availability of the characters you want. The PNP ID is legacy, intended for the Plug and Play Specifications that could not support 4 characters, but is still supported in ACPI. ACPI ID enables a much bigger namespace for the ecosystem.

Vendor IDs are subject to uniqueness requirements and some ID requests may not be available. For instance, Microsoft has reserved the PNP ID’s Vendor ID "PNP" to identify various devices that do not have an existing EISA ID, as well as defining compatibility devices. These IDs are defined in the file. The ACPI Specification reserves the ACPI ID’s Vendor ID “ACPI” for use only with devices defined in that specification. Additionally, Vendor IDs consisting only of valid hexadecimal characters (0-9 and A-F) are reserved for assignment by the PCI SIG (these Vendor IDs must be registered with the PCI SIG but can still be used in ACPI). Finally, it may simply be that the character string you request has previously been assigned to another company.

Product Identifiers are always four-character hexadecimal numbers (0-9 and A-F). The Device Manufacturer is responsible for assigning this identifier to each individual product MODEL. Once an identifier is assigned to a product model, it must not be assigned to any other product model manufactured by the same company (that is, that uses the same Vendor ID).

The registry aims to ensure fair, orderly, consistent and conflict free naming of the Vendor IDs.  Originally implemented by Microsoft, this registry is used to help companies avoid unnecessary collisions in implementation.

TO REGISTER A NEW UNIQUE VENDOR ID FOR THE PNP ID OR ACPI ID

Send a request to the ACPI Specification Workgroup Chairperson specifying whether the Vendor ID is for PNP ID or ACPI ID. All requests are subject to Work Group approval based on the objectives noted above.

The list of currently approved Vendor IDs for PNP ID and ACPI ID.  Please note, due to the size of the PNP ID List, your internet browser may take a minute to for the page to load.


http://www.taodudu.cc/news/show-2067226.html

相关文章:

  • mysql句柄是什么意思_句柄是什么?
  • 什么是句柄C#
  • 什么是java句柄_JAVA中的术语:句柄是啥意思
  • 什么是句柄(经典)
  • sqlserver安装显示句柄无效_句柄无效是什么意思 句柄无效怎么解决
  • 什么是句柄/底层绘图函数
  • Linux 句柄是什么
  • [C++]什么是句柄?为什么会有句柄?
  • 什么是句柄什么是句柄对象
  • 什么是句柄,句柄有什么作用
  • C++ 什么是句柄?为什么会有句柄?HANDLE
  • 句柄数是什么
  • 底层逻辑 MATLAB 的句柄是什么
  • C 什么是句柄?为什么会有句柄?HANDLE
  • C#等 句柄是什么?
  • 什么是句柄?指针和句柄的区别
  • Java中什么是句柄
  • 什么是句柄
  • mysql句柄是什么_什么是句柄?为什么会有句柄?HANDLE
  • 关于VC句柄的一种可爱的解释
  • 句柄详解,什么是句柄?句柄有什么用?
  • 句柄(handle)是什么?
  • 句柄是什么
  • 关于句柄的概念
  • Traceview命令
  • 【Android -- 性能优化】启动速度分析工具 — TraceView
  • 如何使用monitor(DDMS)抓取traceview文件
  • TraceView工具如何使用
  • windows驱动开发-调试工具traceview使用
  • Windows驱动开发TraceView之日志打印

  • 淘嘟嘟介绍
  • 商务合作
  • 免责声明

CopyRight © 淘嘟嘟版权所有

Inter core i7处理器中(x86架构)驱动开发:关于APCI Hardware ID的描述相关推荐

  1. 禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法

    禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法 前提条件:安装QNX 6.5 RTOS操作系统的主板的USB接口必须能够被操作系统识别,否则连接不到触摸屏 ...

  2. i3cpu驱动xp_Intel英特尔Core i3/Core i5/Core i7系列CPU核芯显卡驱动for windows 32位

    大名鼎鼎英特尔公司是全球最大的pc芯片制造商.其产品基本上涵盖了目前市场上大部分所售电脑,中国消费者最熟悉不过了.Intel英特尔Core i3/Core i5/Core i7系列CPU核芯显卡驱动1 ...

  3. 简单的11步在Laravel中实现测试驱动开发

    测试驱动开发(英语:Test-driven development,缩写为TDD)是一种软件开发过程中的应用方法,由极限编程中倡导,以其倡导先写测试程序,然后编码实现其功能得名. 下文是我在Mediu ...

  4. .NET Core 3.0中的数据库驱动框架System.Data

    虽然没有得到很多关注,但System.Data对于.NET中任何关系型数据库的访问都至关重要.因为其前身是ActiveX Data Objects,所以它也被称为ADO.NET.System.Data ...

  5. .NET Core 3.0 中的数据库驱动框架 System.Data

    虽然没有得到很多关注,但System.Data对于.NET 中任何关系型数据库的访问都至关重要.因为其前身是 ActiveX Data Objects,所以它也被称为 ADO.NET.System.D ...

  6. 在敏捷中应用测试驱动开发

    在敏捷和DevOps领域,企业越来越关注持续集成和持续部署问题.他们更频繁地更新软件,给软件测试造成额外的时间压力.而测试驱动开发可以成为解决这个问题的一剂良方. \\ 什么是测试驱动开发? \\ 测 ...

  7. arm linux i2c 总线驱动,ARM-Linux中I2C总线驱动开发

    摘  要: 针对I2C总线的特点,Linux内核中定义了I2C驱动体系结构.在分析Linux的I2C总线驱动体系结构基础上,介绍了在S3C2410中设计I2C总线驱动的方法. 关键词: ARM-Lin ...

  8. 第4代计算机的cpu,凌华科技领先发布第四代Intel® Core™ i7处理器无风扇嵌入式计算机...

    嵌入式计算机产品及智能型计算机应用平台(ApplicaTIon Ready Intelligent Platforms)的产业领导者--凌华科技,日前率先发布业界首款搭载第四代Intel® Core™ ...

  9. Swift 中如何测试驱动开发

    在移动开发的过程中,编写测试代码已经不再流行,相反的,人们可能为了提高开发效率,尽量避免测试代码的编写以节约时间.作为开发菜鸟,我尝到了单元测试的好处: 不仅能保证您的代码能如预期运行,还能保护代码以 ...

  10. ASP.NET Core 3.1 Web API和EF Core 5.0 中具有泛型存储库和UoW模式的域驱动设计实现方法

    目录 介绍 背景 领域驱动设计 存储库模式 工作单元模式 使用代码 创建空白解决方案和解决方案架构 添加和实现应用程序共享内核库 PageParam.cs 在Entity Framework Core ...

最新文章

  1. SQL中的存储过程中的事务处理。备忘
  2. 复习Javascript专题(一):基本概念部分
  3. Android之javax.net.ssl.SSLPeerUnverifiedException: Hostname ip not verified:解决办法
  4. 不停机与停机更新_Istio的零停机滚动更新
  5. mongodb身份验证_MongoDB身份验证
  6. android aar jar制作,AndroidStudio aar、jar生成及其引用
  7. 先序abdfcegh 中序bfdagehc 后序线索二叉树_二叉树的遍历(先序、中序、后序、层序)...
  8. CentOS7 设置防火墙端口
  9. Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead-nBlockUse)
  10. i7-9700与E5 2667 V2空载功耗对比
  11. 苹果12隔空投送显示无法连接服务器,iOS设备隔空投送功能无法使用该如何解决...
  12. c语言判断算符优先级,C语言算符优先级(精华)
  13. C语言中 两个分号啥意思,问什么C程序里总是提示缺少分号;,而明明有分号?...
  14. c语言经典笔试100题,100条经典C语言笔试题目(全).doc
  15. 工程师的18个梦想,你有几个?
  16. Vite resolve.alias
  17. 八个常见Java项目,献给初学编程的你!
  18. 《Learn to Augment: Joint Data Augmentation and Network Optimization for Text》
  19. 解决IDEA中多个项目不在同一窗口下显示的问题(操作简单)
  20. 2021年网络搭建与应用国赛样题6选路部分参考答案

热门文章

  1. 渐变的alert_好看的alert样式或者弹窗样式
  2. [FJWC2018]欧拉函数
  3. librtmp源码详解
  4. shell脚本操作hbase的命令
  5. jeecg框架下的websocket的配置调试
  6. python机器视觉车牌识别_车牌识别系统中的机器视觉技术
  7. 阈值分割法——最佳阈值的选择问题
  8. layui 表单样式无效
  9. JAVA —— ArrayList集合习题(共四题)
  10. Set集合练习题02