您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页Framebufferconsole自动黑屏

Framebufferconsole自动黑屏

来源:爱玩科技网


Framebufferconsole自动黑屏

控制台VT篇:

控制台VT有一个定时器,默认为10分钟,只要时间一到就会blank screen,会导致fb黑屏,会导致给人“电源管理的假象”

drivers/tty/vt/vt.c中:

static DECLARE_WORK(console_work,console_callback);

static DEFINE_TIMER(console_timer,blank_screen_t,0,0);

(定义console_timer,时间到了执行blank_screen_t函数,在无任何event时,就执行console_callback)

static void blank_screen_t(unsigned long dummy)

{

if (unlikely(!keventd_up())) {

mod_timer(&console_timer, jiffies + blankinterval);

return;

}

blank_timer_expired = 1;

schedule_work(&console_work);

}

接着调到do_blank_screen(0);然后vc->vc_sw->con_blank()也就是drivers/video/console/fbcon.c中的fbcon_blank()------>drivers/video/fbmem.c中

fb_blank

--->fb_notifier_call_chain(FB_EVENT_BLANK)-----

->backlight/lcd.c中的FB_EVENT_BLANK的处理,而关掉lcd power。

解决办法:

1.修改LCD驱动,把关闭LCD控制器的函数变为空(不推荐)

2.修改vt.c中的blank_screen_t()函数,让其为空(在系统不需要使用关闭显示功能时推荐)

3.修改vt.c中的blankinterval,让其为0(系统可能需要使用关闭显示功能,而且希望系统上电后正常状态下不会关闭显示时推荐)

4.修改用户程序,加入设置blankinterval的代码(推荐)

在用户空间代码里添加

/* disable console. avoid console blank automatically */

system(\"echo -e \\\"\\033[9;0]\\\" > /dev/tty1\");

解释:

该系统调用相当于setterm -blank 0,详见setterm命令的源码,其中

/* -blank [0-60]. */

if (opt_blank && vcterm)

printf(\"\\033[9;%d]\

也可以见Vt.c (drivers\\char): case ']': /* setterm functions */

(参考http://blog.chinaunix.net/uid-96886-id-1998294.html,谢谢)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务