打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Framebuffer console自动黑屏
控制台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]", opt_bl_min);

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

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


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【转】由一些小问题引起的东西
framebuffer驱动全篇
定时器
计时器
【Tiny6410 And Linux】—(6.1)—LCD 驱动测试程序——原理 (转)
终端tty、虚拟控制台、FrameBuffer的切换过程详解 - 柳梢月的专栏 - CSD...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服