让framebuffer不显示光标,在没有控制台的framebuffer上显示logo
来源:互联网 发布:淘宝众筹在哪 编辑:程序博客网 时间:2024/05/16 12:20
使用Framebuffer显示画面,总有一个小黑方块,一看就像是控制台光标。为了去掉它,上网一查,有人说把fbcon.c文件里的fbcon_cursor()函数改成空函数。我觉得这样改内核代码太野蛮了,以后也不好维护移植,不作为首选方案。自己看代码,发现在bit_cursor()里面,如果驱动注册了光标函数,就调用驱动的光标函数,否则调用soft_cursor()。赶紧翻到驱动代码amba-clcd.c一看,果然没注册光标函数,那就自己写个空的注册进去,就像下面这样,然后编译验证,果然小方块没有了。
static struct fb_ops clcdfb_ops = {
.owner = THIS_MODULE,
.fb_check_var = clcdfb_check_var,
.fb_set_par = clcdfb_set_par,
.fb_setcolreg = clcdfb_setcolreg,
.fb_blank = clcdfb_blank,
.fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
.fb_mmap = clcdfb_mmap,
.fb_cursor = clcdfb_fb_cursor,
};
按说到这里问题已经解决了,但仍然觉得不够完美。我们用framebuffer只用来做界面,不需要控制台功能,那么直接把控制台功能关了不是更好。于是make menuconfig,从配置里去除FRAMEBUFFER_CONSOLE,原以为这样就好了,可结果屏幕完全没有显示,连背光都不亮。
由于背光不亮,首先想到是控制LCD电源的GPIO没有设置。设置这些GPIO的代码在spear320.c的lcd_enable()函数中,它又经过辗转被clcdfb_set_par()、fb_set_var()调用。在fb_set_var()中发现由于var->activate值的缘故,前面的函数并未执行。于是又回到驱动代码amba-clcd.c中,在clcdfb_register()里面给fb->fb.var.activate增加一个FB_ACTIVATE_FORCE属性,然后屏幕就又能显示了。
事情还没有结束,原先配置有FRAMEBUFFER_CONSOLE的时候,启动时是会显示logo的,但现在却没有logo了,还要想办法把logo弄出来。参考了另一硬件驱动au1200fb.c,把如下代码加到clcdfb_probe()中,放在调用register_framebuffer()之后。
#if !defined(CONFIG_FRAMEBUFFER_CONSOLE) && defined(CONFIG_LOGO)
if (fb_prepare_logo(&fb->fb, FB_ROTATE_UR)) {
/* Start display and show logo on boot */
fb_set_cmap(&fb->fb.cmap,
&fb->fb);
fb_show_logo(&fb->fb, FB_ROTATE_UR);
}
#endif
至此,显示小方块的问题解决,只修改了本设备的驱动,没有改其它内核文件。
- 让framebuffer不显示光标,在没有控制台的framebuffer上显示logo
- 在framebuffer上显示JPEG图片
- 将jpeg图片显示在framebuffer上
- 双framebuffer显示两张uboot logo
- 在s3c2416板上实现framebuffer显示中文
- v4l2采集视频 framebuffer显示 左上角显示logo
- framebuffer上显示多国语言字体
- 在Framebuffer下编程显示BMP图象
- bmp转rgb565在framebuffer中显示
- framebuffer显示汉字
- framebuffer显示JPEG图片
- framebuffer显示JPEG图片
- framebuffer显示bmp格式文件
- framebuffer显示bmp格式文件
- FrameBuffer 显示JPEG图片
- framebuffer显示JPEG图片
- 摄像头采集,framebuffer显示
- 显示设置vga framebuffer
- Lazarus: 跨平台的Delphi开发环境
- ORACLE 中一些基本命令总结
- date命令用法
- 【学习点滴-js】js 中事件对象封装。
- MySQL常用的存储引擎
- 让framebuffer不显示光标,在没有控制台的framebuffer上显示logo
- c#实现和vb调用createobject()类似方法创建com对象,调用method和property
- libjpeg-turbo的neon功能
- RPM 命令
- Flex 动态调整DataGrid列的显示
- flex通过PyAmf调用python服务
- 屏蔽 php错误信息
- 使用SQL语句实现备份、还原
- Some WebSites Often used