CN102193788A - 基于动态二进制翻译的跨平台驱动程序复用方法 - Google Patents
基于动态二进制翻译的跨平台驱动程序复用方法 Download PDFInfo
- Publication number
- CN102193788A CN102193788A CN2010101250345A CN201010125034A CN102193788A CN 102193788 A CN102193788 A CN 102193788A CN 2010101250345 A CN2010101250345 A CN 2010101250345A CN 201010125034 A CN201010125034 A CN 201010125034A CN 102193788 A CN102193788 A CN 102193788A
- Authority
- CN
- China
- Prior art keywords
- driver
- platform
- binary translation
- cross
- multiplexing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明属计算机***软件及软件应用领域,涉及基于动态二进制翻译的跨平台驱动程序复用方法。其包括:以动态二进制翻译技术为基础,在目标操作***中为驱动程序构建轻量级独立运行环境;采用二进制翻译模块实现跨平台指令集转换,异构文件格式装载模块实现不同文件格式复用,用***服务模拟模块提供跨平台***服务,以及通用硬件控制模块实现硬件设备的操作。本发明能有效的实现二进制驱动程序的跨平台复用,在无需源码和重编译情况下,实现在不同处理器和不同操作***间复用现有的二进制驱动程序。本发明有利于各种处理器和操作***,在只需较少开发成本的情况下实现对大量外部设备的有效支持。
Description
技术领域
本发明属计算机***软件及软件应用领域,涉及基于动态二进制翻译的跨平台驱动程序复用方法。具体涉及驱动程序在不同平台间复用和增强驱动程序可靠性等方面应用。
背景技术
近年来,出于对国家安全、国民经济发展等多方面因素考虑,安全有效的处理器芯片和操作***愈来愈显现出其有着至关重要的战略意义,国家有关部门对该领域技术给予关注与支持。近年来,国内研发的芯片和操作***不断涌现,如由某研究机构研发的龙芯通用处理器,由某科技公司研发的银河麒麟操作***等。但所述的处理器芯片和操作***所构成的自主计算平台真正的实用和普及还面临来自同现有大量外部设备协同工作的挑战。驱动程序作为操作***的延伸实现计算机主体与不同外部设备的交互工作,因此操作***的成熟度取决于是否有足够的驱动程序来支持各类外部设备,例如微软视窗操作***中超过70%的代码是设备驱动程序。对于新近研发的计算平台,完全重新开发所有的设备驱动程序并不现实,因此如何最大限度的重用现有驱动程序,实现驱动程序跨平台复用成为实用和普及新型计算平台的关键。
然而驱动程序的实现依赖于操作***所提供的驱动编程模型,两者紧密耦合在一起。当前操作***所提供的驱动编程模型并不存在统一的标准,从编程接口到提供的***服务、再到物理硬件操作方式等各个方面都存在巨大差异。因此对于同一个外部设备,不同操作***上的驱动程序实现完全不同,无法复用。另一方面,不同处理器间如英特尔公司的x86处理器与中科院的龙芯处理器采用截然不同的指令集。而驱动程序往往以二进制形式发布,除了少数开源实现并不提供源代码,因此即使是同一操作***在不同处理器平台上也无法直接二进制复用驱动程序。这直接导致驱动程序存在严重的扩展性问题,依赖于底层的处理器和操作***环境,难以实现跨平台的二进制复用。
现有的解决方案是硬件厂商或者操作***开发人员为不同操作***环境编写专门的驱动程序。但是出于开发成本的考虑,只有少数主流操作***平台,如微软视窗操作***,才能得到全面的驱动程序支持。并且这些驱动程序并不公开源代码,只提供部分处理器平台的二进制版本。对于大量非主流或新兴的操作***,如国内自主研发的操作***,往往得不到硬件厂商的支持,只能为最常用的一些外部设备编写驱动程序实现部分主要功能。即使是Linux这样的拥有大量用户的成熟操作***平台上的驱动程序仍存在支持有限、升级缓慢、可靠性差和性能不佳等诸多问题。
发明内容
本发明的目的是克服现有技术的缺陷,主要解决的是如何在不同处理器和操作***构成的计算平台间实现驱动程序的二进制复用,提供一种基于动态二进制翻译的跨平台驱动程序复用技术。
由于现有技术的二进制的驱动程序依赖于底层处理器和操作***,因此要实现跨平台二进制复用就必须克服从指令集到文件格式、从***服务调用到硬件设备操作等方面的差异造成的困难。
为解决上述问题,本发明提供一种基于动态二进制翻译的跨平台驱动程序复用技术,其包括:以动态二进制翻译技术为基础在目标操作***中为驱动程序构建轻量级独立运行环境;分别采用二进制翻译模块实现跨平台指令集转换,异构文件格式装载模块实现不同文件格式复用,用***服务模拟模块提供跨平台***服务,以及通用硬件控制模块实现硬件设备的操作。
本发明中,基于二进制翻译的复用技术的核心是二进制翻译模块,该模块采用在仿真器和模拟器中成熟的动态二进制翻译技术来实现跨平台指令集转换。动态二进制翻译技术能够实现从源指令序列到目标指令序列的动态翻译,并能够按需对特殊指令进行有针对性的处理,使得跨处理器指令集的二进制复用成为可能。动态二进制翻译技术只需一次性的实现从通用中间指令集到新的处理器指令集的翻译规则,具有很好的通用性,独立于具体的硬件设备和驱动程序。对于需要复用的驱动程序,翻译模块首先将使用源指令集的二进制驱动代码在运行时动态的按需翻译成中间指令集代码,再根据添加的翻译规则翻译成最终的可以在新处理器上执行的二进制代码。并且相对于普通应用程序,驱动代码本身还具有运行周期长、代码执行流相对稳定和序交互性不敏感的特点,有利于分摊并优化采用动态二进制翻译技术在性能方面的影响。
本发明中,不同操作***平台采用多种不同的二进制文件格式,即使是同一操作***也支持多种不同格式。异构文件格式装载模块以插件方式可扩展的支持不同平台下的二进制文件格式,完成将二进制文件从磁盘装载到内存进程空间的工作。***服务模拟模块为驱动程序提供与驱动程序一致的***服务。通过目标***平台上的***服务模拟轻量级的源***服务,并由动态二进制翻译模块实现对服务调用的重定向,使得二进制驱动程序能够借助目标***服务来完成必要的操作。最后通用硬件控制模块抽象硬件操作中具有共性的底层操作,分离驱动程序对于内核环境的依赖。使驱动程序运行与用户态,由通用硬件控制模块来代理完成必要的内核态操作,如创建目标平台上的应用程序接口,对硬件外设的寄存器进行读写操作等。
本发明的有益效果是,有效的实现二进制驱动程序的跨平台复用,利用动态二进制翻译等技术在无需源码和重编译情况下,实现在不同处理器和不同操作***间复用现有的二进制驱动程序。本发明有利于各种处理器和操作***,尤其是自主研发的计算平台的实用化和普及,在只需较少开发成本的情况下实现对大量外部设备的有效支持。
为了便于理解,以下将通过具体的附图和实施例对本发明的进行详细地描述。需要特别指出的是,具体实例和附图仅是为了说明,显然本领域的普通技术人员可以根据本文说明,在本发明的范围内对本发明做出各种各样的修正和改变,这些修正和改变也纳入本发明的范围内。
附图说明
图1为本发明的二进制驱动跨平台复用技术架构示意图。
具体实施方式
实施例1
图1描述了基于动态二进制翻译的跨平台驱动复用技术的整体***架构。装载模块首先依据二进制驱动程序文件类型使用合适的格式插件将驱动程序装载到进程空间。当需要执行驱动程序中的指令时,动态二进制翻译模块首先将对应的源指令序列段翻译成目标处理器指令序列段然后执行,并且该结果被保存在翻译缓冲区中避免多次翻译。驱动程序中对于源操作***上的***服务请求,比如分配内存空间请求,被翻译模块截获并重定向到***服务模拟模块。服务模拟模块使用目标操作***上的***服务来模拟完成请求。而驱动程序与普通应用程序以及物理硬件设备的交互、以及对内核态资源的访问都由位于内核态的通用硬件控制模块代理完成。
Claims (6)
1.基于动态二进制翻译的跨平台驱动程序复用方法,其特征在于,其包括:以动态二进制翻译技术为基础,在目标操作***中为驱动程序构建轻量级独立运行环境;其中,分别采用二进制翻译模块实现跨平台指令集转换,异构文件格式装载模块实现不同文件格式复用,用***服务模拟模块提供跨平台***服务,以及通用硬件控制模块实现硬件设备的操作。
2.按权利要求1所述的方法,其特征在于,其中所述的二进制翻译模块采用在仿真器和模拟器中成熟的动态二进制翻译技术实现跨平台指令集转换。
3.按权利要求2所述的方法,其特征在于,其中所述的动态二进制翻译技术实现从源指令序列到目标指令序列的动态翻译,并按需对特殊指令进行有针对性的处理。
4.按权利要求2所述的方法,其特征在于,其中所述的动态二进制翻译技术一次性实现从通用中间指令集到新的处理器指令集的翻译规则,并独立于具体硬件设备和驱动程序。
5.按权利要求1所述的方法,其特征在于,其中所述的异构文件格式装载模块以插件方式可扩展的支持不同平台下的二进制文件格式,完成将二进制文件从磁盘装载到内存进程空间的工作。
6.按权利要求1所述的方法,其特征在于,其中所述的***服务模拟模块为驱动程序提供与驱动程序一致的***服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010125034.5A CN102193788B (zh) | 2010-03-12 | 2010-03-12 | 基于动态二进制翻译的跨平台驱动程序复用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010125034.5A CN102193788B (zh) | 2010-03-12 | 2010-03-12 | 基于动态二进制翻译的跨平台驱动程序复用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102193788A true CN102193788A (zh) | 2011-09-21 |
CN102193788B CN102193788B (zh) | 2016-08-03 |
Family
ID=44601910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010125034.5A Expired - Fee Related CN102193788B (zh) | 2010-03-12 | 2010-03-12 | 基于动态二进制翻译的跨平台驱动程序复用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102193788B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761203A (zh) * | 2013-11-29 | 2014-04-30 | 北京中启智源数字信息技术有限责任公司 | 一种用于不同硬件设备的通用连接方法 |
CN106325819A (zh) * | 2015-06-17 | 2017-01-11 | 华为技术有限公司 | 计算机指令处理方法、协处理器和*** |
CN106648544A (zh) * | 2015-11-02 | 2017-05-10 | 龙芯中科技术有限公司 | 寄存器的分配方法和装置 |
CN108519921A (zh) * | 2011-12-23 | 2018-09-11 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
CN109471668A (zh) * | 2018-11-20 | 2019-03-15 | 南方电网科学研究院有限责任公司 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
WO2022042252A1 (zh) * | 2020-08-29 | 2022-03-03 | 华为技术有限公司 | 驱动配置管理方法、装置、介质、设备及*** |
CN114423024A (zh) * | 2020-09-10 | 2022-04-29 | 华为技术有限公司 | Wlan驱动框架、wlan驱动框架的组件化方法及相关设备 |
CN114721719A (zh) * | 2022-04-20 | 2022-07-08 | 上海道客网络科技有限公司 | 一种在集群中容器化部署异构应用的方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387969A (zh) * | 2008-10-16 | 2009-03-18 | 上海交通大学 | 软硬件协同设计的动态二进制翻译方法 |
CN101452396A (zh) * | 2008-12-25 | 2009-06-10 | 上海交通大学 | 结合静态优化的动态二进制翻译方法 |
CN101504613A (zh) * | 2009-03-12 | 2009-08-12 | 上海交通大学 | 用于受限***的分布式动态二进制翻译方法 |
-
2010
- 2010-03-12 CN CN201010125034.5A patent/CN102193788B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387969A (zh) * | 2008-10-16 | 2009-03-18 | 上海交通大学 | 软硬件协同设计的动态二进制翻译方法 |
CN101452396A (zh) * | 2008-12-25 | 2009-06-10 | 上海交通大学 | 结合静态优化的动态二进制翻译方法 |
CN101504613A (zh) * | 2009-03-12 | 2009-08-12 | 上海交通大学 | 用于受限***的分布式动态二进制翻译方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519921A (zh) * | 2011-12-23 | 2018-09-11 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
CN108519921B (zh) * | 2011-12-23 | 2022-07-12 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
CN103761203A (zh) * | 2013-11-29 | 2014-04-30 | 北京中启智源数字信息技术有限责任公司 | 一种用于不同硬件设备的通用连接方法 |
CN103761203B (zh) * | 2013-11-29 | 2017-09-22 | 北京中启智源数字信息技术有限责任公司 | 一种用于不同硬件设备的通用连接方法 |
US10514929B2 (en) | 2015-06-17 | 2019-12-24 | Huawei Technologies Co., Ltd. | Computer instruction processing method, coprocessor, and system |
CN106325819B (zh) * | 2015-06-17 | 2019-08-02 | 华为技术有限公司 | 计算机指令处理方法、协处理器和*** |
CN106325819A (zh) * | 2015-06-17 | 2017-01-11 | 华为技术有限公司 | 计算机指令处理方法、协处理器和*** |
CN106648544B (zh) * | 2015-11-02 | 2019-03-26 | 龙芯中科技术有限公司 | 寄存器的分配方法和装置 |
CN106648544A (zh) * | 2015-11-02 | 2017-05-10 | 龙芯中科技术有限公司 | 寄存器的分配方法和装置 |
CN109471668A (zh) * | 2018-11-20 | 2019-03-15 | 南方电网科学研究院有限责任公司 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
CN109471668B (zh) * | 2018-11-20 | 2021-11-26 | 南方电网科学研究院有限责任公司 | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 |
WO2022042252A1 (zh) * | 2020-08-29 | 2022-03-03 | 华为技术有限公司 | 驱动配置管理方法、装置、介质、设备及*** |
CN114398086A (zh) * | 2020-08-29 | 2022-04-26 | 华为技术有限公司 | 驱动配置管理方法、装置、介质、设备及*** |
CN114398086B (zh) * | 2020-08-29 | 2022-11-25 | 华为技术有限公司 | 驱动配置管理方法、装置、介质、设备及*** |
CN114423024A (zh) * | 2020-09-10 | 2022-04-29 | 华为技术有限公司 | Wlan驱动框架、wlan驱动框架的组件化方法及相关设备 |
CN114423024B (zh) * | 2020-09-10 | 2022-11-25 | 华为技术有限公司 | Wlan驱动框架、wlan驱动框架的组件化方法及相关设备 |
CN114721719A (zh) * | 2022-04-20 | 2022-07-08 | 上海道客网络科技有限公司 | 一种在集群中容器化部署异构应用的方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN102193788B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102193788A (zh) | 基于动态二进制翻译的跨平台驱动程序复用方法 | |
Smith et al. | The architecture of virtual machines | |
EP3350696B1 (en) | Overriding a migrated method of an updated type | |
US11366643B2 (en) | Generating dynamic modular proxies | |
US6751737B1 (en) | Multiple protected mode execution environments using multiple register sets and meta-protected instructions | |
CN102541619B (zh) | 虚拟机管理装置和方法 | |
US7657881B2 (en) | Using optimized libraries to improve performance of deployed application code at runtime | |
CN102087609B (zh) | 多处理器平台下的动态二进制翻译方法 | |
JP2008545179A (ja) | 複数の経路最適化を備える関数レベルジャストインタイム変換エンジン | |
US20210042138A1 (en) | Computing devices | |
CN111045646B (zh) | 基于虚拟化技术的车载应用跨硬件平台 | |
US20100149194A1 (en) | Method And System For Enabling Managed Code-Based Application Program To Access Graphics Processing Unit | |
CN103443763A (zh) | 包含对重写虚拟函数的调用的支持的isa桥接 | |
CN103793260A (zh) | 一种平台虚拟化*** | |
CN105051682A (zh) | 用于硬件设备的软件接口 | |
CN117369993A (zh) | 在Linux环境下兼容运行不同业务***的方法及信创服务器 | |
Guan et al. | CoDBT: A multi-source dynamic binary translator using hardware–software collaborative techniques | |
Okafor et al. | Eliminating the operating system via the bare machine computing paradigm | |
US8555046B2 (en) | Computer system and its HW abstraction method | |
US11803487B2 (en) | Transitioning between thread-confined memory segment views and shared memory segment views | |
CN115545136B (zh) | 一种在国产处理器平台固件进行raid卡管理的方法 | |
Smith et al. | Introduction to virtual Machines | |
Liang et al. | A mobile integrated development environment for C programming | |
You et al. | A static region‐based compiler for the Dalvik virtual machine | |
Yermolovich et al. | Portable execution of legacy binaries on the Java virtual machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 Termination date: 20190312 |
|
CF01 | Termination of patent right due to non-payment of annual fee |