i.MX6UL #2 - 关闭X的电源管理(让板子上的屏幕成为永不消逝的亮光,DPMS+Screen

2019-07-12 20:53发布

里先森:移植完ubuntu到imx6ul上后发现LCD会在无操作一段时间后自动熄灭,
究其原因可能有两种(当然也有可能是两种的混合作用)
  1. Linux中blankinterval的熄屏休眠设置(linux/drivers/tty/vt/vt.c)
    以下找到几篇文章供以参考和备忘
    主体文章转载自:https://blog.csdn.net/bojue01/article/details/53468026 (比较言简意赅)
    参考文章2:https://blog.csdn.net/wxxgoodjob/article/details/74988143(感觉像是大杂烩)
    参考文章3:https://community.nxp.com/thread/323250 (nxp社区解答)
  2. X中的DPMS和Screen Saver的作用

1. Linux中blankinterval的熄屏休眠设置(linux/drivers/tty/vt/vt.c)

以下内容来自https://blog.csdn.net/bojue01/article/details/53468026
正常情况下Linux会在一段时间后默认关闭屏幕,默认为10分钟。开始一直认为是Gnome或KDE等桌面环境设置的屏幕保护程序电源管理功能,即使不安装桌面环境屏幕照样会自动关闭。 下面就来分析下原因。 看到网上的资料说这是由vt驱动来设置的。 下面进入内核源码目录下的drivers文件夹,后执行 grep blankinterval ./* -R 搜索那个文件中设置了该变量。
搜索结果如下: ./tty/vt/vt.c:static void blank_screen_t(unsigned long dummy);
./tty/vt/vt.c:static DEFINE_TIMER(console_timer, blank_screen_t, 0, 0);
./tty/vt/vt.c:static void blank_screen_t(unsigned long dummy)
下面打开该文件修改大约180行的位置
  1. static int vesa_blank_mode; /* 0:none 1:suspendV 2:suspendH 3:powerdown */
  2. static int vesa_off_interval;
  3. //static int blankinterval = 10*60;
  4. static int blankinterval = 0;
  5. core_param(consoleblank, blankinterval, int, 0444);
将blankinterval初始化设置为0即可
还有一种方法就是在自己的应用程序中添加: system("echo -e "