Linux系统调用AndroidHIDL接口的方法、装置及存储介质与流程

文档序号:26101657发布日期:2021-07-30 18:12阅读:118来源:国知局
Linux系统调用Android HIDL接口的方法、装置及存储介质与流程

本发明涉及操作系统技术领域,尤其涉及一种linux系统调用androidhidl接口的方法、装置及存储介质。



背景技术:

随着android生态在移动端的垄断,基本上所有的移动端soc芯片以及硬件模组等都是只提供适配android系统的解决方案。

android系统虽然是基于linuxkernel建立,但是其采用了bionic以及其他私有核心库,形成了一套封闭生态体系,与目前linux操作系统无法兼容。无法兼容的存在原因之一是,linux系统无法调用androidhal接口。



技术实现要素:

本发明实施例提供一种linux系统调用androidhidl接口的方法、装置及存储介质,通过兼容封装binder调用的方式,可以实现linux程序调用androidhidl接口。

本发明实施例的第一方面,提供一种linux系统调用androidhidl接口的方法,包括:

linux系统程序调用androidhal接口以及androidhal接口的兼容封装库;

hal兼容封装库基于binder驱动,查询并得到androidhalbinderservice的client实例;

基于所述client实例调取相对应的androidhidl接口。

可选地,在第一方面的一种可能实现方式中,在基于所述client实例调取相对应的androidhidl接口的步骤后,还包括:

基于所述androidhidl接口调取相应的结果,将所述结果通过binder返回给hal兼容封装库。

可选地,在第一方面的一种可能实现方式中,在将所述结果通过binder返回给linuxbinderclient后,还包括:

hal兼容封装库在接收到binder返回的结果之后,将结果通过函数返回给linux系统程序。

可选地,在第一方面的一种可能实现方式中,基于所述binder驱动调取androidhidl接口的方式,用于实现linux程序调用androidhidl接口。

本发明实施例的第二方面,提供一种一种linux系统调用androidhidl接口的装置,包括:

linux系统调用模块,用于使linux系统程序调用androidhal接口以及androidhal接口的兼容封装库;

binder驱动调用模块,用于使hal兼容封装库基于binder驱动,查询并得到androidhalbinderservice的client实例;

androidhidl接口调用模块,用于基于所述client实例调取相对应的androidhidl接口。

可选地,在第二方面的一种可能实现方式中,还包括:

返回模块,用于基于所述androidhidl接口调取相应的结果,将所述结果通过binder返回给hal兼容封装库。

可选地,在第二方面的一种可能实现方式中,还包括:

所述返回模块还用于执行以下步骤,包括:

hal兼容封装库在接收到binder返回的结果之后,将结果通过函数返回给linux系统程序。

可选地,在第二方面的一种可能实现方式中,基于所述binder驱动调取androidhidl接口的方式,用于实现linux程序调用androidhidl接口。

本发明实施例的第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行上述第一方面中任意一项所述的安卓运行环境构建的方法。

本发明实施例的第四方面,提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行上述第一方面中任意一项所述的安卓运行环境构建的方法。

本发明提供的一种linux系统调用androidhidl接口的方法、装置及存储介质,。

附图说明

图1为linux系统调用androidhidl接口的方法的第一种实施方式的流程图;

图2为linux系统调用androidhidl接口的方法的第二种实施方式的流程图;

图3为linux系统调用androidhidl接口的装置的第一种实施方式的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含a、b和c”、“包含a、b、c”是指a、b、c三者都包含,“包含a、b或c”是指包含a、b、c三者之一,“包含a、b和/或c”是指包含a、b、c三者中任1个或任2个或3个。

应当理解,在本发明中,“与a对应的b”、“与a相对应的b”、“a与b相对应”或者“b与a相对应”,表示b与a相关联,根据a可以确定b。根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其他信息确定b。a与b的匹配,是a与b的相似度大于或等于预设的阈值。

取决于语境,如在此所使用的“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

本发明提供的技术技术方案中,init是一个命令行程序。其主要工作之一就是建立这些与内核空间交互的文件所在的目录。当linux内核加载完后,要做的第一件事就是调用init程序,也就是说,init是用户空间执行的第一个程序。

关于本发明提供的技术方案的名词解释和释义:

androidhal:android硬件抽象层;

hidl:hal接口定义语言(简称hidl)适用于指定hal和其用户之间的接口的一种接口描述语言(idl),hidl允许指定类型和方法调用;

binder:是android系统进程间通信(ipc)方式之一;

client:客户端。

本发明提供一种linux系统调用androidhidl接口的方法,如图1和图2所示,包括:

步骤s110、linux系统程序调用androidhal接口以及androidhal接口的兼容封装库。linux系统程序调用androidhal接口,也同样会调用到hal接口的兼容封装库。

步骤s120、hal兼容封装库基于binder驱动,查询并得到androidhalbinderservice的client实例。hal兼容封装库会通过binder驱动,查询并得到androidhalbinderservice的client实例。

步骤s130、基于所述client实例调取相对应的androidhidl接口。通过该binder的client实例,可以调用对应的hal接口方法。

步骤s140、基于所述androidhidl接口调取相应的结果,将所述结果通过binder返回给hal兼容封装库。其在收到请求之后,会进行相应的处理,并将结果通过binder返回给linuxbinderclient。

步骤s150、hal兼容封装库在接收到binder返回的结果之后,将结果通过函数返回给linux系统程序。在linux系统调用binder方法之后,对应androidhal的service会收到相关请求。hal兼容封装库在接收到binder返回的数据之后,会将相关结果通过函数返回,将结果返回给linux调用程序。

本发明提供的技术方案,基于binder驱动调取androidhidl接口的方式,用于实现linux程序调用androidhidl接口。通过兼容封装通过binder调用的方式,可以实现linux程序调用androidhidl接口。

通过androidhal+linux系统隔离环境的构建保障了androidhal与linux系统都可以正常运行,互不干扰。本发明提供的androidhal接口兼容方法,保障了linux系统可以调用androidhal接口。从而可以实现在androidhal上bootlinux操作系统。

本发明还提供一种linux系统调用androidhidl接口的装置,如图3所示,包括:

linux系统调用模块,用于使linux系统程序调用androidhal接口以及androidhal接口的兼容封装库;

binder驱动调用模块,用于使hal兼容封装库基于binder驱动,查询并得到androidhalbinderservice的client实例;

androidhidl接口调用模块,用于基于所述client实例调取相对应的androidhidl接口。

在一个实施例中,还包括:

返回模块,用于基于所述androidhidl接口调取相应的结果,将所述结果通过binder返回给hal兼容封装库。

在一个实施例中,还包括:

所述返回模块还用于执行以下步骤,包括:

hal兼容封装库在接收到binder返回的结果之后,将结果通过函数返回给linux系统程序。

在一个实施例中,基于所述binder驱动调取androidhidl接口的方式,用于实现linux程序调用androidhidl接口。

其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(applicationspecificintegratedcircuits,简称:asic)中。另外,该asic可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(rom)、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。

在上述终端或者服务器的实施例中,应理解,处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1