glibc和bionic的驱动自适配系统及方法技术方案

技术编号:17970083 阅读:46 留言:0更新日期:2018-05-16 11:06
本发明专利技术提供了一种glibc和bionic的驱动自适配系统及方法,包括驱动兼容层,驱动兼容层包括包含自定义的兼容层链接器的符号跳板模块、由glibc符号抽象库和bionic符号抽象库构成的符号抽象模块;glibc环境下运行的可执行程序由glibc链接器负责链接、装载glibc符号抽象库,通过兼容层链接器动态加载bionic符号抽象库,建立glibc符号和bionic符号的映射关系,从而使用bionic环境的资源。本发明专利技术解决了glibc环境和bionic环境两者符号冲突问题,实现了glibc环境下重用bionic驱动库,提高移动操作系统的驱动开发和适配效率,缩减开发成本。

【技术实现步骤摘要】
glibc和bionic的驱动自适配系统及方法
本专利技术涉及操作系统领域,具体地,涉及面上glibc环境和bionic环境的驱动自适配系统及方法。
技术介绍
在移动操作系统研制过程中,需要针对具体的嵌入式移动终端平台为其开发硬件驱动,例如摄像头、音视频硬件编解码、图形加速GPU、无线网络WIFI等驱动模块。开发这些硬件驱动模块需要了解具体的图形加速芯片、音视频硬件编解码芯片等技术参数、指标和接口等技术细节。例如,锐华移动操作系统是基于glibc的生态环境并支持Android6.0操作系统框架接口。glibc是gnu发布的libc库(C运行库),它是Linux系统中最底层的Api库。已有的文献都介绍了基于嵌入式Linux的摄像头、音视频硬件编解码、GPU、WIFI等驱动模块的设计开发方案和技术。从这些文献可以发现,开发上述模块驱动需要一定的技术积累和较大的开发成本。并且这些文献都只介绍了glibc环境下的驱动开发技术,而没有考虑移动操作系统支持Android6.0操作系统框架接口的特性。Android6.0操作系统也是基于Linux内核,但它的底层Api库是bionic库而不是glibc。已有文献介绍了一种在glibc环境下使用Android相机的方法。但对从glibc环境和bionic环境的兼容问题缺乏系统性地概述和分析,针对其他模块没用提出通用性的驱动适配方法和设计方案。要解决glibc环境和bionic环境的兼容问题,其面临的技术问题主要体现在以下三点:1)glibc驱动重复适配导致开发成本较高的问题:以往的glibc环境硬件模块驱动适配成本较高,而且针对不同参数配置的硬件平台或模块,都需要为移动操作系统重复适配硬件模块驱动,而已有的bionic环境下的Android驱动却无法复用。2)bionic驱动无法直接复用的问题:在glibc环境下bionic驱动无法直接复用,这是因为glibc和bionic在pthread机制、跨进程通信IPC机制、Exception异常机制和C++标准库STL等方面都存在差异。因此,glibc编译系统编译出来的可执行程序是无法直接使用bionic动态库的,glibc链接器在链接、装载bionic动态库出现符号未定义或符号冲突的问题。3)已有的驱动适配方法对移动操作系统关心的图形加速、WIFI和多媒体等模块没用提出相关设计方案,缺乏通用性。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种glibc和bionic的驱动自适配系统及方法。根据本专利技术提供的一种glibc和bionic的驱动自适配系统,包括glibc环境和bionic环境之间的驱动兼容层,所述驱动兼容层包括:符号跳板模块:包含自定义的兼容层链接器;符号抽象模块:由glibc符号抽象库和bionic符号抽象库两部分构成;其中,glibc环境下运行的可执行程序,由glibc链接器负责链接、装载所述驱动兼容层中的所述glibc符号抽象库,通过所述兼容层链接器动态加载所述bionic符号抽象库,建立glibc符号和bionic符号的映射关系,从而使用bionic环境的资源。较佳的,所述glibc符号抽象库基于glibc编译环境编译而成,所述bionic符号抽象库基于bionic编译环境编译而成。较佳的,所述glibc符号抽象库包含glibc环境上的应用或者服务所有需要调用的函数接口;所述bionic符号抽象库是根据bionic环境中的动态库对外开放的接口编译而成。较佳的,所述兼容层链接器维护一张符号映射哈希表,将glibc符号映射为bionic符号,所述兼容层链接器是在bionic链接器基础上,实现自定义的dlopen函数和dlsym函数;所述glibc符号抽象库调用所述兼容层链接器的dlopen函数来加载所述bionic符号抽象库,并调用dlsym函数来找到所述bionic符号抽象库中bionic符号的地址。较佳的,所述使用bionic环境的资源的方式包括两种:所述bionic符号抽象库链接、加载bionic动态库,通过bionic链接器动态加载硬件驱动库;或者,由bionic环境的bionic链接器装载bionic动态库的符号;所述bionic符号抽象库直接通过跨进程通信IPC调用bionic本地服务接口。根据本专利技术提供的一种glibc和bionic的驱动自适配方法,包括:在glibc环境和bionic环境之间建立驱动兼容层,所述驱动兼容层包括:符号跳板模块:包含自定义的兼容层链接器;符号抽象模块:由glibc符号抽象库和bionic符号抽象库两部分构成;其中,glibc环境下运行的可执行程序,由glibc链接器负责链接、装载所述驱动兼容层中的所述glibc符号抽象库,通过所述兼容层链接器动态加载所述bionic符号抽象库,建立glibc符号和bionic符号的映射关系,从而使用bionic环境的资源。较佳的,所述glibc符号抽象库基于glibc编译环境编译而成,所述bionic符号抽象库基于bionic编译环境编译而成。较佳的,所述glibc符号抽象库包含glibc环境上的应用或者服务所有需要调用的函数接口;所述bionic符号抽象库是根据bionic环境中的动态库对外开放的接口编译而成。较佳的,所述兼容层链接器维护一张符号映射哈希表,将glibc符号映射为bionic符号,所述兼容层链接器是在bionic链接器基础上,实现自定义的dlopen函数和dlsym函数;所述glibc符号抽象库调用所述兼容层链接器的dlopen函数来加载所述bionic符号抽象库,并调用dlsym函数来找到所述bionic符号抽象库中bionic符号的地址。较佳的,所述使用bionic环境的资源的方式包括两种:所述bionic符号抽象库链接、加载bionic动态库,通过bionic链接器动态加载硬件驱动库;或者,由bionic环境的bionic链接器装载bionic动态库的符号;所述bionic符号抽象库直接通过跨进程通信IPC调用bionic本地服务接口。与现有技术相比,本专利技术具有如下的有益效果:本专利技术针对glibc环境和bionic环境在编译和运行机制上的差异,解决了两者符号冲突问题,实现了glibc环境下重用bionic驱动库。通过本专利技术能够提高移动操作系统的驱动开发和适配效率,缩减开发成本。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为本专利技术提出的驱动兼容层结构图;图2为本专利技术提出的Wifi模块驱动适配架构图;图3为本专利技术Wifi模块驱动适配的WifiConnect流程图;图4为本专利技术提出的Media模块驱动适配架构图;图5为本专利技术Media模块驱动适配的视频播放流程;图6为本专利技术提出的OpenGL模块驱动适配架构图。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。本专利技术提供的一种glibc和bionic的驱动自适配系统,包括glibc环境本文档来自技高网
...
glibc和bionic的驱动自适配系统及方法

