Компания
417,68
рейтинг
15 сентября 2015 в 17:04

Разработка → Подготовка Nexus Player (FUGU) к работе с SoCWatch перевод

Польза от оптимизации энергопотребления Android-приложений, которые рассчитаны на мобильные устройства, видна невооружённым взглядом. Меньше потребление энергии – дольше время между перезарядками. Но у энергопотребления есть и другие стороны. Стационарное «железо», вроде Nexus Player, тоже нуждается в экономичных приложениях. В глобальном масштабе, а платформа Android – это явление именно такого размаха, бережное отношение к энергии означает заботу об окружающей среде.

image

Intel SoC Watch – это инструмент командной строки, который позволяет анализировать энергопотребление систем, основанных на платформах от Intel. Nexus Player – одна из таких систем. Для того чтобы узнать с помощью SoCWatch о том, что творится «под капотом» Nexus Player, устройство нужно особым образом подготовить.

Общие сведения о SoCWatch


Intel SoC Watch умеет собирать сведения о состояниях энергопотребления микропроцессоров и о причинах переключения между этими состояниями, отслеживать изменения тактовой частоты, использование шин, и множество других показателей. Всё это помогает детально проанализировать параметры потребления энергии различными системами.

После сбора информации SoCWatch, по умолчанию, генерирует файлы, содержащие необработанные данные и отчёт с общими сведениями по целевой системе. Необработанные данные (они хранятся в файле формата .SW1) можно импортировать в Intel Energy Profiler. Это средство имеет такой же интерфейс, как VTune Amplifier. Здесь можно сопоставлять и визуализировать данные о поведении системы, развёрнутые во времени. Файл отчёта (в формате .CSV) можно открыть, например, в Microsoft Excel и, на основе содержащихся в нём данных, построить графики, которые позволят облегчить анализ.

Получение root-прав на Nexus player


Nexus Player уже появился в продаже. Подробности о работе с ним, освещённые на Intel Developer Forum 2015, вы можете найти в материале IDF2015 Lab Notes: Getting your Nexus Player from shrink-wrap to Performance and Energy Analysis.

Для того чтобы Nexus Player можно было анализировать с помощью SoCWatch, потребуются дополнительные усилия. Так, аналитической системе нужны root-права для сбора данных о производительности с помощью драйвера уровня ядра. Для того чтобы получить такие права, вы можете воспользоваться видео-руководством Nexus Player – How to Root Android TV. После того, как root-права получены, устройство сможет воспринимать команду su в оболочке ADB.

Построение ядра с новой конфигурацией для Nexus Player


Google отключила функцию загрузки модулей в конфигурации ядра ОС устройства. Поэтому, для подготовки Nexus Player к работе с SoCWatch, нам необходимо загрузить исходный код ядра с официального сайта Google и, модифицировав его конфигурацию, пересобрать. Для того чтобы это сделать, нужно выполнить следующие шаги.

1. Загрузим исходный код ядра с официального сайта Google.

2. Изменим конфигурацию ядра таким образом, чтобы она содержала следующие настройки, которые включают необходимые нам возможности:

export ARCH=x86
make fugu_defconfig
make menuconfig

CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_TRACEPOINTS=y
CONFIG_FRAME_POINTER=y
CONFIG_COMPAT=y
CONFIG_TIMER_STATS=y
CONFIG_X86_ACPI_CPUFREQ=m (or CONFIG_X86_ACPI_CPUFREQ=y)
CONFIG_INTEL_IDLE=y

3. Убедимся, что перестроенное ядро можно найти по адресу < INSTALLATION_DIR_PATH >\x86_64\arch\x86\boot\bzImage

make –j4

4. Создадим загрузочный образ с предварительно собранным ядром. В случае с устройствами, построенными на платформе Intel, иногда, если перепрошивать только раздел ядра, можно потерпеть неудачу. Поэтому мы создадим загрузочный образ с только что построенным ядром, настроенным так, как нам нужно. Для этой цели мы можем поместить ядро внутрь дерева исходного кода Android и построить только загрузочный образ.

