一种合理利用显示缓冲区内存的方法及其系统
技术领域
本发明涉及嵌入式设备技术领域,尤其涉及一种合理利用显示缓冲区内存的方法及其系统。
背景技术
目前的嵌入式设备很多需要在bootloader引导阶段显示一个图片,并且该图片还需要在操作系统初始化阶段继续显示。bootloader会将一个保存有该图片数据的内存地址,赋于LCD控制器的显示帧缓存区地址,LCD控制器从该地址中获取图片数据用于显示。那么就存在操作系统初始化的时候,错误的将bootloader用于保存显示图片的内存挪为他用,导致操作系统初始化阶段LCD输出数据被修改,表现为界面花屏。为了应对这种问题,目前共用几种技术。
第一种是在操作系统初始化阶段关闭背光,在操作系统的LCD控制器驱动完成初始化之后再打开背光进行图片显示,此种做法会导致图片显示不连续,用户体验差。
第二种做法是修改操作选题的内存映射关系,让操作系统在初始化阶段不去使用被bootloader用于保存图片数据的内存区域,此类做法虽能解决问题,但是操作十分复杂,需要针对初始化阶段和非初始化阶段配置两份MMU表,分别配置,很容易导致系统异常。
第三种是见中国专利“一种启动程序时等待信息的显示控制方法和移动终端”,公开号为:101776986A,公开日为:2010-07-14;该发明去除了内核初始化LCD的步骤,并在将bootloader显存中的等待信息数据复制到内核的显存中后,再初始化LCD控制器,这样,LCD即可直接根据LCD控制器中的显存首地址,读取内核的显存中的等待信息数据,而bootloader显存中的等待信息数据已经预先复制到内核的显存中,所以对于用户来讲,显示的内容完全没有改变,同时由于去除了初始化LCD的步骤,所以完全避免了LCD屏幕显示的扭曲、闪动、花屏等现象,提高了程序启动时的显示质量,带给用户较好的视觉感受。但是该发明中所提到的bootloader与操作系统分别开辟不同的显示帧缓区内存,进行图片数据的拷贝;此方法无法解决我们所提出的问题(因为操作系统初始化阶段仍然有可能将bootloader准备的第一显示内存挪为他用,导致花屏)。
第四种技术就是开辟一个独立的物理内存控制,此空间在bootloader和操作系统的生命周期内,只配置给LCD使用,但是这样就产生一个问题,操作系统系统需才要针对不同的屏幕和分辨率开辟不同大小的显示帧缓冲区内存,如果bootloader中显示的图片很大(它需要开辟很大的内存用于保存该图片),但是操作系统中需要显示的图片很小,那么这段内存就浪费了(操作系统无法使用多余的部分)。
发明内容
本发明要解决的技术问题之一,在于提供一种合理利用显示缓冲区内存的方法,高弹性的可回收、可追加的显示帧数据缓冲内存,提高了操作系统内存的利用率。
本发明问题之一是这样实现的:一种合理利用显示缓冲区内存的方法,所述方法包括如下步骤:
步骤1、bootloader根据所需显示图片的大小申请一内存一,保存图片数据在该内存一中;
步骤2、将内存一的地址标记为不可使用,操作系统在内存初始化阶段,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池;
步骤3、操行系统的LCD控制器驱动按屏幕分辨率获得当前帧显示缓冲所需要的内存二,通知操作系统的内存管理器;
步骤4、内存管理器按照所需要的内存二与所述的内存一进行比较,来执行追加或者回收内存。
进一步地,所述步骤1进一步包括:bootloader将图片数据拷贝到内存一的位置,让LCD控制器从内存一种取出图片数据用于输出显示。
进一步地,所述步骤2进一步包括:bootloader传递内存一初始化的地址数值利用参数传递给操作系统,将此段内存一的地址标记为不可使用,操作系统在内存初始化阶段,提取bootloader传递来的所述参数,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池。
进一步地,所述步骤4具体为:内存管理器判断如果内存一大于内存二,则内存管理器回收内存一减去内存二后多余的内存;如果内存一小于内存二,则在内存一的基础上再追加内存二减去内存一后的内存,补足内存给LCD控制器来使用。
本发明要解决的技术问题之二,在于提供一种合理利用显示缓冲区内存的系统,高弹性的可回收、可追加的显示帧数据缓冲内存,提高了操作系统内存的利用率。
本发明问题之二是这样实现的:一种合理利用显示缓冲区内存的系统,所述系统包括内存申请模块、标记模块、获取模块以及内存处理模块;
所述内存申请模块用于:通过bootloader根据所需显示图片的大小申请一内存一,保存图片数据在该内存一中;
标记模块用于:将内存一的地址标记为不可使用,操作系统在内存初始化阶段,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池;
获取模块用于:通过操行系统的LCD控制器驱动按屏幕分辨率获得当前帧显示缓冲所需要的内存二,通知操作系统的内存管理器;
内存处理模块用于:通过内存管理器按照所需要的内存二与所述的内存一进行比较,来执行追加或者回收内存。
进一步地,所述内存申请模块进一步包括:bootloader将图片数据拷贝到内存一的位置,让LCD控制器从内存一种取出图片数据用于输出显示。
进一步地,所述标记模块进一步包括:bootloader传递内存一初始化的地址数值利用参数传递给操作系统,将此段内存一的地址标记为不可使用,操作系统在内存初始化阶段,提取bootloader传递来的所述参数,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池。
进一步地,所述内存处理模块具体为:内存管理器判断如果内存一大于内存二,则内存管理器回收内存一减去内存二后多余的内存;如果内存一小于内存二,则在内存一的基础上再追加内存二减去内存一后的内存,补足内存给LCD控制器来使用。
本发明具有如下优点:本发明高弹性的可回收、可追加的显示帧数据缓冲内存,提高了操作系统内存的利用率;避免了LCD屏幕显示的扭曲、闪动、花屏等现象,提高了程序启动时的显示质量,带给用户较好的视觉感受。
附图说明
图1为本发明方法流程示意图。
图2为本发明系统的原理图。
具体实施方式
请参阅图1所示,本发明的一种合理利用显示缓冲区内存的方法,所述方法包括如下步骤:
步骤1、bootloader根据所需显示图片的大小申请一内存一,保存图片数据在该内存一中;所述步骤1进一步包括:bootloader将图片数据拷贝到内存一的位置,让LCD控制器从内存一种取出图片数据用于输出显示。
步骤2、将内存一的地址标记为不可使用,操作系统在内存初始化阶段,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池;所述步骤2进一步包括:bootloader传递内存一初始化的地址数值利用参数传递给操作系统,将此段内存一的地址标记为不可使用,操作系统在内存初始化阶段,提取bootloader传递来的所述参数,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池。此时操作系统不会再使用该段内存。
步骤3、操行系统的LCD控制器驱动按屏幕分辨率获得当前帧显示缓冲所需要的内存二,通知操作系统的内存管理器;这样操作系统中初始化初期,LCD控制器已经由bootloader阶段初始化好了,且bootloader为其申请的内存一不会被操作系统使用,所以图像能够继续稳定的显示在LCD屏幕上。
步骤4、内存管理器按照所需要的内存二与所述的内存一进行比较,来执行追加或者回收内存。所述步骤4具体为:内存管理器判断如果内存一大于内存二,则内存管理器回收内存一减去内存二后多余的内存(如:内存一为内存A,内存二为内存B,则内存管理器回收(A-B)多余的内存);如果内存一小于内存二,则在内存一的基础上再追加内存二减去内存一后的内存(再追加(B-A)后的内存),补足内存给LCD控制器来使用。
参阅图2所示,本发明的一种合理利用显示缓冲区内存的系统,所述系统包括内存申请模块、标记模块、获取模块以及内存处理模块;
所述内存申请模块用于:通过bootloader根据所需显示图片的大小申请一内存一,保存图片数据在该内存一中;所述内存申请模块进一步包括:bootloader将图片数据拷贝到内存一的位置,让LCD控制器从内存一种取出图片数据用于输出显示。
标记模块用于:将内存一的地址标记为不可使用,操作系统在内存初始化阶段,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池;所述标记模块进一步包括:bootloader传递内存一初始化的地址数值利用参数传递给操作系统,将此段内存一的地址标记为不可使用,操作系统在内存初始化阶段,提取bootloader传递来的所述参数,将被bootloader标记为不可被使用的内存一剔除出操作系统的内存池。此时操作系统不会再使用该段内存。
获取模块用于:通过操行系统的LCD控制器驱动按屏幕分辨率获得当前帧显示缓冲所需要的内存二,通知操作系统的内存管理器;这样操作系统中初始化初期,LCD控制器已经由bootloader阶段初始化好了,且bootloader为其申请的内存一不会被操作系统使用,所以图像能够继续稳定的显示在LCD屏幕上。
内存处理模块用于:通过内存管理器按照所需要的内存二与所述的内存一进行比较,来执行追加或者回收内存。
所述内存处理模块具体为:内存管理器判断如果内存一大于内存二,则内存管理器回收内存一减去内存二后多余的内存(如:内存一为内存A,内存二为内存B,则内存管理器回收(A-B)多余的内存);如果内存一小于内存二,则在内存一的基础上再追加内存二减去内存一后的内存(再追加(B-A)后的内存),补足内存给LCD控制器来使用。
总之,本发明高弹性的可回收、可追加的显示帧数据缓冲内存,提高了操作系统内存的利用率;避免了LCD屏幕显示的扭曲、闪动、花屏等现象,提高了程序启动时的显示质量,带给用户较好的视觉感受。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。