Средства разработки и отладки программного обеспечения
для процессоров Analog Devices
Первое с чем сталкиваются новички в программировании процессоров Analog Devices — это выбор подходящих средств разработки и отладки программного обеспечения. в данной статье мы обсудим основные фазы создания приложений и средства, используемые в каждой из них.
Александр Сотников, к. т. н.
Фазы создания приложений
Процесс создания приложений на базе процессоров Analog Devices, в общем случае, может включать в себя три фазы:
• моделирование работы алгоритмов с помощью симулятора;
• оценка возможностей процессора с использованием оценочных плат;
• внутрисхемная отладка исполняемого кода в составе готового устройства.
Симулятор процессора — это программный инструмент, работающий на персональном компьютере (ПК) и позволяющий имитировать загрузку в процессор и функционирование исполняемой программы, взаимодействие с внешними устройствами, реакцию процессора на внешние прерывания и т. д., без доступа к реальным аппаратным средствам. Фаза моделирования представляет наибольший интерес при начальном ознакомлении с архитектурой процессора и на этапе отладки отдельных алгоритмов. В то же время промоделировать работу процессора в составе сложной системы довольно затруднительно по следующим причинам.
Во-первых, симулятор имеет крайне ограниченные возможности моделирования внешнего окружения процессора.
Во-вторых, он работает очень медленно, поскольку для воспроизведения действий, выполняемых в каждом процессорном цикле, компьютеру необходимо произвести большое количество операций.
Многие разработчики предпочитают знакомиться с процессором и отлаживать свои алгоритмы в условиях, приближенных к «боевым», то есть при помощи оценочных плат, минуя фазу моделирования. Компания Analog Devices выпускает подобные оценочные платы для типичных представителей всех семейств и подсемейств своих сигнальных процессоров. Большинство этих оценочных плат имеют разъемы для подключения внешних плат расширения, что позволяет создавать с их помощью прототипы полнофункциональных систем.
Финальной фазой работы над созданием приложения является отладка программного обеспечения в составе конечного продукта при помощи внутрисхемного эмулятора — устройства, предоставляющего полный доступ к внутренностям процессора из программы, исполняемой на ПК.
Все эти три фазы проектирования полностью поддерживаются CROSSCORE — комплексом программно-аппаратных средств компании Analog Devices, который включает в себя три компонента:
• интегрированную среду разработки и отладки VisualDSP++;
• набор оценочных плат EZ KIT/EZ BOARD
и плат расширения EZ EXTENDER;
• внутрисхемные эмуляторы.
Ниже мы подробно обсудим все эти средства, а также ряд средств проектирования и отладки программного обеспечения, выпускаемых сторонними фирмами.
Среда VisualDSP++
Программные средства разработки и отладки для процессоров Analog Devices, как и сами процессоры, прошли долгий путь развития. Лет пятнадцать назад они представляли собой набор отдельных утилит, последовательно вызывавшихся из командной строки DOS для создания исполняемых файлов, и две программы с оконным текстовым интерфейсом для работы с симулятором и эмулятором. В конце 90-х на смену им пришла среда разработки с графическим интерфейсом для ОС Windows под названием VisualDSP. В начале нынешнего века название среды было изменено на VisualDSP++. Первоначально этот пакет выпускался в двух вариантах: для 16битных и 32-битных процессоров. Начиная с версии 4.0 поддержка 16-битных процессоров семейства ADSP 21xx была прекращена, а средства разработки ПО для 16-битных процессоров Blackfin и 32-битных процессоров SHARC и TigerSHARC были интегрированы в единый программный продукт.
Сегодня VisualDSP++ представляет собой интегрированную среду разработки и отладки (IDDE, integrated development and debugging environment), которая является основным средством создания программного обеспечения для процессоров Analog Devices и включает в себя все компоненты, необходимые на различных этапах проектирования:
• графический интерфейс пользователя;
• утилиты, необходимые для формирования исполняемых файлов, файлов загружаемых образов и вспомогательных файлов: ассемблер, препроцессор, компилятор C/C++, компоновщик (линкер), программу создания загружаемых образов («лоадер»), архиватор и др.;
• симулятор с моделями процессоров;
• программные компоненты (драйверы) для взаимодействия с эмуляторами и отладочными платами;
• ядро операционной системы реального времени VDK (VisualDSP++ Kernel);
• примеры программ.
Вне зависимости от типа процессора и отладочного средства (симулятор, эмулятор или отладочный агент на плате EZ KIT/DBGAGENT) в VisualDSP++ используется единая методология создания проектов и управления ими. Весь процесс работы над проектом происходит в рамках единого графического интерфейса, примерный вид которого показан на рис. 1. Входящая в состав VisualDSP++ утилита Project Wizard упрощает создание новых проектов, настройку их параметров и формирование файлов, необходимых для компоновки исполняемого файла или генерирования загружаемого образа. Эффективные компиляторы C/C++, а также большое количество стандартных и специализированных библиотек позволяют создавать приложения преимущественно с использованием этих высокоуровневых языков программирования, используя ассемблер только для самых критических частей кода. При работе над сложными приложениями, где требуется поддержка многозадачности, пользователь
Рис. 1. Графический интерфейс VisualDSP++
может, по желанию, включить в проект ядро операционной системы (ОС) VDK, позволяющее абстрагироваться от деталей аппаратной реализации и сосредоточиться на алгоритмах управления и обработки сигналов. Для процессоров семейства В1аск^ в составе VisualDSP++ также поставляется большое количество драйверов внутренних и внешних периферийных модулей, которые могут быть использованы как совместно с VDK, так и в автономном режиме. Для максимального упрощения процесса отладки программного обеспечения в VisualDSP++ имеется множество окон для отображения содержимого стека, локальных переменных и выражений,
регистров и памяти, присутствуют средства линейного и статистического профилирования, позволяющие идентифицировать узкие места в программе, и ряд других очень интересных возможностей. Весьма интересна реализованная в этом инструменте технология отладки Background Telemetry Channel (BTC), предоставляющая возможность наблюдать за процессом исполнения программы и осуществлять обмен данными между средой и исполняемой программой без приостановки процессора. И, наконец, при успешном завершении отладки исполняемый файл может быть преобразован в загружаемый образ, который в свою очередь можно записать
в микросхему памяти на плате при помощи эмулятора (или отладочного агента при работе с платой EZ KIT/EZ BOARD) и интегрированного в VisualDSP++ приложения Flash Programmer.
Самая последняя на сегодняшний день
версия VisualDSP++--5.0. После бесплатной
регистрации она может быть свободно загружена для ознакомительных целей с сайта компании Analog Devices. Тестовая лицензия, предоставляемая в этом случае, имеет ограниченный срок действия (90 дней). Помимо тестовой и платной неограниченной лицензий, существует также вариант лицензии, поставляемый вместе с оценочными платами EZ KIT/EZ BOARD. В течение тестового периода (те же 90 дней) она предоставляет все функции без ограничений, а по окончании указанного срока пользователю будет доступно только подключение к оценочной плате. Кроме того, на объем доступного для компиляции кода программы будет наложено ограничение в 20 кбайт (ограничений на объем данных нет).
Оценочные платы и платы расширения
Оценочные платы EZ KIT предназначены для начального ознакомления пользователя с возможностями конкретного процессора. Такие платы представляют собой систему, в состав которой входит непосредственно сам процессор, микросхемы внешней памяти и набор внешних интерфейсных микросхем, который варьируется в зависимости от набора внутренних периферийных модулей процессора и от того, на какие задачи он в пер-
Рис. 2. Структурная схема оценочной платы ADSP BF527 EZ KIT Lite
вую очередь ориентирован. Структурная схема и внешний вид одной из новейших оценочных плат компании Analog Devices показаны на рис. 2 и 3 соответственно.
Загрузка программы в процессор на плате EZ KIT и ее отладка осуществляются из среды VisualDSP++ через один из стандартных портов ПК. На старых платах с процессорами ADSP 21xx и SHARC первых двух поколений для этих целей использовался COM-порт, а взаимодействие с процессором осуществлялось через специальную программу-монитор, которая исполнялась процессором из внешнего ПЗУ и отнимала некоторые его ресурсы, такие как таймеры и последовательный порт.
В более новых версиях плат EZ KIT Lite для связи между ПК и процессором используется порт USB и технология Debug Agent (отладочный агент). По сути, Debug Agent представляет собой отдельный контроллер (в зависимости от версии платы это может быть контроллер фирмы Cypress или процессор ADSP BF535), находящийся на оценочной плате и преобразующий команды, поступающие от ПК, в команды интерфейса внутрисхемной отладки процессора. Поскольку для всех современных процессоров Analog Devices может быть использована одна и та же схемная реализация технологии Debug Agent, начиная с 2008 г. компания стала выпускать оценочные платы без интерфейса Debug Agent, которые получили название EZ Board, и отдельную плату с интерфейсом Debug Agent (ADZS DBGAGENT BRD). Таким образом, купив одну плату DBGAGENT, пользователи могут сэкономить при покупке каждой новой платы EZ Board. В то же время использовать DBGAGENT для отладки плат собственной разработки невозможно.
Все современные оценочные платы EZ KIT Lite и EZ Board для подключения плат расширения имеют специальный разъем, на который выведено большинство доступных сигналов процессора. Наличие такого разъема позволяет подключать к оценочной плате самые разнообразные периферийные устройства и создавать на ее основе прототипы законченных систем. Пользователи могут разработать собственную плату расширения или воспользоваться одной из готовых, предназначенных для следующих задач:
• ввод/вывод аудио- и видеосигналов
(A V EZ Extender и Audio EZ Extender);
• подключение к оценочным платам быстродействующих ЦАП/АЦП компании Analog Devices (EZ Extender) и сенсорным ЖК-дисплеям (Landscape LCD EZ Extender);
• взаимодействие с внешними устройствами через интерфейсы USB (USB EZ Extender, USB LAN EZ Extender), Ethernet (USB LAN EZ Extender) и Bluetooth (Bluetooth EZ Extender).
Большинство готовых плат расширения работает с оценочными платами для процессоров Blackfin, однако выпускается и несколько решений, совместимых с процессорами SHARC.
Оценочные платы и платы расширения можно приобрести по отдельности или в составе одного из комплектов, предназначенных для ознакомления с процессором в рамках конкретных задач. Подобные комплекты называются Starter Kit и включают в себя оценочную плату, одну или несколько плат расширения и специфическое для каждой задачи программное обеспечение. На сегодняшний день компания Analog Devices предлагает три таких комплекта:
• Audio Starter Kit, в состав которого входят оценочная плата ADSP BF537 EZ KIT Lite, платы расширения USB LAN EZ Extender и Audio EZ Extender и комплект программного обеспечения с драйверами ЦАП, АЦП и кодека, а также алгоритмами обработки звука, включая декодеры MP3 и AAC.
• Multimedia Starter Kit, который включает в себя оценочную плату ADSP BF561 EZ KIT Lite или ADSP BF533 EZ KIT Lite, платы расширения USB LAN EZ Extender и Audio/Video EZ Extender и комплект программного обеспечения с многочисленными драйверами устройств, графическими библиотеками и алгоритмами обработки звука и видеоизображений.
• Media Player Starter Kit, состоящий из оценочной платы ADSP BF527 EZ KIT Lite или ADSP BF548 EZ KIT Lite и комплекта программного обеспечения с графическими библиотеками и различными алгоритмами.
внутрисхемные эмуляторы
Внутрисхемный эмулятор — это аппаратное средство, позволяющее отлаживать работу системы на базе сигнального процессора в составе реального устройства. С помощью эмулятора разработчик может из среды проектирования, работающей на ПК, загружать в процессор исполняемый код и контролировать его работу без оглядки на временные соотношения и электрические характеристики системы (если не считать незначительного роста потребляемой мощности). Внешний вид эмулятора, работающего через интерфейс USB, показан на рис. 4.
Эмулятор подключается с одной стороны к одному из стандартных интерфейсов компьютера (LPT, USB, PCI), а с другой стороны — к разъему на отлаживаемой пе-
Рис. 4. USB-эмулятор
чатной плате, соединенному с выводами внутрикристального интерфейса отладки процессора. В современных процессорах роль внутрикристального интерфейса отладки играет порт тестирования (TAP, Test Access Port), поддерживающий стандарт JTAG; в более старых процессорах ADSP 21xx для этих целей использовался нестандартный интерфейс, который имел название ICE-Port. На самой плате эмулятора располагается контроллер, преобразующий поступающие от компьютера команды в сигналы внутрикристального интерфейса отладки. Эмулятор использует TAP для доступа к внутренностям процессора, позволяя разработчику загружать код, устанавливать точки останова, просматривать переменные, содержимое памяти и регистров. Для посылки данных и команд процессор должен быть приостановлен, однако сразу по завершении операции его работа возобновляется с полной скоростью.
Внутрисхемные эмуляторы являются незаменимым инструментом при отладке плат собственной разработки. Основным недостатком всех эмуляторов для процессоров Analog Devices до недавнего времени являлась их высокая стоимость. Самый недорогой из полнофункциональных эмуляторов — USB-эмулятор ADZS USB ICE — стоит $1200, а более быстродействующие ADZS HPUSB ICE и ADZS HPPCI ICE — $4000. Это в значительной степени сдерживало интерес к процессорам Analog Devices со стороны разработчиков, ориентирующихся на мелкосерийное и опытное производство. Буквально пару месяцев назад, в ноябре 2009 года, сложившаяся ситуация существенно изменилась в лучшую сторону: новая «урезанная» версия USB-эмулятора ADZS ICE 100B стоит всего $150. Отличие ADZS USB ICE заключается лишь в том, что он работает только с процессорами семейства Blackfin, не имеет корпуса и не поддерживает некоторые возможности отладки в среде VisualDSP (такие как статистическое профилирование и технология Background Telemetry Channel). Несмотря на перечисленные ограничения, появление дешевого эмулятора стало весомым достижением с точки зрения популяризации процессоров Blackfin.
Средства разработки третьих компаний
Помимо средств разработки и отладки, предлагаемых компанией Analog Devices, существует также ряд программных и аппаратных средств, выпускаемых сторонними компаниями.
Среди программных продуктов в первую очередь необходимо упомянуть интегрированную среду разработки ПО для встраиваемых систем MULTI компании Green Hills Software, Inc. [1]. Эта среда работает под ОС Windows, Linux и UNIX и поддерживает множество процессоров разных производителей, в том числе и Blackfin ADSP BF5xx. В нее включены как компиляторы из состава VisualDSP++, обеспечивающие максимальную производительность для алгоритмов цифровой обработки сигналов, так и собственные оптимизирующие компиляторы, предоставляющие дополнительные возможности при отладке и оптимизированные для алгоритмов управления. Также при использовании среды MULTI пользователи могут разрабатывать приложения для процессоров Blackfin с поддержкой ряда ОС реального времени (ОС РВ) — ц-velOSity, velOSity и INTEGRITY. Более подробную информацию о возможностях, предоставляемых средой MULTI при работе с процессорами Blackfin, можно найти на странице [2].
Огромный интерес представляет также комплекс программных и аппаратных средств разработки для процессоров Blackfin под ОС ^Clinux. ^Clinux — это одна из версий популярной ОС Linux для микропроцессоров, у которых имеются ограниченные возможности (не реализована поддержка виртуальной памяти) или отсутствует модуль управления памятью (процессоры Blackfin относятся именно ко второму варианту). Поскольку ОС
^Clinux является OpenSource-проектом, для ее использования не требуется лицензионных отчислений, а ее исходный код свободно доступен. Популярность ^Clinux обусловлена, в первую очередь, богатой поддержкой разнообразных сетевых протоколов и файловых систем, а также большой базой готового ПО, которое может быть относительно легко портировано на разные аппаратные платформы. Полный дистрибутив ^Clinux для процессоров Blackfin доступен на сайте blackfin.uclinux.org и включает в себя:
• набор из кросскомпилятора gcc, отладчика gdb и специфических для процессора бинарных утилит (компоновщик, ассемблер и т.д.);
• начальный загрузчик U-boot;
• исходные коды ^Clinux, систему сборки образов-прошивок, программное обеспечение и библиотеки open source.
Для ознакомления с разработкой ПО для процессоров Blackfin под ^Clinux независимым сообществом разработчиков выпускается несколько версий оценочных плат под названием STAMP и плат расширения, которые можно приобрести через официальных дистрибьюторов Analog Devices. Кроме того, эта ОС может работать также на некоторых отладочных платах EZ KIT Lite.
Еще одним интересным направлением являются программные средства, предназначенные для проектирования на системном уровне, с последующим автоматическим генерированием кода на языке С или ассемблера под конкретные архитектуры процессоров. К таким средствам относятся Embedded IDE Link [3] для программы Matlab компании Mathworks, поддерживающее семейства SHARC, TigerSHARC и Blackfin, и NI LabView Embedded Module для программы LabView компании National Instruments [4], поддерживающее семейство Blackfin. Оба этих ин-
струмента позволяют создавать приложения на высоком уровне абстракции, используя функциональные блоки, соответствующие различным внутренним модулям процессоров и типовым алгоритмам, и интегрируются со средой VisualDSP++.
И, наконец, ряд компаний, например, BlueTechnix [5], Danville Signal [6], Spoerle [7] и многие другие, предлагают собственные оценочные платы и универсальные аппаратные модули для создания приложений на базе процессоров Analog Devices. Полный перечень фирм, входящих в партнерскую программу The Collaborative по разработке решений для процессоров Analog Devices, можно найти на странице [8].
Заключение
В этой статье был дан краткий обзор средств, пригодных для использования в процессе создания приложений на базе процессоров компании Analog Devices. Более подробную информацию о каждом из них вы можете найти на веб-ресурсе компании Analog Devices и сайтах компаний — участников программы The Collaborative. ■
Литература
1. www.ghs.com
2. http://www.ghs.com/products/blackfin_ development.html
3. http://www.mathworks.com/products/ide-link
4. http://www.ni.com/labview/blackfin
5. http://www.bluetechnix.com
6. http://www.danvillesignal.com
7. http://www.embedded-platform.com
8. http://www.analog.com/en/third-party-developers/embedded-processing-dsp/ content/search.html