Портирование по на другие платформы реферат

Обновлено: 05.07.2024

Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, редактируя этот пост .

Закрыто 9 месяцев назад .

Я знаю, что Linux доступен и был портирован для многих различных платформ, таких как X86, ARM, PowerPC и т. Д.

Однако с точки зрения портирования, что именно требуется?

Насколько я понимаю, Linux - это программное обеспечение, написанное на C. Поэтому при переносе Linux с X86 на ARM или другие, например, это не просто вопрос повторной компиляции кода с помощью компилятора для конкретной целевой архитектуры?

Если оставить в стороне драйверы устройств для различных периферийных устройств, что еще нужно будет сделать при переносе Linux на новую архитектуру. Разве компилятор не заботится обо всем за нас?

Несмотря на то, что большая часть кода ядра Linux написана на C, все еще есть много частей этого кода, которые очень специфичны для платформы, на которой он выполняется, и должны учитывать это.

Одним конкретным примером этого является виртуальная память, которая работает аналогичным образом на большинстве архитектур (иерархия таблиц страниц), но содержит конкретные детали для каждой архитектуры (например, количество уровней в каждой архитектуре, и эта цифра возрастала даже в x86 с введение новых более крупных чипов.) В коде ядра Linux представлены макросы для обработки этих иерархий, которые могут быть исключены компилятором на архитектурах, которые имеют меньше уровней таблиц страниц (так что код написан на C, но принимает детали архитектуры в рассмотрение.)

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

Переключение контекста. Переключение контекста включает в себя сохранение значения всех регистров для процесса, подлежащего переключению, и восстановление регистров из сохраненного набора процесса, запланированного в ЦП. Даже количество и набор регистров очень специфичны для каждой архитектуры. Этот код обычно реализуется в сборке, чтобы обеспечить полный доступ к регистрам, а также обеспечить максимально быструю работу, поскольку производительность переключения контекста может быть критичной для системы.

Системные вызовы . Механизм, с помощью которого код пользовательского пространства может инициировать системный вызов, обычно зависит от архитектуры (а иногда даже от конкретной модели процессора, например, Intel и AMD вводили разные инструкции для этого, более старые процессоры могут не иметь этих инструкций, поэтому подробнее для тех, кто все еще будет уникальным.)

Обработчики прерываний . Сведения о том, как обрабатывать прерывания (аппаратные прерывания), обычно зависят от платформы и обычно требуют некоторого клея на уровне сборки для обработки конкретных соглашений о вызовах, используемых для платформы. Кроме того, примитивы для включения / отключения прерываний обычно зависят от платформы и также требуют кода сборки.

Инициализация : детали того, как должна происходить инициализация, также обычно включают детали, специфичные для платформы и часто требующие некоторого кода сборки для обработки точки входа в ядро. На платформах с несколькими процессорами (SMP) сведения о том, как подключить другие процессоры к сети, обычно также зависят от платформы.

Вероятно, существуют другие области, в которых для ядра (или, в частности, для ядра Linux) необходим специфичный для платформы или архитектуры код. Если посмотреть на дерево исходных текстов ядра, то под arch/ и под ним есть специфичные для архитектуры поддеревья, include/arch/ где вы можете найти больше примеры этого.

Некоторые из них на самом деле удивляют, например, вы увидите, что число системных вызовов, доступных в каждой архитектуре, различно, и некоторые системные вызовы будут существовать в некоторых архитектурах, а не в других. (Даже на x86 список системных вызовов различается для 32-битного и 64-битного ядра.)

Короче говоря, есть много случаев, когда ядро ​​должно знать, что специфично для платформы. Ядро Linux пытается абстрагировать большинство из них, поэтому алгоритмы более высокого уровня (например, как работают управление памятью и планирование) могут быть реализованы в C и работать одинаково (или в основном одинаково) на всех архитектурах.

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

Многие другие части программного обеспечения имеют дополнительные компоненты, зависящие от платформы; например, просмотр веб-страниц будет значительно быстрее, если вы напишите оптимизированные вручную криптографические примитивы для NSS и OpenSSL для вашей новой архитектуры ЦП, а также серверные компоненты для своевременной компиляции для IonMonkey и V8 . Но это не обязательно для создания новой платформы.

