CN102081547A - 提高嵌入式智能设备硬件通用性的方法 - Google Patents
提高嵌入式智能设备硬件通用性的方法 Download PDFInfo
- Publication number
- CN102081547A CN102081547A CN2011100278066A CN201110027806A CN102081547A CN 102081547 A CN102081547 A CN 102081547A CN 2011100278066 A CN2011100278066 A CN 2011100278066A CN 201110027806 A CN201110027806 A CN 201110027806A CN 102081547 A CN102081547 A CN 102081547A
- Authority
- CN
- China
- Prior art keywords
- hardware
- virtual
- module
- intelligent equipment
- assembly
- 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
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种提高嵌入式智能设备硬件通用性的方法,其特征在于所述方法包括以下步骤:在嵌入式智能设备操作***的硬件抽象层构建虚拟硬件预留模块,嵌入式智能设备操作***静态编译所述虚拟硬件预留模块,并根据智能设备的硬件有无调用静态编译后的虚拟硬件预留模块虚拟实现智能设备的相关硬件功能。该方法可以更加的完善硬件抽象层的功能,更好的增强智能终端***的移植通用性,最大限度的使各种智能终端***可以移植到任意平台上。
Description
技术领域
本发明属于嵌入式智能设备的操作***硬件抽象层技术领域,具体涉及一种提高嵌入式智能设备硬件通用性的方法。
背景技术
随着嵌入式技术及数码设备的发展,近些年来,各种各样的智能终端产品都迅速发展起来,例如智能手机终端、一体机、平板电脑、高清多媒体终端、移动数字电视以及手持电视终端等等。智能终端产品的形成,依赖于具体的硬件平台,即在不同体系结构(arm、x86、mips等)的硬件平台上通过嵌入式移植技术而形成智能终端产品,而正是由于这种平台的差异性,导致了各种智能终端***无法跨平台实现,或者需要进行很大的改动后才可实现,这往往是费时费力的,对于研发来说,更是大大的提升了研发难度,因此,智能终端***才引进了硬件抽象层技术。
硬件抽象层位于操作***内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作***提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。硬件抽象层的引入解决了硬件平台的差异性,使移植更加简单,但是对于不同的智能终端,所用的扩展硬件设备可能并不相同,或者同类的智能终端的不同厂商的产品,拥有的功能也不尽相同。如果一个智能终端的产品需要一种硬件扩展,而另一个产品却不需要此硬件扩展,那么在移植***时,必须对硬件抽象层进行修改,如果硬件抽象层中没有此种扩展硬件的接口,那么在移植到需要此扩展的平台时,就要对硬件抽象层进行修改,反之亦然。那么这必将产生平台差异性。硬件抽象层可以隐藏一种硬件在不同平台下的差异,却不可以解决有或无此硬件扩展而产生的差异性问题。本发明因此而来。
发明内容
本发明目的在于提供一种提高嵌入式智能设备硬件通用性的方法,解决了现有技术中由于硬件的存在与否需要修改硬件抽象层造成硬件抽象层需要频繁修改等问题。
为了解决现有技术中的这些问题,本发明提供的技术方案是:
一种提高嵌入式智能设备硬件通用性的方法,其特征在于所述方法包括以下步骤:
在嵌入式智能设备操作***的硬件抽象层构建虚拟硬件预留模块,嵌入式智能设备操作***静态编译所述虚拟硬件预留模块,并根据智能设备的硬件有无调用静态编译后的虚拟硬件预留模块虚拟实现智能设备的相关硬件功能。
优选的,所述方法中虚拟硬件预留模块包括硬件运行模拟组件和硬件功能实现组件,所述硬件运行模拟组件模拟相应硬件实际运行时接受的实际数据,并将数据提供硬件功能实现组件;所述硬件功能实现组件从硬件抽象层继承相应的硬件接口,并根据相应硬件实现硬件具备的各个功能。
优选的,所述方法中嵌入式智能设备操作***通过makefile文件中定义宏来控制虚拟硬件预留模块的调用,通过make命令解释执行makefile来控制启闭虚拟硬件预留模块的运行。
优选的,所述makefile文件中需要根据实际具体智能设备的硬件是否存在来定义宏的值;当存在该硬件时,宏值为false,make命令将硬件抽象层的实现编译为一个动态库,操作***使用实际的硬件抽象层;而当不存在该硬件时,宏值为true,make命令将虚拟硬件预留模块编译为一个静态库,操作***使用虚拟硬件预留模块对该硬件功能虚拟实现。
优选的,所述方法中硬件功能实现组件内设置初始化工具,所述初始化工具用于在内存开辟足够空间接受硬件运行模拟组件的数据和供硬件功能实现组件实现硬件功能。
优选的,所述方法中硬件运行模拟组件内设置数据配置工具和数据构造工具,所述数据构造工具用于构建模拟硬件的数据流;所述数据配置工具用于将构建模拟硬件的数据流定义或转换模拟硬件运行的数据格式。
优选的,所述虚拟硬件预留模块用于虚拟摄像头、收音机的实现。
当使用虚拟硬件预留模块虚拟摄像头时,在虚拟硬件预留模块内通过构建FakeCamera类和CameraHardwareStub来分别实现硬件运行模拟组件和硬件功能实现组件。
其中FakeCamera类用于完成一个虚拟的摄像头输入硬件内存的数据,在FakeCamera类中,可以定义配置数据的宽和高,模拟实际***中摄像头输入数据的大小,也可以定义其支持多种颜色空间格式,通过这个类,可以用黑白相间的格子来模拟硬件的视频流。
CameraHardwareStub类继承接口CameraHardwareInterface类,通过CameraHardwareStub类可以虚拟操作取景器预览和拍照等功能,可以在没有摄像头的情况下调试照相机的应用程序,还可以作为虚拟的摄像机输入设备来使用。在CameraHardwareStub中进行参数设置后,会调用初始化工具:如initHeapLocked()函数。initHeapLocked()函数建立两块内存:拍照照片的内存和取景器预览的内存。initHeapLocked()函数通过构建一个FakeCamera对象作为虚拟的摄像头输入数据的来源。
当然,CameraHardwareStub类中可以定义许多函数,用于虚拟实现了智能终端Camera***的功能,例如:预览功能,在函数中创建一个预览线程,在线程中建立一个循环,得到虚拟的摄像头输入数据的来源,取景器的数据来自虚拟的“摄像头”FakeCamera中,并通过预览的回调函数将输出传到上层。拍照功能:该功能函数在拍摄照片时被调用,它也保存了回调函数的指针,并建立了拍摄照片的线程,这个线程实际上不是一个循环,只是一个单次运行的函数,通过虚拟调用一个表示快门信息的函数来模拟拍照功能。
在操作***中在***的Camera模块下编写一个makefile文件,在makefile文件中通过定义宏USE_CAMERA_STUB来控制是否使用虚拟硬件预留模块。当编译宏USE_CAMERA_STUB为false时,***使用实际的Camera硬件抽象层接口;当编译宏USE_CAMERA_STUB为true时,***使用Camera模块的虚拟硬件预留模块。由此,就可以轻松的实现智能终端***的虚拟硬件预留模块。
通过以上两个技术方案的实施,可以实现无论有无硬件的情况下,都可以使***实现相关的功能。无论是真实的实现还是虚拟的实现,***可以自动根据硬件情况进行调节,使智能终端***的移植更加便捷。
相对于目前的硬件抽象层技术,本发明可以更加的完善硬件抽象层的功能,更好的增强智能终端***的移植通用性,最大限度的使各种智能终端***可以移植到任意平台上,并且基本上不用对***进行任何改动就可移植,它屏蔽了智能终端的扩展硬件不同而产生的差异,使得智能终端***的嵌入式移植更加简单便捷。
相对于现有技术中的方案,本发明的优点是:
通过本发明提出一种基于虚拟硬件的嵌入式智能设备虚拟硬件预留模块的实现方法,通过此方法,可以解决不同智能终端产品所需的扩展硬件不同而产生的移植差异性问题。对于一些扩展硬件,可以在硬件抽象层中为其构建一个虚拟硬件预留模块,当该扩展硬件被智能终端需要时,***自动调用相应平台下的硬件抽象层接口;当该扩展硬件不被需要时,***自动调用虚拟硬件的预留模块,从而使智能终端***的移植通用性大大增强。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为本发明实施例提高嵌入式智能设备硬件通用性的方法的流程图;
图2为本发明实施例虚拟硬件预留模块的硬件功能实现组件的实现流程图;
图3为本发明实施例虚拟摄像头时虚拟硬件预留模块作业流程图。
具体实施方式
以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。
实施例
如图1所示,为基于虚拟硬件的嵌入式智能设备虚拟硬件预留模块提高智能设备通用性的方法,该方法包括虚拟硬件预留模块的构建以及智能终端***如何识别是否使用虚拟硬件预留模块。
基于虚拟硬件的嵌入式智能设备虚拟硬件预留模块的实现包括如下部分:
1、虚拟硬件预留模块构建(如图2):
构造一个类A(模拟硬件运行数据),使其能够模拟相应硬件的实际运行情景,并使该类可以根据实际运行情况的不同,设置相应的运行参数。
构造另一个类B(模拟硬件运行功能),使其继承于相应的硬件抽象层接口。重写构造的类中的各个函数,使其虚拟实现相应硬件相关的各个功能。在该类中创建一个init函数,用于创建一个类A的实例,然后在该模拟的环境情况下,通过创建各个线程来实现类B中的各个功能,以达到在无硬件支持的情况下,通过模拟的环境,虚拟的实现硬件的相关功能并可以对其进行调试。
2、***控制虚拟硬件预留模块使用过程(如图1):
通过在makefile文件中定义宏来控制虚拟硬件预留模块的使用。根据实际平台是否存在该扩展硬件来断定宏的值。当存在该硬件时,宏值为false,此时,将硬件抽象层的实现编译为一个动态库,***服务连接这个动态库,即使用实际的硬件抽象层;当不存在该硬件时,宏值为true,此时,将虚拟硬件预留模块编译为一个静态库,***服务连接这个静态库,即使用虚拟硬件预留模块对该硬件功能虚拟实现。
具体的,以Camera模块为例,说明构建虚拟硬件预留模块的流程(如图4):
构建类FakeCamera,这个类的功能是完成一个虚拟的摄像头输入数据的内存,在FakeCamera接口中,可以定义宽和高,它们模拟了实际***中摄像头输入数据的大小,也可以定义其支持多种颜色空间格式,通过这个类,可以用黑白相间的格子来模拟硬件的视频流。
构建类CameraHardwareStub,它继承硬件抽象层接口CameraHardwareInterface类,通过这个类可以虚拟操作取景器预览和拍照等功能,可以在没有摄像头的情况下调试照相机的应用程序,还可以作为虚拟的摄像机输入设备来使用。
在CameraHardwareStub中进行参数设置后,会调用initHeapLocked()函数。在这个过程中,建立两块内存:一块表示拍照照片的内存,另一块表示取景器预览的内存。之后,建立一个FakeCamera作为虚拟的摄像头输入数据的来源。
CameraHardwareStub类中定义了许多函数,虚拟实现了智能终端Camera***的功能,例如:
预览功能:在函数中创建一个预览线程,在线程中建立一个循环,得到虚拟的摄像头输入数据的来源,取景器的数据来自虚拟的“摄像头”FakeCamera中,并通过预览的回调函数将输出传到上层。
拍照功能:该功能函数在拍摄照片时被调用,它也保存了回调函数的指针,并建立了拍摄照片的线程,这个线程实际上不是一个循环,只是一个单次运行的函数,通过虚拟调用一个表示快门信息的函数来模拟拍照功能。
这个实现的结果就是模拟了黑白相间的格子来代替实际来自硬件的视频流,这样就在不接触硬件的情况下,让Camera***在没有硬件的情况下运行起来。
接下来,对***中判断是否使用虚拟硬件预留模块的流程进行说明:
在***的Camera模块下编写一个makefile文件,在makefile文件中通过定义宏USE_CAMERA_STUB来控制是否使用虚拟硬件预留模块。
当编译宏USE_CAMERA_STUB为false时,***使用实际的Camera硬件抽象层接口
当编译宏USE_CAMERA_STUB为true时,***使用Camera模块的虚拟硬件预留模块。
由此,就可以轻松的实现智能终端***的虚拟硬件预留模块。
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种提高嵌入式智能设备硬件通用性的方法,其特征在于所述方法包括以下步骤:
在嵌入式智能设备操作***的硬件抽象层构建虚拟硬件预留模块,嵌入式智能设备操作***静态编译所述虚拟硬件预留模块,并根据智能设备的硬件有无调用静态编译后的虚拟硬件预留模块虚拟实现智能设备的相关硬件功能。
2.根据权利要求1所述的方法,其特征在于所述方法中虚拟硬件预留模块包括硬件运行模拟组件和硬件功能实现组件,所述硬件运行模拟组件模拟相应硬件实际运行时接受的实际数据,并将数据提供硬件功能实现组件;所述硬件功能实现组件从硬件抽象层继承相应的硬件接口,并根据相应硬件实现硬件具备的各个功能。
3.根据权利要求2所述的方法,其特征在于所述方法中嵌入式智能设备操作***通过makefile文件中定义宏来控制虚拟硬件预留模块的调用,通过make命令解释执行makefile来控制启闭虚拟硬件预留模块的运行。
4.根据权利要求3所述的方法,其特征在于所述makefile文件中需要根据实际具体智能设备的硬件是否存在来定义宏的值;当存在该硬件时,宏值为false,make命令将硬件抽象层的实现编译为一个动态库,操作***使用实际的硬件抽象层;而当不存在该硬件时,宏值为true,make命令将虚拟硬件预留模块编译为一个静态库,操作***使用虚拟硬件预留模块对该硬件功能虚拟实现。
5.根据权利要求2所述的方法,其特征在于所述方法中硬件功能实现组件内设置初始化工具,所述初始化工具用于在内存开辟足够空间接受硬件运行模拟组件的数据和供硬件功能实现组件实现硬件功能。
6.根据权利要求2所述的方法,其特征在于所述方法中硬件运行模拟组件内设置数据配置工具和数据构造工具,所述数据构造工具用于构建模拟硬件的数据流;所述数据配置工具用于将构建模拟硬件的数据流定义或转换模拟硬件运行的数据格式。
7.根据权利要求2所述的方法,其特征在于所述虚拟硬件预留模块用于虚拟摄像头、收音机的实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100278066A CN102081547A (zh) | 2011-01-26 | 2011-01-26 | 提高嵌入式智能设备硬件通用性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100278066A CN102081547A (zh) | 2011-01-26 | 2011-01-26 | 提高嵌入式智能设备硬件通用性的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102081547A true CN102081547A (zh) | 2011-06-01 |
Family
ID=44087524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100278066A Pending CN102081547A (zh) | 2011-01-26 | 2011-01-26 | 提高嵌入式智能设备硬件通用性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102081547A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819445A (zh) * | 2012-07-30 | 2012-12-12 | 国电南瑞科技股份有限公司 | 变电站综自软件在嵌入式***硬件平台上的快速移植方法 |
CN103677814A (zh) * | 2013-11-29 | 2014-03-26 | 广州视源电子科技股份有限公司 | 一种程序获取方法、装置及*** |
CN104063260A (zh) * | 2013-03-21 | 2014-09-24 | 鸿富锦精密工业(深圳)有限公司 | 计算设备硬件功能扩充***及方法 |
CN105824295A (zh) * | 2015-01-08 | 2016-08-03 | 中国航天科工集团第四研究院指挥自动化技术研发与应用中心 | 一种硬件设备控制方法、装置及*** |
CN108762829A (zh) * | 2018-05-03 | 2018-11-06 | 北京奇虎科技有限公司 | 一种用于图像美化的方法、客户端及终端 |
CN108845861A (zh) * | 2018-05-17 | 2018-11-20 | 北京奇虎科技有限公司 | 虚拟摄像头的实现方法及装置 |
CN112148360A (zh) * | 2020-08-20 | 2020-12-29 | 深圳英飞拓智能技术有限公司 | 一种跨平台嵌入式软件虚拟接口实现方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641568A (zh) * | 2004-01-13 | 2005-07-20 | 英业达股份有限公司 | 基板管理控制器的固件自动配置***及方法 |
US20060206904A1 (en) * | 2005-03-11 | 2006-09-14 | Microsoft Corporation | Systems and methods for supporting device access from multiple operating systems |
-
2011
- 2011-01-26 CN CN2011100278066A patent/CN102081547A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641568A (zh) * | 2004-01-13 | 2005-07-20 | 英业达股份有限公司 | 基板管理控制器的固件自动配置***及方法 |
US20060206904A1 (en) * | 2005-03-11 | 2006-09-14 | Microsoft Corporation | Systems and methods for supporting device access from multiple operating systems |
Non-Patent Citations (1)
Title |
---|
HTTP://ANDROID.TGBUS.COM/ANDROID/ANDROIDNEWS/200812/170973.SHTML: "Android的Camera架构介绍之一Android的Camera架构介绍之二", 《ANDROID的CAMERA架构介绍之一ANDROID的CAMERA架构介绍之二》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819445A (zh) * | 2012-07-30 | 2012-12-12 | 国电南瑞科技股份有限公司 | 变电站综自软件在嵌入式***硬件平台上的快速移植方法 |
CN102819445B (zh) * | 2012-07-30 | 2015-05-20 | 国电南瑞科技股份有限公司 | 变电站综自软件在嵌入式***硬件平台上的快速移植方法 |
CN104063260A (zh) * | 2013-03-21 | 2014-09-24 | 鸿富锦精密工业(深圳)有限公司 | 计算设备硬件功能扩充***及方法 |
CN103677814A (zh) * | 2013-11-29 | 2014-03-26 | 广州视源电子科技股份有限公司 | 一种程序获取方法、装置及*** |
CN105824295A (zh) * | 2015-01-08 | 2016-08-03 | 中国航天科工集团第四研究院指挥自动化技术研发与应用中心 | 一种硬件设备控制方法、装置及*** |
CN108762829A (zh) * | 2018-05-03 | 2018-11-06 | 北京奇虎科技有限公司 | 一种用于图像美化的方法、客户端及终端 |
CN108762829B (zh) * | 2018-05-03 | 2021-07-09 | 北京奇虎科技有限公司 | 一种用于图像美化的方法、客户端及终端 |
CN108845861A (zh) * | 2018-05-17 | 2018-11-20 | 北京奇虎科技有限公司 | 虚拟摄像头的实现方法及装置 |
CN108845861B (zh) * | 2018-05-17 | 2021-04-23 | 北京奇虎科技有限公司 | 虚拟摄像头的实现方法及装置 |
CN112148360A (zh) * | 2020-08-20 | 2020-12-29 | 深圳英飞拓智能技术有限公司 | 一种跨平台嵌入式软件虚拟接口实现方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102081547A (zh) | 提高嵌入式智能设备硬件通用性的方法 | |
CN104714828B (zh) | 应用安装、运行方法及装置 | |
CN104424022B (zh) | 屏幕录制方法及装置 | |
Muldoon et al. | Agent factory micro edition: A framework for ambient applications | |
CN108446149B (zh) | 一种第三方动态库接口拦截方法及*** | |
US20020129340A1 (en) | Reconfigurable isomorphic software representations | |
CN101980157A (zh) | 移动终端开机启动方法及移动终端 | |
CN106445500B (zh) | 提供用户界面的方法、***及终端设备 | |
US9195435B2 (en) | Image processing software development method, image processing software development device, and image processing software development program | |
Ohlenburg et al. | The MORGAN framework: enabling dynamic multi-user AR and VR projects | |
CN105183495A (zh) | 跨操作***域来协调活动视图 | |
CN102333246A (zh) | 一种基于机顶盒Flash中间件的用户界面*** | |
CN106534667A (zh) | 分布式协同渲染方法及终端 | |
Wang et al. | An authoring tool for mobile phone AR environments | |
CN105701854B (zh) | 一种3d渲染方法、装置及引擎 | |
CN109857489A (zh) | 基于Android***的开发***、解耦方法和装置 | |
CN103218226A (zh) | 一种处理应用显示界面的方法及装置 | |
CN101431569B (zh) | 可自定制和面向网络服务的手机桌面环境的实现方法 | |
CN101276276A (zh) | 一种数字电视应用的开发模型装置 | |
CN109766275A (zh) | 移动应用的自动化测试方法、***、存储介质以及设备 | |
CN112241373A (zh) | 自动化测试方法、测试装置、处理器和测试*** | |
Krupitzer et al. | FESAS: Towards a framework for engineering self-adaptive systems | |
CN108345536A (zh) | 一种持续集成环境的部署方法、装置及设备 | |
CN109471714A (zh) | 平台部署方法、装置、设备及储存介质 | |
CN110032390B (zh) | 一种实现多机型共升级包的方法、存储介质及智能终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110601 |