Опубликован: 14.07.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет

Самостоятельная работа 3: Разработка приложения с использованием математических функций и библиотек"

< Лекция 3 || Самостоятельная работа 3: 123 || Лекция 4 >
Аннотация: Подготовка кросс-инструментария и разработка типовых программ.
Ключевые слова: расстояние

6.3.1. Цель лабораторной работы

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

6.3.2. Введение

Набор инструментов Cygwin

Cygwin (произносится /sIgwIn/), набор свободных программных инструментов разработанных фирмой Cygnus Solutions, позволяющих превратить Microsoft Windows и Windows NT различных версий в некоторое подобие UNIX-системы. Изначально Cygwin задумывался как среда для переноса программ из POSIX-совместимых операционных систем (таких как GNU/Linux, BSD и UNIX) в Windows. Программы, портированные с помощью Cygwin, работают лучше всего в Windows NT, но в некоторых случаях годятся и Windows 9x. В настоящее время проект Cygwin разрабатывается сотрудниками Red Hat и другими программистами. Подобные функциональные возможности предлагает также и Microsoft в своем пакете Services for UNIX, включающем в себя подсистему Interix.

Cygwin представляет собой библиотеку, которая реализует интерфейс прикладного программирования POSIX на основе системных вызовов Win32. Кроме того, Cygwin включает в себя инструменты разработки GNU для выполнения основных задач программирования, а также и некоторые прикладные программы, эквивалентные базовым программам UNIX.

Замечание! Red Hat реализует библиотеку Cygwin под лицензией GNU GPL, с оговоркой, что разрешается ее свободное использование с любым свободным программным обеспечением с открытым кодом. (Для распространения коммерческих программ, использующих библиотеку Cygwin, необходимо приобретение лицензии у RedHat).

В нашей задаче Cygwin используется как среда работы инструментов GNU Make, GCC И GNU ARM.

GCC

GNU Compiler Collection (обычно используется сокращение GCC) - набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением, распространяется фондом свободного программного обеспечения (FSF) на условиях GNU GPL и GNU LGPL и является ключевым компонентом GNU toolchain. Он используется как стандартный компилятор для свободных Unix-подобных операционных систем, и в нескольких проприетарных операционных системах, в том числе Apple Mac OS X.

Изначально названный GNU C Compiler, он поддерживал только язык C. Позднее, GCC был расширен для компиляции исходных кодов на таких языках программирования как C++, Objective-C, Java, Fortran, и Ada.

GNU C состоит из двух частей - набора компиляторов с разных языков в абстрактное дерево, независимое от языка и процессора (такие компиляторы называются front ends) и набора "компиляторов", превращающих дерево в объектный код для разных процессоров (такие программы называются back ends). Такая схема позволяет делать код универсальнее: некоторый код, скомпилировавшийся для одного процессора, должен скомпилироваться и для остальных. Сейчас написаны front ends для самых разных языков программирования и back ends для всех основных процессоров, включая используемые в PDA (КПК - карманный персональный компьютер).

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

Процесс компиляции кода основывается на GNU toolchain, базирующихся на back ends. GNU toolchain - набор необходимых пакетов программ для компиляции и генерации выполняемого кода из исходных текстов программ. Т.е. для каждой платформы необходим свой набор программ. В нашем случае в качестве toolchain выступает GNU ARM.

GNU make - утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Чаще всего это компиляция исходного кода в объектные файлы и последующая компоновка в исполняемые файлы или библиотеки. В нашем случае она используется для создания объектных файлов для встроенных систем (байткода).

GNU ARM

GNU ARM - это набор пакетов программ для компиляции и генерации выполняемого кода (т.е. toolchain) для устройств на базе процессора ARM7. Существует множество альтернативных toolchain для устройств на базе процессора ARM7: официальный - CodeSourcery GNU Toolchain for ARM Processors, YAGARTO - Yet Another GNU ARM Toolchain, WinARM, devkitARM, HPGCC.

Такое обилие ПО объясняется обилием применения процессоров ARM в технике. ARM Ltd. (название происходит от Advanced RISC Machines) (LSE: ARM, NYSE: ARMHY) - британская корпорация, являющаяся одним из крупнейших разработчиков и лицензиаров современной архитектуры 32-х разрядных RISC-процессоров, специально ориентированных для использования в портативных и мобильных устройствах (таких, как мобильные телефоны, персональные органайзеры, пр.). ARM не является производителем микропроцессоров как таковым, однако лицензирует собственную технологию третьим фирмам, таким как Atmel, Cirrus Logic, Intel, Marvell, NXP, Samsung, Qualcomm, Sony Ericsson, Texas Instruments которые, собственно, и воплощают ее в чипах.

Технология ARM оказалась весьма успешной и в настоящее время является широкораспространённой микропроцессорной архитектурой для портативных цифровых устройств. ARM утверждает, что общий объем микропроцессоров, произведенных по их лицензии, превышает 2,5 миллиарда штук.

В настоящее время известны несколько семейств микропроцессоров ARM - ARM7 (обычно с тактовой частотой около 50 МГц, предназначенные, например, для недорогих мобильных телефонов), ARM9 (с частотами порядка 200 МГц для продвинутых телефонов и карманных компьютеров) и ARM9E. Новейшим семейством является ARM11 с тактовой частотой до 1ГГц и расширенными мультимедийными возможностями.

ОС nxtOSEK

nxtOSEK - операционная система реального времени (Real-Time Operating System, RTOS) основанная на модификации ОС для встраиваемых систем OSEK Пакет nxtOSEK содержит модифицированную ОС TOPPERS OSEK RTOS, драйвера от LeJos NXJ - одного из альтернативных вариантов прошивки для NXT, кода, связывающего эти две части, и набора библиотек. В результате этот пакет при использовании на NXT предоставляет возможность выполнять на устройстве программы написанные на ANSI-С/С++ и скомпилированные с помощью toolchain GNU ARM и библиотек пакета. Начиная с версии 2.0 nxtOSEK совместим с интерфейсом "стандартной" прошивки. Это значит, что можно загружать несколько написанных для nxtOSEK программ во флэш память NXT на котором установлена "расширенная" прошивка LEGO. Использование этой прошивки позволяет запускать так же программы написанные на NXT-G, NXC/NBC.

6.3.3. Инструкция по выполнению лабораторной работы

6.3.1. Подготовка

Установка Cygwin / GNU Make

В первую очередь, что бы обеспечить многокомпонентную среду компиляции необходимо установить Cygwin / GNU Make. Для этого необходимо выполнить следующие шаги:

Скачайте Cygwin версии 1.7.x (на момент написания 1.7.7) с сайта Cygwin http://www.cygwin.com/

Запустите setup.exe (рис. 3.1).

Программа установщик Cygwin

Рис. 6.1. Программа установщик Cygwin
Раскройте блок пакетов Database Default

Рис. 6.2. Раскройте блок пакетов Database Default
Выберите пакет make версии 3.81-2

Рис. 6.3. Выберите пакет make версии 3.81-2
Выберите указанные библиотеки

Рис. 6.4. Выберите указанные библиотеки

Установите Cygwin в директорию в полном имени которой нет пробелов и символов из расширенных наборов, например C:\cygwin

Выберите (рис. 3.3, 3.4) пакет make версии 3.81-2 или выше в разделе Devel (необходимо устанавливать и пакет SED, но он выбран по умолчанию).

< Лекция 3 || Самостоятельная работа 3: 123 || Лекция 4 >
А В
А В
Россия, Новосибирск
Marvin Keupink
Marvin Keupink
Австрия, Wien