具体实施方式
本发明实施例提供一种移动终端的开机启动方法及装置,在对液晶面板LCD进行数据刷新的同时,对MDP、MIPIDSI及LCDIC进行内核启动阶段的初始化,在开机阶段由用于开发移动终端的平台的主控CPU进行液晶显示,避免了由于用于开发移动终端的平台和LCDIC之间的状态机的不稳定,进而避免了启动移动终端时出现定屏现象。
如图1所示,本发明实施例提供一种移动终端的开机启动方法,包括:
S101、启动移动行业处理器接口主数据路径MIPIMDP时钟,并使其保持打开状态;
S102、在对LCD进行数据刷新的同时,对MDP、MIPIDSI及LCDIC进行内核启动阶段的初始化。
当在内核启动阶段进行各外围设备的加载和初始化时,暂时推迟MDP,MIPIDSI,LCDIC的内核启动阶段的初始化。在对LCD进行数据刷新时,再对MDP,MIPIDSI及LCDIC进行内核启动阶段的初始化。在这之前,主要还是延续由用于开发移动终端的平台的主控CPU在启动阶段完成的显示工作,MDP仍然从原始设备厂商的OEMSBL的显示缓冲区中持续刷新LOGO数据,直至对LCD进行数据刷新时,即开机LOGO显示结束。从而避免了用于开发移动终端的平台和LCDIC在进行状态切换时的状态异常的情况,也避免了移动终端出现定屏的问题,其中用于开发移动终端的平台的主控CPU,主要用来执行通讯数据相关任务以及相应应用处理器(AP)的任务请求。
其中,步骤S102中的对LCD进行数据刷新,可以具体为打开LCD的帧缓存器(Framebuffer)。
MDP,MIPIDSI,LCDIC的内核启动阶段的初始化包括:在应用程序的执行过程中触发执行驱动程序的驱动单元对MDP、MIPIDSI、LCDIC进行注册,同时,加载LCD及背光设备对应的程序,从而由LCD及背光设备对应的程序启动LCD及背光设备。
通常,驱动程序位于移动终端的操作系统的内核空间中,应用程序位于移动终端的操作系统的用户空间中。
触发驱动单元对MDP,MIPIDSI,LCDIC进行注册,具体包括:
确定存在用于标志未进行MDP、MIPIDSI及LCDIC注册的注册节点;
触发所述驱动单元对MDP,MIPIDSI,LCDIC进行注册。
具体的,如图2所示,为了实现MDP,MIPIDSI,LCDIC的内核启动阶段的初始化的推迟,主要涉及到修改的步骤如下:
S201、对内核启动前的引导程序(Appsboot)进行修改,使MIPIMDP时钟在内核启动时保持打开状态,从而保证显示部分的硬件设备在内核启动时保持工作,使MDP,MIPIDSI,LCDIC的内核启动阶段可以随时进行初始化;
S202、对驱动程序(例如late_display.c)进行修改,在驱动程序中通过修改内核默认配置文件(defconfig)中的注册时间全局变量(intlate_display),延后MDP、MIPIDSI、LCDIC在驱动程序中的注册时间,并在驱动程序中增加注册节点,使得应用程序在刷新第一帧数据时访问驱动程序,确定驱动程序中是否包括该注册节点,当访问到驱动程序中的该节点时,再令驱动程序进行MDP,MIPIDSI,LCDIC的注册;
具体的,在内核中要修改显示相关的初始化文件(例如module_init)所加载的函数,并且根据defconfig中的延迟注册选项来确定需要将驱动程序对MDP,MIPIDSI,LCDIC的注册时间延后,其中,显示相关的初始化文件可以具体为mdp.c、msm_fb.c、mipi_dsi.c、mipi_lcd.c等;
同时,还需要在驱动程序中建立注册节点,应用程序在刷新第一帧数据时访问驱动程序,确定驱动程序中是否包括该注册节点,如果包括该注册节点,则使驱动程序进行MDP,MIPIDSI,LCDIC的注册,然后应用程序对相应的硬件设备进行加载,实现MDP,MIPIDSI,LCDIC初始化,具体的,在驱动程序中增加注册节点,具体为在内存虚拟盘文件系统(ramdiskfs)中添加该注册节点,在驱动程序中建立的注册节点可以为:/dev/late_display/control。
S203、对应用程序进行修改,使得应用程序对LCD进行数据刷新时访问驱动程序,并在确认确定驱动程序中存在注册节点时,令驱动程序进行MDP,MIPIDSI,LCDIC的注册;
在移动终端的操作系统的系统构架中,内核驱动程序操作的硬件设备以一个中间层抽象以库文件的形式呈献给应用程序访问,为了保证系统的安全性,应用程序访问驱动程序的硬件设备接口需要进行权限的验证,所以应用程序不能直接访问驱动程序,因此,要实现MDP,MIPIDSI,LCDIC的内核启动阶段的初始化的推迟,还包括:
S204、更改应用程序的权限,使应用程序可以访问驱动程序。
其中,S201-S204的执行顺序可以进行调整,实际应用中,本领域技术人员可以选择较佳的顺序来执行S201、S202、S203、S204,也可以选择同时执行S201、S202、S203、S204。
这样,驱动程序在运行至defconfig配置文件中的注册时间全局变量时,即确定延迟进行MDP,MIPIDSI,LCDIC的注册,直至应用程序对LCD进行数据刷新时,访问驱动程序,若确定驱动程序中存在/dev/late_display/control节点,即说明驱动程序未进行MDP,MIPIDSI,LCDIC的注册,再使驱动程序完成MDP,MIPIDSI,LCDIC的注册,然后应用程序再对应用程序对LCD及背光设备对应的程序的加载,从而由LCD及背光设备对应的程序启动LCD及背光设备,实现MDP,MIPIDSI,LCDIC初始化。
当然,本领域的技术人员可以采用其他可行方式实现MDP,MIPIDSI,LCDIC的内核启动阶段的初始化的推迟,此处只是给出较佳的实施方式,不再一一叙述。
较佳的,本发明实施例在对MDP,MIPIDSI,LCDIC进行内核启动阶段的初始化后,还包括:
通过Framebuffer按照预先设定的帧率显示预先设定的图片,直至切换虚拟控制台启动。
具体的,可以将Framebuffer中的图标替换为预先设定的图片,即可由Framebuffer显示该预先设定的图片;可以通过修改定时器的定时时间的方式,设定图片的显示帧率,从而获得较佳的动画效果。
此时,在达到内核定时器预先设定时间时,即可显示预先设定的图片,当按照设定的帧率连续显示多张图片时,即可实现开机动画的显示。
具体的,如图3所示,可以通过如下设置实现通过Framebuffer按照预先设定的帧率显示预先设定的图片:
S301、为定时器设定时间以确定动画帧频。
S302、修改logo.c文件,将Framebuffer显示的图标修改为预先设定的图片。
具体的,可以将要显示的图片转换成数组,并编译到内核中的定时器函数中,当达到定时器设定时间时,从定时器函数中读取一幅图片的数据,并将该图片数据写入Framebuffer中,从而通过Framebuffer显示该图片,当再次达到定时器设定时间时,从定时器函数中读取第二幅图片的数据,实际应用中,也可以循环读取定时器函数中的图片。较佳的,可以将图片转换成行程长度压缩编码(Run-LengthEncoded,RLE)数组;当然,本领域的技术人员可以采用其他可行方式显示开机动画,此处不再一一叙述。
在启动移动终端后,若需要使移动终端进行休眠,可以选择深度睡眠(deepsleep)休眠模式或者备用(STANDBY)休眠模式,其中,deepsleep休眠模式即为在退出休眠模式时,需要在内核启动阶段对LCD进行复位及初始化的操作的休眠模式,这种休眠模式的功耗比较小,然而用户等待时间长,要消耗300ms-1s左右的时间,用户体验差,而唤醒STANDBY休眠模式时,在内核启动阶段只需要控制LCDIC进入和退出休眠即可,可以控制在150ms以内,用户体验较好,然而其耗能较多。
较佳的,可以在进入休眠时将MIPI设置成超低功耗模式,从而有效的降低LCD的待机功耗,将STANDBY模式的LCD待机功耗降低到DEEPSLEEP模式相同的水平。
因此,本发明实施例提供的移动终端的开机启动方法,还包括:
当进入STANDBY休眠模式时,将移动行业处理器接口MIPI置于超低功耗模式。
其中,超低功耗模式具体为:LCD功耗低于0.05MA的模式。
较佳的,为了提高打开背光的速度,获得较好的用户体验,可以在刷新第一帧数据时打开背光,即,在LCD从休眠模式中被唤醒时,当应用程序开始刷新第一帧数据时,根据预先设置的背光亮度点亮背光。
具体的,如图4所示,本发明实施例提供的移动终端的开机启动方法还包括:
S401、接收退出STANDBY休眠模式的指令;
S402、当对LCD进行第一帧数据刷新时,根据预先设置的背光亮度点亮背光。
如图5所示,本发明实施例提供一种移动终端的开机启动装置,包括:
启动单元501,用于启动移动行业处理器接口主数据路径MIPIMDP时钟,并使其保持打开状态;
应用单元502,用于在对液晶面板LCD进行数据刷新的同时,对MDP、MIPIDSI及LCDIC进行内核启动阶段的初始化。
当在内核启动阶段进行各外围设备的加载和初始化时,暂时推迟MDP,MIPIDSI,LCDIC的内核启动阶段的初始化。在对LCD进行数据刷新时,再对MDP,MIPIDSI及LCDIC进行内核启动阶段的初始化。在这之前,主要还是延续由用于开发移动终端的平台的主控CPU在启动阶段时完成的显示工作,MDP仍然从OEMSBL的显示缓冲区中持续刷新LOGO数据,直至对LCD进行数据刷新时,即开机LOGO显示结束。从而避免了用于开发移动终端的平台和LCDIC在进行状态切换时的状态异常的情况,也避免了LCD显示开机LOGO时出现定屏的问题,其中用于开发移动终端的平台的主控CPU,主要用来执行通讯数据相关任务以及相应AP的任务请求。
其中,应用单元中的对LCD进行数据刷新,可以具体为打开LCD的Framebuffer。
较佳的,如图6所示,本发明实施例提供的移动终端开机启动装置还包括:
驱动单元503,用于对MDP,MIPIDSI,LCDIC进行注册;
MDP,MIPIDSI,LCDIC的内核启动阶段的初始化包括:在应用程序的执行过程中触发执行驱动程序的驱动单元503对MDP、MIPIDSI、LCDIC进行注册,同时,加载LCD及背光设备对应的程序,从而由LCD及背光设备对应的程序启动LCD及背光设备。
通常,驱动程序位于移动终端的操作系统的内核空间中,应用程序位于移动终端的操作系统的用户空间中。
应用单元502触发驱动单元503对MDP,MIPIDSI,LCDIC进行注册,具体用于:
确定存在用于标志未进行MDP、MIPIDSI及LCDIC注册的注册节点;
触发驱动单元503对MDP,MIPIDSI,LCDIC进行注册。
具体的,为了实现MDP,MIPIDSI,LCDIC的内核启动阶段的初始化的推迟,主要涉及到修改如下:
对内核启动前的引导程序Appsboot进行修改,使MIPIMDP时钟在内核启动时保持打开状态,从而保证显示部分的硬件设备在内核启动时保持工作,使MDP,MIPIDSI,LCDIC的内核启动阶段可以随时进行初始化;
对驱动程序(例如late_display.c)进行修改,在驱动程序中通过修改defconfig中的intlate_display,延后MDP、MIPIDSI、LCDIC在驱动程序中的注册时间,并在驱动程序中增加注册节点,使得应用程序在刷新第一帧数据时访问驱动程序,访问驱动程序确定驱动程序中是否包括该注册节点,当访问到驱动程序中的该节点时,再令驱动程序进行MDP,MIPIDSI,LCDIC的注册;
具体的,在内核中要修改显示相关的初始化文件(例如module_init)所加载的函数,并且根据defconfig中的延迟注册选项来确定需要将驱动程序对MDP,MIPIDSI,LCDIC的注册时间延后,其中,显示相关的初始化文件可以具体为mdp.c、msm_fba.c、mipi_dsi.c、mipi_lcd.c等函数;
同时,还需要在驱动程序中建立注册节点,应用程序在刷新第一帧数据时访问驱动程序,确定驱动程序中是否包括该注册节点,如果包括该注册节点,则使驱动程序进行MDP,MIPIDSI,LCDIC的注册,然后应用程序对相应的硬件设备进行加载,实现MDP,MIPIDSI,LCDIC初始化,具体的,在驱动程序中增加注册节点,具体为在ramdiskfs中添加该注册节点,在驱动程序中建立的注册节点可以为:/dev/late_display/control。
对应用程序进行修改,使得应用程序对LCD进行数据刷新时访问驱动程序,并在确认确定驱动程序中存在注册节点时,令驱动程序进行MDP,MIPIDSI,LCDIC的注册;
在移动终端的操作系统的系统构架中,内核驱动程序操作的硬件设备以一个中间层抽象以库文件的形式呈献给应用程序访问,为了保证系统的安全性,应用程序访问驱动程序的硬件设备接口需要进行权限的验证,所以应用程序不能直接访问驱动程序,因此,要实现MDP,MIPIDSI,LCDIC的内核启动阶段的初始化的推迟,还包括:
更改应用程序的权限,使应用程序可以访问驱动程序。
这样,驱动程序在运行至defconfig配置文件中的注册时间全局变量时,即确定延迟进行MDP,MIPIDSI,LCDIC的注册,直至应用程序对LCD进行数据刷新时,访问驱动程序,若确定驱动程序中存在/dev/late_display/control节点,即说明驱动程序未进行MDP,MIPIDSI,LCDIC的注册,再使驱动程序完成MDP,MIPIDSI,LCDIC的注册,然后应用程序再对应用程序对LCD及背光设备对应的程序的加载,从而由LCD及背光设备对应的程序启动LCD及背光设备,实现MDP,MIPIDSI,LCDIC初始化。
当然,本领域的技术人员可以采用其他可行方式实现MDP,MIPIDSI,LCDIC的内核启动阶段的初始化的推迟,此处只是给出较佳的实施方式,不再一一叙述。
较佳的,本发明实施例在对MDP,MIPIDSI,LCDIC进行内核启动阶段的初始化后,还包括:
通过Framebuffer按照预先设定的帧率显示预先设定的图片,直至切换虚拟控制台启动。
具体的,可以将Framebuffer中的图标替换为预先设定的图片,即可由Framebuffer显示该预先设定的图片;可以通过修改定时器的定时时间的方式,设定图片的显示帧率,从而获得较佳的动画效果。
此时,在达到内核定时器预先设定时间时,即可显示预先设定的图片,当按照设定的帧率连续显示多张图片时,即可实现开机动画的显示。
具体的,可以通过如下设置实现通过Framebuffer按照预先设定的帧率显示预先设定的图片:
为定时器设定时间以确定动画帧频。
修改logo.c文件,将Framebuffer显示的图标修改为预先设定的图片。
具体的,可以将要显示的图片转换成数组,并编译到内核中的定时器函数中,当达到定时器设定时间时,从定时器函数中读取一幅图片的数据,并将该图片数据写入Framebuffer中,从而通过Framebuffer显示该图片,当再次达到定时器设定时间时,从定时器函数中读取第二幅图片的数据,实际应用中,也可以循环读取定时器函数中的图片。较佳的,可以将图片转换成RLE数组;当然,本领域的技术人员可以采用其他可行方式显示开机动画,此处不再一一叙述。
在启动移动终端后,若需要使移动终端进行休眠,可以选择深度睡眠(deepsleep)休眠模式或者备用(STANDBY)休眠模式,其中,deepsleep休眠模式即为在退出休眠模式时,需要在内核启动阶段对LCD进行复位及初始化的操作的休眠模式,这种休眠模式的功耗比较小,然而用户等待时间长,要消耗300ms-1s左右的时间,用户体验差,而唤醒STANDBY休眠模式时,在内核启动阶段只需要控制LCDIC进入和退出休眠即可,可以控制在150ms以内,用户体验较好,然而其耗能较多。
较佳的,可以在进入休眠时将MIPI设置成超低功耗模式,从而有效的降低LCD的待机功耗,将STANDBY模式的LCD待机功耗降低到DEEPSLEEP模式相同的水平。
因此,本发明实施例提供的移动终端的开机启动方法,还包括:
当进入STANDBY休眠模式时,将MIPI置于超低功耗模式。
其中,超低功耗模式具体为:LCD功耗低于0.05MA的模式。
较佳的,为了提高打开背光的速度,获得较好的用户体验,可以在刷新第一帧数据时打开背光,即,在LCD从休眠模式中被唤醒时,当应用程序开始刷新第一帧数据时,根据预先设置的背光亮度点亮背光。
具体的,如图7所示,本发明实施例提供的移动终端的开机启动装置还包括:
接收单元601,用于接收退出STANDBY休眠模式的指令;
点亮单元602,用于当对LCD进行第一帧数据刷新时,根据预先设置的背光亮度点亮背光。
本发明实施例提供一种移动终端的开机启动方法及装置,在对液晶面板LCD进行数据刷新的同时,对MDP、MIPIDSI及LCDIC进行内核启动阶段的初始化,在开机阶段由用于开发移动终端的平台的主控CPU进行液晶显示,避免了由于用于开发移动终端的平台和LCDIC之间的状态机的不稳定,进而避免了启动移动终端时出现定屏现象。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。