关于LCD自动关闭问题的解决方案(暂时)
2010-06-01 16:59
316 查看
CPU : ARM9 s3c2410
LCD : 规格不明(这个很无奈,但是我所知道的只有一个分辨率)
OS :Linux kernel 2.6.30.4
之前搞定了LCD的驱动程序,基本工作正常。但是测试过程中发现有这么一个问题,就是如果几分钟后LCD会自动关闭,此时敲击I2C键盘LCD无法正常点亮。开始认为问题出在“menuconfig”中的“power management”,但经多次尝试,未果。
网上查阅了很多前人的经验,终于搞清楚了原因。找到“drivers/char/vt.c”文件,在这个文件中有一个函数叫做“static int __init con_init(void)”,这个函数做了控制台初始化的工作。在这个过程中Linux设置了一个计时器,这个计时器的值每次的变化量由“blankinterval”这个变量设定。当计时器的值减至0时,“static void blank_screen_t(unsigned long dummy)”函数就会被执行,完成关闭LCD的操作。
那么显而易见,解决问题的方式有这么两种,其一是修改“blankinterval”为0,这样一来计时器的值就不会发生改变;另外也可以把“static void blank_screen_t(unsigned long dummy)”改成空函数,那么即使计时器值减为0,LCD也不会被关闭。我选用了后者。
源码修改:
drivers/char/vt.c
/*
* We defer the timer blanking to work queue so it can take the console mutex
* (console operations can still happen at irq time, but only from printk which
* has the console mutex. Not perfect yet, but better than no locking
*/
#if 1 //modified by B.Zhou
static void blank_screen_t(unsigned long dummy)
{
}
#else
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);
}
#endif
至此,LCD已经不会自动熄灭了,但是最理想的解决方案应该是熄灭后能够相应I2C键盘,等有时间再看看如何实现。
相关文章推荐
- 关于Windows8.1应用商店恢复&&APP清理&&关闭开机自动连接go.microsoft.com问题
- Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题
- Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题
- 关于tomcat启动后马上又自动关闭的问题
- Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题
- 关于自动关闭的alert() 的问题
- 关于codeigniter即ci的session关闭浏览器不能自动失效的问题
- 关于解决Windows Server 2003服务器共享服务自动关闭的问题
- Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题
- 关于虚拟机关机/重启后自动还原的问题解决方案
- 关于自动关闭微信浏览器问题
- 【操作系统】关于C语言设计程序退出自动关闭窗口的问题
- 【selenium】python+selenium+unittest,关于每次执行完一个测试用例都关闭浏览器等时间较长的问题之解决方案
- 关于MATSIM中,如何关闭自动加载dtd的问题
- 【转】关于wBox iFrame回调关闭问题的解决方案
- Linux LCD 10分钟黑屏,十分钟黑屏,LCD自动关闭,LCD黑屏 问题
- MFC 关于自动更新问题的解决方案和代码
- winform 关于Messagebox自动定时关闭和自定义提示框总按钮上文本的问题的整理
- 关于Oracle错误:动态执行表不可访问,本会话自动统计被禁止,关闭自动统计之后的问题
- 关于远程桌面连接阿里云服务器ECS出现的卡顿、自动退出问题的解决方案