如果我让 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 中找到负责此操作的代码。