Вы должны сообщить ядру об оборудовании, на которое вы портируете. Работа ядра состоит в том, чтобы напрямую взаимодействовать с оборудованием, поэтому для его правильной работы ядру необходимо знать о процессоре, генераторах (тактовых генераторах) и любых периферийных устройствах, таких как различные виды последовательных портов (SPI, CAN, I2C и т. Д.).

В старые времена вы делали это, написав код для конкретной платформы, который затем использовали бы драйверы для работы. В наши дни это делается путем написания определения дерева устройств .

Аннотация: Существует огромное количество приложений, хорошо зарекомендовавших себя на десктопах, но при этом не имеющих мобильных аналогов. Лекция посвящена возможностям переноса уже существующего приложения для работы на смартфоне. Рассматриваются общие принципы портирования приложений, особенности разработки интерфейсов с учетом возможностей смартфона, особенности портирования ресурсов и сложности, возникающие при переносе приложений на другую платформу. Также приведен обзор программных средств, облегчающих портирование, в котором особое внимание уделяется среде Intel XDK. Для наиболее удобного изучения материала данной темы настоятельно рекомендуется предварительно пройти курс Введение в разработку приложений для ОС Android. Скриншоты приложений взяты из магазина приложений Google Play или сделаны самостоятельно с использованием смартфона Мегафон SP-A20i Mint на платформе Intel Medfield.

Общие принципы портирования приложений

Презентацию к лекции Вы можете скачать здесь.

Портирование приложений

Портирование – адаптация некоторой программы или её части, чтобы она работала в другой среде, отличающейся от той среды, под которую она была изначально написана с максимальным сохранением её пользовательских свойств.

Процесс портирования также называют портированием или переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с программой. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.

Необходимость в портировании возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.

Международные стандарты значительно упрощают портирование. Они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1), сводится к перекомпиляции программы на новой платформе. Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.

Некоторые языки программирования высокого уровня достигают портируемости путем трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.

Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера, игровой приставки или мобильного устройства) на другую платформу.

На рис. 7.1 представлен пример портированной программы.

Главное окно популярного приложения Adobe Reader, предназначенного для просмотра файлов в формате *.pdf. Слева версия для ПК на базе Windows, справа Android


Рис. 7.1. Главное окно популярного приложения Adobe Reader, предназначенного для просмотра файлов в формате *.pdf. Слева версия для ПК на базе Windows, справа Android

Технические особенности смартфонов, влияющие на работу приложений

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

К особенностям смартфонов, требующим особого внимания при разработке приложений, относятся:

  • Ограниченный доступный объем памяти, как оперативной, так и используемой для хранения пользовательских приложений.
  • Сравнительно невысокая скорость обработки информации.
  • Слабый графический процессор.
  • Ограниченный срок работы устройства от батареи.
  • Небольшой экран.

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

  • Сенсорный экран. Здесь отличие только от традиционных ноутбуков, десктопов и нетбуков, т.к. планшеты и ультрабуки тоже обладают возможностями сенсорного ввода.
  • Наличие датчиков gps, гироскопа, акселерометра и других, позволяющих использовать изменение положения устройства в пространстве.
  • Небольшой размер позволяет легко переключаться между горизонтальным и вертикальным расположением экрана в отличие от устройств с физической клавиатурой.

Особенности портирования приложений на мобильные платформы

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

Разработка мобильного приложения "с нуля" состоит из нескольких важных этапов:

  • Постановка задачи.
  • Создание прототипа (бумажного или приложения-заглушки).
  • Определение системных требований и выбор инструмента.
  • Работа над графикой и дизайном приложения и разработка приложения (эти процессы обычно выполняются разными людьми и идут параллельно).
  • Тестирование и оптимизация.
  • Подготовка и публикация приложения в магазине.
  • Сбор аналитики и получение обратной связи.
  • Исправление недочетов и выпуск обновлений.

