一种应用于人机界面启动过程中的屏幕抗闪烁的方法与流程

文档序号:15888438发布日期:2018-11-09 19:48阅读:495来源:国知局
一种应用于人机界面启动过程中的屏幕抗闪烁的方法与流程

本发明涉及计算机技术领域,具体是一种应用于人机界面启动过程中的屏幕抗闪烁的方法。



背景技术:

人机界面在从boot启动到linux内核的过程中,lcd液晶会从一个无操作系统的软件运行环境切换到有高级操作系统的软件运行环境。两个软件的运行环境没有任何关系,其各自会初始化自己所使用的软硬件资源,导致lcd液晶被初始化2次,两次之间的生硬切换,导致了显示屏的启动过程中的抖动。

此类问题不但广泛存在于嵌入式linux操作系统,也存在于windows系列、rtos等操作系统。因此,针对这一现状,迫切需要开发一种应用于人机界面启动过程中的屏幕抗闪烁的方法,以克服当前实际应用中的不足。



技术实现要素:

本发明的目的在于提供一种应用于人机界面启动过程中的屏幕抗闪烁的方法,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:

通过控制boot与操作系统切换时的cpu的lcd控制器的初始化过程与动态缓存切换的过程,从lcd液晶的角度出发,对液晶屏幕的闪烁原因进行了有效规避。即利用lcd液晶时序上的输入特定,通过在boot和内核的代码切换时的特殊处理,达到lcd屏幕无任何闪烁的启动。其具体实现步骤如下:

步骤1,启动boot软件;

步骤2,初始化cpu的lcd控制器信号;

步骤3,去掉内核lcd控制器设置功能;

步骤4,启动内核,打开lcd帧同步中断;

步骤5,申请内核虚拟显示缓存,拷贝当前液晶画面数据到虚拟显存;

步骤6,帧同步中断中,切换内核framebuffer基地址到虚拟显存;

步骤7,关闭切换后的首次帧同步中断,继续正常启动系统。

一种应用于人机界面启动过程中的屏幕抗闪烁的方法,包括:

boot的改动,是使用本方法,处理了lcd显示的初始化;

内核代码,是使用本方法,处理虚拟显存和帧同步中断的切换。

与现有技术相比,本发明的有益效果是:

该方法对boot的液晶初始化参数,不做大幅的改动,关闭cpu的lcd控制器中断,当从boot切换到内核启动时,去掉内核的液晶初始化功能,也即产生液晶闪烁的主要原因,通过打开帧同步中断时,拷贝lcd液晶的内容到内核虚拟缓存区,再进行实地址与虚拟地址的切换,并且在首次切换完成后,立即关掉帧同步中断,从而从根本上避免了液晶在操作系统启动时的闪烁问题,极大的改善了人机界面的启动过程中的液晶显示的用户体验。

附图说明

图1是本发明的boot液晶初始化流程图。

图2是本发明的linux操作系统液晶初始化流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示是本发明的boot液晶初始化流程图。描述在启动第一阶段的代码中,对液晶的初始化过程,其中的关键点在于关闭中断,不允许cpu使能液晶中断,把对中断的首次处理留在操作系统层进行设置,仅设置lcd时序与引脚配置,同时拷贝需要显示的启动logo到物理内存,并点亮液晶屏幕。

如图2中的操作系统中的液晶初始化流程图中所示,主要对操作系统进行如下3点修改:

1.去掉cpu的lcd寄存器初始化,使用boot下的初始化功能替代。在内核显卡驱动加载时,修改默认的lcd初始化过程,去掉lcd寄存器的修改部分,特别是lcd时钟的开关。

2.显示logo从物理内存拷贝到framebuffer虚拟显存地址。在内核申请完framebuffer显存,并获得显存占用的虚拟地址后,根据boot中的物理显存地址,ioremap映射出物理显存对应的虚拟地址,将此虚拟地址上的logo数据,也即当前液晶上显示的内容,拷贝到已经申请成功的framebuffer显存上,在framebuffer地址赋值到lcd显存寄存器前,执行步骤3的改动。

3.在打开帧完成中断的首次中断中,切换lcd控制器的显存地址寄存器,由物理显存地址改为framebuffer的虚拟显存地址,因为已经做了步骤2的改动,因此framebuffer中实际保存的是boot下加载的logo图片。同时,因为在帧完成中断里才进行的此拷贝,当关闭此中断,并退出中断后,下一时刻的lcd刷新数据,正好是logo图片的内容。

通过控制cpu的lcd控制器的初始化与logo在物理显存与虚拟显存的切换时刻,防止液晶屏幕在启动过程中的闪烁。cpu的lcd控制器,输出到液晶屏幕上的内容,在操作系统启动时,使用唯一的初始化过程,并且通过帧完成中断的时间节点进行logo显示内容的切换。使framebuffer的虚拟显存地址在第一次被使用前,就填充启动logo图片,且去掉内核对cpu的lcd控制器的二次初始化,只修改显存寄存器,在显存切换完成后,关闭lcd中断,使lcd液晶屏幕在整个操作系统启动过程中,没有任何的画面闪动。

从lcd液晶屏幕的角度看,无论是显示的内容,液晶的时序,时钟的稳定性都没有任何的变化,即完成了boot程序到操作系统的顺利切换,而不再有任何的闪烁情况发生,极大的改善了人机界面的启动过程中的液晶显示的用户体验。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

以上的仅是本发明的优选实施方式,应当指出,对于本领域的技术人员来说,在不脱离本发明构思的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。



技术特征:

技术总结
本发明公开了一种应用于人机界面启动过程中的屏幕抗闪烁的方法,包括以下步骤:启动BOOT软件;初始化CPU的LCD控制器信号;去掉内核LCD控制器设置功能;启动内核,打开LCD帧同步中断;申请内核虚拟显示缓存,拷贝当前液晶画面数据到虚拟显存;帧同步中断中,切换内核Framebuffer基地址到虚拟显存;关闭切换后的首次帧同步中断,继续正常启动系统。该方法通过打开帧同步中断时,拷贝LCD液晶的内容到内核虚拟缓存区,再进行实地址与虚拟地址的切换,并且在首次切换完成后,立即关掉帧同步中断,从而从根本上避免了液晶在操作系统启动时的闪烁问题,极大的改善了人机界面的启动过程中的液晶显示的用户体验。

技术研发人员:梁喜东;李素芬;马学童
受保护的技术使用者:深圳繁易电气有限公司
技术研发日:2018.06.19
技术公布日:2018.11.09
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1