Журнал LinuxFormat - перейти на главную

LXF132:ARM

Материал из Linuxformat
Перейти к: навигация, поиск
Linux и ARM

Содержание

ARM: Наше секретное оружие

Многочисленные источники утверждают, что с выходом нетбуков на базе ARM позиции Windows пошатнутся. Андрей Боровский разбирается, почему.

Мир высоких технологий напоминает Северную Америку начала XIX века: помимо хорошо обжитых территорий, где цивилизация уже приняла устоявшиеся формы, есть Дикий Запад, который по-прежнему нуждается в проводниках, исследователях и отважных авантюристах. Мобильные устройства – один из сравнительно новых и все еще малоосвоенных уголков ИТ-мира. Карманные телефоны и компьютеры нельзя назвать новинкой, но в последние несколько лет появились устройства, сочетающие в себе мощь ПК начала этого века, широкополосные каналы передачи данных и мобильность сотового телефона. В этой связи нельзя не отметить удивительную гибкость Linux. Кто бы мог представить, что ОС, корни которой лежат в мире больших многопользовательских машин, так хорошо подойдет для карманных компьютеров?

Мобильные устройства даровали вторую жизнь и процессорам семейства ARM, о которых в последнее время трезвонят все СМИ. Их главное преимущество перед Intel – способность показывать высокую производительность при низкой тактовой частоте (а значит, и энергопотреблении). Не так давно компания ARM распространила видеоролик, в котором продемонстрировала сравнение производительности процессоров Cortex-A9 и Intel Atom: результаты были сопоставимы, а частота работы ARM9 – меньше в три раза. В то время как появление каждого нового процессора Intel сопровождает изрядная шумиха, процессоры ARM тихо делают свое доброе дело, и вы, скорее всего, уже пользуетесь ими, даже не подозревая об этом. Маршрутизаторы Marvell и смартфоны Nokia, Google Nexus One и IP-телефон Snom-100 базируются на ARM и Linux.

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

Что такое RISC?

Ранние микропроцессоры были ориентированы на разработку программ на языке ассемблера (или даже в машинных кодах). Для них было характерно наличие большого числа инструкций, выполняющих сложные операции. Поскольку регистры в прямом смысле стоили дорого, их было немного, а операнды практически всех команд могли поступать как из регистров, так и из ОЗУ.

По мере развития компиляторов и других технологий разработчикам стало очевидно, что более эффективна другая архитектура – со сравнительно небольшим числом инструкций и с большим объемом регистрового файла. Она получила название RISC – Reduced Instruction Set Computer (Компьютер с сокращенным набором команд), а прежняя архитектура была названа CISC(Complete Instuction Set Computer). Практически все современные процессоры (за исключением Intel) относятся к архитектуре RISC.

История героя

Судьба – ироничная штука. Семейство Intel x86 ведет свой родот процессоров, которые предназначались для микроконтроллеров, а ARM изначально задумывался как ЦП для персональных настольных компьютеров (и даже «работал по специальности» в ПК серии Acorn Archimedes и ее немногочисленных клонах) – но увы, к моменту выхода первого ARM (1985 год) лидер в мире ПК уже определился. И хотя ARM1 – настоящий 32‑битный процессор с тактовой частотой 8 Мгц – мог померяться силами с тогдашним фаворитом, 80286 (80386 появился в том же 1985 году, но на рынок ПК вышел значительно позже), в дальнейшем ARM’ам пришлось осваивать устройства поскромнее.

Одним из преимуществ ARM перед конкурентами было то, что их создатели могли начать жизнь с чистого листа. Если инженерам Intel приходилось решать проблемы обратной совместимости, разработчики ARM могли позволить себе простой и элегантный RISC-дизайн. Мудрые решения принесли достойные плоды: если в сегменте ПК ARM не повезло, то в других областях, где требовались производительные и экономичные процессоры, эта архитектура оказалась чрезвычайно популярной. Считается, что чипов ARM было произведено больше, чем любых других. Как и ранняя Intel, компания ARM не стремилась монополизировать производство процессоров своей архитектуры, так что большая их часть изготовлена за пределами ARM. Среди лицензиатов отметились Apple, Broadcom, легендарная Digital Equipment Corporation и сама Intel с XScale.

Неудивительно, что при таком многообразии производителей история поколений ARM выглядит немного запутанной. Помимо названий самих процессоров (ARM1, ARM7TDMI, ARM11, ARM Cortex), в технических спецификациях принято указывать версию архитектуры (например, ARMv1, ARMv4T, ARMv7).

Современная история ARM начинается с архитектуры ARMv4. В ней был впервые реализован блок управления памятью, что позволило запускать современные ОС, в том числе Linux. Надо заметить, что далеко не все области применения ARM требуют защиты памяти и многозадачности, поэтому разработка и выпуск процессоров без блока управления памятью продолжаются и в наше время.