При портировании приложения на Android есть некоторые отличия от описанного процесса. Задача уже поставлена, есть работающий код, который хотелось бы использовать с минимальными изменениями. Готовое приложение нужно будет готовить к публикации и т.д. абсолютно таким же образом. Но на остальных этапах есть значительные отличия:

  • Интерфейс, графические элементы и дизайн необходимо продумать на этапе прототипирования и переделать подходящим образом.
  • Необходимо выбрать наиболее удобный инструмент разработки.
  • При разработке нужно будет подключить работающий код портируемого приложения.
  • В процессе тестирования и оптимизации возможны значительные изменения в коде исходного приложения (например, при работе с графикой), к этому надо быть готовым.

При выборе платформы разработки приложения необходимо сначала определиться с ее типом. Существуют три варианта: родная (нативная), Web и гибридная.

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

Мобильные Web-приложения обычно пишут на HTML5, CSS и JavaScript. Их можно написать один раз и запускать на разных платформах, но такие приложения могут уступать родным по внешнему виду, восприятию и производительности. Портирование не представляет особых сложностей.

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

Перед портированием необходимо произвести разделение платформенно-зависимых и платформенно-независимых частей программы. Если при проектировании исходного приложения соблюдался принцип отделения интерфейса от реализации, переделать его под другую платформу будет гораздо проще.

Руководитель _________. _____________________(подпись)
(Фамилия, И.О., ученое звание, степень)
К з а щ и т е д о п у с т и т ь
Зав. кафедрой ___________________._________________________(подпись)
( Фамилия, И., О.)

“___”____________________ 2012__ г.Санкт-Петербург, 2012 г.
Квалификационная работа выполнена с оценкой _______________________________


Дата защиты “____”________________________20___г.


Секретарь ГАК ____________________________________


Листов хранения ___________________________________


Чертежей хранения _________________________________Оглавление:


2. Цели и задачи дипломного проекта……………………………………….
10


3. Система тестирования, предметная область, структура данных………..
11


4. Аналитический обзор ОС и инструментария для КПК…………………..
12


4.1 Критерий выбора ОС в КПК…………………………………………..
12


4.2 КПК PalmIIIc с системой Palm OS 3.5………………………………..15


4.3 КПК HP iPAQ rz1710 с системой Windows Mobile 2003SE……….
27


5. Конфигурация и распределение системной памяти……………………..
30


5.2 Создание представления редактирования и компиляция………….
37


5.3 Настройка среды исполнения…………………………………………
41


7. Список использованной литературы…………………………………….
43

На сегодняшний день на рынке программного обеспечения для встраиваемых систем присутствует богатый выбор программных продуктов, как платных, таки свободных. Большинство ведущих производителей программного обеспечения и электронных компонент предлагают свои подходы и средства дляразработки встраиваемой системы целиком или какой-либо её части (например, TexasInstruments, STMicroelectronics,Atmel, NVidia, и т.д.). Надо сразу оговориться, что универсальных рецептов в данной области не существует: практически каждое отдельно взятое решение по-своему уникально. Набор средств сильно разниться в зависимости от следующих ключевых факторов: количество изделий, срок разработки, срок жизниизделия, размеры, энергопотребление, расширяемость, область применения.
Отличительной особенностью микросхем для встраиваемых систем является богатый набор периферии и функциональных возможностей: аудио и видео кодеки HD качества, аппаратная акселерация 2D и 3D графики, поддержка современных промышленных интерфейсов (RS485, I2C, CAN) , поддержка интерфейсов, стандартных для компьютерной техники(несколько каналов RS232, несколько хостов USB 2.0, PCIExpress, Ethernet) Все это в комплексе позволяет решать множество задач от создания интеллектуальных АСУТП до насыщенных мультимедиа-возможностями информационно-развлекательных стендов. За последние несколько лет в таких популярных областях как навигационные устройства, мультимедиа проигрыватели, беспроводные коммуникационные устройства,торговые терминалы, банкоматы, информационно-развлекательные стенды, операторные панели и т.д., сроки разработки прототипов сократились с нескольких месяцев до нескольких недель. Таким образом важнейшим свойством при постановках задач по портированию программного обеспечения в различных системах является кроссплатформенность конечного.


Независимый разработчик из Торонто Амос Лабер (Amos Laber) в своем блоге поделился мыслями о работе над мобильными играми и их портированием на различные платформы.

Платформы

