Почему моя ЖК-консоль выключается, если я позволяю плате imx6 бездействовать в течение 10 минут?

Я новичок в imx6 и yocto bsp, и при изучении я обнаружил, что ЖК-консоль отключается ровно через 12 минут. В исходниках в yocto вроде нет упоминания об этом, если нет функций, отключающих дисплей, то как он мог отключаться?

Я немного покопался и обнаружил, что yocto предоставляет режим ожидания, предназначенный для экономии энергии. I функция, которую я нашел в cpuidle-imx6sl.c, как показано ниже, но нет упоминания об отключении ЖК-дисплея

static int imx6sl_enter_wait (struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { int mode = 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;

}

Я ожидаю найти в исходном коде ядра функцию, которая отключает ЖК-дисплей, а также имеет таймер, который измеряет ровно 10 минут для отключения ЖК-дисплея. где я могу найти это?


person Producer    schedule 13.09.2019    source источник
comment
Я забыл упомянуть, что ЖК-дисплей появляется при нажатии кнопки питания. Значит ли это, что функция также поддерживает обработку прерываний?   -  person Producer    schedule 13.09.2019


Ответы (2)


Вероятно, вы видите тайм-аут гашения консоли через 10 минут, что выключает дисплей. Чтобы проверить значение тайм-аута:

$ cat /sys/module/kernel/parameters/consoleblank
600

Чтобы отключить его навсегда, добавьте consoleblank=0 в командную строку ядра. Например, отредактировав среду U-Boot.

Вы можете найти код, отвечающий за это в drivers/tty/vt/vt.c.

person frsc    schedule 13.09.2019
comment
Да, я понял, что вы абсолютно правы, значит ли это, что режим ожидания процессора ничего не делает для экономии энергии? - person Producer; 14.09.2019
comment
На самом деле я не знаю, каким образом режим ожидания ЦП используется Linux на i.MX6SL. Но это совершенно не связано с гашением ЖК-дисплея. - person frsc; 17.09.2019

Пожалуйста, попробуйте эту команду, чтобы заставить экран выйти из спящего режима:

echo 0 > /sys/class/graphics/fb0/blank
person Marco    schedule 13.09.2019