【技术保护点】
一种glibc和bionic的驱动自适配系统,其特征在于,包括glibc环境和bionic环境之间的驱动兼容层,所述驱动兼容层包括:符号跳板模块:包含自定义的兼容层链接器;符号抽象模块:由glibc符号抽象库和bionic符号抽象库两部分构成;其中,glibc环境下运行的可执行程序,由glibc链接器负责链接、装载所述驱动兼容层中的所述glibc符号抽象库,通过所述兼容层链接器动态加载所述bionic符号抽象库,建立glibc符号和bionic符号的映射关系,从而使用bionic环境的资源。

【技术特征摘要】
1.一种glibc和bionic的驱动自适配系统,其特征在于,包括glibc环境和bionic环境之间的驱动兼容层,所述驱动兼容层包括:符号跳板模块:包含自定义的兼容层链接器;符号抽象模块:由glibc符号抽象库和bionic符号抽象库两部分构成;其中,glibc环境下运行的可执行程序,由glibc链接器负责链接、装载所述驱动兼容层中的所述glibc符号抽象库,通过所述兼容层链接器动态加载所述bionic符号抽象库,建立glibc符号和bionic符号的映射关系,从而使用bionic环境的资源。2.根据权利要求1所述的glibc和bionic的驱动自适配系统,其特征在于,所述glibc符号抽象库基于glibc编译环境编译而成,所述bionic符号抽象库基于bionic编译环境编译而成。3.根据权利要求2所述的glibc和bionic的驱动自适配系统,其特征在于,所述glibc符号抽象库包含glibc环境上的应用或者服务所有需要调用的函数接口;所述bionic符号抽象库是根据bionic环境中的动态库对外开放的接口编译而成。4.根据权利要求1所述的glibc和bionic的驱动自适配系统,其特征在于,所述兼容层链接器维护一张符号映射哈希表,将glibc符号映射为bionic符号,所述兼容层链接器是在bionic链接器基础上,实现自定义的dlopen函数和dlsym函数;所述glibc符号抽象库调用所述兼容层链接器的dlopen函数来加载所述bionic符号抽象库,并调用dlsym函数来找到所述bionic符号抽象库中bionic符号的地址。5.根据权利要求1所述的glibc和bionic的驱动自适配系统,其特征在于,所述使用bionic环境的资源的方式包括两种:所述bionic符号抽象库链接、加载bionic动态库,通过bionic链接器动态加载硬件驱动库;或者,由bionic环境的bionic链接器装载bionic动态库的符号;所述bionic符号抽象库直接通过跨进程通信IPC调用bionic本地服务接口。6....

【专利技术属性】
技术研发人员:刘昊高元钧徐冬晨陆平沈震昊
申请(专利权)人:中国电子科技集团公司第三十二研究所
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1