本发明专利技术涉及二进制翻译技术领域,特别涉及一种基于二进制翻译技术的外设驱动翻译方法及其装置
【技术实现步骤摘要】
一种基于二进制翻译技术的外设驱动翻译方法及其装置
[0001]本专利技术涉及二进制翻译
,特别涉及一种基于二进制翻译技术的外设驱动翻译方法及其装置
。
技术介绍
[0002]外设厂商会提供设备的
Linux
官方驱动安装包,驱动的物理接口一般是
USB
接口或者网络接口
。
但厂商提供的官方
Linux
驱动安装包仅支持少数架构,其他架构无法得到官方支持,因此无法运行设备
。
[0003]近些年,随着二进制翻译技术的发展和逐步成熟,借助二进制翻译技术翻译不同架构指令的能力,可以翻译目标架构的二进制驱动,实现设备的运行
。
技术实现思路
[0004]本专利技术的目的在于提供一种基于二进制翻译技术的外设驱动翻译方法及其装置,在没有驱动支持的机器平台翻译上运行目标架构
(X86
,
ARM
等
)
的驱动,实现外设运行,以解决实际场景中设备因没有驱动支持而无法使用的问题
。
[0005]为解决上述技术问题,本专利技术提供了一种基于二进制翻译技术的外设驱动翻译方法,包括如下步骤:步骤1:在
Linux
运行平台上部署二进制翻译工具,用于用户态程序的翻译执行,实现将目标架构的二进制程序中的指令翻译为
Linux
运行平台架构的指令,且两者指令的运行效果及功能相同;步骤2:在
Linux
运行平台上部署二进制文件识别处理装置,用于识别目标架构的二进制文件,并调用对应目标架构的二进制翻译工具来翻译执行;确保在多进程驱动的每一个进程都能能够被二进制翻译工具正确处理;步骤3:在
Linux
运行平台上部署目标架构的驱动运行环境,作为二进制翻译工具的处理对象;步骤4:在运行时,建立
Linux
运行平台的设备树目录和驱动运行环境的设备树目录之间的联系,使得二进制翻译工具能够正确识别并操作
Linux
运行平台设备
。
设备在
Linux
系统下的表现形式是文件,主要是系统根目录下的
sys、dev
等目录
。
二进制翻译工具翻译执行过程中需要与物理外设交互,这就要求建立驱动运行环境与运行平台设备文件的联系
。
[0006]优选的,所述步骤3中的驱动运行环境包括:驱动程序以及驱动所需的目标架构依赖库
、dev
和
sys
设备树目录;其中驱动程序和其依赖库打包并作为一个整体目录放置在运行平台上
。
[0007]优选的,所述步骤4中建立
Linux
运行平台的设备树目录和驱动运行环境的设备树目录之间的联系,具体采用如下方法:使用
mount
挂载指令建立驱动运行环境中的设备树目录与运行平台设备树目录的
硬链接;或者,在二进制翻译工具中添加重定向功能,使得二进制翻译工具在查找模拟驱动运行环境的设备树目录时,直接定向为
Linux
运行平台的设备树目录
。
[0008]本专利技术还提供了一种基于二进制翻译技术的外设驱动翻译装置,该翻译装置由上述所述的翻译方法中的二进制翻译工具
、
二进制文件识别处理装置以及目标架构的驱动运行环境构成
。
[0009]优选的,该外设驱动分为两层:第一层为用户层驱动,所述用户层驱动主要负责设备的特有功能;第二层为内核层驱动,所述内核层驱动管理更下层的设备,响应用户层的请求操作设备
。
[0010]优选的,该
Linux
运行平台架构的内核驱动和目标架构的内核驱动基于同源开发,以使不同架构间的
API
接口和功能相一致,且使所述用户层驱动和所述内核层驱动两者之间通过
API
接口相沟通
。
[0011]本专利技术与现有技术相比,具有如下有益效果:本专利技术利用二进制翻译工具翻译运行驱动运行环境中的驱动程序,功能等价的实现了目标架构驱动的在另一种架构平台的运行,因为可以操作连接到运行平台的物理设备
。
而且本专利技术翻译装置的核心原理是:翻译装置读取并翻译运行目标架构驱动程序,实现方式是两种架构之间的指令翻译,外在表现是用户层驱动与内核的交互功能相同
。
因为不同架构的内核驱动是同源开发,同用户层交互的
API
基本一致
。
这就实现了物理设备的正常运转
。
故此本专利技术可以在没有驱动支持的机器平台翻译上运行目标架构
(X86
,
ARM
等
)
的驱动,实现外设运行,以解决实际场景中设备因没有驱动支持而无法使用的问题
。
附图说明
[0012]图1为本专利技术基于二进制翻译技术的外设驱动翻译装置的原理图
。
[0013]图2为本专利技术基于二进制翻译技术的外设驱动翻译方法的流程图
。
具体实施方式
[0014]以下结合附图和具体实施例对本专利技术作进一步详细说明
。
根据下面说明,本专利技术的优点和特征将更清楚
。
需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便
、
明晰地辅助说明本专利技术实施例的目的
。
[0015]如图1所示,本专利技术实施例提供了一种基于二进制翻译技术的外设驱动翻译装置,其原理为:正常设备驱动运行的流程如下,官方的驱动程序
(
运行在用户层,称为用户层驱动
)
启动后,首先调用
Glibc、Libusb
等依赖库,同时与守护进程
(Systemd
进程
)
通信,进而调用内核层驱动操作物理设备,使用户层驱动建立与设备树的联系,完成设备的注册和功能操作
。
[0016]因为不同架构的内核基于同源开发,其与用户层的交互
API
接口基本一致
。
二进制翻译工具能够实现在运行平台下对目标架构的用户层驱动翻译运行,其结果与原生执行的功能基本一致,就可以实现设备的正常运转
。
[0017]如图1所示,在用户层中,有二进制翻译工具
、
目标架构驱动所在的驱动运行环境
。
目标架构驱动程序在被翻译执行时会调用所依赖的依赖库,翻译依赖库的过程中产生系统调用,从而与运行平台的内核交互,完成设备的查找与注册,并返回设备句柄给驱动程序
。
之后,继续翻译运行驱动代码和依赖库代码,再次产生系统调用与内核交互
。
实现设备的读写
。
[0018]外设驱动分为两层:第一层是用户层驱动程序,第二层是内核层驱动
。
用户层本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种基于二进制翻译技术的外设驱动翻译方法,其特征在于,包括如下步骤:步骤1:在
Linux
运行平台上部署二进制翻译工具,用于用户态程序的翻译执行,实现将目标架构的二进制程序中的指令翻译为
Linux
运行平台架构的指令,且两者指令的运行效果及功能相同;步骤2:在
Linux
运行平台上部署二进制文件识别处理装置,用于识别目标架构的二进制文件,并调用对应目标架构的二进制翻译工具来翻译执行;步骤3:在
Linux
运行平台上部署目标架构的驱动运行环境,作为二进制翻译工具的处理对象;步骤4:在运行时,建立
Linux
运行平台的设备树目录和驱动运行环境的设备树目录之间的联系,使得二进制翻译工具能够正确识别并操作
Linux
运行平台设备
。2.
如权利要求1所述的一种基于二进制翻译技术的外设驱动翻译方法,其特征在于,所述步骤3中的驱动运行环境包括:驱动程序以及驱动所需的目标架构依赖库
、dev
和
sys
设备树目录
。3.
如权利要求1所述的一种基于二进制翻译技术的外设驱动翻译方法,其特征在于,所述步骤4中建立
Linux
运行平台...
【专利技术属性】
技术研发人员:高清,
申请(专利权)人:中电科申泰信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。