Tabela de conteúdos

Gerenciamento de energia

Isso foi escrito há algum tempo, e considerando a utilização do OpenEmbedded, podem haver informações desatualizadas. Entretanto há otras que ainda são válidas para o Yocto Project

Configurando

Aparentemente o único kernel que permite de fato o gerenciamento de energia é o linux-omap-pm. Este kernel no entanto é muito instável, falhando muito frequentemente, tanto logo após iniciar, ou durante o uso. Portanto deve-se utilizá-lo com cuidado. Talvez versões posteriores sejam mais estáveis ou esses recursos sejam adicionados no kernel padrão. Abra o diretório $OVEROTOP/user.collection/recipes/linux/linux-omap-pm-2.6.29/overo/ ou outra versão que estaja sendo usada, caso seja o caso. Abra o defconfig com o nano ou outro editor. O que eu fiz foi habilitar tudo na seção CPU Power Management, e também Power Management Options. Caso você esteja bootando do MMC será necessário habilitar CONFIG_MMC_UNSAFE_RESUME, para que o modo de suspensão não corrompa o cartão. Aparentemente para que alguns serviços possam ser desligados durante a suspensão é preciso habilitar também CONFIG_OMAP_RESET_CLOCKS.

Usando

Se tudo tiver dado certo será possível colocar em modo de suspensão:

 echo mem > /sys/power/state

Para que ele entre em suspensão automaticamente:

 echo 1 > /sys/power/sleep_while_idle

Para que ele volte automaticamente após X segundos:

 echo X > /sys/power/wakeup_timer_seconds 

Há também configurações de um certo modo desligado, mas aparentemente não funciona, pelo menos não quando usando o MMC.

Para reduzir mais o consumo devem ser desligados os recursos que não estão sendo utilizados:

 # wifi
 echo 0 >  /sys/class/gpio/gpio16/value

 # bluetooth
 echo 0 >  /sys/class/gpio/gpio164/value
 
 # usb
 echo 183 > /sys/class/gpio/export
 echo out > /sys/class/gpio/gpio183/direction
 echo 0 > /sys/class/gpio/gpio183/value 
 echo 0 > /sys/class/gpio/gpio168/value

Pode-se ainda reduzir a frequência do processador, para reduzir mais um pouco o consumo:

 echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
 echo 125000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

Podem ser usadas as frequências de 600MHz, 500MHz, 250MHz e 125MHz.