Введение в разработку приложений для встроенных систем на платформе Intel Atom

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

Разбить на страницы
Показывать лекцию целиком

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).

(рис 6.1) Программа установщик Cygwin (рис 6.2) Раскройте блок пакетов Database Default (рис 6.3) Выберите пакет make версии 3.81-2 (рис 6.4) Выберите указанные библиотеки

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

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

Установка GNU ARM

Как уже говорилось, GNU ARM - это модификация GCC (точнее набор необходимых пакетов + GCC) для процессора ARM7 (микроконтроллера ATMEL AT91SAM7S256), который используется в NXT. Для установки GNU ARM необходимо выполнить следующие шаги:

Скачайте дистрибутив GCC 4.0.2 для Cygwin из секции Binaries в разделе FILES сайта GNU ARM: http://www.gnuarm.com/ http://www.gnuarm.com/bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4.exe

Запустите инсталлятор и установите GNU ARM в директорию в полном имени которой нет пробелов и символов из расширенных наборов, например C:\cygwin\gnuarm

(рис 6.5) Программа установщик GNUARM

Микроконтроллер ATMEL AT91SAM7S256 не имеет FPU (Floating Point Unit), поэтому не требуется устанавливать все, что относится FPU, а так же к Big Endian (рис. 3.5).

Нет необходимости устанавливать Cygwin DLL, так как Cygwin уже был установлен ранее. Поэтому необходимо убрать соответствующую галочку в процессе установки (рис. 3.6).

В конце установки пользователя спрашивают добавить ли путь установленного пакета в переменную PATH среды окружения (Windows Environment Path). Это делать НЕ надо.

(рис 6.6) Необходимо убрать нижний флажок

Программы загрузчики для NXT

В данном разделе под программами загрузчиками подразумеваются программы-инструменты с помощью которых можно передавать скомпилированный код в устройство LEGO® NXT. Начиная с версии ECRobot 3.06 вместо инструмента AMTEL SAM-BA (используется для передачи данных микроконтроллеру на базе AMTEL AT91SAM) используется USB драйвер LEGO. Это дает некоторые преимущества:

Можно использовать ECRobot и стандартное ПО LEGO® (напр. NXT-G) на одном компьютере.

Более устойчивое соединение при загрузке кода.

Проще настроить.

Замечание! Если на компьютере уже был установлен пакет AMTEL SAM-BA необходимо полностью удалить (деинсталлировать) его с компьютера перед тем как установить USB драйвер LEGO.

Существуют несколько вариантов загрузки кода в устройство NXT, а так же несколько вариантов использования памяти NXT. Если сформулировать коротко, то для загрузки приложения может потребоваться или USB драйвер LEGO® и программа nexttool, или библиотека libusb. Выполнять приложения и использовать память устройства NXT можно или с помощью "улучшенной" прошивки LEGO® или используя инструментарий системы реального времени LEJOS OSEK. Использование "улучшенной" прошивки подразумевает использование nexttool+USB драйвер LEGO, соответственно, использование инструментария LEJOS OSEK требует установки libusb. Последний вариант дает возможность использовать код размером более 64 кбайт (до 224 кбайт) или загружать код прямо в ОЗУ (RAM память) устройства NXT.

Начиная с версии 2.02 nxtOSEK поддерживает "улучшенную" прошивку разработанную Джоном Хансеном (John Hansen). Эта прошивка дает возможность использовать одновременно (т.е. без необходимости замены прошивки) программы написанные для стандартной прошивки и программы написанные непосредственно под архитектуру ARM7. Поэтому, если есть необходимость использовать программы, написанные для стандартной прошивки (на NXT-G, NBC, NXC и т.д.) и программы, сгенерированные пакетами ECRobot/nxtOSEK, надо установить "улучшенную" прошивку на устройство NXT и использовать инструмент nexttool.

Установка USB драйвера LEGO

(рис 6.7) Страница загрузки USB драйвера LEGO