Для того чтобы собрать загрузочный образ, мы пользуемся средством для работы с образами Android Image Kitchen. Оно, в частности, позволяет распаковывать и упаковывать образы. Для начала загрузим заводской образ с портала Google Developers. После этого воспользуемся файлом unpackimg.bat для распаковки образа и заменим файл < INSTALLATION_DIR_PATH >\split_img\boot.img-zImage на файл bzImage, который мы создали на предыдущем шаге. В завершение данного шага воспользуемся пакетным файлом repacking.bat для создания нового boot.img

Обратите внимание на то, что если устройство не может перезагрузиться после неудачной перепрошивки, оживить его можно следующим образом. Отключите кабель питания, немного подождите, подключите кабель, после чего нажмите и удерживайте аппаратную кнопку, которая расположена на нижней грани устройства. Nexus Player войдёт в режим fastboot. После этого воспользуйтесь скриптом flash-all.bat, который можно найти среди файлов, загруженных вместе с заводским образом с сайта Google Developers. Он перепрошьёт устройство и вернёт ему работоспособность.

5. Прошьём новый boot.img на устройство с помощью следующих команд:

adb reboot bootloader

fastboot flash boot boot.img

fastboot reboot

Теперь можно проверить версию ядра для того, чтобы понять, удалась ли перепрошивка. Если удалась, то можно собирать драйвер SoCWatch.

Сборка драйвера SoCWatch


Исходный код драйвера входит в состав пакета SocWatch, который можно загрузить вместе с Intel System Studio. SoCWatch – это один из компонентов Intel System Studio. Для сборки драйвера воспользуемся такой последовательностью действий:

1. Выполним сборку socperf1_2.ko с помощью скрипта для сборки драйвера в < INSTALLATION_DIR_PATH >\soc_perf_driver\src\

sh ./build-driver

2. Выполним сборку SOCWATCH1_5.ko с помощью скрипта для сборки драйвера в < INSTALLATION_DIR_PATH >\socwatch_driver\lxkernel\

sh ./build-driver –k <KERNEl_BUILD_DIR> -s <KERNEl_BUILD_DIR>

Настройка окружения SoCWatch


Можно запустить установочный файл (socwatch_android_install.bat) с помощью команды adb root после того, как на устройстве получены root-права. Однако, для того, чтобы эта команда успешно сработала, могут понадобиться некоторые дополнительные настройки. Поэтому мы рассмотрим здесь универсальную процедуру подготовки окружения SoCWatch, основанную на использовании команды su.

Для начала нужно перейти в папку SoCWatch и скопировать необходимые файлы на устройство. В нашем случае мы можем отправить эти файлы на SD-карту, а затем скопировать их в директорию /data/socwatch. Делается это так:

tools\os2unix.exe setup_socwatch_env.sh

tools\dos2unix.exe SOCWatchConfig.txt

adb push socwatch /sdcard/socwatch/

adb push setup_socwatch_env.sh /sdcard/socwatch/

adb push libs /sdcard/socwatch/libs/

adb push valleyview_soc /sdcard/socwatch/valleyview_soc/

adb push tangier_soc /sdcard/socwatch/tangier_soc/

adb push anniedale_soc /sdcard/socwatch/anniedale_soc/

adb push socperf1_2.ko /sdcard/socwatch/

adb push SOCWATCH1_5.ko /sdcard/socwatch/

adb shell

su

cp –r /sdcard/socwatch /data/

cd /data/socwatch

chmod 766 socwatch

Теперь вы можете, воспользовавшись Руководством пользователя по SoCWatch, приступить к сбору данных. Собрав данные, остаётся лишь загрузить полученные файлы с устройства на главный компьютер и приступить к анализу сведений о производительности и энергопотреблении Nexus Player.


Сбор данных с помощью SoCWatch

Итоги


Если вы разрабатываете приложения, ориентированные на Nexus Player, то сейчас вы знаете, как сделать мир лучше. Достаточно проанализировать энергопотребление своих разработок с помощью Intel SoC Watch и исправить то, что «ест» неоправданно много электричества.
Автор: @CooperMaster Alice H.
Intel
рейтинг 417,68

Комментарии (0)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка