一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多系统兼容方法及装置、电子设备、存储介质与流程

2022-06-02 17:34:09 来源:中国专利 TAG:


1.本技术实施例涉及多操作系统兼容技术,尤其涉及一种多系统兼容方法及装置、电子设备、存储介质。


背景技术:

2.目前,随着android生态在移动端的垄断,基本上所有的移动端的芯片级系统(system on chip,soc)以及硬件模组等,都是仅提供适配android系统的驱动程序。
3.android系统虽然是基于linux系统的内核(kernel),但是其采用了bionic 基础库以及其他私有核心库,形成了一套封闭生态体系。与目前其他gnu/linux 操作系统无法兼容。由于android系统与linux系统在文件系统、环境配置等方面存在冲突,导致android系统与linux系统无法兼容。


技术实现要素:

4.有鉴于此,本技术实施例提供一种多系统兼容方法及装置、电子设备、存储介质,以至少部分地解决现有技术中存在的以上技术问题。
5.根据本技术实施例的第一方面,提供一种多系统兼容方法,所述方法包括:
6.响应于启动指令,基于系统调用(systemcall)接口启动内核,由所述内核在设定位置查找第一系统的第一进程,并启动所述第一进程;
7.通过所述第一进程调用所述第一系统的主函数,对所述第一系统的初始化脚本文件进行解析,挂载基础文件系统以及第三方类库(vendor),启动核心服务和硬件抽象层(hardwareabstraction layer,hal)服务,启动所述第一系统;
8.通过第二系统中的命名空间(namespace)机制,为所述第二系统中与所述第一系统冲突的超文本预处理器(hypertextpreprocessor,php)的脚本对应的对象创建隔离容器,使所述隔离容器中的对象对应的脚本能被所述第二系统调用;
9.调用所述隔离容器中的对象对应的第二进程,通过所述第二进程挂载所述第二系统的文件系统,并启动所述第二系统的基础服务,加载所述第二系统,将所述第一系统部署于所述第二系统中。
10.在某些实施例中,所述方法还包括:
11.响应于针对所述第二系统的第一动态连接库中的第一函数(function)的调用指令,调用所述第一动态连接库,使所述第一动态连接库初始化,并调用兼容连接器;
12.通过所述兼容连接器调用所述第一系统的hal服务,对所述第一系统的第二动态连接库中的对应于所述第一function的第二function进行调用,运行所述第二function并向所述第二系统响应。
13.在某些实施例中,所述运行所述第二function并向所述第二系统响应,包括:
14.在确定所述第二function与所述第二系统的c函数库接口冲突的情况下,通过所述兼容连接器查找所述第二系统的c函数库中的对应于所述第一 function的第三
function,运行所述第三function。
15.在某些实施例中,所述方法还包括:
16.响应于针对所述第二系统的第四function的调用指令,通过所述第一系统的hal服务调用所述第一系统的兼容封装库;
17.触发所述兼容封装库基于进程间通信机制(binder),查询对应于所述第四 function的binder服务service的第一客户端client实例;确定所述第一client 实例对应于hal服务的第一调用方式;
18.所述第二系统基于所述第一调用方式调用所述第一client实例,触发所述第一系统中的相应service运行所述第一client实例,得到运行结果;
19.所述兼容封装库将所述第一client实例的运行结果向所述第二系统的调用指令反馈。
20.在某些实施例中,所述对象包括第三方类、函数、常量中的至少之一。
21.在某些实施例中,所述第一系统包括android操作系统、android开放源代码项目aosp和基于aosp的衍生系统;
22.所述衍生系统包括以下至少之一:miui、emui、one ui。
23.在某些实施例中,所述第二系统包括gnu/linux操作系统;
24.所述gnu/linux操作系统包括以下至少之一:ubuntu、debian、redhat。
25.根据本技术实施例的第二方面,提供一种多系统兼容装置,包括:
26.第一启动单元,用于响应于启动指令,基于systemcall接口启动内核,由所述内核在设定位置查找第一系统的第一进程,并启动所述第一进程;
27.第二启动单元,用于通过所述第一进程调用所述第一系统的主函数,对所述第一系统的初始化脚本文件进行解析,挂载基础文件系统以及vendor,启动核心服务和hal服务,启动所述第一系统;
28.创建单元,用于通过第二系统中的namespace机制,为所述第二系统中与所述第一系统冲突的php的脚本对应的对象创建隔离容器,使所述隔离容器中的对象对应的脚本能被所述第二系统调用;
29.第三启动单元,用于调用所述隔离容器中的对象对应的第二进程,通过所述第二进程挂载所述第二系统的文件系统,并启动所述第二系统的基础服务,加载所述第二系统,将所述第一系统部署于所述第二系统中。
30.在某些实施例中,所述装置还包括:
31.第一调用单元,用于响应于针对所述第二系统的第一动态连接库中的第一 function的调用指令,调用所述第一动态连接库,使所述第一动态连接库初始化,并调用兼容连接器;
32.第二调用单元,用于通过所述兼容连接器调用所述第一系统的hal服务,对所述第一系统的第二动态连接库中的对应于所述第一function的第二function 进行调用,运行所述第二function并向所述第二系统响应。
33.在某些实施例中,所述第二调用单元,还用于:
34.在确定所述第二function与所述第二系统的c函数库接口冲突的情况下,通过所述兼容连接器查找所述第二系统的c函数库中的对应于所述第一 function的第三
function,运行所述第三function。
35.在某些实施例中,所述装置还包括:
36.第三调用单元,用于响应于针对所述第二系统的第四function的调用指令,通过所述第一系统的hal服务调用所述第一系统的兼容封装库;
37.第一触发单元,用于触发所述兼容封装库基于进程间通信机制binder,查询对应于所述第四function的binder服务service的第一客户端client实例;确定所述第一client实例对应于hal服务的第一调用方式;
38.第二触发单元,用于使所述第二系统基于所述第一调用方式调用所述第一 client实例,触发所述第一系统中的相应service运行所述第一client实例,得到运行结果;
39.第三触发单元,用于触发所述兼容封装库将所述第一client实例的运行结果向所述第二系统的调用指令反馈。
40.在某些实施例中,所述对象包括第三方类、函数、常量中的至少之一。
41.在某些实施例中,所述第一系统包括android操作系统、android开放源代码项目aosp和基于aosp的衍生系统;
42.所述衍生系统包括以下至少之一:miui、emui、one ui。
43.在某些实施例中,所述第二系统包括gnu/linux操作系统;
44.所述gnu/linux操作系统包括以下至少之一:ubuntu、debian、redhat。
45.根据本技术实施例的第三方面,提供一种电子设备,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现所述的多系统兼容方法的步骤。
46.根据本技术实施例的第四方面,提供一种可读非暂时性存储介质,所述存储介质上存储程序或指令,所述程序或指令被处理器执行时实现所述的多系统兼容方法的步骤。
47.本技术实施例中,在系统启动时,先通过第一系统的启动进程加载第一系统,第一系统启动后,利用第二系统的namespace机制创建隔离容器,将与第一系统中冲突的脚本对象置于隔离容器中,基于第二系统的启动进程启动第二系统,使第一系统部署于第二系统中,本技术实施例实现了多系统兼容,且实现了第一系统和第二系统之间的隔离,第二系统可以通过hal服务对第一系统中的相关设备进行调用,从而实现多系统中跨系统的通信,为用户提供了多系统体验,通过单一硬件设备即能实现多系统的体验。
附图说明
48.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍。显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1为本技术实施例的多系统兼容方法的流程示意图;
50.图2为本技术实施例的多系统兼容装置的组成结构示意图;
51.图3为本技术实施例的电子设备的结构图。
具体实施方式
52.以下结合附图,详细阐明本技术实施例技术方案的实质。
53.本技术实施例中,仅以android操作系统及linux操作系统为例对本技术实施例的技术方案作了描述,本技术实施例并不限于上述的操作系统之间的兼容,也不限定仅为两个操作系统之间的兼容。
54.图1为本技术实施例的多系统兼容方法的流程示意图,如图1所示,本技术实施例的多系统兼容方法包括以下处理步骤:
55.步骤101,响应于启动指令,基于systemcall接口启动内核,由所述内核在设定位置查找第一系统的第一进程,并启动所述第一进程。
56.本技术实施例中,启动指令包括开机指令,如开启电源的开机指令、重新启动的开机指令等。
57.响应于启动指令,设备启动内核kernel,完成核心的core、subsys、device 启动,然后准备启动用户态init进程。
58.内核启动后,会在过去曾使用过init的几个地方查找,如果内核找不到init,尝试运行/bin/sh,如果运行失败,系统的启动也会失败。
59.作为一种示例,所述第一系统包括android操作系统、android开放源代码项目aosp和基于aosp的衍生系统;所述aosp的衍生系统包括以下至少之一:如小米公司推出的米柚(miui)操作系统、华为公司推出的移动终端操作系统(emui)、三星公司推出的操作系统(one ui)等。作为一种示例,所述第二系统包括gnu/linux操作系统;所述gnu/linux操作系统包括以下至少之一:ubuntu、debian、redhat。需要说明的是,第二操作系统并不限定是运行在物理机上的,也可以是托管在其它操作系统上的操作系统,例如windows 系统中的wsl等。
60.本技术实施例中,第一进程包括init进程等。
61.步骤102,通过所述第一进程调用所述第一系统的主函数,对所述第一系统的初始化脚本文件进行解析,挂载基础文件系统以及第三方类库vendor,启动核心服务和硬件抽象层hal服务,启动所述第一系统。
62.本技术实施例中,通过第一进程调用第一系统的主函数,主函数包括如 main()函数等,通过主函数调用第一系统的初始化脚本,并对初始化脚本进行解析,挂载第一系统的基础文件系统、system、以及第三方类库vendor等,启动核心服务和硬件抽象层hal服务,启动所述第一系统。
63.步骤103,通过第二系统中的namespace机制,为所述第二系统中与所述第一系统冲突的php的脚本对应的对象创建隔离容器,使所述隔离容器中的对象对应的脚本能被所述第二系统调用。
64.本技术实施例中,在第一系统的核心服务以及hal service准备完成之后,利用linux内核的namespace机制,创建linux系统隔离容器。
65.linux系统的namespaces机制提供了一种资源隔离方案。进程标识(pid)、进程间通信(ipc)、网络network等系统资源不再是全局性的,而是属于特定的namespace。每个namespace里面的资源对其他namespace都是透明的。从操作系统的层面上看,会出现多个相同pid的进程。系统中可以同时存在两个进程号为0、1、2的进程,由于属于不同的
namespace,所以它们之间并不冲突。而从用户层面上,只能看到属于用户自己namespace下的资源,例如使用进程状态(process status,ps)命令只能列出用户自己的namespace下的进程。这样每个namespace看上去就像一个单独的linux系统。
66.所述对象包括第三方类、函数、常量中的至少之一。
67.作为一种示例,所述第二系统包括gnu/linux操作系统;所述gnu/linux 操作系统包括以下至少之一:ubuntu、debian、redhat。
68.步骤104,调用所述隔离容器中的对象对应的第二进程,通过所述第二进程挂载所述第二系统的文件系统,并启动所述第二系统的基础服务,加载所述第二系统,将所述第一系统部署于所述第二系统中。
69.本技术实施例中,第二进程包括linux系统的init进程等。
70.linux系统隔离容器会首先运行linux系统的init进程,然后由linux init 引导启动,逐步进行linux文件系统挂载以及相关service和应用的启动。
71.通过以上步骤,本技术实施例即构建了android hal及linux系统container 的隔离环境,实现了android系统及linux系统之间的兼容,可以在一个电子设备如移动终端、笔记本电脑、pad等上装载android系统及linux系统的兼容系统。
72.上述多操作系统不限于linux系统及android系统的情形,本技术实施例仅是将上述两操作系统作为一种应用典型而进行的示例性说明,不应将其作为对技术方案的限定。
73.本技术实施例中,基于上述的兼容系统,响应于针对所述第二系统的第一动态连接库中的第一函数(function)的调用指令,调用所述第一动态连接库,使所述第一动态连接库初始化,并调用兼容连接器;通过所述兼容连接器调用所述第一系统的hal服务,对所述第一系统的第二动态连接库中的对应于所述第一function的第二function进行调用,运行所述第二function并向所述第二系统响应。这里,第二function与所述第二系统的c函数库接口不存在冲突。
74.而在确定所述第二function与所述第二系统的c函数库接口冲突的情况下,通过所述兼容连接器查找所述第二系统的c函数库中的对应于所述第一 function的第三function,运行所述第三function。
75.本技术实施例中,通过第一系统的将hal接口直接调用动态库的方式,实现第二系统与第一系统的调用。具体地,android hal动态库不兼容问题,主要是由于bionic库不兼容导致的,本技术实施例可以采用兼容连接器方式处理 android动态连接库的连接问题。以opengles库举例如下:
76.linux系统程序调用opengles库某个符号function,首先会调用opengles 封装库。
77.opengles封装库初始化时调用兼容连接器,该兼容连接器会通过android 系统的hal接口调用opengles库,如可以通过dlopen()函数调用android halopengles库。
78.这样当linux调用opengles库的某个function,会调用到真正的androidhal库的对应function。
79.android hal的function在运行时,会连接动态库,此时分两种情况:第一种,function与linux glibc不存在冲突,在调用该function时,兼容连接器会调用android系统对应的function;第二种,function与linux glibc存在冲突的情况下,例如在调用
pthread相关函数的情况下,兼容连接器会返回linuxglibc的对应function,而不是直接连接androidbionic对应的function。
80.通过android系统的hal接口,还可以通过hidl binder进行跨进程通信的方式实现跨系统的通信。
81.响应于针对所述第二系统的第四function的调用指令,通过所述第一系统的hal服务调用所述第一系统的兼容封装库;触发所述兼容封装库基于binder,查询对应于所述第四function的binder服务service的第一客户端client实例;确定所述第一client实例对应于hal服务的第一调用方式;所述第二系统基于所述第一调用方式调用所述第一client实例,触发所述第一系统中的相应service 运行所述第一client实例,得到运行结果;所述兼容封装库将所述第一client 实例的运行结果向所述第二系统的调用指令反馈。
82.具体示例如下:
83.linux系统程序调用android hal接口,调用android hal接口的兼容封装库。
84.hal兼容封装库通过binder驱动,查询并得到android hal binder service 的client实例。
85.通过binder service的client实例,可以确定通过hal接口调用client实例对应的方式。
86.在linux系统通过binder调用方式对client实例进行调用的情况下,对应 android hal的service会收到相关请求。service在收到调用请求之后,会进行相应的处理,并将结果通过binder返回给linux binder client。
87.hal兼容封装库在接收到binder返回的数据之后,会将相关结果通过函数返回,将结果返回给linux调用程序。
88.本技术实施例中,通过binder兼容封装调用的方式,可以实现linux程序调用android hidl接口来实现相关操作系统的启动。
89.本技术实施例中,android和其他基于linux系统的操作系统都是基于 linux内核实现的,因此可以在android linux内核基础上开启其他操作系统所需的内核配置(config)。当电子设备启动内核kernel,完成核心的core、subsys、 device启动,然后准备启动用户态init进程,实现相关系统的加载。
90.本技术实施例通过android hal及linux系统隔离环境的构建,保障了 android hal与linux系统都可以正常运行,互不干扰。通过android hal接口兼容方式,保障了linux系统可以调用android hal接口,而可以实现在 android hal上运行linux操作系统。
91.图2为本技术实施例的多系统兼容装置的组成结构示意图,如图2所示,本技术实施例的多系统兼容装置包括:
92.第一启动单元20,用于响应于启动指令,基于systemcall接口启动内核,由所述内核在设定位置查找第一系统的第一进程,并启动所述第一进程;
93.第二启动单元21,用于通过所述第一进程调用所述第一系统的主函数,对所述第一系统的初始化脚本文件进行解析,挂载基础文件系统以及vendor,启动核心服务和hal服务,启动所述第一系统;
94.创建单元22,用于通过第二系统中的namespace机制,为所述第二系统中与所述第一系统冲突的php的脚本对应的对象创建隔离容器,使所述隔离容器中的对象对应的脚本
能被所述第二系统调用;
95.第三启动单元23,用于调用所述隔离容器中的对象对应的第二进程,通过所述第二进程挂载所述第二系统的文件系统,并启动所述第二系统的基础服务,加载所述第二系统,将所述第一系统部署于所述第二系统中。
96.作为一种实现方式,在图2所示的多系统兼容装置的基础上,本技术实施例的多系统兼容装置还包括:
97.第一调用单元(图2中未示出),用于响应于针对所述第二系统的第一动态连接库中的第一function的调用指令,调用所述第一动态连接库,使所述第一动态连接库初始化,并调用兼容连接器;
98.第二调用单元(图2中未示出),用于通过所述兼容连接器调用所述第一系统的hal服务,对所述第一系统的第二动态连接库中的对应于所述第一 function的第二function进行调用,运行所述第二function并向所述第二系统响应。
99.作为一种实现方式,所述第二调用单元,还用于:
100.在确定所述第二function与所述第二系统的c函数库接口冲突的情况下,通过所述兼容连接器查找所述第二系统的c函数库中的对应于所述第一 function的第三function,运行所述第三function。
101.作为一种实现方式,在图2所示的多系统兼容装置的基础上,本技术实施例的多系统兼容装置还包括:
102.第三调用单元(图2中未示出),用于响应于针对所述第二系统的第四 function的调用指令,通过所述第一系统的hal服务调用所述第一系统的兼容封装库;
103.第一触发单元(图2中未示出),用于触发所述兼容封装库基于进程间通信机制binder,查询对应于所述第四function的binder服务service的第一客户端client实例;确定所述第一client实例对应于hal服务的第一调用方式;
104.第二触发单元(图2中未示出),用于使所述第二系统基于所述第一调用方式调用所述第一client实例,触发所述第一系统中的相应service运行所述第一client实例,得到运行结果;
105.第三触发单元(图2中未示出),用于触发所述兼容封装库将所述第一client 实例的运行结果向所述第二系统的调用指令反馈。
106.作为一种实现方式,所述对象包括第三方类、函数、常量中的至少之一。
107.作为一种实现方式,所述第一系统包括android操作系统、android开放源代码项目aosp和基于aosp的衍生系统;
108.所述衍生系统包括以下至少之一:miui、emui、one ui。
109.作为一种实现方式,所述第二系统包括gnu/linux操作系统;
110.所述gnu/linux操作系统包括以下至少之一:ubuntu、debian、redhat。
111.在示例性实施例中,第一启动单元20、第二启动单元21、创建单元22、第三启动单元23、第一调用单元、第二调用单元、第三调用单元、第一触发单元、第二触发单元和第三触发单元等可以被一个或多个中央处理器(cpu, central processing unit)、应用专用集成电路(asic,application specificintegrated circuit)、数字信号处理器(digital signal processor,dsp)、可编程逻辑器件(pld,programmable logic device)、复杂可编
程逻辑器件(cpld, complex programmable logic device)、现场可编程门阵列(fpga, field-programmable gate array)、通用处理器、控制器、微控制器(mcu, micro controller unit)、微处理器(microprocessor)、或其他电子元件实现,用于执行前述实施例的多系统兼容方法的步骤。
112.在本公开实施例中,图2示出的多系统兼容装置中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
113.下面,参考图3来描述根据本技术实施例的电子设备11。
114.如图3所示,电子设备11包括一个或多个处理器111和存储器112。
115.处理器111可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备11中的其他组件以执行期望的功能。
116.存储器112可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器111可以运行所述程序指令,以实现上文所述的本技术的各个实施例的多系统兼容方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
117.在一个示例中,电子设备11还可以包括:输入装置113和输出装置114,这些组件通过总线系统和/或其他形式的连接机构(图3中未示出)互连。
118.该输入装置113可以包括例如键盘、鼠标等等。
119.该输出装置114可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置114可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
120.当然,为了简化,图3中仅示出了该电子设备11中与本技术有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备11还可以包括任何其他适当的组件。
121.本技术实施例还记载了一种可读非暂时性存储介质,所述存储介质上存储程序或指令,所述程序或指令被处理器执行时实现前述实施例的多系统兼容方法的步骤。
122.除了上述方法和设备以外,本技术实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本技术各种实施例的方法中的步骤。
123.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本技术实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c 等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
124.此外,本技术的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方
法”部分中描述的根据本技术各种实施例的方法中的步骤。
125.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器 (rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
126.以上结合具体实施例描述了本技术的基本原理,但是,需要指出的是,在本技术中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本技术的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本技术为必须采用上述具体的细节来实现。
127.本技术中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“如但不限于”,且可与其互换使用。
128.还需要指出的是,在本技术的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本技术的等效方案。
129.提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本技术。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本技术的范围。因此,本技术不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
130.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本技术的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献