Основу курса составили лекции, прочитанные авторами летом и осенью 2012 года для слушателей Летней и Осенней школы Лаборатория СПРИНТ (Системного ПРограммирования и ИНформационных Технологий) СПбГУ, созданной и финансируемой при поддержке корпорации Интел.
Главная цель курса - дать общее представление о процессе разработки приложений для встроенных систем на платформе Intel Atom. Настоящий курс следует рассматривать в качестве продолжения общего вводного курса "Введение в разработку мобильных приложений на платформе Atom", разработанного ранее О.Н. Граничиным, В.И. Кияевым, А.В. Корявко, С.А. Леви, К.С. Амелиным, Е.И. Антал и В.И. Васильевым.
Курс состоит из шести лекций и шести лабораторных работ.
Авторы благодарят сотрудников корпорации Интел Алексея Владимировича Николаева и Игоря Олеговича Одинцова за инициативу по разработке и созданию курса, за активное участие в разработке программы курса.
При подготовке пособия были использованы материалы, размещенные на сайтах: http://www.intel.com, http://www.android.com и др.
Ссылки на программные продукты различных фирм не используются в рекламных целях и носят исключительно иллюстративный или справочный характер.
Курс разработан при финансовой поддержке Лаборатории СПРИНТ СПбГУ.
Презентацию к лекции Вы можете скачать здесь.
Основные тенденции полупроводниковой индустрии:
В 2011 году планируется запуск в Израиле новой фабрики по производству микросхем по технологии 22 нм. Одним из "неожиданных" следствий Закона Мура для развития бизнеса корпорации Интел стал тот факт, что в ближайшее время при очередной смене технологической платформы возможности новых фабрик достигнут такого уровня, что в кратчайшие сроки будет возможно модернизировать все существующие места традиционного использования компьютеров, активно выйти на рынок планшетников, смартфонов и даже встроенных систем. Сохранение при этом универсальной x86 архитектуры и системы команд в значительной степени служит явным конкурентным преимуществом.
Все это приводит к изменению роли и места на рынке корпорации Интел. К традиционным процессорам для серверов и персональных компьютеров и ноутбуков добавляются нетбуки, смартфоны, различные персональные устройства, мобильные Интернет-устройства, "умное" телевидение, бытовая электроника с подключением к Интернет (например, IPTV), встраиваемые системы и т.п. При этом в перспективе нивелируются аппаратные отличия. Так, например, уже сейчас для серверов готовятся решения на основе новых многоядерных процессоров Intel-Atom. Сейчас уже многие говорят о возможности создания своеобразного компьютерного континуума Интел (см. рис.1.1), включающего наряду с новыми аппаратными платформами и операционные системы, специализированные программы поддержки разработчиков, средства хранения, доступа и реализации разработанных компьютерным сообществом приложений.
(рис 1.1) Компьютерный континуум Intel®
Осенью 2010 года корпорация Intel объявила о выпуске семейства "систем-на-чипе" Intel® Atom™ E600 (кодовое наименование Tunnel Creek) для встраиваемых систем и о предстоящем появлении Intel® Atom™ CE4200 (кодовое наименование Groveland) - семейство "систем-на-чипе" III поколения, базирующееся на архитектуре Intel, предназначеных для использования в "умном" телевидении, в системах, объединяющих стандартное телевещание с Интернетом, библиотекой контента и мощными функциями поиска. В состав решений входят интегрированные ядро Intel Atom™ с частотой 1,2 ГГц и кэш-память второго уровня объемом 512 КБ. Оно предлагает широкие возможности для разработки интерактивных, открытых и персонализированных приложений для запуска на экране телевизора. На базе Intel® Atom™ CE4200 уже разработано решение для потребительской электроники. Эта "Система-на-чипе" осуществляет многопоточное декодирование и обработку HD-видео, поддерживает 3D, MPEG2, MPEG4-2 и VC-11. Решение оснащено интегрированным декодером HD-видео (H.264), позволяет осуществлять видеозвонки, потоковую передачу материалов на другие устройства, в том числе портативную электронику. Благодаря поддержке различных режимов питания новые решения помогают снизить энергопотребление и создавать устройства, удовлетворяющие промышленным стандартам по энергопотреблению. Планы по созданию цифровых приставок нового поколения на базе компонентов Intel озвучили ADB*, Sagemcom,* Samsung* и Technicolor*.
(рис 1.2)
В ближайшее время будет выпушена новая платформа - Medfield (Penwell SoC and Avantele Passage MSIC) - разрабатываемая по технологии 32 нм с существенным уменьшением общих размеров и потребляемой мощности, с размером высокоинтергированной SoC: 144 кв мм, увеличением до 4X graphics performance.
Что общего в разработке приложений для разных мобильных устройств, на что надо особо обратить внимание? Это - ограничения по производительности и энергопотреблению, беспроводное взаимодействие, малые размеры и формы.
С какой основной проблемой сталкиваются сегодня разработчики и пользователи? Все устройства на рис.1.3 объединяются тем, что внутри у них стоит процессор Intel® Atom™. У процессоров Intel за последние несколько десятков лет система команд менялась эволюционно, есть преемственность кодов, поколений разработчиков. Но процессоры Intel® Atom™ в каждом из этих устройств используются по-разному, в каждом из устройств он установлен на своей плате, в оригинальном окружении, работает с разными операционными системами. И если вы разрабатываете какое-нибудь свое приложение, например, игру типа Тетрис, то, сделав ее для одного, например, телефона, трудно ее перенести на другое мобильное устройство. Даже при кросс-платформенной среде разработки возможны трудности, связанные с тем, что не все инструкции могут отрабатываться с одинаковым результатом.
(рис 1.3) Продающиеся сегодня платформы с процессором Intel® Atom™
Инициативы внутри рынка мобильных устройств для производителей были чрезвычайно важны в последнее время в связи с бурным ростом этого сегмента рынка. Но на этом рынке долгое время царила фрагментарность. Каждая крупная корпорация стремилась создать свою собственную операционную систему, разрабатывает свои приложения и живет вместе с несколькими своими союзниками на этом узком рынке, на который очень трудно попасть новым игрокам, разработчикам. Например, если вы студент, аспирант или даже школьник придумали свою хорошую идею, то для ее быстрой реализации очень трудно было "перескочить" через эти установленные барьеры, защищенные патентами, закрытостью кода операционных систем. Если система коммерческая со строгой лицензионной политикой, то, как правило, нельзя деассемблировать ее код, свободно переписывать функции и т. п. Для того, чтобы вставить что-то свое "в середину" чужой системы вам нужно иметь штат хорошо подготовленных юристов, способных подготовить все необходимые соглашения с правообладателями и , конечно, заплатить много денег. Все это, как правило, не реально для молодых и начинающих. Вы с трудом могли пробиться с новой идеей на этот "узкий" рынок.
В последнее время все большую популярность зарабатывает операционная система Android. При подготовке практических пример в дальнейшем мы будем ей уделять основное внимание.
Android - операционная система для коммуникаторов, планшетных компьютеров, нетбуков и других небольших устройств, основанная на ядре Linux 2.6. Истоки возникновения операционной системы Android уходит корнями в 2002 год. В это время создатели корпорации Google заинтересовались набором программных разработок Э. Рубина. Первоначально проектом создания новой ОС Android для мобильных устройств занималась компания Android Inc., которую Google приобрела в июле 2005 года.
(рис 1.4)
В ноябре 2007 года состоялся долгожданный анонс системы Android. В том же году был создан альянс Open Handset Alliance, объединяющий ведущих производителей мобильных телефонов и разработчиков программных компонентов. Вошедшие в альянс компании получили доступ к исходному коду ОС Android. В 2008 году на рынке появилось первое устройство под управлением ОС Android - смартфон HTC Dream. В 2011 Google купила мобильное подразделение компании Motorola, закрепив позиции своей ОС на рынке.
Традиционно версия ОС Android, кроме номера, имеет название - английское наименование какого-либо десерта, начинающееся с очередной буквы алфавита. Рассмотрим наиболее важные этапы на пути развития Android:
Если представить компонентную модель Android в виде иерархии (рис.1.5), то в самом низу, в самой основе будет располагаться ядро операционной системы. Оно обеспечивает функционирование системы и отвечает за безопасность, управление памятью, энергосистемой и процессами, а также предоставляет сетевой стек и модель драйверов. Ядро также действует как уровень абстракции между аппаратным и программным обеспечением.
"Выше" ядра, как программное обеспечение промежуточного слоя, лежит набор библиотек (Libraries), предназначенный для решения типовых задач, требующих высокой эффективности. То есть, именно этот уровень отвечает за предоставление реализованных алгоритмов для вышележащих уровней, поддержку файловых форматов, осуществление кодирования и декодирования информации (в пример можно привести мультимедийные кодеки), отрисовку графики и многое другое. Библиотеки реализованы на C/C++ и скомпилированы под конкретное аппаратное обеспечение устройства, вместе с которым они и поставляются производителем в предустановленном виде.
Перечислим некоторые из низкоуровневых библиотек:
(рис 1.5) Компонентная модель ОС Android
На этом же уровне располагается Android Runtime - среда выполнения прикладных программ. Ключевыми её составляющими являются набор стандартных библиотек и виртуальная машина Dalvik. Каждое приложение в ОС Android запускается в собственном экземпляре виртуальной машины Dalvik. Таким образом, все работающие процессы изолированы от операционной системы и друг от друга. Архитектура Android Runtime такова, что работа программ осуществляется строго в рамках окружения виртуальной машины. Благодаря этому осуществляется защита ядра операционной системы от возможного вреда со стороны других её составляющих. Поэтому код с ошибками или вредоносное ПО не смогут испортить ОС Android и устройство на её базе. Такая защитная функция, наряду с выполнением программного кода, является одной из ключевых для Android Runtime.
Уровнем выше располагается Application Framework, иногда называемый уровнем каркаса приложений. Именно через каркасы приложений разработчики получают доступ к API, предоставляемым компонентами системы, лежащими ниже уровнем. Кроме того, благодаря архитектуре фреймворка, любому приложению предоставляются уже реализованные возможности других приложений, к которым разрешено получать доступ. В базовый набор сервисов и систем, лежащих в основе каждого приложения и являющихся частями фреймворка, входят:
На вершине программного стека Android лежит уровень приложений (Applications). Сюда относится набор базовых приложений, который предустановлен на ОС Android. Например, в него входят браузер, почтовый клиент, программа для отправки SMS, карты, календарь, менеджер контактов и многие другие. Список интегрированных приложений может меняться в зависимости от модели устройства и версии Android. И помимо этого базового набора к уровню приложений относятся все прикладные приложения под платформу Android, в том числе и установленные пользователем.
Как правило, приложения под Android пишутся на языке Java, но существует возможность разрабатывать программы и на C/C++ (с помощью Native Development Kit). Экзотикой можно назвать использования Basic (с помощью Simple) и других языков. Также можно создавать собственные программы с помощью конструкторов приложений, таких как App Inventor.
Ядро является самой важной частью ОС Linux, и в отличие от других его частей, было перенесено в ОС Android почти полностью. Тем не менее, в процессе переноса на ядро было наложено около 250 патчей.
В ядре ОС Android было решено отказаться от средств межпроцессного взаимодействия ОС Linux и вместо них создать единый механизм, названный Binder. Binder позволяет вызывать методы одного процесса из другого процесса, передавая им аргументы и получая результат, подобно тому, как методы вызываются внутри одного процесса. Binder делает эту работу с минимальным использованием памяти.
Для обеспечения отладки на маленьких устройствах в ядро добавлен вывод отладочной информации в последовательный порт и реализована поддержка команды logcat.
Большие изменения коснулись работы с памятью. Традиционная разделяемая память Linux shmem была заменена на ashmem. Та же задача, но на уровне физической памяти, решается с помощью драйвера pmem. Добавлен специальный обработчик нехватки памяти (out of memory), названный Viking Killer, в простейшем случае он просто убивает процесс, но могут быть заданы более сложные правила.
В сетевой стек добавлены новые настройки безопасности, поддержка файловой системы для флеш-носителей YAFFS2 включена в ядро.
Dalvik Virtual Machine является частью мобильной платформы Android. Это виртуальная машина, автором которой является Дэн Бронштейн. Она распространяется как свободное программное обеспечение под BSD-совместимой лицензией Apache 2.0. Во многом именно этот факт сыграл свою роль в решении Google отказаться от JME (Java Micro Edition), на которую необходимо было бы получить лицензию от Sun. Поэтому корпорация, целью которой было создание открытой операционной системы, разработало свою собственную виртуальную машину.
В отличие от большинства виртуальных машин (той же Java Virtual Machine), которые являются стек-ориентированными, Dalvik является регистр-ориентированной, что нельзя назвать стандартным решением. С другой стороны, оно очень хорошо подходит для работы на процессорах RISC-архитектуры, к которым относятся и процессоры ARM, очень широко применяемые в мобильных устройствах.
Dalvik проектировалась специально под платформу Android. Учитывался тот факт, что платформа строит все процессы как изолированные, выполняющиеся каждый в своём адресном пространстве. Виртуальная машина оптимизирована для низкого потребления памяти и работы на мобильном аппаратном обеспечении. Начиная с версии Android 2.2., Dalvik использует JIT (Just-in-Time) компиляцию. В результате этих особенностей, получилась быстрая и производительная виртуальная машина, что не может не сказываться на работе приложений в целом.
Dalvik использует собственный байт-код. При разработке приложения под Android переводятся компилятором в специальный машинно-независимый низкоуровневый код. При выполнении на платформе именно Dalvik интерпретирует и выполняет такую программу.
Кроме того, Dalvik способна переводить байт-коды Java в коды собственного формата и также исполнять их в своей виртуальной среде. Программный код пишется на языке Java, а после компиляции все .class файлы конвертируются в формат .dex (пригодный для интерпретации в Dalvik) с помощью специальной утилиты dx, входящей в состав Android SDK.
Bionic - библиотека стандартных вызовов языка C, распространяемая под лицензией BSD (Berkeley Software Distribution ? система распространения программного обеспечения в исходных кодах, созданная для обмена опытом между учебными заведениями) и разработанная Google для Android. В bionic отсутствуют некоторые не используемые в Android функции POSIX, доступные в полной реализации glibc.
Основные отличия bionic :
Рекомендуемый способ непосредственного использования и расширения bionic это использование Android Native Development Kit.
Для прикладного программиста Android - набор интерфейсов на языке Java. Рассмотрим, как он организован. В основе набора - пакеты, входящие в стандарт языка Java, такие как java.util, java.lang, java.io. Они есть на любой платформе, где могут быть запущены java-приложения, и неспецифичны для Android. К ним примыкают расширения, которые в стандарт языка не входят, но де-факто давно являются стандартными - пакеты javax.net, javax.xml.
Также в Android включены менее распространенные расширения Java - пакет org.apache.http, самая солидная реализация протокола HTTP. Пакет org.json отвечает за сериализацию объектов JavaScript и поддержку технологии AJAX. Пакет org.w3c.dom обеспечивает объектную модель документа HTML, а пакет org.xml.sax - работу с XML. Такой подбор компонентов свидетельствует об ориентации на веб-разработку, веб-приложения. Одновременно использование ставших классическими библиотек облегчает перенос приложений на Android.
Наконец, самым большим и интересным является набор интерфейсов, созданных специально для Android. Рассмотрим некоторые из его пакетов.
Пакеты android.view и android.widget отвечают за графический интерфейс пользователя (GUI). Они содержат набор встроенных виджетов, таких как кнопки и поля ввода, компоновки (layout) для расположения виджетов на экране, взаимодействие виджета с пользователем. С их помощью можно создать простейшее приложение для Android.
Для работы с примитивами рисования и графическими файлами предназначен пакет android.graphics. С помощью android.animation можно создавать несложную анимацию. Начиная с версии Android 3.0 стала доступна мощная и универсальная система Property Animation, в более ранних версиях анимация была либо привязана к GUI, либо просто представляла собой набор кадров.
Пакет android.opengl предоставляет движок OpenGL ES 2.0, android.gesture - поддержка управления жестами на сенсорном экране, позволяет распознавать жесты и создавать новые.
Большое количество интерфейсов предназначено для коммуникации. Пакет android.net включает стеки сетевых протоколов высокого уровня, таких как HTTP и SIP, поддержку WiFi. Пакет droid.webkit - популярный движок веб-браузера, позволяет легко отображать веб-страницы в приложении. Пакеты android.bluetooth и android.nfc предоставляют стеки протоколов связи на коротких расстояниях BlueTooth.и Near Field Communication соответственно. Пакет android.telephony дает доступ к телефонной функциональности - например, информация о соте или отправка SMS. Пакет android.drm позволяет контролировать защищенный контент с помощью системы Digital Rights Management.
Для управления прикладными приложениями предназначен пакет android.app. Пакет android.os - Java-обертка для некоторых системных библиотек, например, для Binder. Пакет android.hardware позволяет обращаться к камере и датчикам, а пакет android.location предоставляет информации о географических координатах устройства, в т. ч. с помощью датчика GPS.
Пакет android.media отвечает за кодирование звуковых и видео потоков, для маленьких устройств это до сих пор вычислительно сложная задача, требующая качественной оптимизации. Пакет android.database предоставляет доступ к базам данных, включая SQLite.
Основная цель этой лекции - подготовка слушателей к освоению курса, рассказ о его содержании, структуре и об общих сведениях по платформе Интел-Атом и ОС Андроид.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.