AM335x Linux LCD休眠时间设置方法
如何设置AM335x的linux休眠时间
在Linux中,一般都会将LCD作为终端输出,此时如果长时间没有操作,则会自动关闭LCD,此时LCD上显示的东西就会丢失,或者我们需要设定这个超时的时间。
下面我们看一下具体的代码中是如何操作的:
Drivers/tty/vt/vt.c文件中
static int blankinterval = 10*60;
这里表示默认超时时间是10分钟
case 9: /* set blanking interval */ blankinterval = ((vc->vc_par[1] < 60) ? vc->vc_par[1] : 60) * 60; lsd_dbg(LSD_DBG,"blankinterval=%d,vc->vc_par[1]=%d\n",blankinterval,vc->vc_par[1]); poke_blanked_console(); break; case 10: /* set bell frequency in Hz */ |
这个函数是设定超时时间,如果设定为0 ,则不超时
if (blankinterval) { blank_state = blank_normal_wait; mod_timer(&console_timer, jiffies + (blankinterval * HZ)); } |
如果blankinterval为0,则不开启定时器其中定时器中的功能就是开关lcd。
如果我们在内核中定死blankinterval,太过于死板了,因此我们建议在应用层进行操作
方法一:
echo -e "\033[9;0]" > /dev/tty0 |
这里是设定blankinterval等于0,如果使用
echo -e "\033[9;1]" > /dev/tty0 |
方法二:
使用C程序的方法:
#include #include #include int main() { int f; f = open("/dev/tty0", O_RDWR); write(f, "\033[9;0]", 8); close(f); return 0 } |
备注:如果写成write(f, "/033[9;0]", 8);,这个是不对的
注意:无论使用什么方法,注意操作/dev/console /dev/fb0 /dev/ttyO0都是没有效果的,只有tty0 tty1 这些有效果
另外code中包含了kernel中增加调试的patch
以下是增加了调试信息后的输出log
[root@YuGe-AM1808 /test/hxzd]#./lcd-nosleep [ 13.634552] ---ALL---DBG---file=vt.c,func=setterm_command,line=1524++++ blankinterval=0,vc->vc_par[1]=0 [root@YuGe-AM1808 /test/hxzd]# [root@YuGe-AM1808 /test/hxzd]#echo -e "\033[9;0]" > /dev/tty0 [ 135.126953] ---ALL---DBG---file=vt.c,func=setterm_command,line=1524++++ blankinterval=0,vc->vc_par[1]=0 [root@YuGe-AM1808 /test/hxzd]# |
维芯科 AM335x核心板:https://www.weathink.cn/products/hexinban/2.html
相关产品>
-
-
AM6254工控板
CPU:TI AM62X Cortex A53 单核 双核 四核架构:Cortex A53主频:1 4GHZ内存:2GByte DDR4工业级(可用1GByte)Flash:8Gbyte eMMC
了解详情 -
RK3568工控板
CPU:Rockchip RK3568架构:Cortex A55 四核主频:2 0GHz 1 8GHz内存:2GByte DDR4工业级(可用4GByte)Flash:8Gbyte eMMC(可用16G
了解详情 -
RK3568S核心板
CPU:RK3568架构:Cortex A55主频:1 2GHZ内存:512MB 1GB 2GB DDR4Flash:8Gbyte eMMC操作系统:Linux接口方式:邮票孔
了解详情