一种MHL驱动的处理方法和装置与流程

文档序号:13221217阅读:549来源:国知局
技术领域本发明涉及移动终端技术领域,特别是涉及一种MHL驱动的处理方法和装置。

背景技术:
随着多媒体技术的迅速发展,MHL(MobileHigh-DefinitionLink,移动终端高清影音标准接口)随之出现,MHL是一种连接便携式电子装置的影音标准接口,移动终端所支持的MHL功能可以实现视频资源的传输,移动终端内部一般会内置HDMI(HighDefinitionMultimediaInterface,高清晰度多媒体接口),MHL芯片可以将源端HDMI信号转换为MHL信号,通过HDMI即可将视频资源等呈现于显示设备上。为了减少移动终端上硬件接口的数量,技术人员进一步考虑到了接口复用技术。移动终端上通常都会设置USB(UniversalSerialBus,通用串行总线)接口,因此,目前一般通过移动终端上已有的USB接口复用MHL,从而使移动终端的结构更加简单。由于基于USB接口复用MHL,因此USB接口还需要增加一MHL工作模式,进而对应于MHL工作模式,在移动终端中也需要加载一MHL驱动。目前,通常是在移动终端开机时直接将MHL驱动加载到移动终端的内存空间中,当有MHL设备插入USB接口时,USB接口工作于MHL工作模式,运行MHL驱动进行数据处理。但是,在没有MHL设备插入USB接口时,MHL驱动实际上是无需运行的,因此上述方法将浪费移动终端的内存空间和电源。

