适用于Windows操作系统的传感器驱动方法和驱动系统与流程

文档序号:14418997阅读:738来源:国知局
适用于Windows操作系统的传感器驱动方法和驱动系统与流程

本发明涉及传感器驱动领域,特别涉及一种适用于windows操作系统的传感器驱动方法和驱动系统。



背景技术:

随着windows系统近年来在移动设备上的推广,越来越多的平板和手机选择了windows系统作为其操作系统,应用于移动设备的传感器数量亦呈增长趋势。与笔记本上单一使用加速度计的硬件设计不同,移动设备上的传感器配置方案(sensorsolution)更加多样,更多配备的是六轴或者九轴的传感器配置方案。为了得到更优的用户体验与计算精确度,使用fusion算法并且将其应用在针对传感器的六轴和九轴配置方案当中。

为了节省成本,一些现有的传感器配置方案是以i2c直接连接传感器的方式进行硬件设计,并没有mcu(微控制单元)部分,而驱动的工作内容也从mcu上固件(firmware)的编写转移到了windows操作系统用户层上的umdf(用户模式驱动程序框架)驱动开发上来。

一些现有的六轴与九轴设计的传感器配置方案采用的是i2c直连的传感器硬件连接方案,而驱动则是使用带fusion算法的windows驱动,该驱动是umdf1.x架构,并且调用了fusion算法库。针对六轴和九轴传感器配置方案的windows驱动可以只有一个驱动。如图1所示,该驱动10为一个带有fusion算法库的combo驱动,管理多个物理传感器11,直接获取物理传感器的原始数据,然后将原始数据交给驱动中的fusion算法库,由fusion算法库将物理传感器的原始数据作为输入数据,最终计算出各个虚拟传感器需要的结果,并且上报给上层12,即windows系统的上层分层接口。

针对六轴九轴的驱动,虽然总数只有一个,但是由于移动设备上的传感器配置方案较多,例如有的是指南针方案,有的是九轴方案,有的又是惯性测量单元方案,现有的驱动管理模式是,不同的传感器配置方案对应不同的combo驱动,同时不同的combo驱动对应不同的acpi表文件。

传感器配置方案不同,硬件上的物理传感器类型可能不同,从而对应的工作模式不同。在现有的多分支combo驱动管理模式下,要求开发人员,根据传感器配置方案的不同,选择不同的驱动代码,编译出对应其工作模式的驱动,从而适应不同的传感器配置方案。

这样的方式需要管理多套驱动代码,遇到不同的传感器配置方案时需要发布不同的combo驱动。一旦传感器配置方案发生变化,使用者不得不重新改写acpi表,刷新bios(基本输入输出系统),重新安装调试新的combo驱动,还要再次生成osimage(操作系统映像)。这样很多工作需要重头做起,容易重复出错。而开发者则需要变换代码分支,生成新的驱动,还要再次解决错误问题,使用新的debug文件,浪费了很多不必要的时间和精力。



技术实现要素:

本发明所解决的技术问题在于克服了现有技术中的至少一个缺陷,提供一种适用于windows操作系统的传感器驱动方法和驱动系统。

本发明通过以下技术方案解决上述技术问题。

一种适用于windows操作系统的传感器驱动方法,包括:检测连接到应用处理器的传感器的工作模式;将来自传感器的原始数据输入算法库,并以该工作模式调用算法库以计算出虚拟的传感器结果;将该虚拟的传感器结果上报到应用处理器。

优选地,检测连接到应用处理器的传感器的工作模式包括:识别传感器的类型,以获知传感器配置方案;基于获知的传感器配置方案判定所需的工作模式。

优选地,识别传感器的类型包括:按照acpi表中的i2c从地址与传感器依次通信,得到该i2c从地址处的传感器的芯片识别号;将得到的各传感器的芯片识别号与预存的芯片识别号进行匹配,以获知各传感器的类型。

优选地,基于获知的传感器配置方案判定所需的工作模式包括:对于加速度传感器和陀螺仪传感器这种传感器配置方案,判定所需的工作模式为imu工作模式;对于加速度传感器和地磁传感器这种传感器配置方案,判定所需的工作模式为compass工作模式;对于加速度传感器、地磁传感器和陀螺仪传感器这种传感器配置方案,判定所需的工作模式为ndof工作模式。

优选地,该算法库具有统一的输入接口和工作模式切换模块以根据不同的工作模式产生不同的输出。

优选地,在获知传感器配置方案后,将该传感器配置方案通报应用处理器。

根据本发明实施例的另外一个方面,还提供了一种适用于windows操作系统的传感器驱动系统,包括:工作模式检测装置,用于检测连接到应用处理器的传感器的工作模式;调用装置,用于将来自传感器的原始数据输入算法库,并以该工作模式调用算法库,由算法库计算出虚拟的传感器结果;以及上报装置,用于将该虚拟的传感器结果上报到应用处理器。

