В статье приведен обзор применения Embedded Windows Сompact 7 для систем-на-кристалле (СнК) и дан общий анализ СнК NVidia Tegra 2. Рассмотрены вопросы применения Embedded Windows Сompact 7 для работы с NVidia Tegra 2. Приведены результаты серии тестов работы кодеков в BSP по кодированию и декодированию видео (H.264, MPEG4, MJPEG).
Мы не будем детально описывать сам чип и дублировать множество статей, посвящённых Tegra 2. Мы расскажем о собственном опыте использования данной СнК и поделимся соображениями о возможностях ее применения. Из-за ограниченной доступности этот кристалл еще не вошел в категорию «выбор пользователей», что, однако, не является преградой на пути его применения. Компании Qseven и Toradex поступили, на наш взгляд, очень правильно, выпустив модули на базе мобильных решений от NVidia и открыв для этого чипа возможность применения во встраиваемых системах.
После выхода операционной системы (ОС) Windows Embedded Compact 7 стало понятно, что Microsoft не намерена сдавать позиций в секторе мобильных устройств. Более того, нововведения в названной ОС указывают на то, что платформы Microsoft Embedded сделали ещё один серьёзный шаг в сторону развития мобильных устройств.
На наш взгляд, такие возможности как SMP (Symmetric Multiprocessing) и поддержка ARMv7-инструкций позволили вдохнуть в эту ОС новую жизнь. В настоящее время активно используются архитектуры ARM Cortex-A8 и Cortex-A9 (причём, Cortex-A9 многоядерная), а в самом ближайшем будущем планируется вывести на рынок многоядерные СнК с архитектурой ядра Cortex-A15, работающие на частотах больше 1 ГГц. Это позволяет использовать данную ОС и в вышеназванных кристаллах.
Многие скептически настроенные инженеры до сих пор сохраняют уверенность в том, что продукты Microsoft Embedded не в состоянии конкурировать с теми же Embedded Linux или Google Android по ряду надуманных, необоснованных причин, никак не связанных с текущим состоянием дел в сфере встраиваемых систем. Стабильность работы конечного устройства во многом зависит не столько от самой ОС, сколько (и в первую очередь!) от качества реализации BSP (уровня абстракции и драйверов). Поскольку сама ОС является ОСРВ (операционной системой реального времени), то при правильном подходе к реализации BSP можно добиться устойчивой работы самой ОС и обработки событий с минимальной латентностью. Почти все исходные коды доступны, и соответственно, можно легко переписать какой-либо модуль под собственную задачу, что не оставляет камня на камне в теории приверженцев ОС с открытыми исходными кодами. На наш взгляд, к наиболее ценным нововведениям в ОС Windows Embedded Compact 7 можно отнести следующие:
– появление компилятора с поддержкой вызовов EABI (Embedded-Application Binary Interface), которые обеспечивают большую эффективность по сравнению с существующими реализациями;
– появление в образе ОС полноценной поддержки математического сопроцессора (VFP);
– поддержка ARMv5-, ARMv6-, ARMv7-инструкций;
– появление поддержки OpenMP при компиляции приложений, что позволяет равномерно и корректно распределить задачи в многоядерных СнК на несколько вычислительных ядер;
– поддержка отладки приложений в среде Platform Builder, использующих более одного ядра;
– появление множества нововведений по улучшению процесса отладки в среде Platform Builder;
– новые утилиты удалённой работы (Remote FX) с возможностью создания собственных средств;
– появление нового подхода к обновлению ОС (Windows Embedded Developer Update);
– появление компонента Silverlight 3.0, позволяющего создавать пользовательские интерфейсы с поддержкой распознавания множества касаний сенсорного экрана.
На наш взгляд, ОС Windows Compact 7 является удачным продуктом линейки Windows Embedded и благодаря единой структурированной экосистеме позволяет разрабатывать успешные продукты либо усовершенствовать существующие на иной ОС. При качественной разработке продукта это однозначно станет залогом успешного бизнеса.
Выпустив в первом квартале 2010 г. поколение чипов Tegra 2 (см. рис. 1), NVidia взяла серьёзный реванш после первой серии Tegra. Использование многоядерных ARM Cortex-A9 MP с хорошим набором периферии с приправой в виде отличной графической подсистемы GeForce оказалось как никогда кстати для рынка мобильных устройств. В ходе работы с графической подсистемой мы были поражены её производительностью на больших разрешениях. Надо отметить, что сам чип не занимает много места (есть варианты 12×12 мм либо 23×23 мм), однако он выделяет значитель-
ное количество тепла (по замерам встроенного электронного термометра температура без пассивного охлаждения доходит до 85°C). Поэтому необходимо снижать частоту ядер, чтобы не вывести кристалл из строя. Мы бы рекомендовали использовать для данной СнК пассивное охлаждение.
Рис. 1. Внешний вид СнК NVidia Tegra 240 (PoP)
|
После детального изучения СнК стало ясно, что компания NVidia качественно подошла к его разработке и организации. Судя по набору периферии и функционалу, эту СнК можно отнести к мультимедийной серии. В процессоре реализована поддержка многоканального звука с возможностью вывода цифрового потока на несколько аудиопортов, поддержка SPDIF, поддержка PCI Express шины, встроены два независимых контроллера дисплея с возможностью вывода на два независимых экрана, подключенных по интерфейсам LCD (максимальное разрешение 1680×1050) и HDMI 1.3 1080p (максимальное разрешение 1920×1080). Присутствует также дисковый интерфейс EIDE, который поддерживает PIO-, UltraDMA-, MultiwordDMA-режимы. Необходимо отметить, что данная СнК имеет дополнительные закрытые ARM-ядра, использующиеся для кодирования и декодирования HD-звука, HD-видео и изображений. Сами кодеки поставляются с BSP под данную СнК в виде бинарных файлов. Касательно остальной периферии можно сказать, что тут представлен обычный «джентльменский набор»: NAND-контроллер, SPI, I2C, SDIO, UART и многое другое. Особенностью данной СнК является наличие собственного аппаратного ускорителя 3D-графики GeForce® с 8 ядрами.
Блок-диаграмма СнК NVidia Tegra 250 представлена на рисунке 2.
Рис. 2. Блок-диаграмма СнК NVidia Tegra 250
|
По причине труднодоступности данной СнК компания AXONIM Devices использовала готовый модуль компании Toradex с NVidia Tegra 2 (Tegra 250). Для данных модулей (см. рис. 3) компания Toradex предлагает готовый BSP под Windows Embedded Compact 7, в который входят следующие модули:
– загрузчик EBOOT;
– OAL с поддержкой VFP и SMP;
– KITL;
– драйвер сенсорного экрана с использованием Wolfson WM9715L в качестве контроллера;
– драйвер двух независимых контроллеров экрана (LCD, HDMI);
– драйвер аппаратного ускорителя графики GeForce;
– драйвер модуля HD AVP (аппаратного модуля ускорения обработки видео/аудио данных);
– звуковой драйвер, использующий Wolfson WM9715L контроллер;
– драйвер eMMC NAND-памяти;
– драйвер сетевого адаптера на базе AX88772B;
– драйвер USB-Device и USB-Host;
– драйвер последовательного порта UART;
– драйвер управления питанием;
– драйвер eMMC/SD-памяти;
DirectShow-фильтры, позволяющие проигрывать с помощью стандартного Windows Media Player видео/аудиофайлы с использованием аппаратного декодирования.
Все последующие драйверы компания AXONIM Devices разрабатывала самостоятельно, подписав соглашение о неразглашении (NDA — Non Disclosure Agreement) c NVidia.
Несущая плата Iris Pico ITX с модулем Colibri Tegra 2 представлена на рисунке 4.
Рис. 3. Модуль Colibri Tegra 2 компании Toradex
|
Рис. 4. Несущая плата Iris Pico ITX с модулем Colibri Tegra 2
|
Перед разработкой устройства на базе NVidia Tegra 2 компания AXONIM Devices провела серию тестов работы кодеков в BSP версии 0.1 Beta 4 и представила в таблицах 1 и 2 их результаты.
Указываются максимальные наблюдаемые значения показателей загрузки, % |
Без загрузки |
H.264 |
||||||
1920×1080 |
1280×720 |
|||||||
Базовый профиль, без аудио, 20 Мбит битрейт |
Базовый профиль, B-фреймы, Аудио MP3, 20 Мбит битрейт |
Базовый профиль, без аудио, 4 Мбит битрейт |
Базовый профиль, аудио MP3, 4 Мбит битрейт |
Основной профиль, B-фреймы |
Высокий профиль без аудио, 2 Мбит |
Высокий профиль без аудио, 2 Мбит |
||
CPU (относительно 1000 МГц) |
4 |
25 |
70 |
22 |
67 |
100 |
100 |
|
AVP (относительно 237 МГц) |
2 |
13 |
25 |
12 |
19 |
70 |
70 |
|
EMC (рабочая частота 333 МГц) |
20 |
45 |
45 |
44 |
46 |
37 |
37 |
|
VID (относительно 250 МГц) |
90 |
98 |
99 |
99 |
96 |
96 |
||
AHB (относительно 100 МГц) |
16 |
18 |
15 |
15 |
10 |
10 |
||
APB (относительно 100 МГц) |
0,5 |
2 |
1,25 |
2,5 |
2 |
2 |
||
Примечание |
30 FPS |
10 FPS на динамичной картинке из-за B-фреймов |
30 FPS |
30 FPS |
Не работает |
4 FPS |
3 FPS |
Таблица 2. Результаты декодирования видео в MJPG и MPEG4
Указываются максимальные наблюдаемые значения показателей загрузки, % |
Без за- грузки |
Motion JPEG (MJPG) |
MPEG4 |
||||||
1920×1080 |
1920×1080 |
||||||||
Без аудио, 20 Мбит битрейт |
Аудио MP3, 20 Мбит битрейт |
Без аудио, 80 Мбит битрейт |
Аудио MP3, 80 Мбит битрейт |
Без аудио, 2 Мбит битрейт |
B-фреймы, Аудио MP3, 2 Мбит битрейт |
Без аудио, 6 Мбит битрейт |
B-фреймы, Аудио MP3, 6 Мбит битрейт |
||
CPU (относительно 1000 МГц) |
4 |
12 |
36 |
21 |
43 |
35 |
40 |
80 |
80 |
AVP (относительно 237 МГц) |
2 |
13 |
23 |
13 |
23 |
80 |
100 |
93 |
100 |
EMC (рабочая частота 333 МГц) |
20 |
34 |
37 |
35 |
37 |
40 |
42 |
46 |
46 |
VID (относительно 250 МГц) |
41 |
56 |
45 |
45 |
30 |
51 |
89 |
82 |
|
AHB (относительно 100 МГц) |
15 |
17 |
17 |
18 |
19 |
24 |
21 |
24 |
|
APB (относительно 100 МГц) |
1,5 |
1,5 |
1,75 |
2,25 |
1,25 |
1,5 |
1,75 |
1,75 |
|
Примечание |
30 FPS |
30 FPS |
30 FPS |
30 FPS |
30 FPS |
30 FPS |
30 FPS |
15 FPS |
Для тестирования были специально сформированы видеофайлы необходимых форматов (H.264, MJPG, MPEG4, MPEG2 и WMV8). Видеофайлы форматов MPEG2 и MPEG4 вообще отказались проигрываться. Видеофайлы проигрывались из SDHC-карты со скоростью чтения 12 Мбайт/с.
2. NVidia Tegra 2 Family Technical Reference Manual.
3. Toradex Colibri Tegra 2 Datasheet.