CN114077462A - 软件操作系统调用Android HIDL接口的方法、装置、设备及介质 - Google Patents
软件操作系统调用Android HIDL接口的方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN114077462A CN114077462A CN202111671966.4A CN202111671966A CN114077462A CN 114077462 A CN114077462 A CN 114077462A CN 202111671966 A CN202111671966 A CN 202111671966A CN 114077462 A CN114077462 A CN 114077462A
- Authority
- CN
- China
- Prior art keywords
- android
- operating system
- hidl
- software operating
- interface
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 147
- 239000011230 binding agent Substances 0.000 claims abstract description 44
- 238000004806 packaging method and process Methods 0.000 claims abstract description 41
- 238000002955 isolation Methods 0.000 claims description 57
- 238000004891 communication Methods 0.000 claims description 19
- 238000005538 encapsulation Methods 0.000 claims description 15
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 125000001475 halogen functional group Chemical group 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明涉及计算机技术领域,具体提供一种软件操作系统调用Android HIDL接口的方法、装置、设备及介质,旨在解决如何使软件操作系统兼容Android HIDL接口的问题。为此目的,本发明的方法包括:控制软件操作系统的软件进程调用预设的兼容封装库,通过兼容封装库获取基于Binder机制与Android HAL进程中的Android HIDL Service进行通信的Client进程,进而通过Client进程与Android HIDL Service进行通信,完成软件操作系统对Android HIDL接口的调用。通过预设的兼容封装库实现了软件操作系统与Android HIDL接口之间的桥接,兼容封装库向上可以为软件操作系统提供兼容Android HIDL接口的接口,供软件操作系统进行调用,而向下可以通过Client进程与Android HIDL Service进行通信,使得软件操作系统可以调用到真正的Android HIDL接口,实现了软件操作系统对Android HIDL接口的兼容。
Description
本发明是在申请号为202110374484.6,发明名称为《Linux系统调用Android HIDL接口的方法、装置及存储介质》的优先权的基础上的继续申请,其全部内容通过引用结合在本发明中。
技术领域
本发明涉及计算机技术领域,具体提供一种软件操作系统调用Android HIDL接口的方法、装置、设备及介质。
背景技术
Android是一种基于Linux内核的操作系统(Operating System),其广泛应用于手机和平板电脑(Tablet PC)等移动设备。Android的系统架构从上到下主要是系统应用层(System Apps)、框架层(Framework)、硬件抽象层(Hardware Abstraction Layer,HAL)和Linux内核层(Linux Kernel)。其中,硬件抽象层为Android提供了虚拟硬件平台,其可以对Linux内核层进行封装并向上提供接口,屏蔽Android底层的实现细节。Android硬件抽象层HAL的接口(Android HAL接口)主要包括动态库直通式(Passthrough)HAL接口(Android动态库HAL接口)和Binder跨进程式接口(Android HIDL接口)等。
目前由于Android广泛应用于不同类型的移动设备,导致一部分硬件设备供应商仅提供适用于Android的硬件驱动程序,同时由于其他基于软件操作系统如基于Linux内核的操作系统无法兼容Android HAL接口,导致其他软件操作系统无法在基于Android HAL的移动设备上正常运行,从而极大地限制了其他软件操作系统在这类移动设备上的应用前景。
相应地,本领域需要一种软件操作系统调用Android HAL接口的方案来解决上述问题。
发明内容
为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决如何使除Android以外其他的软件操作系统兼容Android HAL接口,以使这些软件操作系统能够在基于Android HAL的设备上正常运行的技术问题的软件操作系统调用Android HIDL接口的方法、装置、设备及介质。
在第一方面,本发明提供一种软件操作系统调用Android HIDL接口的方法,包括:
软件操作系统程序调用Android HAL接口以及Android HAL接口的兼容封装库;
HAL兼容封装库基于Binder驱动,查询并得到Android HAL Binder Service的Client实例;
基于所述Client实例调取相对应的Android HIDL接口。
在上述软件操作系统调用Android HIDL接口的方法的一个技术方案中,“软件操作系统程序调用Android HAL接口以及Android HAL接口的兼容封装库”的步骤具体包括:控制软件操作系统的软件进程调用预设的兼容封装库;
和/或,
“HAL兼容封装库基于Binder驱动,查询并得到Android HAL Binder Service的Client实例”的步骤具体包括:通过所述兼容封装库获取基于Binder机制与Android HAL进程中的Android HIDL Service进行通信的Client进程;
和/或,
“基于所述Client实例调取相对应的Android HIDL接口”的步骤具体包括:通过所述Client进程与所述Android HIDL Service进行通信,以完成软件操作系统对AndroidHIDL接口的调用;
和/或,
所述软件操作系统是Linux操作系统。
在上述软件操作系统调用Android HIDL接口的方法的一个技术方案中,在基于所述Client实例调取相对应的Android HIDL接口的步骤后,还包括:基于所述Android HIDL接口调取相应的结果,将所述结果通过Binder返回给HAL兼容封装库。
在上述软件操作系统调用Android HIDL接口的方法的一个技术方案中,“基于所述Android HIDL接口调取相应的结果,将所述结果通过Binder返回给HAL兼容封装库”的步骤具体包括:
控制所述Client进程基于Binder机制向所述Android HIDL Service发送通信请求,接收所述Android HIDL Service根据所述通信请求反馈的请求处理结果以及将所述请求处理结果发送至所述兼容封装库,通过所述兼容封装库将所述请求处理结果发送至所述软件进程。
在上述软件操作系统调用Android HIDL接口的方法的一个技术方案中,“控制软件操作系统的软件进程调用预设的兼容封装库”的步骤具体包括:
控制所述软件进程通过链接动态库的方式调用所述兼容封装库。
在上述软件操作系统调用Android HIDL接口的方法的一个技术方案中,所述方法应用于运行在基于Android HAL的设备上的软件操作系统,在“控制软件操作系统的软件进程调用预设的兼容封装库”的步骤之前,所述方法还包括:
对所述软件操作系统与所述Android HAL进行资源隔离,以使所述软件操作系统与所述Android HAL在所述设备上分别独立运行。
在上述软件操作系统调用Android HIDL接口的方法的一个技术方案中,“对所述软件操作系统与所述Android HAL进行资源隔离”的步骤具体包括:
基于NameSpace机制创建隔离容器并在所述隔离容器内运行所述软件操作系统或所述Android HAL。
在上述软件操作系统调用Android HIDL接口的方法的一个技术方案中,“基于NameSpace机制创建隔离容器并在所述隔离容器内运行所述软件操作系统或所述AndroidHAL”的步骤具体包括:
在启动所述设备时,若首个用户态进程是Android HAL进程,则启动所述AndroidHAL并在所述Android HAL启动完成后基于NameSpace机制创建隔离容器;
在所述隔离容器内启动所述软件操作系统,以在所述隔离容器内运行所述软件操作系统
和/或,
“基于NameSpace机制创建隔离容器并在所述隔离容器内运行所述软件操作系统或所述Android HAL”的步骤具体包括:
在启动所述设备时,若首个用户态进程是软件进程,则启动所述软件操作系统的非核心服务并在所述非核心服务启动完成后基于NameSpace机制创建隔离容器;
在所述隔离容器内启动所述Android HAL,以在所述隔离容器内运行所述AndroidHAL;
在所述Android HAL启动完成后继续启动所述软件操作系统的核心服务。
在第二方面,提供一种计算机设备,该计算机设备包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述软件操作系统调用Android HIDL接口的方法的技术方案中任一项技术方案所述的软件操作系统调用Android HIDL接口的方法。
在第三方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行上述软件操作系统调用Android HIDL接口的方法的技术方案中任一项技术方案所述的软件操作系统调用AndroidHIDL接口的方法。
本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
在实施本发明的技术方案中,软件操作系统调用Android HIDL接口的方法可以应用于运行在基于Android HAL的设备上的软件操作系统,其中,软件操作系统指的是除Android以外其他的软件操作系统如基于Linux内核的操作系统。在基于Android HAL的设备上运行软件操作系统时可以控制软件操作系统的软件进程调用预设的兼容封装库,通过兼容封装库获取基于Binder机制与Android HAL进程中的Android HIDL Service进行通信的Client进程,进而通过Client进程与Android HIDL Service进行通信,完成软件操作系统对Android HIDL接口的调用。通过预设的兼容封装库实现了软件操作系统与AndroidHIDL接口之间的桥接,这个兼容封装库向上可以为软件操作系统提供兼容Android HIDL接口的接口,供软件操作系统进行调用,而向下可以通过Client进程与Android HIDLService进行通信,使得软件操作系统可以调用到真正的Android HIDL接口,实现了软件操作系统对Android HIDL接口的兼容,从而保证软件操作系统能够正常地运行在基于Android HAL的设备上,克服了现有技术中由于软件操作系统无法兼容Android HIDL接口,导致软件操作系统无法在基于Android HAL的设备上正常运行的缺陷。
附图说明
参照附图,本发明的公开内容将变得更易理解。本领域技术人员容易理解的是:这些附图仅仅用于说明的目的,而并非意在对本发明的保护范围组成限制。其中:
图1是根据本发明的一个实施例的软件操作系统调用Android HIDL接口的方法的主要步骤流程示意图;
图2是根据本发明的另一个实施例的软件操作系统调用Android HIDL接口的方法的主要操作流程示意图;
图3是根据本发明的再一个实施例的软件操作系统调用Android HIDL接口的方法的主要步骤流程示意图;
图4是根据本发明的一个实施例的对软件操作系统与Android HAL进行资源隔离的方法的主要操作流程示意图;
图5是根据本发明的另一个实施例的对软件操作系统与Android HAL进行资源隔离的方法的主要操作流程示意图。
具体实施方式
下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。
这里先解释本发明涉及到的一些术语。
软件操作系统指的是基于计算机编程语言编写的操作系统(operating system),即计算机管理控制程序。在本实施例中软件操作系统可以是除Android以外其他的操作系统。在一个实施方式中软件操作系统可以是Linux操作系统,该Linux操作系统指的是基于Linux内核的操作系统,即Linux系统。
Binder机制指的是Android的一种跨进程通信方式,Binder机制采用C/S架构,其可以包括Client进程、Server进程、Service Manager和Binder驱动四个组件,ServiceManager用于管理Android的各种服务(Service),Client进程是使用服务的进程,Server进程是提供服务的进程,Client进程、Server进程和Service Manager之间不直接进行交互,而是通过Binder驱动进行交互。Server进程通过Binder驱动向Service Manager注册服务,Client进程通过Binder驱动向Service Manager查询服务并根据查询到的服务,通过Binder驱动与Server进程建立通信,以便与Server进程中的这个服务进行交互。
Android HIDL接口指的是Android硬件抽象层HAL的接口(Android HAL接口)中的Binder跨进程式接口,即Android HIDL接口是采用Binder机制进行通信的接口。AndroidHAL Binder Service指的是Android HIDL接口在采用Binder机制进行通信时的AndroidHIDL Service或Android HAL服务,Android HAL Binder Service的Client实例指的是通过Binder驱动与Android HAL Binder Service进行交互的Client进程,即基于Binder机制与Android HAL进程中的Android HIDL Service进行通信的Client进程。
NameSpace机制指的是一种基于Linux内核的资源隔离机制,每个NameSpace(容器)下的资源对于其他NameSpace下的资源都是透明,不同NameSpace可以同时存在相同进程号的进程,由于这些进程属于不同的NameSpace,因此不会产生冲突。在用户态每个用户只能看到属于自己的NameSpace中的进程。其中,用户态(user mode)指的是进程在执行用户自己的程序代码时的运行状态,此时处理器在特权级最低的用户代码中运行;相应的,内核态指的是进程陷入Linux内核的程序代码时的运行状态,此时处理器处于特权级最高的内核代码中运行。
软件进程(process)是软件操作系统程序的执行实体。当软件操作系统是Linux操作系统时软件进程可以是Linux进程。
Client实例是客户端Client的程序的执行实体,即Client进程。
参阅附图1,图1是根据本发明的一个实施例的软件操作系统调用Android HIDL接口的方法的主要步骤流程示意图,该方法可以应用于运行在基于Android HAL的设备上的软件操作系统,该设备指的是能够加载并运行计算机程序代码的设备,该设备包括但不限于计算机设备、手机和平板电脑等。如图1所示,本发明实施例中的软件操作系统调用Android HIDL接口的方法主要包括下列步骤S101和步骤S102。
步骤S101:软件操作系统程序调用Android HAL接口以及Android HAL接口的兼容封装库。在本实施例中可以控制软件操作系统的软件进程调用预设的兼容封装库。
步骤S102:HAL兼容封装库基于Binder驱动,查询并得到Android HAL BinderService的Client实例。在本实施例中可以通过兼容封装库获取基于Binder机制与AndroidHAL进程中的Android HIDL Service进行通信的Client进程。
当软件操作系统需要调用Android HAL接口中的Android HIDL接口与设备的硬件进行通信比如与设备的音频器件进行通信获取音频数据时可以控制软件进程调用预设的兼容封装库,通过这个兼容封装库去获取基于Binder机制与Android HAL进程中的AndroidHIDL Service进行通信的Client进程。兼容封装库是软件操作系统的动态库,在一个实施方式中可以控制软件进程通过链接动态库的方式调用兼容封装库。在本实施方式中可以采用软件技术领域中常规的链接动态库的方式去调用兼容封装库,在此不对链接动态库的方式进行具体说明。
在本实施例中兼容封装库同样是基于Binder机制获取Client进程。具体而言,参阅附图2,兼容封装库可以通过Binder驱动去服务管理(Service Manager)中查询与Android HAL进程中的Android HIDL Service进行通信的Client进程,服务管理(ServiceManager)通过Binder驱动将这个Client进程的信息返回至兼容封装库。
步骤S103:基于Client实例调取相对应的Android HIDL接口。在本实施例中可以通过Client进程与Android HIDL Service进行通信,以完成软件操作系统对Android HIDL接口的调用。
Client进程可以基于Binder机制与Android HIDL Service建立通信,从而使软件操作系统完成对Android HIDL接口的调用。
参阅附图2,Client进程通过Binder驱动去服务管理(Service Manager)中查询Android HIDL Service的信息,Client进程根据这个信息并通过Binder驱动与AndroidHAL进程中的Android HIDL Service建立通信,与Android HIDL Service进行通信。
进一步,在根据本发明实施例的一个实施方式中,在基于Client实例调取相对应的Android HIDL接口的步骤后,还可以基于Android HIDL接口调取相应的结果,将结果通过Binder返回给HAL兼容封装库。其中,结果指的是Android HIDL Service根据Client进程发送的通信请求反馈的请求处理结果。具体而言,在本实施方式中可以通过Client进程并按照下列步骤基于Android HIDL接口调取相应的结果,将结果通过Binder返回给HAL兼容封装库,实现与Android HIDL Service的通信:
控制Client进程基于Binder机制向Android HIDL Service发送通信请求,接收Android HIDL Service根据通信请求反馈的请求处理结果以及将请求处理结果发送至兼容封装库,通过兼容封装库将请求处理结果发送至软件进程。
继续参阅附图2,Client进程与Android HIDL Service建立通信后可以通过Binder驱动向Android HIDL Service发送通信请求(这个通信请求是软件进程发出的),Android HIDL Service接收到这个通信请求后会执行相应的请求处理操作并通过Binder驱动将请求处理结果发送至Client进程,Client进程再通过Binder驱动将该请求处理结果发送至兼容封装库,最后由兼容封装库将这个请求处理结果发送至软件进程,通过上述兼容封装库、Client进程、Android HIDL Service和Binder驱动的交互过程,实现了软件进程与Android HIDL Service的交互,即实现了软件进程对Android HIDL接口的调用。
基于上述步骤S101至步骤S103,通过预设的兼容封装库实现了软件操作系统与Android HIDL接口之间的桥接,这个兼容封装库向上可以为软件操作系统提供兼容Android HIDL接口的接口,供软件操作系统进行调用,而向下可以通过Client进程与Android HIDL Service进行通信,使得软件操作系统可以调用到真正的Android HIDL接口,实现了软件操作系统对Android HIDL接口的兼容,从而保证软件操作系统能够正常地运行在基于Android HAL的设备上,克服了现有技术中由于软件操作系统无法兼容AndroidHIDL接口,导致软件操作系统无法在基于Android HAL的设备上正常运行的缺陷。
进一步,参阅附图3,在根据本发明的另一个软件操作系统调用Android HIDL接口的方法的实施例中,该软件操作系统调用Android HIDL接口的方法可以包括下列步骤S201至步骤S203。
步骤S201:控制软件操作系统的软件进程调用预设的兼容封装库。
步骤S202:通过兼容封装库获取基于Binder机制与Android HAL进程中的AndroidHIDL Service进行通信的Client进程。
步骤S203:通过Client进程与Android HIDL Service进行通信,以完成软件操作系统对Android HIDL接口的调用。在本实施例中可以通过Client进程并按照下列步骤与Android HIDL Service进行通信:控制Client进程基于Binder机制向Android HIDLService发送通信请求,接收Android HIDL Service根据通信请求反馈的请求处理结果以及将请求处理结果发送至兼容封装库,通过兼容封装库将请求处理结果发送至软件进程。
需要说明的是,上述步骤S201至步骤S203中的相关步骤与前述方法实施例中步骤S101至步骤S103中的相关步骤类似,在此不再赘述。
进一步,在根据本发明的另一个软件操作系统调用Android HIDL接口的方法的实施例中,该软件操作系统调用Android HIDL接口的方法不仅可以包括上述步骤S101至步骤S103,在执行上述步骤S101和步骤S103之前还可以包括步骤S100,通过执行步骤S100可以对软件操作系统与Android HAL进行资源隔离以使软件操作系统与Android HAL在设备上分别独立运行。其中,资源隔离包括但不限于:运行环境隔离和文件隔离等。通过对软件操作系统与Android HAL进行资源隔离,可以保证在基于Android HAL的设备上运行软件操作系统时软件操作系统与Android HAL不会产生冲突与相互干扰,从而保证软件操作系统的正常运行。
在本实施例的一个实施方式中可以通过更改根目录的方式对软件操作系统与Android HAL进行资源隔离,例如使用chroot(change root directory)命令更改软件操作系统或Android HAL的根目录,以实现对软件操作系统与Android HAL的资源隔离。而在本实施例的另一个实施方式中可以基于NameSpace机制创建隔离容器并在隔离容器内运行软件操作系统或Android HAL,即将一个系统(软件操作系统或Android HAL)放在隔离容器内运行,将另一个系统(Android HAL或软件操作系统)放在隔离容器以外运行,即使在软件操作系统和Android HAL中同时运行相同进程号的进程,由于一个系统的进程是在隔离容器内运行,因此软件操作系统和Android HAL也不会产生冲突,二者均可以正常运行。
设备的启动过程主要包括BootLoader引导阶段、Linux内核启动阶段和软件/Android HAL启动阶段。其中,BootLoader引导阶段和Linux内核启动阶段分别与常规的Android启动方法中的BootLoader引导阶段和Linux内核启动阶段相同,而本实施方式与常规的Android启动方法的主要区别在于软件/Android HAL启动阶段。在本实施方式中,当Linux内核启动阶段完成后首个内核态进程转换成用户态进程进入软件/Android HAL启动阶段,在软件/Android HAL启动阶段中可以基于NameSpace机制创建隔离容器并在隔离容器内启动软件操作系统或Android HAL,以便在隔离容器内运行软件操作系统或AndroidHAL。
在一个实施方式中如果首个用户态进程是Android HAL进程,则可以基于NameSpace机制创建隔离容器并通过下列步骤11至步骤12在隔离容器内启动并运行软件操作系统:
步骤11:在启动设备时,若首个用户态进程是Android HAL进程,则启动AndroidHAL并在Android HAL启动完成后基于NameSpace机制创建隔离容器(容器Service)。在本实施方式中可以采用计算机技术领域中常规的Android HAL启动方法对Android HAL进行启动,例如挂载Android的基础文件系统、system分区、vendor分区等,同时启动AndroidService Manager、Android HAL Service、Android Native Service等服务。
步骤12:在隔离容器内启动软件操作系统,以在隔离容器内运行软件操作系统。在本实施方式中同样可以采用计算机技术领域中常规的软件启动方法在隔离容器内启动软件操作系统。参阅附图4,若软件操作系统是Linux操作系统,那么在隔离容器内启动Linux操作系统包括但不限于:挂载Linux操作系统的基础文件系统、Dbus等,同时启动LinuxService等服务。
通过上述步骤11至步骤12,可以在隔离容器内启动并运行软件操作系统,实现对Android HAL与软件操作系统的资源隔离。
在一个实施方式中如果首个用户态进程是软件进程,则可以基于NameSpace机制创建隔离容器并通过下列步骤21至步骤23在隔离容器内启动并运行Android HAL:
步骤21:在启动设备时,若首个用户态进程是软件进程,则启动软件操作系统的非核心服务并在非核心服务启动完成后基于NameSpace机制创建隔离容器。
在本实施方式中可以采用计算机技术领域中常规的软件启动方法对软件操作系统进行启动,但由于软件操作系统的核心服务需要在设备完成硬件初始化之后进行启动,因此,在本实施例中可以先启动软件操作系统的非核心服务,在完成Android HAL启动后再启动软件操作系统的核心服务,以保证软件操作系统能够成功启动,正常运行。参阅附图5,若软件操作系统是Linux操作系统,则可以启动Linux操作系统的非核心服务LinuxService并在非核心服务Linux Service启动完成后基于NameSpace机制创建隔离容器,即基于容器Service创建Android容器。
步骤22:在隔离容器内启动Android HAL,以在隔离容器内运行Android HAL。在本实施方式中可以采用计算机技术领域中常规的Android HAL启动方法对Android HAL进行启动,例如挂载Android的基础文件系统、system分区、vendor分区等,同时启动AndroidService Manager、Android HAL Service、Android Native Service等服务。
步骤23:在Android HAL启动完成后继续启动软件操作系统的核心服务。
通过上述步骤21至步骤23,可以在隔离容器内启动并运行Android HAL,实现对Android HAL与软件操作系统的资源隔离。
需要指出的是,尽管上述实施例中将各个步骤按照特定的先后顺序进行了描述,但是本领域技术人员可以理解,为了实现本发明的效果,不同的步骤之间并非必须按照这样的顺序执行,其可以同时(并行)执行或以其他顺序执行,这些变化都在本发明的保护范围之内。
本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
进一步,本发明还提供了一种计算机设备。在根据本发明的一个计算机设备实施例中,计算机设备包括处理器和存储装置,存储装置可以被配置成存储执行上述方法实施例的软件操作系统调用Android HIDL接口的方法的程序,处理器可以被配置成用于执行存储装置中的程序,该程序包括但不限于执行上述方法实施例的软件操作系统调用AndroidHIDL接口的方法的程序。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机设备可以是包括各种电子设备形成的控制装置设备。
进一步,本发明还提供了一种计算机可读存储介质。在根据本发明的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的软件操作系统调用Android HIDL接口的方法的程序,该程序可以由处理器加载并运行以实现上述软件操作系统调用Android HIDL接口的方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的装置的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
Claims (10)
1.一种软件操作系统调用Android HIDL接口的方法,其特征在于,包括:
软件操作系统程序调用Android HAL接口以及Android HAL接口的兼容封装库;
HAL兼容封装库基于Binder驱动,查询并得到Android HAL Binder Service的Client实例;
基于所述Client实例调取相对应的Android HIDL接口。
2.根据权利要求1所述的软件操作系统调用Android HIDL接口的方法,其特征在于,
“软件操作系统程序调用Android HAL接口以及Android HAL接口的兼容封装库”的步骤具体包括:控制软件操作系统的软件进程调用预设的兼容封装库;
和/或,
“HAL兼容封装库基于Binder驱动,查询并得到Android HAL Binder Service的Client实例”的步骤具体包括:通过所述兼容封装库获取基于Binder机制与Android HAL进程中的Android HIDL Service进行通信的Client进程;
和/或,
“基于所述Client实例调取相对应的Android HIDL接口”的步骤具体包括:通过所述Client进程与所述Android HIDL Service进行通信,以完成软件操作系统对Android HIDL接口的调用;
和/或,
所述软件操作系统是Linux操作系统。
3.根据权利要求2所述的软件操作系统调用Android HIDL接口的方法,其特征在于,在基于所述Client实例调取相对应的Android HIDL接口的步骤后,还包括:基于所述AndroidHIDL接口调取相应的结果,将所述结果通过Binder返回给HAL兼容封装库。
4.根据权利要求3所述的软件操作系统调用Android HIDL接口的方法,其特征在于,“基于所述Android HIDL接口调取相应的结果,将所述结果通过Binder返回给HAL兼容封装库”的步骤具体包括:
控制所述Client进程基于Binder机制向所述Android HIDL Service发送通信请求,接收所述Android HIDL Service根据所述通信请求反馈的请求处理结果以及将所述请求处理结果发送至所述兼容封装库,通过所述兼容封装库将所述请求处理结果发送至所述软件进程。
5.根据权利要求2所述的软件操作系统调用Android HIDL接口的方法,其特征在于,“控制软件操作系统的软件进程调用预设的兼容封装库”的步骤具体包括:
控制所述软件进程通过链接动态库的方式调用所述兼容封装库。
6.根据权利要求1至5中任一项所述的软件操作系统调用Android HIDL接口的方法,其特征在于,所述方法应用于运行在基于Android HAL的设备上的软件操作系统,在“控制软件操作系统的软件进程调用预设的兼容封装库”的步骤之前,所述方法还包括:
对所述软件操作系统与所述Android HAL进行资源隔离,以使所述软件操作系统与所述Android HAL在所述设备上分别独立运行。
7.根据权利要求6所述的软件操作系统调用Android HIDL接口的方法,其特征在于,“对所述软件操作系统与所述Android HAL进行资源隔离”的步骤具体包括:
基于NameSpace机制创建隔离容器并在所述隔离容器内运行所述软件操作系统或所述Android HAL。
8.根据权利要求7所述的软件操作系统调用Android HIDL接口的方法,其特征在于,“基于NameSpace机制创建隔离容器并在所述隔离容器内运行所述软件操作系统或所述Android HAL”的步骤具体包括:
在启动所述设备时,若首个用户态进程是Android HAL进程,则启动所述Android HAL并在所述Android HAL启动完成后基于NameSpace机制创建隔离容器;
在所述隔离容器内启动所述软件操作系统,以在所述隔离容器内运行所述软件操作系统
和/或,
“基于NameSpace机制创建隔离容器并在所述隔离容器内运行所述软件操作系统或所述Android HAL”的步骤具体包括:
在启动所述设备时,若首个用户态进程是软件进程,则启动所述软件操作系统的非核心服务并在所述非核心服务启动完成后基于NameSpace机制创建隔离容器;
在所述隔离容器内启动所述Android HAL,以在所述隔离容器内运行所述AndroidHAL;
在所述Android HAL启动完成后继续启动所述软件操作系统的核心服务。
9.一种计算机设备,包括处理器和存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至8中任一项所述的软件操作系统调用Android HIDL接口的方法。
10.一种计算机可读存储介质,其中存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行权利要求1至8中任一项所述的软件操作系统调用AndroidHIDL接口的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/138656 WO2023124967A1 (zh) | 2021-04-07 | 2022-12-13 | 软件操作系统调用Android HIDL接口的方法、设备及介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110374484.6A CN113190294A (zh) | 2021-04-07 | 2021-04-07 | Linux系统调用Android HIDL接口的方法、装置及存储介质 |
CN2021103744846 | 2021-04-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114077462A true CN114077462A (zh) | 2022-02-22 |
Family
ID=76974955
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110374484.6A Pending CN113190294A (zh) | 2021-04-07 | 2021-04-07 | Linux系统调用Android HIDL接口的方法、装置及存储介质 |
CN202111671966.4A Pending CN114077462A (zh) | 2021-04-07 | 2021-12-31 | 软件操作系统调用Android HIDL接口的方法、装置、设备及介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110374484.6A Pending CN113190294A (zh) | 2021-04-07 | 2021-04-07 | Linux系统调用Android HIDL接口的方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN113190294A (zh) |
WO (1) | WO2023124967A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115016856A (zh) * | 2022-02-23 | 2022-09-06 | 北京字节跳动网络技术有限公司 | 多系统兼容方法及装置、电子设备、存储介质 |
WO2023124967A1 (zh) * | 2021-04-07 | 2023-07-06 | 北京字节跳动网络技术有限公司 | 软件操作系统调用Android HIDL接口的方法、设备及介质 |
WO2023124968A1 (zh) * | 2021-04-07 | 2023-07-06 | 北京字节跳动网络技术有限公司 | 软件操作系统调用Android动态库HAL接口的方法、设备及介质 |
CN118445032A (zh) * | 2024-07-05 | 2024-08-06 | 统信软件技术有限公司 | 服务提供方法、装置、电子设备、存储介质和计算机程序产品 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590363B (zh) * | 2021-09-26 | 2022-02-25 | 北京鲸鲮信息系统技术有限公司 | 数据发送方法、装置、电子设备及存储介质 |
CN113852718B (zh) * | 2021-09-26 | 2022-11-15 | 北京字节跳动网络技术有限公司 | 语音通道建立方法、装置、电子设备及存储介质 |
CN113840295B (zh) * | 2021-09-26 | 2022-08-09 | 北京字节跳动网络技术有限公司 | 移动数据网络建立方法、装置、电子设备及存储介质 |
CN113904849B (zh) * | 2021-10-09 | 2024-01-09 | 深圳技德智能科技研究院有限公司 | 访问网络方法、装置、计算机设备和存储介质 |
CN114020364B (zh) * | 2021-11-16 | 2024-04-26 | 北京字节跳动网络技术有限公司 | 传感器设备适配的方法、装置、电子设备和存储介质 |
CN113986368A (zh) * | 2021-12-29 | 2022-01-28 | 北京鲸鲮信息系统技术有限公司 | 基于Linux的相机控制方法、装置、设备及存储介质 |
CN114564247A (zh) * | 2022-02-23 | 2022-05-31 | 北京字节跳动网络技术有限公司 | 多系统兼容方法及装置、电子设备、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970559A (zh) * | 2013-02-05 | 2014-08-06 | 北京壹人壹本信息科技有限公司 | 一种基于Android系统的设备加载方法及装置 |
CN110737428A (zh) * | 2019-10-21 | 2020-01-31 | Oppo广东移动通信有限公司 | 基于Hidl的通用接口设计方法、装置、终端及可读存储介质 |
CN111800763A (zh) * | 2020-06-30 | 2020-10-20 | 展讯通信(上海)有限公司 | 智能设备及其ap模块与wcn模块的通信系统和方法 |
US20200356618A1 (en) * | 2019-02-25 | 2020-11-12 | Luminati Networks Ltd. | System and method for url fetching retry mechanism |
CN112231017A (zh) * | 2020-10-27 | 2021-01-15 | 北京技德系统技术有限公司 | 在Linux上兼容运行Android操作系统的虚拟键鼠方法与装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282210B2 (en) * | 2016-06-13 | 2019-05-07 | Huawei Technologies Co., Ltd. | System and method for virtual hardware control |
US20170371693A1 (en) * | 2016-06-23 | 2017-12-28 | Vmware, Inc. | Managing containers and container hosts in a virtualized computer system |
CN109388473A (zh) * | 2018-09-19 | 2019-02-26 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于移动操作系统的Android兼容层实现方法和系统 |
GB2581482B (en) * | 2019-02-15 | 2021-02-24 | Promon As | Security virtual-machine software applications |
CN113190280A (zh) * | 2021-04-07 | 2021-07-30 | 北京鲸鲮信息系统技术有限公司 | Linux系统调用Android HAL动态库的方法、装置及存储介质 |
CN113190294A (zh) * | 2021-04-07 | 2021-07-30 | 北京鲸鲮信息系统技术有限公司 | Linux系统调用Android HIDL接口的方法、装置及存储介质 |
-
2021
- 2021-04-07 CN CN202110374484.6A patent/CN113190294A/zh active Pending
- 2021-12-31 CN CN202111671966.4A patent/CN114077462A/zh active Pending
-
2022
- 2022-12-13 WO PCT/CN2022/138656 patent/WO2023124967A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970559A (zh) * | 2013-02-05 | 2014-08-06 | 北京壹人壹本信息科技有限公司 | 一种基于Android系统的设备加载方法及装置 |
US20200356618A1 (en) * | 2019-02-25 | 2020-11-12 | Luminati Networks Ltd. | System and method for url fetching retry mechanism |
CN110737428A (zh) * | 2019-10-21 | 2020-01-31 | Oppo广东移动通信有限公司 | 基于Hidl的通用接口设计方法、装置、终端及可读存储介质 |
CN111800763A (zh) * | 2020-06-30 | 2020-10-20 | 展讯通信(上海)有限公司 | 智能设备及其ap模块与wcn模块的通信系统和方法 |
CN112231017A (zh) * | 2020-10-27 | 2021-01-15 | 北京技德系统技术有限公司 | 在Linux上兼容运行Android操作系统的虚拟键鼠方法与装置 |
Non-Patent Citations (1)
Title |
---|
WEISHU: "Binder学习指南", pages 1 - 8, Retrieved from the Internet <URL:http://weishu.me/2016/01/12/binder-index-for-newer/> * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023124967A1 (zh) * | 2021-04-07 | 2023-07-06 | 北京字节跳动网络技术有限公司 | 软件操作系统调用Android HIDL接口的方法、设备及介质 |
WO2023124968A1 (zh) * | 2021-04-07 | 2023-07-06 | 北京字节跳动网络技术有限公司 | 软件操作系统调用Android动态库HAL接口的方法、设备及介质 |
CN115016856A (zh) * | 2022-02-23 | 2022-09-06 | 北京字节跳动网络技术有限公司 | 多系统兼容方法及装置、电子设备、存储介质 |
CN118445032A (zh) * | 2024-07-05 | 2024-08-06 | 统信软件技术有限公司 | 服务提供方法、装置、电子设备、存储介质和计算机程序产品 |
CN118445032B (zh) * | 2024-07-05 | 2024-08-30 | 统信软件技术有限公司 | 服务提供方法、装置、电子设备、存储介质和计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN113190294A (zh) | 2021-07-30 |
WO2023124967A1 (zh) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114077462A (zh) | 软件操作系统调用Android HIDL接口的方法、装置、设备及介质 | |
CN114077460B (zh) | 软件操作系统调用Android动态库HAL接口的方法、设备及介质 | |
US11385903B2 (en) | Firmware update patch | |
US8555280B2 (en) | Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform | |
US7181610B2 (en) | Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension | |
US8972979B2 (en) | Configuration of virtual appliances | |
CN110007980B (zh) | 多业务服务端的实现方法和装置 | |
EP4002121A1 (en) | Middleware interface and middleware interface generator | |
CN113190282A (zh) | 安卓运行环境构建的方法及装置 | |
CN112463123A (zh) | 任务编译方法、装置、网络节点、系统及存储介质 | |
CN111090823A (zh) | 一种页面应用的集成平台以及应用访问方法、装置和设备 | |
CN108804100B (zh) | 创建界面元素的方法、装置、存储介质及移动终端 | |
CN110221840B (zh) | 应用程序的功能实现方法及装置、设备及存储介质 | |
CN108268261B (zh) | 一种智能终端的ui定制方法、存储介质及智能终端 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
US20140280767A1 (en) | Web services provided from software framework | |
CN108804236B (zh) | 一种aidl文件的共享方法及系统 | |
CN105550050A (zh) | 硬件通信的方法及装置 | |
CN117670645A (zh) | 限制容器显存的方法、装置、电子设备以及存储介质 | |
CN112130900B (zh) | 一种bmc的用户信息管理方法、系统、设备以及介质 | |
EP4071601A1 (en) | Mobile service upgrade method and apparatus, and terminal | |
US8490105B2 (en) | Pluggable component interface | |
CN118445032B (zh) | 服务提供方法、装置、电子设备、存储介质和计算机程序产品 | |
US20210176134A1 (en) | Cloud server and operating method of the same | |
CN113835768B (zh) | 一种Android混合HAL的管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220330 Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Applicant after: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd. Address before: 100080 floor 2, No.36 Haidian Street, Haidian District, Beijing 2002 Applicant before: Beijing jingling Information System Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right |