При установке стандартного ПО LEGO® USB драйвер LEGO® устанавливается автоматически. Если стандартное ПО LEGO не установлено, тогда необходимо зайти на официальный сайт LEGO® MINDSTORMS в раздел обновления ПО http://mindstorms.lego.com/Support/Updates/, cкачать и установить MINDSTORMS NXT Driver v1.02.

Установка Phantom driver

Загрузите LEGO MINDSTORMS NXT драйвер (Phantom driver) по следующей ссылке http://mindstorms.lego.com/en-us/support/files/default.aspx#Driver

(рис 6.8)

Установка nxtOSEK, улучшенной стандартной прошивки NXT и NeXTTool

Пакет nxtOSEK доступен по адресу http://lejos-osek.sourceforge.net/index.htm. Достаточно разархивировать пакет в папку cygwin.

Что бы удовлетворять условиям сайта sourceforge.net из состава пакета был убран файл sg.exe из проекта TOPPERS, его необходимо скачивать отдельно с сайта http://www.toppers.jp/osek-download.html. Файл нужно поместить в директорию nxtOSEK/toppers_osek/sg

Для установки "улучшенной стандартной прошивки NXT" (enhanced NXT standard firmware) необходимо:

  • Загрузить "улучшенную прошивку" по адресу http://bricxcc.sourceforge.net/lms_arm_jch.zip (версия 128) и установить, используя меню "Инструменты/Обновление системы NXT" ПО NXT-G, или используя nexttool.
  • Загрузить NeXTTool по адресу http://bricxcc.sourceforge.net/utilities.html и установить в директорию не содержащую пробелов и символов из расширенных наборов (напр. C:\cygwin\nexttool). NeXTTool - это консольная программа позволяющая загружать .rxe файлы в устройство NXT.
  • Осталось только загрузить прошивку в устройство. Соедините устройство с компьютером кабелем.Запустите командную строку и перейдите в каталог ../cygwin/nexttool

    Выполните команду: NeXTTool.exe /COM=USB -firmware=имя_прошивки

    (рис 6.9)

    Также можно выполнить в Cygwin команду в директории проекта ./rxeflash.sh, этак команда запустит соответствующий скрипт, загружающий с помощью nexttool бинарный код, скомпилированный для улучшенной прошивки. Данный скрипт генерируется автоматически при компиляции программы. Также еще генерируются скрипты appflash.sh, ramboot.sh и biosflash.sh, которые запускают программу при включении устройсва, загружают в оперативную память напрямую и устанавливают nxtbios (необходимо выполнять перед загрузкой в ОЗУ) соответсвенно.

    6.3.2. Выполнение работы

    Проделайте следующие шаги: с помощью сygwin скомпилируйте пример helloword из папки nxtOSEK/samples_c/, затем залейте на устройство и запустите. Таким образом, вы увидите простоту и легкость сборки и запуска новых программ для ОС РВ с использованием cygwin.

    Для начала запустите cygwin

    (рис 6.10)

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

    Выполните команду make all

    (рис 6.11)

    Если вы видите тоже самое, что и на рис. , то тогда можно считать, что ваша первая программа для nxtOSEK собрана. Файл helloword_nxtOSEK.rxe именно тот, который теперь необходимо залить в устройство.

    Подключаем устройство с помощью кабеля и запускаем. Копируем файл .rxe в папку ..\cygwin\nexttool\. Запускаем командную строку и переходим в данный каталог. Выполняем команду NeXTTool.exe /COM=USB -download=helloword_OSEK.rxe :

    (рис 6.12)

    Запускаем программу:

    (рис 6.13) (рис 6.14)

    6.3.4. Задания для самостоятельной работы

    Соберите и протестируйте самостоятельно пример sonartest, находяшийся в папке ../cygwin/nxtOSEK/samples_c. Для выполнения данного задания вам понадобиться не только сам блок NXT, но и ультрозвуковой датчик, которые следует подключить к порту 4.

    Об успешности выполнения можно узнать, если на экране вашего LEGO NXT будет отображаться расстояние до предметов, на которые будет наведен ультрозвуковой датчик:

    (рис 6.15)
    Страницы:

    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).

    (рис 6.1) Программа установщик Cygwin (рис 6.2) Раскройте блок пакетов Database Default (рис 6.3) Выберите пакет make версии 3.81-2 (рис 6.4) Выберите указанные библиотеки

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

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

    Установка GNU ARM

    Как уже говорилось, GNU ARM - это модификация GCC (точнее набор необходимых пакетов + GCC) для процессора ARM7 (микроконтроллера ATMEL AT91SAM7S256), который используется в NXT. Для установки GNU ARM необходимо выполнить следующие шаги:

    Скачайте дистрибутив GCC 4.0.2 для Cygwin из секции Binaries в разделе FILES сайта GNU ARM: http://www.gnuarm.com/ http://www.gnuarm.com/bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4.exe

    Запустите инсталлятор и установите GNU ARM в директорию в полном имени которой нет пробелов и символов из расширенных наборов, например C:\cygwin\gnuarm

    (рис 6.5) Программа установщик GNUARM

    Микроконтроллер ATMEL AT91SAM7S256 не имеет FPU (Floating Point Unit), поэтому не требуется устанавливать все, что относится FPU, а так же к Big Endian (рис. 3.5).

    Нет необходимости устанавливать Cygwin DLL, так как Cygwin уже был установлен ранее. Поэтому необходимо убрать соответствующую галочку в процессе установки (рис. 3.6).

    В конце установки пользователя спрашивают добавить ли путь установленного пакета в переменную PATH среды окружения (Windows Environment Path). Это делать НЕ надо.

    (рис 6.6) Необходимо убрать нижний флажок

    Программы загрузчики для NXT

    В данном разделе под программами загрузчиками подразумеваются программы-инструменты с помощью которых можно передавать скомпилированный код в устройство LEGO® NXT. Начиная с версии ECRobot 3.06 вместо инструмента AMTEL SAM-BA (используется для передачи данных микроконтроллеру на базе AMTEL AT91SAM) используется USB драйвер LEGO. Это дает некоторые преимущества:

    Можно использовать ECRobot и стандартное ПО LEGO® (напр. NXT-G) на одном компьютере.

    Более устойчивое соединение при загрузке кода.

    Проще настроить.

    Замечание! Если на компьютере уже был установлен пакет AMTEL SAM-BA необходимо полностью удалить (деинсталлировать) его с компьютера перед тем как установить USB драйвер LEGO.

    Существуют несколько вариантов загрузки кода в устройство NXT, а так же несколько вариантов использования памяти NXT. Если сформулировать коротко, то для загрузки приложения может потребоваться или USB драйвер LEGO® и программа nexttool, или библиотека libusb. Выполнять приложения и использовать память устройства NXT можно или с помощью "улучшенной" прошивки LEGO® или используя инструментарий системы реального времени LEJOS OSEK. Использование "улучшенной" прошивки подразумевает использование nexttool+USB драйвер LEGO, соответственно, использование инструментария LEJOS OSEK требует установки libusb. Последний вариант дает возможность использовать код размером более 64 кбайт (до 224 кбайт) или загружать код прямо в ОЗУ (RAM память) устройства NXT.

    Начиная с версии 2.02 nxtOSEK поддерживает "улучшенную" прошивку разработанную Джоном Хансеном (John Hansen). Эта прошивка дает возможность использовать одновременно (т.е. без необходимости замены прошивки) программы написанные для стандартной прошивки и программы написанные непосредственно под архитектуру ARM7. Поэтому, если есть необходимость использовать программы, написанные для стандартной прошивки (на NXT-G, NBC, NXC и т.д.) и программы, сгенерированные пакетами ECRobot/nxtOSEK, надо установить "улучшенную" прошивку на устройство NXT и использовать инструмент nexttool.

    Установка USB драйвера LEGO

    (рис 6.7) Страница загрузки USB драйвера LEGO

    При установке стандартного ПО LEGO® USB драйвер LEGO® устанавливается автоматически. Если стандартное ПО LEGO не установлено, тогда необходимо зайти на официальный сайт LEGO® MINDSTORMS в раздел обновления ПО http://mindstorms.lego.com/Support/Updates/, cкачать и установить MINDSTORMS NXT Driver v1.02.

    Установка Phantom driver

    Загрузите LEGO MINDSTORMS NXT драйвер (Phantom driver) по следующей ссылке http://mindstorms.lego.com/en-us/support/files/default.aspx#Driver

    (рис 6.8)

    Установка nxtOSEK, улучшенной стандартной прошивки NXT и NeXTTool

    Пакет nxtOSEK доступен по адресу http://lejos-osek.sourceforge.net/index.htm. Достаточно разархивировать пакет в папку cygwin.

    Что бы удовлетворять условиям сайта sourceforge.net из состава пакета был убран файл sg.exe из проекта TOPPERS, его необходимо скачивать отдельно с сайта http://www.toppers.jp/osek-download.html. Файл нужно поместить в директорию nxtOSEK/toppers_osek/sg

    Для установки "улучшенной стандартной прошивки NXT" (enhanced NXT standard firmware) необходимо:

  • Загрузить "улучшенную прошивку" по адресу http://bricxcc.sourceforge.net/lms_arm_jch.zip (версия 128) и установить, используя меню "Инструменты/Обновление системы NXT" ПО NXT-G, или используя nexttool.
  • Загрузить NeXTTool по адресу http://bricxcc.sourceforge.net/utilities.html и установить в директорию не содержащую пробелов и символов из расширенных наборов (напр. C:\cygwin\nexttool). NeXTTool - это консольная программа позволяющая загружать .rxe файлы в устройство NXT.
  • Осталось только загрузить прошивку в устройство. Соедините устройство с компьютером кабелем.Запустите командную строку и перейдите в каталог ../cygwin/nexttool

    Выполните команду: NeXTTool.exe /COM=USB -firmware=имя_прошивки

    (рис 6.9)

    Также можно выполнить в Cygwin команду в директории проекта ./rxeflash.sh, этак команда запустит соответствующий скрипт, загружающий с помощью nexttool бинарный код, скомпилированный для улучшенной прошивки. Данный скрипт генерируется автоматически при компиляции программы. Также еще генерируются скрипты appflash.sh, ramboot.sh и biosflash.sh, которые запускают программу при включении устройсва, загружают в оперативную память напрямую и устанавливают nxtbios (необходимо выполнять перед загрузкой в ОЗУ) соответсвенно.

    6.3.2. Выполнение работы

    Проделайте следующие шаги: с помощью сygwin скомпилируйте пример helloword из папки nxtOSEK/samples_c/, затем залейте на устройство и запустите. Таким образом, вы увидите простоту и легкость сборки и запуска новых программ для ОС РВ с использованием cygwin.

    Для начала запустите cygwin

    (рис 6.10)

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

    Выполните команду make all

    (рис 6.11)

    Если вы видите тоже самое, что и на рис. , то тогда можно считать, что ваша первая программа для nxtOSEK собрана. Файл helloword_nxtOSEK.rxe именно тот, который теперь необходимо залить в устройство.

    Подключаем устройство с помощью кабеля и запускаем. Копируем файл .rxe в папку ..\cygwin\nexttool\. Запускаем командную строку и переходим в данный каталог. Выполняем команду NeXTTool.exe /COM=USB -download=helloword_OSEK.rxe :

    (рис 6.12)

    Запускаем программу:

    (рис 6.13) (рис 6.14)

    6.3.4. Задания для самостоятельной работы

    Соберите и протестируйте самостоятельно пример sonartest, находяшийся в папке ../cygwin/nxtOSEK/samples_c. Для выполнения данного задания вам понадобиться не только сам блок NXT, но и ультрозвуковой датчик, которые следует подключить к порту 4.

    Об успешности выполнения можно узнать, если на экране вашего LEGO NXT будет отображаться расстояние до предметов, на которые будет наведен ультрозвуковой датчик:

    (рис 6.15)
    Вернуться к учебному плану