Power Save

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

Кнопка Power Save


В качестве теста и просто удобства было решено задействовать одну из свободных кнопок для включения/выключения режима низкого энергопотребления. Это удобно например при прослушивании музыки в дороге когда не требуется смотреть на экран, а для раскодирования МР3 достаточно лишь части мощности процессора.

Для смены частот в системе существует несколько функций таких как sys_set_processor_level, kernel_ioctl, jz_pm_control. Они в конечном итоге вызывают функцию jz_pllcovert (/soc_src/jz4725/kernel/pm.c), которая должна выполнить смену частоты процессора и соответственно подстроить частоты периферии. Однако по непонятным пока причинам попытки вручную вызывать jz_pm_control не привели к видимой смене частот в системе, что наводит на нехорошие подозрения о том, что управление частотами в данный момент либо не функционирует, либо функционирует не полностью.

Для работы со сменой частот процессора на основе нескольких существующих модулей была написана своя библиотека, однако пока что имеются недоработки (см комментарии в начале файла библиотеки).

Описаный далее способ является бета версией, которая, надеюсь, послужит удобным шагом для тех, кому интересно разобраться с данным вопросом.

Качаем файл http://night-gryphon.ru/Vogue/clock_gryph.c
Кладем в папку /soc_src/jz4725/kernel/

В файле /midware/midware.c исправляем объявления функций

//static void suspend_thread()
void suspend_thread() // vogue Night_Gryphon

//static void resume_thread()
void resume_thread() // vogue Night_Gryphon


В файле /mtv_50/common/keymsg.c после кода для скриншота добавляем

                                // vogue Night_Gryphon
                                // power save button
                                if (curdownkeycode & 0x10){ // K4
                                        if (PowerSaveCheck()) {
                                            PowerSaveOff();
                                        } else {
                                            PowerSaveOn();
                                        }

                                        curdownkeycode = 0;
                                        myPostMessage = 0;
                                        continue;
                                }

После этого кнопка К4 должна включать/выключать режим низкого энергопотребления.

По замерам в режиме проигрывания МР3 использование данной функции сокращает потребление в 2 раза с ~160 мА до ~80 мА

Comments