技术实现要素:
本发明提供一种MHL驱动的处理方法和装置,以解决目前的MHL驱动的处理方案浪费移动终端的内存空间和电源的问题。为了解决上述问题,本发明公开了一种MHL驱动的处理方法,所述MHL驱动预先保存在移动终端中,所述移动终端已加载PowerIC驱动,所述移动终端包括USB接口,所述方法包括:所述PowerIC驱动检测是否有MHL设备插入所述USB接口;若所述PowerIC驱动检测到有MHL设备插入所述USB接口,则触发加载所述MHL驱动;所述MHL驱动检测是否有MHL设备从所述USB接口拔出;若所述MHL驱动检测到有MHL设备从所述USB接口拔出,则触发卸载所述MHL驱动。优选地,所述USB接口包括USB_ID管脚;所述PowerIC驱动检测是否有MHL设备插入所述USB接口的步骤包括:所述PowerIC驱动在接收到所述USB_ID管脚的中断信号后,检测所述USB_ID管脚的电平;如果检测到所述USB_ID管脚的电平为低电平,则读取所述USB_ID管脚的对地电阻;如果所述USB_ID管脚的对地电阻的阻值为1KΩ,则确定有MHL设备插入所述USB接口。优选地,所述移动终端的操作系统为安卓操作系统,所述触发加载所述MHL驱动的步骤包括:所述PowerIC驱动调用预设的设备转换类,通过执行所述设备转换类向系统服务层上报MHL设备插入事件;所述系统服务层在监听到所述MHL设备插入事件后,向JAVA本地接口层发送MHL设备插入的通知;所述JAVA本地接口层在接收到所述MHL设备插入的通知后,向硬件适配层发送加载MHL驱动的通知;所述硬件适配层在接收到所述加载MHL驱动的通知后,获取所述MHL驱动在移动终端内核层中的保存路径,从所述保存路径下查找所述MHL驱动,并加载所述MHL驱动。优选地,所述USB接口包括USB_ID管脚;所述MHL驱动检测是否有MHL设备从所述USB接口拔出的步骤包括:所述MHL驱动在接收到所述USB_ID管脚的中断信号后,检测所述USB_ID管脚的电平;如果检测到所述USB_ID管脚的电平为高电平,则确定有MHL设备从所述USB接口拔出。优选地,所述移动终端的操作系统为安卓操作系统;所述触发卸载所述MHL驱动的步骤包括:所述MHL驱动调用预设的设备转换类,通过执行所述设备转换类向系统服务层上报MHL设备拔出事件;所述系统服务层在监听到所述MHL设备拔出事件后,向JAVA本地接口层发送MHL设备拔出的通知;所述JAVA本地接口层在接收到所述MHL设备拔出的通知后,向硬件适配层发送卸载MHL驱动的通知;所述硬件适配层在接收到所述卸载MHL驱动的通知后,获取所述MHL驱动在移动终端内核层中的安装路径,从所述安装路径下查找所述MHL驱动,并卸载所述MHL驱动。根据本发明的另一方面,还公开了一种MHL驱动的处理装置,所述MHL驱动预先保存在移动终端中,所述移动终端已加载PowerIC驱动,所述移动终端包括USB接口;所述装置包括PowerIC驱动单元和MHL驱动单元;其中,所述PowerIC驱动单元包括:插入检测模块,用于检测是否有MHL设备插入所述USB接口;触发加载模块,用于在所述插入检测模块检测到有MHL设备插入所述USB接口时,触发加载所述MHL驱动;所述MHL驱动单元包括:拔出检测模块,用于检测是否有MHL设备从所述USB接口拔出;触发卸载模块,用于在所述拔出检测模块检测到有MHL设备从所述USB接口拔出时,触发卸载所述MHL驱动。优选地,所述USB接口包括USB_ID管脚;所述插入检测模块包括:第一检测子模块,用于在接收到所述USB_ID管脚的中断信号后,检测所述USB_ID管脚的电平;电阻读取子模块,用于在所述第一检测子模块检测到所述USB_ID管脚的电平为低电平时,读取所述USB_ID管脚的对地电阻;插入确定子模块,用于在所述电阻读取子模块读取到所述USB_ID管脚的对地电阻的阻值为1KΩ时,确定有MHL设备插入所述USB接口。优选地,所述移动终端的操作系统为安卓操作系统,所述触发加载模块,具体用于调用预设的设备转换类,通过执行所述设备转换类向系统服务层上报MHL设备插入事件;所述装置还包括:系统服务层单元,用于在监听到所述MHL设备插入事件后,向JAVA本地接口层发送MHL设备插入的通知;JAVA本地接口层单元,用于在接收到所述MHL设备插入的通知后,向硬件适配层发送加载MHL驱动的通知;硬件适配层单元,用于在接收到所述加载MHL驱动的通知后,获取所述MHL驱动在移动终端内核层中的保存路径,从所述保存路径下查找所述MHL驱动,并加载所述MHL驱动。优选地,所述USB接口包括USB_ID管脚;所述拔出检测模块包括:第二检测子模块,用于在接收到所述USB_ID管脚的中断信号后,检测所述USB_ID管脚的电平;拔出确定子模块,用于在所述第二检测子模块检测到所述USB_ID管脚的电平为高电平时,确定有MHL设备从所述USB接口拔出。优选地,所述移动终端的操作系统为安卓操作系统;所述触发卸载模块,具体用于调用预设的设备转换类,通过执行所述设备转换类向系统服务层上报MHL设备拔出事件;所述装置还包括:系统服务层单元,用于在监听到所述MHL设备拔出事件后,向JAVA本地接口层发送MHL设备拔出的通知;JAVA本地接口层单元,用于在接收到所述MHL设备拔出的通知后,向硬件适配层发送卸载MHL驱动的通知;硬件适配层单元,用于在接收到所述卸载MHL驱动的通知后,获取所述MHL驱动在移动终端内核层中的安装路径,从所述安装路径下查找所述MHL驱动,并卸载所述MHL驱动。与现有技术相比,本发明包括以下优点:本发明中,通过PowerIC驱动检测是否有MHL设备插入移动终端中的USB接口,若PowerIC驱动检测到有MHL设备插入USB接口,则触发加载MHL驱动;通过MHL驱动检测是否有MHL设备从USB接口拔出,若MHL驱动检测到有MHL设备从USB接口拔出,则触发卸载MHL驱动。因此,本发明中对于加载MHL驱动的时机进行了限定,只有在有MHL设备插入USB接口,也即在需要运行MHL驱动时才会加载MHL驱动,因此可以避免在不需要运行MHL驱动但仍然加载MHL驱动时浪费移动终端的内存空间和电源的问题,达到节省内存空间和电源的目的。附图说明图1是本发明实施例一的一种MHL驱动的处理方法的步骤流程图;图2是本发明实施例二的一种MHL驱动的处理方法的步骤流程图;图3是本发明实施例二的一种安卓系统的架构示意图;图4是本发明实施例二的一种设备插入USB接口时MHL驱动处理方法的消息流程图;图5是本发明实施例二的一种设备从USB接口拔出时MHL驱动处理方法的消息流程图;图6是本发明实施例三的一种MHL驱动的处理装置的结构框图;图7是本发明实施例四的一种MHL驱动的处理装置的结构框图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。实施例一参照图1,示出了本发明实施例一的一种MHL驱动的处理方法的步骤流程图。该方法具体可以包括以下步骤:步骤101,PowerIC驱动检测是否有MHL设备插入USB接口。如果通过移动终端上的USB接口复用MHL,则USB接口还需要增加一MHL工作模式,进而对应于MHL工作模式,在移动终端中也需要加载一MHL驱动。本发明实施例中,可以预先将MHL驱动保存在移动终端中,此处的保存并不等同于加载,该保存只是将MHL驱动的相关文件保存在移动终端中(例如可以保存在移动终端的硬盘中),但是此时并未在移动终端中加载MHL驱动。移动终端中还安装有PowerIC(电源集成电路,PowerIC是指开关电源的脉宽控制集成电路,电源靠它来调整输出电压的稳定),在移动终端开机时将加载PowerIC驱动。本发明实施例中,可以通过该PowerIC驱动检测是否有MHL设备插入USB接口,对于检测的具体过程,将在实施例二中详细介绍。步骤102,若PowerIC驱动检测到有MHL设备插入USB接口,则触发加载MHL驱动。如果PowerIC驱动检测到有MHL设备插入USB接口,则说明此时USB接口需要工作于MHL工作模式,在MHL工作模式下需要运行MHL驱动,因此在PowerIC驱动检测到有MHL设备插入USB接口时,可以触发加载MHL驱动,通过运行该MHL驱动完成在MHL工作模式下的数据传输等动作。步骤103,MHL驱动检测是否有MHL设备从USB接口拔出。本发明实施例中,在加载MHL驱动后,还可以通过MHL驱动检测是否有MHL设备从USB接口拔出,对于检测的具体过程,将在实施例二中详细介绍。步骤104,若MHL驱动检测到有MHL设备从USB接口拔出,则触发卸载MHL驱动。如果MHL驱动检测到有MHL设备从USB接口拔出,则说明此时USB接口不再需要工作于MHL工作模式,即不再需要运行MHL驱动,因此在MHL驱动检测到有MHL设备从USB接口拔出时,可以触发卸载MHL驱动。本发明实施例中对于加载MHL驱动的时机进行了限定,只有在有MHL设备插入USB接口,也即在需要运行MHL驱动时才会加载MHL驱动,因此可以避免在不需要运行MHL驱动但仍然加载MHL驱动时浪费移动终端的内存空间和电源的问题,达到节省内存空间和电源的目的。实施例二参照图2,示出了本发明实施例二的一种MHL驱动的处理方法的步骤流程图。该方法具体可以包括以下步骤:步骤201,初始化。本发明实施例中,以移动终端的操作系统为安卓操作系统为例进行说明。参照图3,示出了本发明实施例二的一种安卓系统的架构示意图。该系统中包括:内核层、系统服务层、JAVA本地接口层、硬件适配层,其中,内核层包括:PowerIC驱动、MHL驱动、设备转换类。在系统软件初始化过程中,对应于本实施例中的MHL驱动处理过程会注册一些相应的函数。其中,在PowerIC驱动中会注册用于处理USB_ID管脚的中断信号的第一中断处理函数;在MHL驱动中会注册用于处理USB_ID管脚的中断信号的第二中断处理函数;在设备转换类中会注册用于上报MHL设备插入事件和MHL设备拔出事件的事件上报函数;在系统服务层中会注册用于监听设备转换类上报事件的事件监听函数和用于通知状态改变的MHL状态更新函数;在JAVA本地接口层中会注册本地文件加载函数和本地文件卸载函数;在硬件适配层中会注册MHL驱动加载函数和MHL驱动卸载函数。对于其中注册的各个函数的作用将在下面的步骤中进行介绍。步骤202,PowerIC驱动检测是否有MHL设备插入USB接口。本发明实施例中,USB接口可以包括VBUS、USB_ID、USB_DP、USB_DM和GND这五个管脚。其中,USB_ID管脚的常态为高电平,该管脚的电平变化会产生USB_ID管脚的中断信号。例如,当有USBOTG(OTG是On-The-Go的缩写,主要应用于各种不同的设备或移动设备间的联接,进行数据交换,OTG技术就是在没有Host的情况下,实现设备间的数据传送)设备或者MHL设备插入USB接口时,会将该USB_ID管脚的电平拉低(即USB_ID管脚的电平变为低电平),从而产生USB_ID管脚的中断信号;当有USBOTG设备或者MHL设备从USB接口拔出时,会将该USB_ID管脚的电平升高(即USB_ID管脚的电平变为高电平),从而产生USB_ID管脚的中断信号。需要说明的是,本文中所提到的USB_ID管脚的中断信号均是指由于USBOTG设备或MHL设备插入USB接口,或者由于USBOTG设备或MHL设备从USB接口拔出而产生的USB_ID管脚的中断信号。如果是其他设备,例如只用于被供电的设备(如USB电风扇)、普通的U盘等插入到USB接口或从USB接口拔出时,不会导致USB_ID管脚的电平变化,因此也不会产生USB_ID管脚的中断信号。在本发明的一种优选实施例中,该步骤202可以包括以下子步骤a1~子步骤a3:步骤a1,PowerIC驱动在接收到USB_ID管脚的中断信号后,检测USB_ID管脚的电平;当USBOTG设备或者MHL设备插入移动终端的USB接口时,硬件会上报关于USB_ID管脚的中断信号,移动终端中已加载的PowerIC驱动将接收到该USB_ID管脚的中断信号。PowerIC驱动在接收到USB_ID管脚的中断信号后,即可调用预先注册的第一中断处理函数,通过执行该第一中断处理函数检测USB_ID管脚的电平。如果USB_ID管脚为低电平,则可以继续执行后续子步骤a2和子步骤a3确定插入的外部设备的类型;如果USB_ID管脚为高电平,则不处理,即不继续执行子步骤a2和子步骤a3。步骤a2,如果检测到USB_ID管脚的电平为低电平,则读取USB_ID管脚的对地电阻;每个外部设备都对应有一个USB_ID管脚与地之间的电阻值,这个电阻跨接在外部设备上,例如对于支持MHL的智能电视,这个电阻设置在电视上,对于满足MHL协议的音频设备,这个电阻设置在音频设备上。如果PowerIC驱动通过执行第一中断处理函数检测到USB_ID管脚的电平为低电平,则可以进一步通过执行该第一中断处理函数以读取USB_ID管脚的对地电阻。步骤a3,如果USB_ID管脚的对地电阻的阻值为1KΩ,则确定有MHL设备插入USB接口。USBOTG设备和MHL设备在插入USB接口时,USB_ID管脚的对地电阻的阻值是不同的,根据MHL规范可知,MHL设备接入时USB_ID管脚的对地电阻的阻值为1KΩ。因此,如果检测出USB_ID管脚的对地电阻的阻值为1KΩ,则可以确定有MHL设备插入USB接口,否则确定没有MHL设备插入USB接口。步骤203,若PowerIC驱动检测到有MHL设备插入USB接口,则触发加载MHL驱动。如果PowerIC驱动检测到有MHL设备插入USB接口,则可以说明此时需要运行MHL驱动,因此PowerIC驱动将触发加载MHL驱动。在本发明的一种优选实施例中,该步骤203可以包括以下子步骤b1~子步骤b4:子步骤b1,PowerIC驱动调用预设的设备转换类,通过执行设备转换类向系统服务层上报MHL设备插入事件;PowerIC驱动在检测到有MHL设备插入USB接口时,将调用设备转换类,通过执行该设备转换类中预先注册的事件上报函数向系统服务层上报MHL设备插入事件。子步骤b2,系统服务层在监听到MHL设备插入事件后,向JAVA本地接口层发送MHL设备插入的通知;系统服务层调用预先注册的事件监听函数,通过执行该事件监听函数实时监听设备转换类上报的事件,在监听到设备转换类上报的MHL设备插入事件后,调用预先注册的MHL状态更新函数,通过执行该MHL状态更新函数向JAVA本地接口层发送MHL设备插入的通知。子步骤b3,JAVA本地接口层在接收到MHL设备插入的通知后,向硬件适配层发送加载MHL驱动的通知;JAVA本地接口层在接收到MHL设备插入的通知后,确定MHL的状态为插入USB接口,则调用预先注册的本地文件加载函数,通过执行该本地文件加载函数向硬件适配层发送加载MHL驱动的通知。子步骤b4,硬件适配层在接收到加载MHL驱动的通知后,获取MHL驱动在移动终端内核层中的保存路径,从保存路径下查找MHL驱动,并加载MHL驱动。本发明实施例中,可以预先将MHL驱动保存在移动终端内核层(移动终端硬盘)中,保存后可以记录该MHL驱动的保存路径。硬件适配层在接收到加载MHL驱动的通知后,确定需要加载MHL驱动,并获取MHL驱动在移动终端内核层中的保存路径,调用预先注册的MHL驱动加载函数,通过执行MHL驱动加载函数从该保存路径下查找预先保存的MHL驱动,并加载该MHL驱动,即将MHL驱动安装到移动终端内核层(移动终端内存)中。在本发明的一种优选实施例中,在MHL驱动加载成功后,内核层还可以向系统服务层返回MHL驱动加载成功的信息。例如,可以通过调用预先在内核层注册的MHL驱动加载状态函数,通过执行该MHL驱动加载状态函数向系统服务层返回MHL驱动加载成功的信息。系统服务层在接收到该MHL驱动加载成功的信息后,即可向JAVA本地接口层发送MHL驱动加载成功的通知。例如,可以通过调用预先在系统服务层注册的MHL驱动加载状态更新函数,通过执行该MHL驱动加载状态更新函数向JAVA本地接口层发送MHL驱动加载成功的通知。JAVA本地接口层在接收到MHL驱动加载成功的通知后,可以向硬件适配层发送设置MHL模式的通知。例如,可以通过调用预先在JAVA本地接口层注册的本地设置MHL模式函数,通过执行该本地设置MHL模式函数向硬件适配层发送设置MHL模式的通知。硬件适配层在接收到设置MHL模式的通知后,可以向MHL驱动发送MHL模式命令,以通知MHL驱动有MHL设备插入,需要切换到USB接口的MHL工作模式。例如,可以通过调用预先在MHL驱动注册的切换MHL模式函数,通过执行该切换MHL模式函数向MHL驱动发送MHL模式命令。步骤204,MHL驱动检测是否有MHL设备从USB接口拔出。本发明实施例中,在加载MHL驱动后,还可以通过MHL驱动检测是否有MHL设备从USB接口拔出。在本发明的一种优选实施例中,该步骤204可以包括以下子步骤c1~子步骤c2:子步骤c1,MHL驱动在接收到USB_ID管脚的中断信号后,检测USB_ID管脚的电平;由于本申请是在有MHL设备插入移动终端的USB接口时,加载MHL驱动,因此当MHL设备从移动终端的USB接口拔出时,硬件会上报关于USB_ID管脚的中断信号,移动终端中已加载的MHL驱动将接收到该USB_ID管脚的中断信号。MHL驱动在接收到该USB_ID管脚的中断信号后,即可调用预先注册的第二中断处理函数,通过执行该第二中断处理函数检测USB_ID管脚的电平。如果USB_ID管脚为高电平,则可以继续执行后续子步骤c2;如果USB_ID管脚为低电平,则不处理,即不继续执行子步骤c2。子步骤c2,如果检测到USB_ID管脚的电平为高电平,则确定有MHL设备从USB接口拔出。如果MHL驱动通过执行第二中断处理函数检测到USB_ID管脚的电平为高电平,则可以确定有MHL设备从USB接口拔出,否则确定没有MHL设备从USB接口拔出。步骤205,若MHL驱动检测到有MHL设备从USB接口拔出,则触发卸载MHL驱动。如果MHL驱动检测到有MHL设备从USB接口拔出,则可以说明此时不再需要运行MHL驱动,因此MHL驱动将触发卸载MHL驱动。在本发明的一种优选实施例中,该步骤205可以包括以下子步骤d1~子步骤d4:子步骤d1,MHL驱动调用预设的设备转换类,通过执行设备转换类向系统服务层上报MHL设备拔出事件;MHL驱动在检测到有MHL设备从USB接口拔出时,将调用设备转换类,通过执行该设备转换类中预先注册的事件上报函数向系统服务层上报MHL设备拔出事件。子步骤d2,系统服务层在监听到MHL设备拔出事件后,向JAVA本地接口层发送MHL设备拔出的通知;系统服务层调用预先注册的事件监听函数,通过执行该事件监听函数实时监听设备转换类上报的事件,在监听到设备转换类上报的MHL设备拔出事件后,调用预先注册的MHL状态更新函数,通过执行该MHL状态更新函数向JAVA本地接口层发送MHL设备拔出的通知。子步骤d3,JAVA本地接口层在接收到MHL设备拔出的通知后,向硬件适配层发送卸载MHL驱动的通知;JAVA本地接口层在接收到MHL设备插入的通知后,确定MHL的状态为从USB接口拔出,则调用预先注册的本地文件卸载函数,通过执行该本地文件卸载函数向硬件适配层发送卸载MHL驱动的通知。子步骤d4,硬件适配层在接收到卸载MHL驱动的通知后,获取MHL驱动在移动终端内核层中的安装路径,从安装路径下查找MHL驱动,并卸载MHL驱动。本发明实施例中,在加载MHL驱动后,即可将MHL驱动安装到移动终端内核层(移动终端内存)中,并记录该MHL驱动的安装路径。硬件适配层在接收到卸载MHL驱动的通知后,确定需要卸载MHL驱动,并获取MHL驱动在移动终端内核层中的安装路径,调用预先注册的MHL驱动卸载函数,通过执行MHL驱动卸载函数从该安装路径下查找已安装的MHL驱动,并卸载该MHL驱动,即将MHL驱动从移动终端内核层(移动终端内存)中删除。下面,结合图3所示的安卓系统的架构示意图,对基于安卓系统的MHL驱动处理方法进行介绍。参照图4,示出了本发明实施例二的一种设备插入USB接口时MHL驱动处理方法的消息流程图。该方法可以包括以下步骤:步骤1,当USBOTG设备或者MHL设备插入移动终端的USB接口时,USB接口会调用usbid_int_handler()函数上报该USB_ID管脚的中断信号至PowerIC驱动。步骤2,PowerIC驱动接收到USB_ID管脚的中断信号,调用is_present-mhl()函数(第一中断处理函数)检测是否是MHL设备插入USB接口。步骤3,PowerIC驱动在检测到有MHL设备插入USB接口时,调用Switch_Dev(设备转换类),执行该设备转换类中的mhl_state_uevent()函数(事件上报函数)向SystemService层(系统服务层)上报MHL设备插入事件,该mhl_state_uevent()函数中包括参数mhl_state,如果MHL设备插入USB接口,则mhl_state=1。在设计中定义了一个Switch_Dev,它可以采用uevent机制来上报MHL设备是插入还是拔出的状态给SystemService层。步骤4,SystemService层在监听到设备转换类上报的MHL设备插入事件后,调用handl_mhl_state_change()函数(MHL状态更新函数)向JNI层(JAVA本地接口层)发送MHL设备插入的通知,该handl_mhl_state_change()函数中包括上述参数mhl_state。在SystemService层里实现对这个上报事件的服务功能,这个服务被定义为MhlObserver类(MHL检测类),在这个MhlObserver类里需要实现下面几个功能:初始化功能,如初始化各个功能类的类型和数据类型等;通过onuevent方法来监听MHL状态变化的uevent事件;通过handl_mhl_state_change()方法向JNI层发送MHL设备插入或拔出的通知;异常处理机制,如遇到异常的数据格式不配备,MHL状态异常错误等。步骤5,JNI层在接收到MHL设备插入的通知后,如果参数mhl_state=1,则调用native_load_file()函数(本地文件加载函数)向HAL层(硬件适配层)发送加载MHL驱动的通知。步骤6,HAL层在接收到加载MHL驱动的通知后,调用mhl_load_driver()函数(MHL驱动加载函数)从移动终端内核层的保存路径下查找MHL驱动,并加载MHL驱动。具体可以采用insmod机制去加载MHL驱动(MHL对应的.ko文件)到Kernel层(内核层)的内存中。insmode是靠Kernel层里定义的系统调用实现的,此系统调用分配Kernel层的内存空间给相应的模块,如MHL驱动模块,然后将MHL驱动拷贝到内存空间里,接着声明内核层引用该MHL驱动模块,并把MHL驱动注册在系统中。步骤7,Kernel层在HAL层成功加载MHL驱动后,调用mhl_load_state()函数(MHL驱动加载状态函数)向SystemService层返回MHL驱动加载成功的信息。步骤8,SystemService层接收到MHL驱动加载成功的信息后,调用mhl_load_state_change()函数(MHL驱动加载状态更新函数)向JNI层发送MHL驱动加载成功的通知。步骤9,JNI层在接收到MHL驱动加载成功的通知后,调用native_set_mhl_mode()函数(本地设置MHL模式函数)向HAL层发送设置MHL模式的通知。步骤10,HAL层在接收到设置MHL模式的通知后,调用mhl_mode_cmd()函数(切换MHL模式函数)向MHL驱动发送切换MHL模式命令。参照图5,示出了本发明实施例二的一种设备从USB接口拔出时MHL驱动处理方法的消息流程图。该方法可以包括以下步骤:步骤1,当MHL设备从移动终端的USB接口拔出时,USB接口会调用mhl_removed()函数上报该USB_ID管脚的中断信号至MHL驱动。步骤2,MHL驱动接收到USB_ID管脚的中断信号,调用mhl_disconnected()函数(第二中断处理函数)检测是否MHL设备从USB接口拔出。步骤3,MHL驱动在检测到有MHL设备从USB接口拔出时,调用Switch_Dev(设备转换类),执行该设备转换类中的mhl_state_uevent()函数(事件上报函数)向SystemService层(系统服务层)上报MHL设备拔出事件,该mhl_state_uevent()函数中包括参数mhl_state,如果MHL设备从USB接口拔出,则mhl_state=0。步骤4,SystemService层在监听到设备转换类上报的MHL设备拔出事件后,调用handl_mhl_state_change()函数(MHL状态更新函数)向JNI层(JAVA本地接口层)发送MHL设备拔出的通知,该handl_mhl_state_change()函数中包括上述参数mhl_state。步骤5,JNI层在接收到MHL设备拔出的通知后,如果参数mhl_state=0,则调用native_unload_file()函数(本地文件卸载函数)向HAL层(硬件适配层)发送卸载MHL驱动的通知。步骤6,HAL层在接收到卸载MHL驱动的通知后,调用mhl_unload_driver()函数(MHL驱动卸载函数)从移动终端内核层的安装路径下查找MHL驱动,并卸载MHL驱动。具体可以采用rmmod机制从Kernel层的内存中卸载MHL驱动。根据上述图4和图5所示的流程可知,JNI层包括的API(ApplicationProgrammingInterface,应用程序编程接口)功能函数如下:(1)privatenativeintnative_load_file();该函数在上述图4中的步骤5中使用,该函数的功能为调用native_load_file()函数向HAL层发送加载MHL驱动的通知。(2)privatenativeintnative_set_mhl_mode()。该函数在上述图4中的步骤9中使用,该函数的功能为调用native_set_mhl_mode()函数向HAL层发送设置MHL模式的通知。(3)privatenativeintnative_unload_file();该函数在上述图5中的步骤5中使用,该函数的功能为调用native_unload_file()函数向HAL层发送卸载MHL驱动的通知。HAL层包括的API功能函数如下:(1)intmhl_load_driver();该函数在上述图4中的步骤6中使用,该函数的功能为调用mhl_load_driver()函数从内核层的保存路径下查找MHL驱动,并加载MHL驱动。(2)intmhl_unload_driver()。该函数在上述图5中的步骤6中使用,该函数的功能为调用mhl_unload_driver()函数从内核层的安装路径下查找MHL驱动,并卸载MHL驱动。本发明实施例中,在有MHL设备插入USB接口时加载MHL驱动,在有MHL设备从USB接口拔出时卸载MHL驱动,因此能够节省内存空间和电源,使用灵活。采用设备转换类的uevent机制来实现事件的上报,即可以使用已有的系统机制来实现事件的上报,从而使代码实现更简单化。对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。实施例三参照图6,示出了本发明实施例三的一种MHL驱动的处理装置的结构框图。该装置具体可以包括以下单元:PowerIC驱动单元601和MHL驱动单元602。其中,PowerIC驱动单元601包括:插入检测模块6011,用于检测是否有MHL设备插入USB接口;触发加载模块6012,用于在插入检测模块检测到有MHL设备插入USB接口时,触发加载MHL驱动;MHL驱动单元602包括:拔出检测模块6021,用于检测是否有MHL设备从USB接口拔出;触发卸载模块6022,用于在拔出检测模块检测到有MHL设备从USB接口拔出时,触发卸载MHL驱动。本发明实施例中,通过PowerIC驱动检测是否有MHL设备插入移动终端中的USB接口,若PowerIC驱动检测到有MHL设备插入USB接口,则触发加载MHL驱动;通过MHL驱动检测是否有MHL设备从USB接口拔出,若MHL驱动检测到有MHL设备从USB接口拔出,则触发卸载MHL驱动。因此,本发明实施例中对于加载MHL驱动的时机进行了限定,只有在有MHL设备插入USB接口,也即在需要运行MHL驱动时才会加载MHL驱动,因此可以避免在不需要运行MHL驱动但仍然加载MHL驱动时浪费移动终端的内存空间和电源的问题,达到节省内存空间和电源的目的。实施例四参照图7,示出了本发明实施例四的一种MHL驱动的处理装置的结构框图。该装置具体可以包括以下单元:PowerIC驱动单元701、MHL驱动单元702、系统服务层单元703、JAVA本地接口层单元704和硬件适配层单元705。其中,PowerIC驱动单元701包括:插入检测模块7011,用于检测是否有MHL设备插入USB接口;插入检测模块包括:第一检测子模块,用于在接收到USB_ID管脚的中断信号后,检测USB_ID管脚的电平;电阻读取子模块,用于在第一检测子模块检测到USB_ID管脚的电平为低电平时,读取USB_ID管脚的对地电阻;插入确定子模块,用于在电阻读取子模块读取到USB_ID管脚的对地电阻的阻值为1KΩ时,确定有MHL设备插入USB接口。触发加载模块7012,用于在插入检测模块检测到有MHL设备插入USB接口时,触发加载MHL驱动;移动终端的操作系统为安卓操作系统,触发加载模块,具体用于调用预设的设备转换类,通过执行设备转换类向系统服务层上报MHL设备插入事件;MHL驱动单元702包括:拔出检测模块7021,用于检测是否有MHL设备从USB接口拔出;拔出检测模块包括:第二检测子模块,用于在接收到USB_ID管脚的中断信号后,检测USB_ID管脚的电平;拔出确定子模块,用于在第二检测子模块检测到USB_ID管脚的电平为高电平时,确定有MHL设备从USB接口拔出。触发卸载模块7022,用于在拔出检测模块检测到有MHL设备从USB接口拔出时,触发卸载MHL驱动。移动终端的操作系统为安卓操作系统,触发卸载模块,具体用于调用预设的设备转换类,通过执行设备转换类向系统服务层上报MHL设备拔出事件。系统服务层单元703,用于在监听到MHL设备插入事件后,向JAVA本地接口层发送MHL设备插入的通知;以及,在监听到MHL设备拔出事件后,向JAVA本地接口层发送MHL设备拔出的通知;JAVA本地接口层单元704,用于在接收到MHL设备插入的通知后,向硬件适配层发送加载MHL驱动的通知;以及,在接收到MHL设备拔出的通知后,向硬件适配层发送卸载MHL驱动的通知;硬件适配层单元705,用于在接收到加载MHL驱动的通知后,获取MHL驱动在移动终端内核层中的保存路径,从保存路径下查找MHL驱动,并加载MHL驱动;以及,在接收到卸载MHL驱动的通知后,获取MHL驱动在移动终端内核层中的安装路径,从安装路径下查找MHL驱动,并卸载MHL驱动。本发明实施例中对于加载MHL驱动的时机进行了限定,只有在有MHL设备插入USB接口,也即在需要运行MHL驱动时才会加载MHL驱动,因此可以避免在不需要运行MHL驱动但仍然加载MHL驱动时浪费移动终端的内存空间和电源的问题,达到节省内存空间和电源的目的。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。以上对本发明所提供的一种MHL驱动的处理方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1