В первую очередь, необходимо определиться с платформой, — считает Лабер. — У начинающего и независимого разработчика, как правило, не густо со средствами, так что, если хотите сделать действительно качественную игру, разрабатывайте ее изначально под одну единственную платформу. Если она станет успешной – вы в дальнейшем всегда сможете ее портировать на другие платформы.

И тут уже возникает другой вопрос – какую платформу выбрать для начала. Причем те, кто разрабатывает казуальную двухмерную игру, зачастую мечутся даже не между двумя-тремя мобильными платформами, а между тем, стоит ли делать десктоп-игру для Facebook или мобильный проект под iOS.

По сути, обе платформы предоставляют доступ к огромной аудитории, обе поддерживают как микротранзакции, так и социальные функции. Единственное действительно крупное отличие между платформами состоит в тех играх, которые пользуются популярностью на каждой из них.

Правда, уже сейчас это грань смывается, так что отличия между платформами становятся сугубо техническими.

Портирование

Портирования даже замечательной игры может быть утомительным делом, которое займет уйму времени. В отличие от ААА-игр, где, как правило, используются кросс-платформенные движки, которые позволяют писать один код для нескольких платформ, казуальные и мобильные игры при портировании зачастую полностью переписываются. Это еще одна причина, почему все-таки следует сосредоточиться на какой-либо одной версии и шлифовать ее, а потом уже начинать работу над другими.

Часто бывает так, что игра, ставшая популярной на какой либо одной платформе, портируется на другую только через шесть-двенадцать месяцев после оригинального релиза. Так было с Angry Birds, Where is My Water?, так будет, судя по последним данным, с Temple Run.

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

Впрочем, при аккуратном подходе к дизайну и тщательном планировании, выпустить две версии игры по цене одной вполне возможно. Это, скажем так, один из подходов: изначально делать так, чтобы фрагменты кода и ассеты легко переносились с платформы на платформу (модульный подход).

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

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

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

Советы

Ниже ключевые принципы, от который следует отталкиваться при разработке игры, если вы хотите в дальнейшем ее портировать:

— Используйте общие типы данных (например, bitmap, sprite sheet и т.п.)

— Позаботьтесь о хорошем инструментарии для подготовки графических и игровых ресурсов

— Используйте объектно-ориентированный язык программирования со строгой типизацией и среду разработки с хорошим дебаггером

— Возьмите за основу хорошо зарекомендовавший себя фреймворк

Да, при использовании Facebook Flash лучше в качестве фреймворка использовать AS3, а при Cocos2D — Objective-C.

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

Аннотация Данный дипломный проект содержит в себе описание процесса портирования ядра операционной системы Linux, приводится аналитический обзор существующих разработок.

Характеристики дипломного проекта:

· Объем составляет 70 страниц.

· Количество графических материалов составляет 9 листов

· Количество литературных источников составляет 10 позиций.

Введение В программировании под портированием понимают адаптацию некоторой программы или её части, с тем чтобы она работала в другой среде, отличающейся от той среды, под которую она была изначально написана. Процесс портирования также называют портингом (от англ. porting), а результат - портом.

Портируемость (переносимость, англ. portability) обычно относится к одной из двух вещей:

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

Международные стандарты (в частности, продвигаемые международной организацией по стандартизации ISO) значительно упрощают портирование, благодаря тому что они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1) сводятся к перекомпиляции программы на новой платформе.

Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как компилятор GCC, предоставляющий неизменный язык программирования на различных платформах.

Некоторые языки программирования высокого уровня (Eiffel, Esterel) достигают портируемости путем трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.

1. Специальная часть.1 Постановка задачи

Необходимость в выполнении портирования операционной системы возникает в силу различий в наборе операций процессора, различий между интерфейсами операционной системы, различий в оборудовании, либо по причине несовместимости или даже полного отсутствия используемого языка программирования в целевом окружении.

На базе ядра Linux может быть создана необходимая конфигурация операционной системы и, поэтому данная операционная система может быть использована в качестве средства для управления процессорами MIPS-архитектуры.

В рамках проекта необходимо произвести портирование ядра Linux в микропроцессорную систему MIPS-архитектуры и провести тестирование полученного порта.

Целью дипломного проекта является разработка порта Linux и проведение тестирования

Читайте также: