如果我让 imx6 板闲置 10 分钟,为什么我的液晶控制台会关闭?
Why does my lcd console turn off if I let the imx6 board stay idle for 10 minutes?
我是 imx6 和 yocto bsp 的新手,在探索过程中我发现 lcd 控制台在整整 12 分钟后关闭。 yocto的源码里好像没有提到这个如果没有关闭显示的功能怎么会熄灭呢?
我做了一些挖掘,发现 yocto 提供了一种等待模式,旨在节省电量。我在 cpuidle-imx6sl.c 中找到的功能如下,但没有提到禁用 lcd
static int imx6sl_enter_wait(struct cpuidle_device *dev,
结构 cpuidle_driver *drv, int 索引)
{
int 模式 = get_bus_freq_mode();
imx6_set_lpm(WAIT_UNCLOCKED);
if ((mode == BUS_FREQ_AUDIO) || (mode == BUS_FREQ_ULTRA_LOW)) {
/*
* bit 2 used for low power mode;
* bit 1 used for the ldo2p5_dummmy enable
*/
if (psci_ops.cpu_suspend) {
psci_ops.cpu_suspend((MX6SL_POWERDWN_IDLE_PARAM | ((mode == BUS_FREQ_AUDIO ? 1 : 0) << 2) |
(ldo2p5_dummy_enable ? 1 : 0) << 1), __pa(cpu_resume));
} else {
pwr_ctrl_off();
imx6sl_wfi_in_iram_fn(wfi_iram_base, (mode == BUS_FREQ_AUDIO) ? 1 : 0,
ldo2p5_dummy_enable);
}
} else {
/*
* Software workaround for ERR005311, see function
* description for details.
*/
imx6sl_set_wait_clk(true);
cpu_do_idle();
imx6sl_set_wait_clk(false);
}
imx6_set_lpm(WAIT_CLOCKED);
return index;
}
我希望在内核源代码中找到一个禁用 lcd 的函数,并且还有一个计时器可以精确测量 10 分钟以关闭 lcd。我在哪里可以找到这些?
请尝试使用此命令强制屏幕退出睡眠模式:
echo 0 > /sys/class/graphics/fb0/blank
您可能会在 10 分钟后看到控制台消隐超时,这会关闭显示屏。检查超时值:
$ cat /sys/module/kernel/parameters/consoleblank
600
要永久禁用它,请将 consoleblank=0
添加到内核命令行。例如,通过编辑您的 U-Boot 环境。
您可以在 drivers/tty/vt/vt.c
中找到负责此操作的代码。
我是 imx6 和 yocto bsp 的新手,在探索过程中我发现 lcd 控制台在整整 12 分钟后关闭。 yocto的源码里好像没有提到这个如果没有关闭显示的功能怎么会熄灭呢?
我做了一些挖掘,发现 yocto 提供了一种等待模式,旨在节省电量。我在 cpuidle-imx6sl.c 中找到的功能如下,但没有提到禁用 lcd
static int imx6sl_enter_wait(struct cpuidle_device *dev, 结构 cpuidle_driver *drv, int 索引) { int 模式 = get_bus_freq_mode();
imx6_set_lpm(WAIT_UNCLOCKED);
if ((mode == BUS_FREQ_AUDIO) || (mode == BUS_FREQ_ULTRA_LOW)) {
/*
* bit 2 used for low power mode;
* bit 1 used for the ldo2p5_dummmy enable
*/
if (psci_ops.cpu_suspend) {
psci_ops.cpu_suspend((MX6SL_POWERDWN_IDLE_PARAM | ((mode == BUS_FREQ_AUDIO ? 1 : 0) << 2) |
(ldo2p5_dummy_enable ? 1 : 0) << 1), __pa(cpu_resume));
} else {
pwr_ctrl_off();
imx6sl_wfi_in_iram_fn(wfi_iram_base, (mode == BUS_FREQ_AUDIO) ? 1 : 0,
ldo2p5_dummy_enable);
}
} else {
/*
* Software workaround for ERR005311, see function
* description for details.
*/
imx6sl_set_wait_clk(true);
cpu_do_idle();
imx6sl_set_wait_clk(false);
}
imx6_set_lpm(WAIT_CLOCKED);
return index;
}
我希望在内核源代码中找到一个禁用 lcd 的函数,并且还有一个计时器可以精确测量 10 分钟以关闭 lcd。我在哪里可以找到这些?
请尝试使用此命令强制屏幕退出睡眠模式:
echo 0 > /sys/class/graphics/fb0/blank
您可能会在 10 分钟后看到控制台消隐超时,这会关闭显示屏。检查超时值:
$ cat /sys/module/kernel/parameters/consoleblank
600
要永久禁用它,请将 consoleblank=0
添加到内核命令行。例如,通过编辑您的 U-Boot 环境。
您可以在 drivers/tty/vt/vt.c
中找到负责此操作的代码。