ARM Development Studio 5 — программный пакет для разработки Linux-приложений
Открытое ПО
Сегодня разработка Linux-приложений ведется, в основном, на средствах Open Source. Открытое ПО бесплатно, но привносит большие инженерные затраты на выявление и локализацию ошибок, в результате чего проект может сильно растянуться по времени. Кроме того, средства Open Source трудны в освоении, так как сопровождаются скудной документацией, и тяжелы в использовании, поскольку имеют бедные графические интерфейсы. В открытом ПО нет взаимосвязи между сессиями отладки драйверов и приложений, что влечет инженерные затраты на изучение и поддержку одновременно двух отладчиков. И, наконец, еще один минус открытого ПО — поздняя поддержка новых MCU.
Следствие всего этого — неминуемая потеря времени, денег и сил, которым имеет смысл найти лучшее применение, дабы сосредоточить усилия на работе над проектом.
DS-5 делает разработку Linux проще
DS-5 — продукт департамента инструментальных средств ARM, который предлагает лучшие средства разработки для технологии ARM. Это законченное, профессионально поддерживаемое решение, охватывающее полный цикл разработки — от концепции до отладки приложений.
В DS-5 входят (рис. 1):
- мощный ARM-компилятор, лучший по коду и производительности;
- GNU-компилятор для Linux на базе дистрибутива GCC 4.4.1;
- интуитивный отладчик DS-5 с гибким графическим интерфейсом;
- модели систем реального времени (Real-Time System Models);
- адаптер трассировки DSTREAM с 4-Гбайт буфером;
- анализатор производительности Streamline.
DS-5 доступен в трех вариантах: Application, Linux и Professional Edition (их характеристики представлены в таблице).
Таблица. Характеристики различных версий ARM DS-5
Характеристики | Application Edition | Linux Edition | Professional Edition |
Поддерживаемые Target OS | Разработка Linux-приложений | Все стадии проектирования Linux | Linux, RTOS и др. |
Поддерживаемые процессоры | Ядра с MMU | Ядра с MMU | Все ядра ARM |
Eclipse IDE / менеджер проектов | √ | √ | √ |
GNU компилятор для Linux | √ | √ | √ |
Real-Time System Models | Cortex-A8 | Cortex-A8 | Cortex-A8 & A9MP |
Отладчик приложений Linux | √ | √ | √ |
Анализатор производительности Streamline | √ | √ | √ |
Отладка Boot Code/Driver (JTAG) | √ | √ | |
Трассировка Boot Code/Driver | √ | √ | |
ARM-компилятор | √ | ||
Доступность | √ | √ | √ |
Eclipse IDE
Eclipse IDE — расширяемая платформа для различных программных средств, широко используемая по всему миру. Она работает как на компьютере, так и на отлаживаемой плате и увеличивает эффективность разработки, объединяя в единую структуру разнообразные инструментальные средства — Android Development Kit, отладчики и профилировщики RTOS, ПО для ARM, DSP и других архитектур процессоров. Все компоненты DS-5 интегрированы в Eclipse.
Использование DS-5
Eclipse для DS-5 запускается из Windows Start Menu → Programs → ARM DS-5. В Linux Eclipse запускается из <папка_установки>bin. После запуска Eclipse выдает запрос о том, где будет находиться рабочее пространство (Workspace), то есть директория, в которой будут храниться настройки Eclipse, а также проекты, созданные при помощи DS-5. Рекомендуется создать одну или несколько директорий, которые будут использоваться как рабочие для пространства DS-5.
Eclipse IDE содержит редактор C/C++ и гибкую систему управления окнами. В Eclipse можно изменить положение и размер любого окна, «кликнув» на соответствующую вкладку и перетащив ее на любое удобное место. Любое окно также может быть добавлено на панель быстрого доступа для возможности обращаться к наиболее часто используемым окнам одним «кликом» мыши. Eclipse также поддерживает работу на нескольких мониторах.
Eclipse IDE включает в себя некоторые функции, облегчающие создание кода приложения на C/C++:
- выделение синтаксиса;
- всплывающие окна с информацией о выделенной переменной или функции с возможностью быстрого просмотра места кода, где та или иная переменная или функция были объявлены;
- автоматическое дополнение кода;
- шаблоны исходных файлов, файлов заголовков и классов;
- поиск по файлам проекта.
Стартовый экран
В любой момент можно вызвать стартовый экран DS-5 из пункта меню Help → DS-5 Home. Он позволяет быстро перейти по ссылкам на документацию по DS-5, просмотреть примеры программ, советы и ресурсы по технической поддержке DS-5. Чтобы закрыть стартовый экран и перейти к работе с DS-5, необходимо выбрать пункт меню Go to the Workbench.
Минимальные системные требования для работы с DS-5:
- двухъядерный процессор 2 ГГц;
- 2 Гбайт RAM, при работе с большими образами или моделировании рекомендуется 4 Гбайт;
- 2 Гбайт свободного дискового пространства;
- DS-5 поддерживает следующие x86-платформы:
- Windows XP Professional, Windows 7 Professional/Enterprise;
- Red Hat Enterprise Linux 5 Desktop and Workstation option, Standard.
- Android и ARM Linux application debug требует gdbserver для доступа к плате;
- DS-5 поддерживает отладку ARM Linux kernel версии не ниже 2.6.28.
Примеры программ в DS-5
Для демонстрации различных возможностей инструментов в состав пакета DS-5 включены различные демо-проекты:
- «Календарь» (Calendar), простейшее приложение для иллюстрации основ программирования в DS-5.
- «Фейерверки» (Fireworks) — более сложное приложение, портированное на BeagleBoard.
- Пример системы реального времени для Cortex-A8.
- «Гнометрис» (Gnometris) — Linux-приложение с открытым кодом, похожее на игру «Тетрис».
- Пример библиотеки (Example_library) иллюстрирует возможность создания простейших библиотек на языке С для ARM Linux.
- Cpp, cpp_library, cppex и cppex_library — примеры создания объектов и обработки различных прерываний.
Для работы с примерами необходимо выбрать пункт меню Import… → General → Existing Projects into Workspace. Затем выбрать Select archive file и указать путь <install_directory>examplesexample.zip. Эта операция разворачивает все примеры для DS-5 в директорию, выбранную пользователем в качестве рабочего пространства, и открывает их в окне редактора Eclipse.
Чтобы начать разработку собственного проекта, необходимо выбрать File → Create Build Projects → New → C or C++ Project (рис. 2).
Затем выбрать один из четырех шаблонов: Linux-приложение (Linux application), общая библиотека (shared library), статическая библиотека (static library) или шаблон формирования файла (makefile project). После этого автоматически создается проект с предустановленными настройками компилятора. Чтобы добавить исходные файлы в шаблон проекта, необходимо правой кнопкой мыши нажать Project Explorer view и выбрать пункт New. Для компиляции проекта выбрать Project → Build.
Анализ запускаемых файлов
Двойной щелчок на запускаемом файле открывает редактор содержимого ELF (ELF Content Editor). Эту же операцию можно проделать, если «кликнуть» правой кнопкой мыши на File → Other → ELF Content Editor.
Этот редактор позволяет производить анализ скомпилированных программ до их загрузки на плату. ELF имеет несколько вкладок:
- Обзор общей информации о проекте (ELF header).
- Символьный навигатор (Symbol browser) с полным списком переменных и функций, используемых в проекте, а также их свойствами (типы, адреса).
- Выделение цветом скомпилированного кода для проверки и редактирования скомпилированного приложения.
Компиляторы
DS-5 содержит GNU-компилятор, в состав Professional Edition входит также ARM-компилятор.
GNU-компилятор — это стандартный компилятор для Linux, собранный на базе дистрибутива GCC 4.4.1, он включен во все редакции DS-5. Это готовая к работе, компактная и проверенная версия GNU для ARM Linux. Он полностью поддерживает системы команд Thumb-2 и NEON, новые процессоры Cortex A5, A8, A9, содержит примеры, приложения и библиотеки. Однако GNU-компилятор поддерживается только через веб-форум.
ARM-компилятор — стандартный компилятор для архитектуры ARM. Осуществляется самая ранняя поддержка новых процессоров: системы команд, расширений DSP и сопроцессоров, оптимизация работы конвейеров. Существует профессиональная техническая поддержка — исправление ошибок, в том числе и в старых версиях компилятора. ARM-компилятор хорошо совместим с GNU-компилятором, ARM Debian и большинством дистрибутивов Linux, однако доступен только в DS-5 Professional Edition.
Отладчик DS-5
DS-5 поддерживает отладку приложений (Application debug) через gdbserver с помощью программы-агента deamon, работающей на плате target. При этом подключение к плате осуществляется через последовательный интерфейс или Ethernet. Работа ведется в режиме Run-mode, при котором ядро kernel и другие потоки threads никогда не останавливаются. Осуществляется единовременная отладка нескольких потоков и ядер много-ядерных процессоров. Для этого необходимо просто несколько раз запустить отладчик через окно настроек отладки.
Для разработки загрузочного кода и портирования ядра ОС kernel и драйверов используются DS-5 Linux и Professional Edition. Подключение к плате происходит через JTAG/SWD сразу после сброса. Для работы не нужны дополнительные физические интерфейсы и программные драйверы и не требуется вставлять специальные команды. Поддержка нескольких соединений с многоядерной системой осуществляется через один JTAG-интерфейс. Ведется одновременная отладка ядра (через JTAG) и приложений (через GDBserver), отображаются потоки и ресурсы ядра.
Подключение к плате
Все, что необходимо для отладки и анализа Linux-приложений для ARM-процессоров — это TCP/IP или последовательное соединение платы и компьютера. После старта Linux отладчик DS-5 запускает gdbserver на плате, подсоединяется к нему и использует его для запуска и управления приложением. Для работы DS-5 требуется gdbserver версии 6.8 (которая включена в состав пакета DS-5) или более поздняя.
Для подключения через JTAG используется высокоскоростной адаптер для отладки и трассировки DSTREAM (рис. 3), который имеет следующие характеристики:
- интерфейсы USB 2.0 и Ethernet 10/100base-T;
- JTAG/SWD-отладка run-control и захват трассировки;
- интерфейс RDDI с другими IP-отладчика-ми;
- рабочая частота JTAG 60 МГц;
- скорость загрузки 2,5 Мбайт/с;
- буфер трассировки 4 Гбайт;
- скорость трассировки 600 Mbps/pin (16 бит).
Анализатор производительности Streamline
Профилировщик и анализатор производительности Streamline осуществляет анализ работы ядра Linux и приложений, позволяет быстро и достоверно выявить виновников торможения (рис. 4). Для сбора данных Streamline использует технологию выборки, которая основана на выборочных данных, событиях ОС и комментариях пользователя. Streamline преобразует данные системной трассировки в графические и статистические отчеты. Для отладки не требуется дополнительное аппаратное обеспечение. Программа-монитор deamon собирает данные для передачи на компьютер. Накладные расходы при этом меньше 5%. Далее данные транспортируются между платой и компьютером через USB или Ethernet. Данные могут передаваться не сразу, а постепенно — для продолжительного захвата в target с ограничениями по памяти. Для устройств с ограниченной полосой пропускания на плате организуется конфигурируемый буфер.
Модели систем реального времени
Сегодня есть много хороших и дешевых плат для отладки, но их возможностей может не хватать или плат может не быть в наличии. Пакет DS-5 включает в себя модели систем реального времени (Real-Time System Models), которые позволяют оценить выполнение кода без аппаратной части. Модели поддерживают симуляцию работы процессора, системной памяти и периферии (например клавиатуры, мышки, портов UART, Ethernet и LCD-экрана). Моделирование осуществляется при частотах 250 МГц и более.
Приведен пример для процессора Cortex-A8. При старте модель автоматически запускает Linux и входит в состояние, при котором разработчик может загружать и отлаживать свои приложения. Модель содержит виртуальную файловую систему, таким образом она получает доступ к файлам компьютера, на котором производится отладка так, как будто это файлы, которые входят в состав разрабатываемой ARM Linux-системы.
Заключение
Открытое ПО бесплатно, но привносит большие инженерные затраты на выявление и локализацию ошибок и его освоение. Мы считаем, что можно найти лучшее применение своим силам, если сосредоточить усилия на работе над проектом с помощью программного пакета ARM Development Studio 5. DS-5 — это законченное решение, поддерживающее полный цикл разработки, от концепции до отладки приложений.