默认情况下 10 分钟以后 LCD 就会熄屏,这个并不是代码有问题,而是 Linux 内核设置的,
就和我们用手机或者电脑一样,一段时间不操作的话屏幕就会熄灭,以节省电能。解决这个问
题有多种方法。
按键唤醒
最简单的就是按下回车键唤醒屏幕,如果没有键盘,那就用一个按键模拟键盘的回车键,通过输入输入子系统上报KEY_ENTER事件
关闭 10 分钟熄屏功能
在 Linux 源码中找到 drivers/tty/vt/vt.c 这个文件,在此文件中找到 blankinterval 变量,如下
所示
static int vesa_blank_mode;
static int vesa_off_interval;
static int blankinterval = 10*60;
blankinterval 变量控制着 LCD 关闭时间,默认是 10*60,也就是 10 分钟。将 blankinterval
的值改为 0 即可关闭 10 分钟熄屏的功能,修改完成以后需要重新编译 Linux 内核,得到新的
zImage,然后用新的 zImage 启动开发板。
编写一个 APP 来关闭息屏功能
创建一个 lcd_always_on.c 文件
#include <fcntl.h>
#include <stdio.h>
#include <sys/ioctl.h>
int main(int argc, char *argv[])
{
int fd;
fd = open("/dev/tty1", O_RDWR);
write(fd, "\033[9;0]", 8);
close(fd);
return 0;
}
编译
arm-linux-gnueabihf-gcc lcd_always_on.c -o lcd_always_on
编译生成 lcd_always_on 拷贝到开发板的/usr/bin 目录中并设置为开机自启动。打开/etc/init.d/rcS
cd /usr/bin
./lcd_always_on
cd ..