优选地,所述工作模式检测装置包括:识别装置,用于识别传感器的类型,以获知传感器配置方案;判定装置,用于基于获知的传感器配置方案判定所需的工作模式。

优选地,所述识别装置包括:寻址装置,用于按照acpi表中的i2c从地址与传感器依次通信,得到该i2c从地址处的传感器的芯片识别号;匹配装置,用于将得到的各传感器的芯片识别号与预存的芯片识别号进行匹配,以获知各传感器的类型。

优选地,在判定装置中:对于加速度传感器和陀螺仪传感器这种传感器配置方案,判定所需的工作模式为imu工作模式;对于加速度传感器和地磁传感器这种传感器配置方案,判定所需的工作模式为compass工作模式;对于加速度传感器、地磁传感器和陀螺仪传感器这种传感器配置方案,判定所需的工作模式为ndof工作模式。

优选地,该算法库具有统一的输入接口和工作模式切换模块以根据不同的工作模式产生不同的输出。

优选地,传感器驱动系统还包括通报装置,用于在获知传感器配置方案后,将该传感器配置方案通报应用处理器。

本发明的积极效果在于:对使用者来说,改变传感器配置方案后,最多只需要改变acpi表中的i2c从地址,不再需要更新整个驱动系统,减少了很多工作量,尤其是极大简化了使用者移植(porting)驱动的难度和时间。对于开发者来说,减少了代码分支,只需要维护一套驱动代码,并且出现问题调试时,只需要统一用同一个调试文件来抓取信息进行分析,也减少了工作量。

附图说明

图1显示了现有的六轴九轴传感器windows驱动结构图;

图2显示了根据本发明的适用于windows操作系统的传感器驱动方法;

图3显示了根据本发明的适用于windows操作系统的传感器驱动系统。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

对于现有技术中传感器配置方案不同而需要多套combo驱动和多套驱动代码,其使用的算法库均是fusion算法库(fusion算法库是一种对采集自物理传感器的原始数据进行计算从而得到虚拟传感器结果的算法库),只是fusion算法库被调用时使用的工作模式不同,而工作模式的不同又导致了驱动上报给上层的虚拟传感器不同。在多分支驱动代码中,工作模式恰好是由软件应用工程师根据实际连接的物理传感器,由开发者在代码中改写宏定义来确定的。从软件角度来看,不同配置方案的驱动代码不同点,仅仅在于fusion算法工作模式的不同,而工作模式的不同,是由传感器配置方案中硬件连接的物理传感器的类型所决定的。

对于现有的采用一个combo驱动管理所有物理传感器的特殊模式,不管物理传感器的个数是多是少,均可以使用一个驱动来进行统一管理,不需要根据个数来安装相应个数的物理传感器驱动,这使得设计自识别自适应通用驱动的想法有了实现的可能性。本发明设想,只要驱动可以自行根据连接的硬件,识别出连接的传感器的类型,并根据传感器的类型判断出该传感器配置方案的类别和所需要的工作模式,自行适应调换到对应的工作模式上,便可以实现,只需要同一套驱动代码,同一个驱动,安装到所有的需要fusion算法库的传感器配置方案上。

基于此,本文提出了一种自识别自适应的适用于windows操作系统的传感器驱动方法和驱动系统,以解决前面提到的浪费不必要时间和精力的问题。

如图2所示,本发明给出的适用于windows操作系统的传感器驱动方法,包括:检测连接到应用处理器的传感器的工作模式21;将来自传感器的原始数据输入fusion算法库,并以该工作模式调用fusion算法库以计算出虚拟的传感器结果22;将该虚拟的传感器结果上报到应用处理器23。

其中,一方面,fusion算法库需要传感器的原始数据,例如传感器各轴向的数据,作为计算的基础;另一方面,fusion算法库需要传感器的工作模式,从而针对该模式进行调用。

在一个实施例中,检测连接到应用处理器的传感器的工作模式包括:识别传感器的类型,以获知传感器配置方案;基于获知的传感器配置方案判定所需的工作模式。

注意,本发明中的驱动方法即指一种驱动程序,其为一种连接应用处理器与物理传感器的桥梁,有了驱动程序,应用处理器就能与传感器进行通信。对于开发者而言,其为源程序或者源代码,对于用户而言,其为经过编译的目标程序。

本发明的驱动方法可以使用一套acpi表,而该acpi表不论硬件上有几个传感器与应用处理器连接,都会假设有例如三个i2c连接的传感器。

