用于硬件设备的软件接口制造技术

技术编号:12300629 阅读:54 留言:0更新日期:2015-11-11 11:03
自动地生成被设备驱动程序用于与硬件对接的代码。该方法包括接收硬件设备的机器可读描述,包括硬件设备的硬件寄存器或共享存储器结构中的至少一个。该方法还包括确定要与硬件设备一起使用的操作系统。该方法还包括在代码生成工具上处理机器可读描述来为硬件设备自动生成专用于所确定的操作系统的硬件驱动程序的代码。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】用于硬件设备的软件接口 Μ? 计算机和计算系统已经影响了现代生活的几乎每个方面。计算机通常涉及工作、 休闲、保健、运输、娱乐、家政管理等。 通用计算系统可通过使用称为设备驱动程序的代码来利用多个设备。设备驱动程 序用作将硬件或其他设备接口到系统资源(诸如CPU寄存器、系统存储器寄存器等)的方 式。设备驱动程序通常在内核模式中运行,该内核模式是特权模式。具体而言,在内核模式 中,驱动程序代码能访问任意存储器地址并控制任意系统级组件。然而,有缺陷的或恶意的 驱动程序可容易地损坏计算系统的完整性,从而导致崩溃或数据破坏。 因而,设备驱动程序是不安全的。尽管面向对象的设计方法、语言类型安全性以及 静态代码验证到达高级平台(例如,所谓的云)和开发环境,设备驱动程序仍然使用不安全 的语言(例如,C/C++)来开发且使用较少类型、非面向对象、且易错的接口来访问。大多数 设备驱动程序仍然在内核模式中执行,增加了单个软件隐错造成系统故障的可能性。此外, 在任何驱动程序被实现在用户模式中的程度上,它们现在不能被用于高吞吐量和低等待时 间设备,因为在一些操作系统中,硬件中断不能被高效地递送到用户模式进程。在其他操作 系统中,用户模式驱动程序的性能显著差于内核模式驱动程序。 硬件制造商通常以自由形式硬件规范来描述硬件。驱动程序开发者使用这些规范 来开发硬件访问层。这个层使得驱动程序能够与设备寄存器和共享存储器进行交互。开发 这个层既是麻烦的也是容易出错的,这是因为它取决于规范的质量和开发者的经验。在大 多数情况下,这个层是依赖于操作系统的并且不能被其他平台使用。 在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实 施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技 术领域。 概沭 本文中示出的一个实施例包括在计算环境中实施的方法,该方法包括用于自动地 生成被设备驱动程序用来与硬件设备进行交互的代码的动作。该方法包括接收硬件设备的 机器可读描述,包括硬件设备的硬件寄存器或共享存储器结构中的至少一个。该方法还包 括确定要与硬件设备一起使用的操作系统。该方法还包括在代码生成工具上处理机器可读 描述来为硬件设备自动生成专用于所确定的操作系统的硬件驱动程序的代码。 提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助 确定所要求保护的主题的范围。 将在以下的描述中阐述另外的特征和优点,并且部分特征和优点可从该描述中显 而易见,或者可从本文教导的实践中获知。本专利技术的特征和优点可以通过在所附权利要求 中特别指出的手段和组合来实现并获取。本专利技术的特征将从以下描述和所附权利要求书中 变得完全显而易见,或者可通过如下所述对本专利技术的实践而获知。 附图简沐 为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出 的本主题的具体实施例来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图 仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用 附加特征和详情来描述并解释,在附图中: 图1示出设备硬件和自动设备硬件抽象层接口生成; 图2示出分层驱动程序生成; 图3示出总线驱动程序框架; 图4示出驱动程序中断和设备通信; 图5示出自动生成设备驱动程序的代码的方法; 图6示出对硬件驱动程序施加限制的方法;以及 图7示出实现可支持高吞吐量和低等待时间设备的安全驱动程序的方法。 详细描沐 本文公开的各实施例可包括便于开发用于所有设备类型的高性能用户模式和类 型安全驱动程序的多种技术。驱动程序给出可与其他操作系统中存在的常规内核模式设备 驱动程序相比的性能。 -些实施例可实现自动生成设备驱动程序硬件抽象层。如图1中示出的,硬件设 备102与计算系统104对接,该计算系统使用CPU 108中的寄存器106以及系统存储器112 中的共享存储器110。硬件设备通常以静态方式构建以与寄存器106集合中的特定寄存器 对接并与特定存储器交互对接。为了确保系统104和寄存器106以及共享存储器110与硬 件设备102正确地对接,驱动程序114被用于向设备硬件提供到系统硬件的映射以及来自 系统硬件的映射。驱动程序114通常通过使用制造商提供的文本规范来手动地开发。 硬件制造商通常以自由形式硬件规范来描述硬件。驱动程序开发者使用这些规范 来开发硬件访问层。如提到的,这个层使得驱动程序能够与设备寄存器和共享存储器进行 交互,诸如通过使用直接存储器访问(DMA)。开发这个层既是麻烦的也是容易出错的,这是 因为它取决于规范的质量和开发者的经验。在大多数情况下,这个层是依赖于操作系统的 并且不能被其他平台使用。 本文中的一些实施例通过实现用于将硬件访问层规范与其实现分隔开来的硬件 抽象机制来简化驱动程序开发。机器可读硬件规范116可由设备供应商来提供。机器可读 硬件规范可由代码生成工具118来处理。代码生成工具118具有一个或多个不同操作系统 的操作系统上下文并由此能通过处理机器可读硬件规范116来自动地创建硬件设备接口 层。由此,机器可读硬件规范116可被重用来创建用于多个不同操作系统的并使用各种不 同编程语言的硬件设备接口层115-U115-2到115-n。这个方案极大地简化了驱动程序开 发并减少由不正确的硬件访问导致的错误量。机器可读硬件规范116可用简单语言(诸如 C#)来编写并能通过检查被容易地验证。 由此,开发者或硬件制造商可使用硬件-软件接口语言来描述设备102硬件寄存 器和共享存储器结构(在主机存储器中)。出于这个目的,开发者咨询文本硬件规范。注 意,硬件工程师或硬件供应商也可提供机器可读硬件规范116的硬件-软件接口描述。具 体而言,驱动程序开发者不需要涉入到硬件描述阶段来使用硬件-软件接口语言定义机器 可读硬件规范116。在第二阶段,硬件描述被包括硬件-软件接口处理器120的代码生成工 具118来处理。 硬件-软件接口处理器120可生成如以下示出的各种软件驱动程序模块。 硬件-软件接口处理器120可生成用于读/写寄存器和解释它们的字段的硬件访 问方法。例如,基于机器可读硬件规范116,代码生成工具118可确定寄存器106集合中的 哪些寄存器被用于与硬件设备102通信。方法可被生成来访问这些寄存器并可被用于向希 望控制硬件设备102的应用提供软件接口以指示每个寄存器的目的以及在每个寄存器中 的数据的解释。 硬件-软件接口处理器120可生成用于读/写共享结构字段的方法。例如,基于 机器可读硬件规范116,代码生成工具118可在驱动程序软件模块中标识共享存储器110的 将被硬件设备102使用的各部分。这允许软件应用使用驱动程序114来能够与共享存储器 110的被硬件设备102使用的各部分通信。 硬件-软件接口处理器120可生成用于在硬件-软件接口描述中表达的硬件接口 实体的存储器分配器。例如,基于机器可读硬件规范116,代码生成工具118知晓哪些硬件 接口被包括在硬件设备102中。硬件接口层115可被自动地生成来由此包括存储器分配器 以在系统存储器112中分配存储本文档来自技高网...
用于硬件设备的软件接口

【技术保护点】
一种在计算环境中的自动地生成与设备驱动程序一起使用来与硬件对接的代码的方法,所述方法包括:接收硬件设备的机器可读描述,包括所述硬件设备的硬件寄存器或共享存储器结构中的至少一个;确定要与所述硬件设备一起使用的操作系统;以及在代码生成工具上处理所述机器可读描述来为所述硬件设备自动生成专用于所确定的操作系统的硬件驱动程序的代码。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:Y·维恩斯伯格J·于M·格拉巴尼克D·马萨伦提
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1