基于能力的设备驱动程序框架的制作方法

文档序号:9476198阅读:470来源:国知局
基于能力的设备驱动程序框架的制作方法
【专利说明】基于能力的设备驱动程序框架 ww] 背景
[0002] 计算机和计算系统已经影响了现代生活的几乎每个方面。计算机通常设及工作、 休闲、保健、运输、娱乐、家政管理等。
[0003] 通用计算系统可通过使用已知为设备驱动程序的代码来利用多个设备。设备驱动 程序用作将硬件或其他设备接口到系统资源(诸如CPU寄存器、系统存储器寄存器等)的 方式。设备驱动程序通常W内核模式运行,该内核模式是特权模式。具体而言,在内核模式 中,驱动程序代码能访问任意存储器地址并控制任意系统级组件。然而,有缺陷的或恶意的 驱动程序可容易地损坏计算系统的完整性,从而导致崩溃或数据破坏。
[0004] 因而,设备驱动程序是不安全的。尽管面向对象的设计方法、语言类型安全性W及 静态代码验证到达高级平台(例如,所谓的云)和开发环境,设备驱动程序仍然使用不安全 的语言(例如,C/C++)来开发且使用较少类型、非面向对象、且易错的接口来访问。大多数 设备驱动程序仍然在内核模式中执行,增加了单个软件隐错造成系统故障的可能性。此外, 在任何驱动程序被实现在用户模式中的程度上,它们现在不能被用于高吞吐量和低等待时 间设备,因为在一些操作系统中,硬件中断不能被递送到用户模式进程。在其他操作系统 中,用户模式驱动程序的性能显著差于内核模式驱动程序。 阳〇化]在多个常见操作系统中,设备驱动程序可通过错误或恶意来自由地尝试映射和使 用系统存储器中的任一物理地址。由于驱动程序软件的特权性质,操作系统通常没有方法 来确保驱动程序不分配端口、中断或不属于驱动程序的或不需要供驱动程序来正确地运行 W控制特定硬件设备的其他接口。例如,键盘驱动程序通常应该能够访问IRQ1,但不需要 访问端口 80。通过访问端口 80,恶意的键盘驱动程序可实现包括将键击跨网络发送到欺诈 网站在内的按键记录功能。运可危害系统的安全性。
[0006] 在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实 施例。相反,提供该背景仅用W示出在其中可实践在此描述的部分实施例的一个示例性技 术领域。
[0007] 概述
[0008] 此处示出的一个实施例设及一种在计算环境中实施的用于对硬件驱动程序施加 限制的方法。该方法包括从系统内核将I/O资源分配给系统的根总线。从根总线,该方法 还包括将I/O资源的子集分配给设备总线。将I/O资源的子集分配给设备总线包括将设备 总线限于只能分配被根总线分配给它的I/O资源。从该设备总线,该方法包括通过设备接 口将I/O资源分配给设备。
[0009] 提供概述W便W简化形式介绍将在W下详细描述中进一步描述的一些概念的选 集。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助 确定所要求保护的主题的范围。
[0010] 将在W下的描述中阐述另外的特征和优点,并且部分特征和优点可从该描述中显 而易见,或者可从本文教导的实践中获知。本发明的特征和优点可W通过在所附权利要求 中特别指出的手段和组合来实现并获取。本发明的特征将从W下描述和所附权利要求书中 变得完全显而易见,或者可通过如下所述对本发明的实践而获知。
[0011] 附图简述
[0012] 为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出 的本主题的具体实施例来呈现W上简要描述的本主题的更具体描述。应该理解,运些附图 仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用 附加特征和详情来描述并解释,在附图中:
[0013] 图1示出设备硬件和自动设备硬件抽象层接口生成;
[0014] 图2示出分层驱动程序生成;
[0015] 图3示出总线驱动程序框架;
[0016] 图4示出驱动程序中断和设备通信;
[0017] 图5示出自动生成设备驱动程序的代码的方法;
[001引图6示出对硬件驱动程序施加限制的方法;W及
[0019] 图7示出实现可支持高吞吐量和低等待时间设备的安全驱动程序的方法。
[0020] 详细描述
[0021] 本文公开的各实施例可包括便于开发用于所有设备类型的高性能用户模式和类 型安全驱动程序的多种技术。驱动程序给出可与其他操作系统中存在的常规内核模式设备 驱动程序相比的性能。
[0022] 一些实施例可实现自动生成设备驱动程序硬件抽象层。如图1中示出的,硬件设 备102与计算系统104对接,该计算系统使用CPU108中的寄存器106W及系统112中的 共享存储器110。硬件设备通常W静态方式构建W与寄存器106集合中的特定寄存器对接 并与特定存储器交互对接。为了确保系统104和寄存器106W及共享存储器110与硬件设 备102正确地对接,驱动程序114被用于向设备硬件提供到系统硬件的映射W及来自系统 硬件的映射。驱动程序114通常通过使用提供文本规范的制造商来手动地开发。
[0023] 硬件制造商通常W自由形式硬件规范来描述硬件。驱动程序开发者使用运些规范 来开发硬件访问层。如提到的,运个层使得驱动程序能够与设备寄存器和共享存储器对接, 诸如通过使用直接存储器访问值MA)。开发运个层既是麻烦的也是容易出错的,运是因为它 取决于规范的质量和开发者的经验。在大多数情况下,运个层是依赖于操作系统的并且不 能被其他平台使用。
[0024] 本文中的一些实施例通过实现用于将硬件访问层规范与其实现分隔开来的硬件 抽象机制来简化驱动程序开发。机器可读硬件规范116可由设备供应商来提供。机器可读 硬件规范可由代码生成工具118来处理。代码生成工具118具有一个或多个不同操作系统 的操作系统上下文并由此能通过处理机器可读硬件规范116来自动地创建硬件设备接口 层。由此,机器可读硬件规范116可被重用来创建多个不同操作系统并使用各种不同编程 语言的硬件设备接口层115-U115-2到115-n。运个方案极大地简化了驱动程序开发并减 少由不正确的硬件访问导致的错误量。机器可读硬件规范116可用简单语言(诸如C#)来 编写并能通过检查被容易地验证。
[00巧]由此,开发者或硬件制造商可使用硬件一软件接口语言来描述设备102硬件寄存 器和共享存储器结构(在主机存储器中)。出于运个目的,开发者咨询文本硬件规范。注 意,硬件工程师或硬件供应商也可提供机器可读硬件规范116的硬件一软件接口描述。具 体而言,驱动程序开发者不需要设入到硬件描述阶段来使用硬件一软件接口语言定义机器 可读硬件规范116。在第二阶段,硬件描述被包括硬件一软件接口处理器120的代码生成工 具118来处理。
[00%] 硬件一软件接口处理器120可生成如W下示出的各种软件驱动程序模块。
[0027] 硬件一软件接口处理器120可生成用于读取/写寄存器和解释它们的字段的硬件 访问方法。例如,基于机器可读硬件规范116,代码生成工具118可确定寄存器106集合中 的哪些寄存器被用于与硬件设备102通信。方法可被生成来访问运些寄存器并可被用于向 希望控制硬件设备102的应用提供软件接口W指示每个寄存器的目的W及在每个寄存器 中的数据的解释。
[002引硬件一软件接口处理器120可生成用于读取/写共享结构字段的方法。例如,基 于机器可读硬件规范116,代码生成工具118可在驱动程序软件模块中标识共享存储器110 的将被硬件设备102使用的各部分。运允许软件应用使用驱动程序114来能够与共享存储 器110的被硬件设备102使用的各部分通信。
[0029] 硬件一软件接口处理器120可生成用于在硬件一软件接口描述中表达的硬件接 口实体的存储器分配器。例如,基于机器可读硬件规范116,代码生成工具118知晓哪些硬 件接口被包括在硬件设备102中。硬件接口层115可被自动地生成来由此包括存储器分配 器W在系统存储器112中分配存储器来用于使用硬件接口。
[0030] 硬件一软件接口处理器120可生成解释并跟踪硬件接口实体的日志模块。例如, 基于机器可读硬件规范116和关于硬件设备102的硬件接口的知识,代码生成工具118可 自动地生成硬件接口层115W包括能够使用硬件接口来收集和记录数据的模块,该数据记 录硬件设备102的硬件动作。
[0031] 硬件-软件接口处理器120可生成可视化硬件接口实体的调试器扩展。例如,基于 机器可读硬件规范116和关于硬件设备102的硬件接口的知识,代码生成工具118可自动 地生成硬件接口层115W包括能够使用硬件接口来收集和记录数据的模块,该数据记录硬 件设备102的能被用于调试目的的硬件动作。 阳0扣]W下示出USBE肥I控制器能力寄存器的硬件一软件接口样本描述。
[0033] W<概要> W送些寄存器指定主机控制器实现的限制、约束和能力。
[0034]
[0035] 如所示的,该图示出了USBE肥I控制器寄存器
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1