首先按照acpi表中三个i2c从地址,依次与传感器进行通信,并且得到该i2c从地址处传感器的芯片识别号(不管该地址处实际有没有传感器)。然后将得到的各个芯片识别号与预存的传感器的芯片识别号进行匹配,检测出连接的是哪种类型的传感器。在此步骤中,如果该芯片识别号与预存的传感器的芯片识别号相吻合,那么驱动方法开始定义工作模式,并且正常工作,但是如果因为传感器损坏或者与预存的传感器的芯片识别号不吻合,则判断硬件配置方案不合格,驱动方法停止工作。也就是说,该驱动方法以检测到的与预存的传感器芯片识别号吻合的传感器所定义的工作模式进行工作。如果在三个i2c从地址处均没有检测到传感器(包括传感器损坏),或者检测到的传感器的芯片识别号与预存的传感器芯片识别号均不符,则驱动方法停止工作。

当检测到硬件上仅仅连接了地磁传感器与加速度传感器时,选择compass工作模式;当检测到硬件上仅仅连接了陀螺仪传感器与加速度传感器时,选择imu工作模式;当检测到硬件上连接的了地磁传感器、加速度传感器与陀螺仪传感器时,选择ndof工作模式。这样,针对不同的传感器配置方案,得到不同的工作模式。在确定了工作模式之后,驱动方法以此工作模式调用fusion算法库,并上报以该工作模式调用fusion算法库所产生的虚拟传感器结果。这样就实现了不同传感器配置方案,使用同一个驱动方法。

为了实现上述驱动方法,该fusion算法库具备以下功能:该fusion算法库具有统一的输入接口和工作模式切换模块以根据不同的工作模式产生不同的输出。

此外,为了使应用处理器能够及时对驱动方法有所响应,在获知传感器配置方案后,将该传感器配置方案通报应用处理器;响应于该通报,应用处理器开放接口,接收来自fusion算法库的虚拟的传感器结果。

与本发明的自识别自适应驱动方法配套的acpi表可以针对任何传感器配置方案,当传感器配置方案变化时,一种情况是,传感器的i2c从地址没有变化,但增加或者减少了传感器,此时不需要重新改写acpi表中的i2c从地址,直接改变硬件连接后,驱动方法即可以正常工作;另一种情况是,传感器的i2c从地址发生了变化,此时也只要在bios中作地址的相应改变即可,不需要更换驱动方法,更不需要重新生成osimage。也就是说,对使用者来说,改变传感器配置方案后,最多只需要改变acpi表中的i2c从地址,不再需要更新整个驱动方法,减少了很多工作量,尤其是极大简化了使用者移植驱动的难度和时间。

对于开发者来说,减少了代码分支,只需要维护一套驱动代码,并且出现问题调试时,只需要统一用同一个调试文件来抓取信息进行分析,也减少了工作量。

如图3所示,本发明还提供了一种适用于windows操作系统的传感器驱动系统31,包括:工作模式检测装置32,用于检测连接到应用处理器的传感器的工作模式;调用装置33,用于将来自传感器的原始数据输入fusion算法库,并以该工作模式调用fusion算法库,由fusion算法库计算出虚拟的传感器结果;以及上报装置34,用于将该虚拟的传感器结果上报到应用处理器。

在一个实施例中,所述工作模式检测装置包括:识别装置,用于识别传感器的类型,以获知传感器配置方案;判定装置,用于基于获知的传感器配置方案判定所需的工作模式。

在一个实施例中,所述识别装置包括:寻址装置,用于按照acpi表中的i2c从地址与传感器依次通信,得到该i2c从地址处的传感器的芯片识别号;匹配装置,用于将得到的各传感器的芯片识别号与预存的芯片识别号进行匹配,以获知各传感器的类型。

在一个实施例中,在判定装置中:对于加速度传感器和陀螺仪传感器这种传感器配置方案,所需的工作模式为imu工作模式;对于加速度传感器和地磁传感器这种传感器配置方案,所需的工作模式为compass工作模式;对于加速度传感器、地磁传感器和陀螺仪传感器这种传感器配置方案,所需的工作模式为ndof工作模式。

在一个实施例中,该fusion算法库能够切换任意工作模式,具有统一的输入接口,且能够根据不同的工作模式产生不同的输出。

在一个实施例中,传感器驱动系统还包括通报装置,用于在获知传感器配置方案后,将该传感器配置方案通报应用处理器。响应于该通报,应用处理器开放接口,接收来自fusion算法库的虚拟的传感器结果。

当然,上述实施例中仅以硬件连接地磁传感器、加速度传感器与陀螺仪传感器这三种传感器作为例子,除了这三种传感器外,还可以连接其他种类的传感器,例如温度传感器、气压传感器等等,也就会产生更多传感器方案,以及更多的工作模式。本发明的传感器驱动方法和驱动系统对于这些传感器方案及工作模式都是适用的。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

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