Архитектура ARMv4 и новейшая ARMv7 различаются весьма значительно. Если в первой отсутствовала операция целочисленного деления (не говоря уже о делении с плавающей точкой), то в новых редакциях предусмотрены команды, предназначенные для ускорения обработки мультимедиа-данных (аналог наборов Intel SSE), что, вероятно, нарушает принципы идеологии RISC, но способствует распространению процессоров ARM на современных мобильных устройствах. Полное описание поколений ARM (как и другие полезные сведения) вы найдете в книге «ARM System Developer’s Guide» (ISBN 1‑55860‑874‑5), выпущенной Elsevier (см. http://books.google.com/books?id=vdk4ZGRqMskC).

ARM: Особенности архитектуры

Как и положено RISC-системе, ARM обладает расширенным набором регистров. Всего их 17, причем 13 из них являются регистрами общегоназначения (т.е. могут использоваться по усмотрению программиста).

Адрес возврата из процедуры сохраняется не в стеке, а в специальном регистре. Это позволяет реализовать над ним весьма элегантные операции, но нужно помнить, что вложенных вызовов процедур бывает много, а регистр возврата – только один. Перед вызовом очередной процедуры его содержимое нужно где-то сохранять (а затем – восстанавливать).

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

Историю развития Intel можно описать как переход 8-16-32-64 бита, а у ARM наблюдалось обратное движение: изначально 32-битные (кстати, при этом все инструкции одинаковы по длине – 4 байта), данные процессоры обзавелись добавочным 16-битным режимом, с целью повысить компактность кода и быстродействие на 16-битных шинах. Регистры процессора остаются 32-битными, но не все они доступны так же свободно, как в 32-битном режиме. Порядок байтов процессора в ARM может быть как прямым (little-endian), так и обратным (big-endian).

Linux на мобильном ARM

Дистрибутивов Linux для ARM существует немало: практически у каждого разработчика мобильных устройств с поддержкой Linux есть собственный вариант, не считая инициатив сообщества: например, портирования Linux на Windows-смартфоны HTC. Мы же рассмотрим две системы, ориентированные сразу на несколько устройств (они также могут служить основой для дальнейших разработок).

ARM Linux Internet Platform (http://linux.onarm.com)

Данный продукт создается группой заинтересованных компаний специально для мобильных устройств. ARM Linux Internet Platform – это своего рода Moblin (простите, MeeGo) для ARM. Логически система разделяется на три уровня. Самый нижний – Linux Board Support Package – включает ядро с драйверами, стандартные библиотеки C, оптимизированные под конкретную модель процессора, и средства настройки оборудования. Поверх него реализована общая Linux-платформа (Linux Generic Platform), включающая шину D-Bus, слой абстракции HAL от FreeDesktop.org, виртуальную файловую систему GnomeVFS, X-сервер, менеджер сетей NetworkManager и многое другое. На самом верхнем уровне реализован пакет приложений (Application Suite), содержащий компоненты графического интерфейса пользователя, движок для просмотра web-страниц, мультимедиа. В качестве оконного менеджера используется Matchbox, известный пользователям Linux-устройств Openmoko Neo 1973 и Nokia 770.

Для разработки приложений можно применять основанный на GCC инструментарий Scratchbox (http://www.scratchbox.org), отличительной чертой которого является возможность не только скомпилировать программу для ARM на платформе x86, но и сразу же запустить ее на выполнение в Qemu (подробности ниже).

В настоящее время на основе Linux Internet Platform реализовано несколько готовых систем. Это базовая платформа (Generic Platform), задуманная, как нетрудно догадаться, для последующей специализации. По умолчанию она ориентирована на архитектуру ARMv5T и не содержит средств работы со специализированными устройствами. В пакет приложений базовой платформы входят миниатюрный рабочий стол Matchbox2 (и графическая библиотека Cairo), браузер Nitehawk и мультимедиа-плейер на основе GStreamer. На сайте проекта можно найти инструкции по сборке Generic Platform для Qemu.

Платформа n8x0 предназначена для планшетов Nokia N770/N8x0. Mistral OMAP35x EVM – система для плат OMAP35x EVM, Beagle board – Linux для плат Beagleboard. S3c64xx – платформа для платы Samsung SMDK6400 и ее родственников. Zoom2 – Linux-платформа для очень интересного устройства Texas Instruments Zoom II.

Ångström (http://www.angstrom-distribution.org)

Видели ли вы когда-нибудь мобильное устройство с чистым консольным интерфейсом? Дистрибутив Ångström предоставит вам такую возможность. Его название намекает на небольшие размеры и скромные требования. По словам разработчиков, Ångström можно запустить на устройстве с 4 МБ флэш-памяти, а в будущем, утверждают они, система сможет работать и на тостере.

Помимо консольного интерфейса, Ångström поддерживает графическую оболочку GPE Palmtop Environment и «настоящий» X11. Поставляемый в системе набор шрифтов поддерживает кириллицу, латиницу и иврит. В планах разработчиков – портирование Qtopia. Список поддерживаемой аппаратуры включает различные модели Sharp Zaurus, HP iPaq, Nokia 770, HTC Universal и ряд менее распространенных устройств.

Другие ОС

Linux – предпочтительная, но не единственная ОС для процессоров ARM Symbian,Windows CE, QNX – вот лишь часть систем, рассчитанных на этот процессор. Мы же рассмотрим внимательнее две из сравнительно редко используемых, но весьма интересных ОС.

Было бы странно, если бы Acorn Archimedes, полноценный ПК своего времени, не обладал операционной системой. Она называлась RISC OS (http://www.riscos.com) и уже в 1988 году поддерживала добровольную корпоративную многозадачность, что продолжает делать и до сих пор (напомню, что в современных ОС применяется принудительная – вытесняющая многозадачность). Если бы звезды расположились иначе, RISC OS вполне могла бы занять нишу MS DOS. Как это ни удивительно, RISC OS до сих пор разрабаты вается несколькими компаниями, в том числе Castle Technology. Это однопользовательская система с крайне слабыми средствами защиты программ друг от друга. У нее есть несколько графических оболочек, выполненных на уровне конца 90‑х, и набор приложений того же уровня.

Хотя настоящий Linux может работать только на процессорах с аппаратной защитой памяти, для чипов, лишенных этой роскоши, существует своя Linux-подобная ОС – uClinux (http://www.uclinux.org), изначально базирующаяся на исходных текстах ядра Linux 2.0. В отличие от RISC OS, uClinux не ориентирована специально на процессоры ARM и поддерживает множество других архитектур.

uClinux сделана максимально похожей на Linux, но из-за принципиальной разницы в используемом оборудовании между этими ОС существуют некоторые отличия. В uClinux отсутствует защита памяти, так что любой процесс может «завалить» всю систему. Все процессы выполняются в общем адресном пространстве, и нет системного вызова fork() – есть только функция vfork(), которая похожа, но не идентична одноименной в Linux. Поскольку старый и новый процессы разделяют адресное пространство, попытка выполнять их одновременно может привести к ошибкам. В uClinux выполнение процесса-родителя, вызвавшего vfork(), приостанавливается до тех пор, пока не завершится дочерний процесс. Вместо классической функции malloc() в uClinux используется вызов mmap() (библиотека uClibc – аналог libc – в целях повышения совместимости реализует malloc() как обертку вокруг mmap()).

ARM на вашем ПК

Переходя от программной части нашего экскурса к аппаратной, нельзя не упомянуть Qemu, виртуальную машину, способную эмулировать процессоры ARM. Не побоюсь сказать, что каждый разработчик программ для ARM Linux имеет дело с Qemu. Дело в том, что его можно использовать не только для запуска ARM-программ, но и для их отладки (именно так и поступает уже упомянутый Scratchbox).

Поскольку Qemu входит во все популярные дистрибутивы Linux и собирать его из исходных текстов, в общем-то, нужды нет, мы опустим подробности данной процедуры. Вместо этого рассмотрим установку самого Linux в виртуальную машину. Вам понадобится либо дистрибутив Linux для ARM в виде образа, понятного Qemu, либо образ диска Qemu с уже установленным ARM Linux. Образы ядра и временной файловой системы можно найти, например, на http://people.debian.org/~aurel32/arm-versatile/, а образы дисков с предустановленным Debian – на http://people.debian.org/~aurel32/qemu/arm/. На странице http://www.oszoo.org/wiki/index.php/Category:ARM_images приведен torrent для об разов покрупнее (скажем, с LXDE), а если вы предпочитаете не Debian, а Fedora, обратитесь к ftp://ftp.linux.org.uk/pub/linux/arm/fedora/qemu/ и http://cdot.senecac.on.ca/arm/.

Если вы хотите установить Linux на Qemu самостоятельно, сначала нужно создать образ диска. Например, команда

qemu-img create -f qcow hda1.img 8G

сгенерирует его в формате Qemu и объемом 8 ГБ. Далее вам понадобятся ядро системы (например, vmlinuz-2.6.18‑6‑versatile) и образ временной файловой системы (скажем, initrd.img-2.6.18‑6‑versatile). При использовании названных компонентов команда для запуска Qemu в режиме эмуляции ARM может выглядеть так:

qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.18-6-versatile -initrd initrd.gz -hda1 hda.img -append “root=/dev/ram”

В результате будет начата стандартная процедура инсталляции Linux. При запуске системы с образа, на котором она предустановлена, команда для старта Qemu может выглядеть вот так:

qemu-system-arm -M versatilepb -kernel zImage-versatile -hdc rootfs-f10-dev

Добавление поддержки сети в Qemu – отдельная тема. Скорее всего, виртуальный сетевой адаптер будет единственным средством обмена данными между вашей ARM-машиной и внешним миром. Инструкции по настройке виртуальной сети для Qemu зависят от параметров конкретной ОС, так что рекомендуем вам обратиться к документации и форумам.

Оборудование

Как уже было сказано, в мире существует великое множество устройств, сердцем (или мозгом?) которых служит ARM. Ниже приведены три из них, причем каждое (в некотором роде) характеризует целый сектор применения ARM и Linux.

TI OMAP Zoom II

Если вы ничего не слышали о Texas Instruments OMAP34X Zoom II, в этом нет ничего удивительного. Данное устройство рассчитано не на конечных пользователей, а на разработчиков мобильных приложений. Тем не менее, возможности Zoom II способны порадовать сердце любого ценителя гаджетов: 4‑дюймовый емкостной сенсорный экран с поддержкой модной нынче технологии жестов и HD-видео (устройство может выводить видео и на большой HD-экран), настоящая полноразмерная клавиатура, Wi-Fi, Bluetooth, поддержка 3G-модема, возможность установки SIM-карты, 8‑МПикс камера и акселерометр, процессор TI OMAP3430, основанный на новейшей архитектуре ARMv7, 256 МБ быстрой DDR-памяти и 512 МБ флэш – очень достойные характеристики.

Аппаратная поддержка OpenGL ES 2.0 (ответ платформе Intel Atom) позволяет устройству работать с 3D-графикой в реальном времени, а всевозможные расширенные наборы инструкций ускоряют общую обработку мультимедиа. К этому надо добавить входящую в комплект мощную отладочную плату (одних только разъемов mini-USB – 5 штук!) и средства для разработки приложений.

Symbian Foundation использует TI OMAP Zoom II как эталонное устройство при создании открытых приложений Symbian. Zoom II не обошли вниманием и разработчики Android и мобильных Linux-систем. Впрочем, если вам уже не терпится заполучить Zoom II в собственное пользование, мне, возможно, придется охладить ваш пыл: его цена существенно превышает 1000 долларов.


Iyonix PC

Если же вы – любитель пооригинальничать и хотите иметь у себя дома ПК с процессором ARM, вам не обязательно добывать где-то «старину Архимеда». Компания Castle Technology, одна из наследниц Acorn, предлагает всем желающим Iyonix PC, основанный на процессоре Intel XScale и оснащенный новой версией RISC OS, но поддерживаемый и распространенными дистрибутивами ARM Linux для настольных ПК. По отзывам пользователей, производительность Iyonix PC сопоставима с ранними Pentium IV, в то время как цена соответствует современным компьютерам сегмента Low-End. Что же касается возможности приобретения Iyonix PC в нашей стране, то я предоставляю желающим (буде таковые найдутся) пройти этот квест самостоятельно.

HP iPAQ

Если вы собираетесь заняться программированием для ARM, эмулятор Qemu, при всех своих возможностях, вряд ли сильно вдохновит вас. В конце концов, мы ведь хотим видеть наши программы на настоящем устройстве, не так ли? Однако профессиональное решение, подобное TI OMAP Zoom 2, для большинства из нас будет слишком дорогим, а Iyonix PC – слишком экзотичным (да и доставить в нашу страну этот ПК будет непросто). Я уж не говорю о том, что при всей нашей любви к электронной технике ради нее самой, далеко не все линуксоиды захотят покупать устройство, которое трудно применять для чего-то еще, кроме отладки собственных приложений.

Хорошим выбором для Linux-разработчика могут стать наладонники и смартфоны iPAQ, которые ныне выпускаются компанией Hewlett-Packard. Одно из преимуществ HP iPAQ – активная поддержка со стороны сообщества Linux, в частности, разработчиков Scratchbox. Устройства продаются с предустановленной мобильной Windows, но установить на них Linux – не проблема.

На сайте http://www.handhelds.org (и многих других) можно найти советы, как оснастить iPAQ различными дистрибутивами (как минимум – Familiar Linux и Ångström), создав резервную копию Windows. После базовой установки Linux вы сможете подключить устройство к внешнему миру, используя стек TCP/IP, через Wi-Fi, Bluetooth, USB и даже последовательный порт. Теперь вы получаете всю ту свободу, которую обычно дает вам Linux. Можно поставить инструментарий разработчика GNU на само устройство, но удобнее все же установить кросс-платформенную систему сборки на «большом компьютере».

Итак, будем считать, что вы выбрали платформу для тестирования и отладки программного обеспечения, ориентированного на ARM. В следующей статье речь пойдет о самих средствах разработки.

Персональные инструменты
купить
подписаться
Яндекс.Метрика