Программирование DSP Blackfin: быстрый старт Thu, March 28 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Blackfin: быстрый старт Печать
Добавил(а) microsin   

Назначение этого руководства - дать информацию о разработке на платформе Blackfin, инструментах Analog Devices, источниках документации и других информации (сокращенный перевод [1]). Описание поможет Вам освоить программирование и разработку устройств на процессорах Blackfin как можно быстрее.

Инженеры, которые уже используют процессоры Blackfin в своих разработках, найдут в этом руководстве ресурсы и указания, которые помогут усовершенствовать свои разработки путем перехода на другие, более современные модели процессоров. Подробное описание внутренних архитектур применяемого процессора можно найти в соответствующем руководстве по его аппаратуре (processor’s hardware reference manual). Подробное описание библиотек, программного обеспечения см. в руководстве по программированию процессоров (Blackfin Processor Programming Reference). Полный список документов поддержки процессоров Blackfin см. в разделе "Support Options" (Опции поддержки) документа [1].

[Процессоры Blackfin: краткий обзор]

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

В процессорах Blackfin комбинируется 32-битный набор инструкций RISC, двойная 16-битная функциональность обработки цифровых сигналов для оптимизации операций умножения с накоплением (multiply/accumulate, MAC), и скорость обработки 8-битного видеосигнала на таком уровне, которая ранее была доступна только на архитектурах медиапроцессоров с очень большим словом инструкции (very long instruction word, VLIW).

Процессоры Blackfin включают продвинутое управление памятью, которое поддерживает операционные системы с защитой памяти и без такой защиты, такие как μClinux™, ThreadX® (Express Logic), INTEGRITY®, velOSity™, Nucleus® (Mentor Graphics), Fusion™ (Unicoi Systems), RTXC Quadros™ (Quadros Systems) и μC/OS-II (Micrium).

Комбинация RISC MCU и функционала DSP. Процессоры Blackfin предоставляют функционал микроконтроллера (MCU) вместе с функциями цифровой обработки сигнала (DSP). Архитектура гибкая, позволяющая распределять аппаратные ресурсы и время процессора для управления и обработки сигналов. Если этого требует приложение, процессор Blackfin может работать как 100% MCU (с плотностью кода наравне с промышленными стандартами), 100% сигнальный процессор (с тактовыми частотами на уровне лидеров процессорной обработки сигналов), или может использоваться комбинация этих двух приложений.

Семейство процессоров Blackfin от Analog Devices имеет 32-битный набор инструкций RISC вместе с 8-битным набором инструкций обработки видео. Инструкции работают с двойными блоками 16-бит MAC. Система команд переменной длины процессора расширяется до 64-разрядных кодов операций, используемых во внутренних циклах процессора: одна единственная инструкция плюс несколько данных (single instruction multiple data, SIMD), однако система команд оптимизирована так, чтобы 16-разрядные коды операций представляли наиболее часто используемые инструкции. В результате плотность скомпилированного кода соответствует промышленным лидерам MCU, причем взаимно блокируемый конвейер обработки инструкций и их алгебраический синтаксис упрощает разработку на языках C/C++ и ассемблер.

На рис. 1-1 в качестве примера показана блок-диаграмма одноядерного процессора ADSP-BF549 Blackfin 16/32-бит.

Single Core ADSP BF549 Blackfin fig1 1

Рис. 1-1. Одноядерный ADSP-BF549 Blackfin 16/32-бит.

Процессоры Blackfin поддерживают оба режима выполнения кода - защищенный (protected, уровень системы) и не защищенный (unprotected, уровень пользователя). Эти режимы выполнения кода предотвращают не санкционированный доступ кода пользователя к общим ресурсам, которыми управляет операционная система. Дополнительно процессоры поддерживают возможность управления памятью, что позволяет пользователям при разработке определить отдельные области памяти для разных приложений. Эта функция дизайна предотвращает перезапись памяти чужими процессами, к ней не относящимися. В то же время архитектура Blackfin позволяет обрабатывать асинхронные прерывания и синхронные исключения с программируемыми уровнями приоритета обработки. Благодаря всем этим функциям процессоры Blackfin хорошо подходят как рабочая машина для встраиваемых операционных систем (в том числе с поддержкой реального времени: RTOS, ОСРВ).

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

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

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

Есть другая причина исторического разделения групп разработки MCU и процессоров. С технической точки зрения инженеры, отвечающие за архитектуру системы, часто смешивают приложение управления с приложением сигнальной обработки, выполняющиеся на одном процессоре. Больше всего они боятся, что задачи, не требующие обработки в реальном времени, будут вмешиваться в задачи жесткого реального времени. Например программисты, которые разрабатывают такие задачи, как графический интерфейс пользователя (GUI) или сетевой стек, не должны вводить не контролируемую задержку задач системы, требующих real-time активности. Конечно, что подразумевать под "real-time", будет варьироваться в зависимости от конкретного приложения. Во встраиваемой системе немедленная обработка какого-то действия часто организуется с помощью прерывания.

С появлением процессоров Blackfin стало возможным широко внедрять кодовую базу C/C++. Это позволило разработчикам применить уже существующие разработки. Из-за того, что процессоры оптимизированы как для управления, так и обработки сигналов, компиляторы могут генерировать достаточно плотный (с точки зрения размера кода) и эффективный код, хорошо подходящий для целей сигнальной обработки. Конечно, ветераны программирования, нацеленные на ассемблер, все еще могут программировать на низком уровне, оптимизируя критические циклы обработки.

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

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

Высокие скорости обработки, достигаемые процессорами Blackfin, эволюционируют в несколько значимых выгод. Первая это время выхода на рынок. Можно экономить много усилий на оптимизации кода, поскольку в распоряжении имеется большой запас по вычислительной мощности. Другая выгода - уменьшение затрат на поддержку программного обеспечения, от которых зависит цена поддержки всего жизненного цикла продукта. И наконец, благодаря масштабируемой архитектуре Blackfin, разработчики могут основывать свой дизайн на наиболее подходящем процессоре - по возможностям и цене, и если требуется значительный апгрейд, то можно без значительных трудностей перейти на другую, более мощную модель процессора.

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

Dual Core ADSP BF561 Blackfin fig1 2

Рис. 1-2. Функциональная блок-схема двухядерного процессора.

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

[Доступные в настоящее время процессоры Blackfin]

ADSP-BF535 был первым выпущенным процессором Blackfin, за которым в марте 2003 года вышли еще три совместимые с ним по выводам модели: ADSP-BF531, ADSP-BF532 и ADSP-BF533. Эти три устройства предоставляли некий диапазон выбора памяти и скорости, стандартные интерфейсы, такие как SPI, UART и гибко программируемые последовательные порты SPORT. Эти устройства также предоставляют 16-битные параллельные интерфейсы для подключения периферийных устройств (parallel peripheral interface, PPI) для прозрачного подключения высокоскоростных преобразователей интерфейсов и систем передачи изображения.

В январе 2005 года Analog Devices представила три процессора Blackfin со встроенными коммуникационными возможностями: ADSP-BF536, ADSP-BF537 и ADSP-BF534. Эти три процессора также совместимы друг с другом по выводам, и у них есть на борту контроллер сети CAN и двухпроводный интерфейс (two-wire interface, TWI. Другое популярное название I2C), и в некоторых моделях есть 10/100 Ethernet MAC.

В мае 2006 года Analog Devices представила ADSP-BF538 Blackfin [3], в котором имелась опция встроенной памяти flash, и также дополнительное количество интерфейсов, расширяющих возможности коммуникаций.

В ноябре 2006 года Analog Devices представила 5 новых процессоров Blackfin: ADSP-BF542, ADSP-BF544, ADSP-BF547, ADSP-BF548 и ADSP-BF549. Эти процессоры ADSP-BF54x были сфокусированы на повышении производительности путем повышения в 2 раза полосы пропускания I/O, увеличения памяти на кристалле, добавления богатого набора периферии, включая high-speed USB, ATAPI, NAND flash, DDR1 и технология безопасности LockBox™. Также был расширен PPI, чтобы поддерживать больше высокоскоростных устройств; в некоторых моделях доступно до трех PPI.

В марте 2007 компания Analog Devices представила процессоры ADSP-BF52x, которые предназначались для следующего поколения мобильных устройств. Серия ADSP-BF52x состоит из совместимых по выводам процессоров ADSP-BF522, ADSP-BF523, ADSP-BF524, ADSP-BF525, ADSP-BF526 и ADSP-BF527. Эта серия концентрируется на возможности внешних соединений, включая комбинации high-speed USB, 10/100 Ethernet, контроллер NAND flash, кодек audio и так далее. Процессоры ADSP-BF52x предоставляют меньшее динамическое и статическое потребление по сравнению с предыдущими процессорами Blackfin.

В ноябре 2008 Analog Devices представила процессоры серии ADSP-BF51x. ADSP-BF512, ADSP-BF514, ADSP-BF516 и ADSP-BF518 расширили семейство Blackfin доступностью встроенного eMAC с поддержкой 1588 version 2, трехфазного блока PWM (для управления двигателями) и квадратурного энкодера.

В январе 2010 Analog Devices представила серию процессоров Blackfin ADSP-BF50x. Эти одноядерные процессоры давали до 100% повышения быстродействия по сравнению с конкурирующими процессорами того же ценового класса. У разработчиков значительно расширились возможности по преобразованию сигналов, повышению точности вычислений, применению продвинутых техник управления энергопотреблением.

В сентябре 2010 Analog Devices представила процессор ADSP-BF592 с самой низкой ценой из успешного портфолио процессоров Blackfin. При производительности 800 MMAC/400 МГц он стоил всего лишь $3 (в партии 10K), что давало производительность DSP для намного большего диапазона практических применений в индустрии, медицине, обработке видео и звука. Дополнительно низкое потребление энергии ADSP-BF592 и малые размеры корпуса (9 x 9 мм) позволили разработчикам применять высокопроизводительную обработку сигналов в приложениях, ограниченных по энергоемкости и размеру.

Все перечисленные выше процессоры Blackfin были одноядерными.

Analog Devices также разработала двухядерный симметричный процессор ADSP-BF561 Blackfin. Это позволило увеличить производительность без перехода на другие процессорные архитектуры. Фактически запуском обоих процессорных ядер на пониженных частотах и более низких напряжениях питания снижалось общее энергопотребления. Дополнительно ADSP-BF561 предоставлял второй интерфейс PPI, делая возможным одновременный ввод и вывод видеосигнала.

Каждая модель процессора Blackfin предоставляет уникальные возможности с совместимостью по выводам для чипов с одинаковым корпусом. В таблице 1-1 перечислены ключевые спецификации процессоров Blackfin.

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

Таблица 1-1. Краткий обзор возможностей процессоров Blackfin по моделям.

Семейство/модель Корпус F(1) T(2) RoHS(3) Дополнительно(4)
ADSP-BF592: 1 UART, 2 SPORT, 2 SPI, TWI, PPI, LCD, библиотеки ROM
ADSP-BF592KCPZ 64-Lead LFCSP 400 0..+70 +  
ADSP-BF592BCPZ -40..+85 +  
ADSP-BF50x: SPI, PPI, SPORT, UART, PWM, модуль управления ADC
ADSP-BF504BCPZ-3F 88-Lead LFCSP 300 -40..+85 + 4MB parallel flash
ADSP-BF504BCPZ-4 400 -40..+85 +  
ADSP-BF504BCPZ-4F 400 -40..+86 + 4MB parallel flash
ADSP-BF504KCPZ-3F 300 0..+70 + 4MB parallel flash
ADSP-BF504KCPZ-4 400 0..+70 +  
ADSP-BF504KCPZ-4F 400 0..+70 + 4MB parallel flash
ADSP-BF506BSWZ-3F 300 -40..+85 + 4MB parallel flash, 12-битный ADC
ADSP-BF506BSWZ-4F 400 -40..+85 + 4MB parallel flash, 12-битный ADC
ADSP-BF506KSWZ-3F 300 0..+70 + 4MB parallel flash, 12-битный ADC
ADSP-BF506KSWZ-4F 400 0..+70 + 4MB parallel flash, 12-битный ADC
ADSP-BF51x: SPORT, SPI, PPI, TWI, UART
ADSP-BF512BSWZ-3 176-Lead LQFP_EP 300 -40..+85 +  
ADSP-BF512BSWZ-4 400 -40..+85 +  
ADSP-BF512BSWZ-4F4 400 -40..+85 + SPI Flash
ADSP-BF512KBCZ-3 168-Ball CSP_BGA 300 0..+70 +  
ADSP-BF512KBCZ-4 400 0..+70 +  
ADSP-BF512KBCZ-4F 400 0..+70 + SPI Flash
ADSP-BF512KSWZ-3 176-Lead LQFP_EP 300 0..+70 +  
ADSP-BF512KSWZ-4 400 0..+70 +  
ADSP-BF512KSWZ-4F4 400 0..+70 + SPI Flash
ADSP-BF514BSWZ-3 300 -40..+85 + SDIO, CE-ATA, eMMC
ADSP-BF514BSWZ-4 400 -40..+85 + SDIO, CE-ATA, eMMC
ADSP-BF514BSWZ-4F4 400 -40..+85 + SDIO, CE-ATA, eMMC, SPI Flash
ADSP-BF514KBCZ-3 168-Ball CSP_BGA 300 0..+70 + SDIO, CE-ATA, eMMC
ADSP-BF514KBCZ-4 400 0..+70 + SDIO, CE-ATA, eMMC
ADSP-BF514KBCZ-4F4 400 0..+70 + SDIO, CE-ATA, eMMC, SPI Flash
ADSP-BF514KSWZ-3 176-Lead LQFP_EP 300 0..+70 + SDIO, CE-ATA, eMMC
ADSP-BF514KSWZ-4 400 0..+70 + SDIO, CE-ATA, eMMC
ADSP-BF514KSWZ-4F4 400 0..+70 + SDIO, CE-ATA, eMMC, SPI Flash
ADSP-BF516BSWZ-3 300 -40..+85 + 10/100 Ethernet, SDIO, CE-ATA, eMMC
ADSP-BF516BSWZ-4 400 -40..+85 + 10/100 Ethernet, SDIO, CE-ATA, eMMC
ADSP-BF516BSWZ-4F4 400 -40..+85 + 10/100 Ethernet, SDIO, CE-ATA, eMMC, SPI Flash
ADSP-BF516KBCZ-3 168-Ball CSP_BGA 300 0..+70 + 10/100 Ethernet, SDIO, CE-ATA, eMMC
ADSP-BF516KBCZ-4 400 0..+70 + 10/100 Ethernet, SDIO, CE-ATA, eMMC
ADSP-BF516KBCZ-4F4 400 0..+70 + 10/100 Ethernet, SDIO, CE-ATA, eMMC, SPI Flash
ADSP-BF516KSWZ-3 176-Lead LQFP_EP 300 0..+70 + 10/100 Ethernet, SDIO, CE-ATA, eMMC
ADSP-BF516KSWZ-4 400 0..+70 + 10/100 Ethernet, SDIO, CE-ATA, eMMC
ADSP-BF516KSWZ-4F4 400 0..+70 + 10/100 Ethernet, SDIO, CE-ATA, eMMC, SPI Flash
ADSP-BF518BSWZ-3 300 -40..+85 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC
ADSP-BF518BSWZ-4 400 -40..+85 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC
ADSP-BF518BSWZ-4F4 400 -40..+85 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC, SPI flash
ADSP-BF518KBCZ-3 168-Ball CSP_BGA 300 0..+70 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC
ADSP-BF518KBCZ-4 400 0..+70 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC
ADSP-BF518KBCZ-4F4 400 0..+70 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC, SPI flash
ADSP-BF518KSWZ-3 176-Lead LQFP_EP 300 -40..+85 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC
ADSP-BF518KSWZ-4 400 -40..+85 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC
ADSP-BF518KSWZ-4F4 400 0..+70 + 10/100 Ethernet with 1588, SDIO, CE-ATA, eMMC, SPI flash
ADSP-BF522: PPI, SPI, SPORTs, NAND Interface, TWI, Host DMA, UART, Lockbox
ADSP-BF522BBCZ-3A 208-CSP_BGA 300 -40..+85 +  
ADSP-BF522BBCZ-4A 400 -40..+85 +  
ADSP-BF522KBCZ-3 289-CSP_BGA    300 0..+70 +  
ADSP-BF522KBCZ-3C2 300 0..+70 +  
ADSP-BF522KBCZ-4 400 0..+70 +  
ADSP-BF522KBCZ-4C2 400 0..+70 +  
ADSP-BF523: PPI, SPI, SPORTs, NAND Interface, TWI, Host DMA, UART, Lockbox
ADSP-BF523BBCZ-5A 208-CSP_BGA 533 -40..+85 +  
ADSP-BF523KBCZ-5 289-CSP_BGA 533 0..+70 +  
ADSP-BF523KBCZ-5C2 533 0..+70 +  
ADSP-BF523KBCZ-6 600 0..+70 +  
ADSP-BF523KBCZ-6A 208-CSP_BGA 600 0..+70 +  
ADSP-BF523KBCZ-6C2 289-CSP_BGA 600 0..+70 +  
ADSP-BF524: PPI, SPI, SPORTs, NAND Interface, TWI, Host DMA, UART, Lockbox, HS USB OTG
ADSP-BF524BBCZ-3A 208-CSP_BGA 300 -40..+85 +  
ADSP-BF524BBCZ-4A 400 -40..+85 +  
ADSP-BF524KBCZ-3 289-CSP_BGA 300 0..+70 +  
ADSP-BF524KBCZ-3C2 300 0..+70 +  
ADSP-BF524KBCZ-4 400 0..+70 +  
ADSP-BF524KBCZ-4C2 400 0..+70 +  
ADSP-BF525: PPI, SPI, SPORTs, NAND Interface, TWI, Host DMA, UART, Lockbox, HS USB OTG
ADSP-BF525BBCZ-5A 208-CSP_BGA 533 -40..+85 +  
ADSP-BF525KBCZ-5 289-CSP_BGA 533 0..+70 +  
ADSP-BF525KBCZ-5C2 533 0..+70 +  
ADSP-BF525KBCZ-6 600 0..+70 +  
ADSP-BF525KBCZ-6A 208-CSP_BGA 600 0..+70 +  
ADSP-BF525KBCZ-6C2 289-CSP_BGA 600 0..+70 +  
ADSP-BF526: PPI, SPI, SPORTs, 10/100 Ethernet, TWI, Host DMA, NAND Interface, UART, Lockbox, HS USB OTG
ADSP-BF526BBCZ-3A 208-CSP_BGA 300 -40..+85 +  
ADSP-BF526BBCZ-4A 400 -40..+85 +  
ADSP-BF526KBCZ-3 289-CSP_BGA    300 0..+70 +  
ADSP-BF526KBCZ-3C2 300 0..+70 +  
ADSP-BF526KBCZ-4 400 0..+70 +  
ADSP-BF526KBCZ-4C2 400 0..+70 +  
ADSP-BF527: PPI, SPI, SPORTs, 10/100 Ethernet, TWI, Host DMA, NAND Interface, UART, Lockbox, HS USB OTG
ADSP-BF527BBCZ-5A 208-CSP_BGA 533 -40..+85 +  
ADSP-BF527KBCZ-5 289-CSP_BGA 533 0..+70 +  
ADSP-BF527KBCZ-5C2 533 0..+70 +  
ADSP-BF527KBCZ-6 600 0..+70 +  
ADSP-BF527KBCZ-6A 208-CSP_BGA 600 0..+70 +  
ADSP-BF527KBCZ-6C2 289-CSP_BGA 600 0..+70 +  
ADSP-BF531: PPI, UART, SPI, 2 SPORT, 3 таймера, 16 GPIO
ADSP-BF531SBB400 169-PBGA 400 -40..+85    
ADSP-BF531SBBC400 160-CSP_BGA 400 -40..+85    
ADSP-BF531SBBCZ400 400 -40..+85 +  
ADSP-BF531SBBZ400 169-PBGA 400 -40..+85 +  
ADSP-BF531SBSTZ400 176-LQFP 400 -40..+85 +  
ADSP-BF532: PPI, UART, SPI, 2 SPORT, 3 таймера, 16 GPIO
ADSP-BF532SBB400 169-PBGA 400 -40..+85    
ADSP-BF532SBBC400 160-CSP_BGA 400 -40..+85    
ADSP-BF532SBBCZ400 400 -40..+85 +  
ADSP-BF532SBBZ400 169-PBGA 400 -40..+85 +  
ADSP-BF532SBSTZ400 176-LQFP 400 -40..+85 +  
ADSP-BF533: PPI, UART, SPI, 2 SPORT, 3 таймера, 16 GPIO
ADSP-BF533SBB500 160-CSP_BGA 500 -40..+85    
ADSP-BF533SBBC-5V 533 -40..+85    
ADSP-BF533SBBC400 400 -40..+85    
ADSP-BF533SBBC500 500 -40..+85    
ADSP-BF533SBBCZ-5V 533 -40..+85 +  
ADSP-BF533SBBCZ400 400 -40..+85 +  
ADSP-BF533SBBCZ500 500 -40..+85 +  
ADSP-BF533SBBZ400 169-PBGA 400 -40..+85 +  
ADSP-BF533SBBZ500 500 -40..+85 +  
ADSP-BF533SBSTZ400 176-PBGA 400 -40..+85 +  
ADSP-BF533SKBC-6V 160-CSP_BGA  600 0..+70    
ADSP-BF533SKBCZ-6V 600 0..+70 +  
ADSP-BF534: CAN, PPI/SPI, TWI, 8 таймеров, 48 GPIO, 2 SPORT, 2 UART
ADSP-BF534BBC-4A 182-CSP_BGA 400 -40..+85    
ADSP-BF534BBCZ-4A 400 -40..+85 +  
ADSP-BF534BBCZ-4B 208-CSP_BGA 400 -40..+85 +  
ADSP-BF534BBC-5A 182-CSP_BGA 500 -40..+85    
ADSP-BF534BBCZ-5A 500 -40..+85 +  
ADSP-BF534BBCZ-5B 208-CSP_BGA 500 -40..+85 +  
ADSP-BF534YBCZ-4B 400 -40..+105 +  
ADSP-BF535: 2 SPI, 2 SPORT, USB device, PCI
ADSP-BF535PBB-200 260-PBGA 200 -40..+85    
ADSP-BF535PBB-300 300 -40..+85    
ADSP-BF535PBBZ-200 200 -40..+85 +  
ADSP-BF535PKB-300 300 0..+70    
ADSP-BF535PKB-350 350 0..+70    
ADSP-BF535PKBZ-300 300 0..+70 +  
ADSP-BF535PKBZ-350 350 0..+70 +  
ADSP-BF536: 10/100 Ethernet, CAN, PPI, TWI, 8 таймеров, 48 GPIO, 2 SPORT, 2 UART, SPI
ADSP-BF536BBC-3A 182-CSP_BGA 300 -40..+85    
ADSP-BF536BBC-4A 400 -40..+85    
ADSP-BF536BBCZ-3A 300 -40..+85 +  
ADSP-BF536BBCZ-3B 208-CSP_BGA 300 -40..+85 +  
ADSP-BF536BBCZ-4A 182-CSP_BGA 400 -40..+85 +  
ADSP-BF536BBCZ-4B 208-CSP_BGA 400 -40..+85 +  
ADSP-BF537: 10/100 Ethernet, CAN, PPI, TWI, 8 таймеров, 48 GPIO, 2 SPORT, 2 UART, SPI
ADSP-BF537BBC-5A 182-CSP_BGA 500 -40..+85    
ADSP-BF537BBCZ-5A 500 -40..+85 +  
ADSP-BF537BBCZ-5AV 533 -40..+85 +  
ADSP-BF537BBCZ-5B 208-CSP_BGA 500 -40..+85 +  
ADSP-BF537BBCZ-5BV 533 -40..+85 +  
ADSP-BF537KBCZ-6AV 182-CSP_BGA 600 0..+70 +  
ADSP-BF537KBCZ-6BV 208-CSP_BGA 600 0..+70 +  
ADSP-BF538: CAN 2.0B, 54 GPIO, 4 SPORT, 3 UART, 3 SPI, 2 TWI, PPI
ADSP-BF538BBCZ-4A 316-CSP_BGA 400 -40..+85 +  
ADSP-BF538BBCZ-4F8 400 -40..+85 + 1 мегабайт flash
ADSP-BF538BBCZ-5A 533 -40..+85 +  
ADSP-BF538BBCZ-5F8 533 -40..+85 + 1 мегабайт flash
ADSP-BF539: MXVR, CAN, 54 GPIO, 4 SPORT, 3 UART, 3 SPI, 2 TWI, PPI
ADSP-BF539BBCZ-5A 316-CSP_BGA 533 -40..+85 +  
ADSP-BF539BBCZ-5F8 533 -40..+85 + 1 мегабайт flash
ADSP-BF542: CAN, 4 HS USB OTG, 3 EPPI, Pixel comp, ATAPI-6, Lockbox
ADSP-BF542BBCZ-5A 400-CSP_BGA 533 -40..+85 +  
ADSP-BF542KBCZ-6A 600 0..+70 +  
ADSP-BF542MBBCZ-5M 533 -40..+85 +  
ADSP-BF544: CAN, 4 Host DMA, 3 EPPI, Pixel comp, Lockbox
ADSP-BF544BBCZ-5A 400-CSP_BGA 533 -40..+85 +  
ADSP-BF544MBBCZ-5M 533 -40..+85 +  
ADSP-BF547: HS USB OTC, 3 EPPI, Pixel comp, ATAPI-6, Lockbox
ADSP-BF547BBCZ-5A 400-CSP_BGA 533 -40..+85 +  
ADSP-BF547KBCZ-6A 600 0..+70 +  
ADSP-BF547MBBCZ-5M 533 -40..+85 +  
ADSP-BF548: HS USB OTG, 3 EPPI, Pixel comp, ATAPI-6, Lockbox, CAN
ADSP-BF548BBCZ-5A 400-CSP_BGA  533 -40..+85 +  
ADSP-BF548MBBCZ-5M 533 -40..+85 +  
ADSP-BF549: MXVR, CAN, HS USB OTG, ATAPI-6, 3 EPPIs, Pixel comp, Lockbox
ADBF549WBBCZ-5xx 400-CSP_BGA 533 -40..+85 +  
ADSP-BF561: 2 PPI, UART, 12 таймеров, 2 SPORT
ADSP-BF561SBB500 297-PBGA 500 -40..+85    
ADSP-BF561SBB600 600 -40..+85    
ADSP-BF561SBBCZ-5A 256-CSP_BGA 500 -40..+85 +  
ADSP-BF561SBBZ500 297-PBGA 500 -40..+85 +  
ADSP-BF561SBBZ600 600 -40..+85 +  
ADSP-BF561SKBCZ-5A 256-CSP_BGA 500 0..+70 +  
ADSP-BF561SKBCZ-5V 533 0..+70 +  
ADSP-BF561SKBZ500 297-PBGA 500 0..+70 +  
ADSP-BF561SKBZ600 600 0..+70 +  
ADSP-BF561SKBCZ-6A 256-CSP_BGA 600 0..+70 +  
ADSP-BF561SKBCZ-6V 600 0..+70 +  

Примечания:

(1) F частота системной шины (CCLK), МГц.
(2) T рабочий диапазон температур, °C.
(3) Заявленная совместимость с RoHS (RoHS Compliant). Все процессоры, заявленные как "RoHS Compliant" не используют свинец (lead free).
(4) Ключевые периферийные устройства перечислены в строке, обозначающей жирным шрифтом серию Blackfin (как например ADSP-BF522), если это не отличается от процессора к процессору. В столбце "Дополнительно" обозначены дополнительные к общему списку периферийные устройства.

[Возможности процессоров Blackfin]

Процессоры Blackfin представляют класс устройств, комбинирующих в себе мощный SIMD-процессор (single-instruction, multiple-data), блок защиты памяти (memory protection unit, MPU), сторожевой таймер (watchdog timer, WDT), часы реального времени (real-time clock, RTC), инструкции RISC переменной длины, порты UART и SPI. Подобные аппаратные функции периферии можно найти только в микроконтроллерах и микропроцессорах. Поскольку процессоры Blackfin обладают всей мощностью сигнальных процессоров и богатым набором периферийных устройств, они могут с успехом заменить другие классы сигнальных процессоров и 32-битные RISC MCU, или разработки на основе ASIC.

16-битное ядро Blackfin содержит двойной перемножитель с накоплением (dual MAC), с 32-битными регистрами и внутренними 64-битными шинами для передачи данных. Это ядро окружено высокоскоростной памятью и периферийными устройствами, включая 100 Mbps последовательные порты (SPORT), высокоскоростной параллельный интерфейс (parallel peripheral interface, PPI), предназначенный для ввода и вывода цифрового видео (совместимый со спецификацией ITU-R/CCIR-656), UART с поддержкой IrDA®, порт SPI и интерфейс внешней памяти для подключения SDRAM или DDR SDRAM, flash, SRAM и т. п.

В дополнение к этим продвинутым периферийным устройствам процессоры Blackfin включают в себя управляемый программно блок ФАПЧ (phase-lock loop, PLL), что позволяет из программы приложения менять скорость работы ядра и периферийных устройств. Во многих моделях процессоров Blackfin также есть встроенный ключевой регулятор напряжения, чтобы можно было программно управлять напряжением питания ядра. При использовании этих функций индивидуально или совместно можно значительно снизить энергопотребление, потому что в зависимости от текущих потребностей можно менять частоту тактирования ядра/периферии и напряжение питания ядра.

Поскольку процессоры Blackfin могут использоваться как для управления/обработки данных, так и для обработки сигналов, эффективность перемещения данных сильно влияет на общую производительность. Эффективная точность числовых вычислений важна, но так же важна и эффективность переноса данных. Измеренная ширина данных для обработки сигналов часто основывается на типе данных, которые обрабатываются наиболее эффективно. Ширина данных процессора обычно измеряется по разрядности его путей распространения данных и разрядности регистров. Процессоры Blackfin аппаратно поддерживают арифметические операции разрядностью 8, 16 и 32 бита, однако оптимизированы (и имеют наибольшую поддержку) для 16-битных операций. Поэтому процессоры Blackfin считаются 16/32-битными.

Производительность. Процессоры не могут больше оцениваться только по частоте ядра, мегагерцам, единицам MIPS, MACS, FLOPS и так далее. Современные процессоры Blackfin работают на частотах, начинающихся с 300 МГц. Их внутренняя память называется L1. Это означает, что она может работать на той же скорости, что и ядро (т. е. без задержек тактов для доступа на чтение и запись), эта память дает самую высокую полосу пропускания между ядром процессора и внутренней памятью. Ядро поддерживает две операции 16 бит MAC в одном такте, что дает 1.2 GMAC операций на частоте 600 МГц.

Однако эти предоставленные числа дают грубое представление о производительности устройства, они не показывают, как реально будет работать приложение, потому что не учитываются в комплексе эффективность памяти и набора инструкций. Часто эти пиковые параметры достигаются только в очень короткие промежутки времени (т. е. эти показатели производительности не постоянны), и реальные значения намного меньше. Для оценки производительности могут быть полезны специальные тесты по данным (benchmark data). Подробную информацию по производительности на разных тестах см. в разделе "Benchmarks Against Other Processors" на странице 1-30 документа [1].

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

Процессоры ADSP-BF561 Blackfin предоставляют дополнительные опции для управления питанием. Из-за того, что эти симметричные процессоры содержат 2 идентичных ядра, в традиционных приложениях с интенсивными вычислениями можно распределить нагрузку между ядрами. В этом случае код, работающий на обоих ядрах, будет идентичен, отличаться будут только обрабатываемые данные. Например, при обработке потока данных канального оборудования первое ядро обрабатывает одну половину каналов, а второе ядро другую половину каналов. В приложениях обработки видео и изображений эта техника может использоваться для обработки чередующихся кадров на каждом из ядер.

Двухядерная обработка процессоров Blackfin объединяется с его дополнительными функциями снижения энергопотребления. Энергия, потребляемая процессором, содержит статическую и динамическую составляющие. Даже когда приложение может быть реализовано на одноядерном процессоре, Вы все равно можете применить двухядерный процессор, снизив тем самым общее энергопотребление. Особенно если приложение работает на половине частоты одноядерной системы, напряжения питания ядер может быть снижено до 0.9V. Это становится возможным из-за широкого диапазона напряжений питания Blackfin. Двухядерные процессоры Blackfin содержат большую внутреннюю память вместе с путями распространения данных и контроллерами DMA, которые специально разработаны для управления общей процессорной нагрузкой. Эта комбинация позволяет легче провести разделение алгоритма без потери эффективности, которую можно наблюдать в многоядерных решениях с разными процессорами.

[Выбор средств разработки]

Многие пользователи сначала рассматривают набор доступного инструментария для разработки. К этим инструментам, работающим на PC, относят программы генерации кода и отладки: компилятор, ассемблер, линкер, симулятор, отладчик и библиотеки кода.

В настоящее время для архитектуры Blackfin имеется 4 самых популярных набора инструментов:

• VisualDSP++ 5.0 от компании Analog Devices.
• CrossCore Embedded Studio от компании Analog Devices.
• Open source GCC тулчейн.
• Open source μClinux.

Каждый из перечисленных инструментов дает преимущества для разных типов приложений. На рис. 2-1 показан типовой вариант процесса выбора инструментария.

Tool Selection Workflow fig2 1

Рис. 2-1. Возможный процесс оценки и выбора рабочего инструментария.

Это простой в установке и использовании интегрированный набор инструментария для разработки и отладки (IDDE), позволяющий эффективно управлять проектами от начала разработки до его завершения, и все это в одном и том же интерфейсе. Среда VisualDSP++ в настоящее время больше не развивается. Компания Analog Devices рекомендует заменить VisualDSP++ на более современную среду CrossCore Embedded Studio.

Разработка и отладка интегрированы, так что Вы можете быстро переключаться между редактированием кода, его сборкой и его отладкой. Ключевые возможности включают стандартный компилятор C/C++, продвинутые инструменты графического отображения данных, ядро библиотек поддержки многозадачности в реальном времени (VisualDSP++ kernel, VDK). Другие функции включают ассемблер, линкер, библиотеки, сплиттер [5], симуляторы с точным расчетом количества тактов, поддержку эмулятора JTAG [6]. Среда VisualDSP++ предоставляет разработчикам достаточно мощный и гибкий (хотя не без глюков [7]), инструментарий, значительно сокращающий усилия по выводу на рынок готового продукта.

Сердце VisualDSP++ это надежный и мощный компилятор C/C++, показывающий на стандартных тестах лидирующие в индустрии параметры производительности. Компилятор поставляется с богатой библиотекой подпрограмм сигнальной обработки [8], упрощающей доступ к специально оптимизированному, написанному вручную коду для операций FFT (БПФ), FIR (фильтрация КИХ) и т. д.

К компилятору ANSI-C добавлены популярные расширения языка, которые делают более удобным использование существующей кодовой базы. Примеры включают расширения GNU GCC, библиотеки вычислений дробных чисел ETSI, поддержку нескольких куч.

Основная задача компилятора - генерировать корректный код, так как есть случаи, когда для получения двоичного кода должен быть применен консервативный подход для обеспечения определенного порядка вычислений, если для этого программистом наложены определенные ограничения (в противном случае могут быть применены оптимизации, изменяющие последовательность вычислений). Компилятор VisualDSP++ поддерживает широкий ассортимент директив #pragma [9], позволяющих программисту лучше применить особенности компилятора, сохраняя нейтралитет языка C.

Компилятор поддерживают мощный ассемблер и компоновщик. Процессоры от Analog Devices имеют интуитивно понятный алгебраический синтаксис инструкций ассемблера, и ассемблер VisualDSP++ расширяет эту возможность импортом заголовочных файлов C, благодаря чему в коде ассемблера появляется возможность символических ссылок на довольно сложные структуры данных языка C. Двоичные данные можно подключать напрямую в исходный код ассемблера, что дает простой способ добавления в приложения блоков статических данных (такие как оцифрованный звук и растровые изображения). Линкер VisualDSP++ полностью поддерживает многоядерные и многопроцессорные приложения (multiprocessor, MP), позволяя создавать за один проход связанные для двух ядер приложения. Другие мощные возможности линкера - удаление не используемых кода и данных (dead code and data elimination), оверлеи кода и данных, переход между секциями (т. е. автоматическое перетекание распределения кода из внутренней памяти во внешнюю по мере исчерпания внутренней памяти) и автоматический переход от коротких вызовов к дальним.

Поддержка инфраструктуры приложения. VisualDSP++ поставляется с библиотекой многозадачности в реальном времени (RTOS), с так называемым VisualDSP++ kernel (VDK) [17]. Это надежная, свободная от лицензионных отчислений среда для распределения процессорного времени по отдельным, выполняющимся одновременно задачам, т. е. операционная система реального времени, ОСРВ (real-time operating system RTOS). VDK предоставляет настоящее ядро многозадачности с минимальными потерями ресурсов. VDK имеет такие возможности, как планировщик с вытесняющей многозадачностью (pre-emptive scheduler), также опционально поддерживается распределение времени по выделенным интервалам (time slicing) и кооперативная многозадачность (cooperative scheduling), создание потоков, семафоры, обработка прерываний, обмен сообщениями между потоками, события, управление памятью (пулы памяти и несколько куч). В рабочем окружении с несколькими ядрами (MP) также поддерживается обмен сообщениями. Конфигурация этих элементов осуществляется в графическом интерфейсе пользователя (GUI), мастера настройки кода (code wizards) ускоряют создание новых потоков и обработчиков прерываний. VDK доступен в нескольких релизах VisualDSP++, и теперь это ключевой компонент в изделиях, поставляемых многими вендорами.

Драйверы устройств, системные службы. Процессоры Blackfin поддерживается библиотекой системных служб (system services library, SSL), которая дает целостный, простой доступ на языке C к функциональным возможностям Blackfin, таким как менеджер прерываний, прямой доступ к памяти (DMA) и управление питанием, управление внешней синхронной (SDRAM) и асинхронной памятью (FLASH, SRAM). Приложения могут утилизировать эти службы для обработки пересылок DMA и запускать callback-функции по завершении перемещения данных между областями памяти и/или памятью и периферийным устройством. Частота тактирования и напряжение питание может быть просто изменена во время работы приложения через вызовы функций API. Обработка прерываний по выбору в приложении может быть немедленная, когда она запускается сразу в момент возникновения события, или с откладыванием запуска (deferred) на более позднее время. Менеджер устройств интегрирует в себе драйверы периферийных устройств, находящихся как на кристалле процессора, так и снаружи. VisualDSP++ включает поддержку драйвера устройства для всех встроенных в кристалл периферийных устройств, а также внешних устройств, которые можно найти на оценочных платах разработчика Analog Devices EZ-KIT Lite и EZ-Extender. Библиотека SSL к операционным системам, и может работать как отдельно, так и совместно с кодом RTOS.

Поскольку встраиваемые приложения все больше становятся частью связанного мира, возможность быстро добавить в приложение соединение с Ethernet или USB может часто значительно повлиять на график разработки. Для процессоров Blackfin система VisualDSP++ включает в себя настроенный порт открытого сетевого стека (open source LwIP TCP/IP). Пример приложения на этом стеке показывает встраиваемый Web-сервер и его возможности. Также предоставляется поддержка подключения в виде устройства USB 2.0, "из коробки" доступны режимы передачи bulk и asynchronous. Приложения хоста USB предоставляются с полным исходным кодом.

IDE VisualDSP++ предоставляет полноценное редактирование кода и управление проектами. Используется инкрементальные сборки, несколько конфигураций сборки (например, есть изначально настроенные конфигурации проекта Debug и Release), редактор кода с подсветкой синтаксиса и многие другие функции редактирования кода. Скрипты makefile могут свободно импортироваться и экспортироваться. Многие атрибуты (опции) проекта приложения могут конфигурироваться графически (в GUI-мастере настройки опций проекта). Например, можно кликами мыши настроить доступ к SDRAM, разместить стек и кучу в памяти, выбрать вариант управления питанием, частоту тактов, настроить кэш и т. д.

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

VisualDSP++ поддерживает различные цели отладки, т. е. отлаживаемые процессоры (debug targets). Почти всегда отладочное соединение реализовано в виде интерфейса JTAG, которое имеется на плате разработчика EZ-KIT Lite или может быть на целевой плате разрабатываемой системы. Компания Analog Devices предоставляет фирменные эмуляторы JTAG: ICE-100B, ICE-1000, ICE-2000 и другие, на AliExpress и Ebay тоже можно купить клон ICE-100B. Однако иногда может потребоваться тщательная инспекция работы кода в симулируемом окружении. VisualDSP++ предоставляет симуляторы с точной поддержкой вычисления циклов (cycle-accurate simulator), давая возможность инспектировать каждый нюанс активности процессорного ядра, включая визуализацию поведения конвейера и кэша процессора. Эти симуляторы надежны и очень точны, потому что их проверили в работе разработчики кремния чипов Analog Devices. Есть второй, высокоскоростной симулятор для процессоров Blackfin, он работает как функциональный симулятор процессора. Используя проприетарную технологию just-in-time (JIT), эти симуляторы могут моделировать миллионы циклов в секунду на современных хостах разработки PC. По сути это означает, что вместо запуска симуляции на всю ночь можно ограничиться 10-минутным перерывом на кофе.

Многие требовательные к вычислительным ресурсам приложения обрабатывают сигнал так, что для отладки необходимо его представить в виде определенного графика содержимого памяти. Это хорошо поддерживается в режиме отладки VisualDSP++, предоставляется несколько просмотров данных, как простых (график в виде линии), так и сложных (глазковые диаграммы и водопады), чтобы можно было обнаружить в приложении аномальные последовательности данных. Есть также просмотр изображений нескольких форматов.

Пользователи VDK могут получить диаграмму работы потоков под управлением ядра. Доступна информация о состоянии на базе потока, а также всесторонняя графическая история событий ядра и загрузки CPU. Отображаются смена контекста (переключение выполнения с одного потока на другой), опубликованные (post) и ожидающие освобождения (pend) семафоры, и другие захваченные события ядра.

Инспекция активности приложения или даже подача на него воздействий может осуществляться из отладчика во время непрерывной работы приложения, с помощью так называемых каналов фоновой телеметрии процессора (background telemetry channels, BTC [10]). BTC позволяет установить произвольное количество каналов обмена между хостом отладки и приложением. Каналы могут работать в любом направлении, так что BTC можно использовать для чтения и записи данных во время работы на процессоре отлаживаемого приложения. Каналом могут обслуживаться скалярные значения или целые массив. Массивы, прочитанные из цели, могут даже отображаться в реальном времени.

Пользователи MP-систем получают те же самые функции отладки для всех ядер процессора через один интерфейс отладки. Могут появляться разные окна в зависимости от того, какой процессор в настоящее время получил фокус отладчика, или окна могут быть привязаны с определенному ядру процессора, так что их содержание не следует за фокусом отладчика. Также MP-отладка поддерживает запуск (run), пошаговое выполнение (step), приостановку (halt) программы и сброс (reset).

Патентованный статистический профайлер компании Analog Devices предоставляет уникальную возможность получения информации о работе определенных участков кода приложения. Работая совершенно прозрачно ля приложения, профайлер опрашивает приложение тысячи раз в секунду, и стоит статистический вид на места кода, где приложение больше всего тратит процессорное время. Этот инструмент можно использовать для упрощения нахождения в приложении критических мест (например, наиболее часто выполняющиеся участки кода должны быть перемещены из внешней памяти L3 во внутреннюю L1). Цели отладки симулятора предоставляют полностью линейный вид профайлинга. Для процессоров Blackfin также доступен традиционный инструментальный профайлинг.

Кроме всего этого компилятор VisualDSP++ может осуществлять специальный вид оптимизации на основе информации, которую собрал профайлер. Это так называемая оптимизация по профилю (profile-guided optimization, PGO [11]), позволяющая компилятору оценить работу приложения путем его запуска, и затем запустить на основе этой оценки второй проход компиляции, где будет осуществлена оптимизация на основе информации, собранной на предыдущем проходе компиляции с запуском приложения. Это дает компилятору уникальные данные на базе работающих блоков кода, позволяя делать оптимизацию с уровнем гранулярности, недоступной при оптимизации, осуществляемой на базе отдельных файлов.

Интеграция с рабочим окружением. Среда разработки всегда используется вместе с другими инструментами как часть общего большого рабочего окружения, что было учтено разработчиками VisualDSP++.

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

Для лучше интеграции с системами контроля кода (source code control, SCC) VisualDSP++ может подключаться к любому провайдеру SCC, который поддерживает общий интерфейс контроля кода от Microsoft (Microsoft® common source code control, MCSCC). Этот интерфейс поддерживается всеми лидирующими вендорами SCC. VisualDSP++ идет на шаг дальше в поддержке SCC, контролируя код как самостоятельно, так и со сторонними системами контроля кода.

Есть возможность надежно протестировать встраиваемое приложение через продвинутый интерфейс автоматизации программирования приложения (automation application programmers interface, API). Используя нейтральную к языку технологию автоматизации от Microsoft, для авторов скриптов доступна почти каждая функция графического интерфейса разработки VisualDSP++. Приложения могут быть заново собраны, загружены и запущены простым скриптом, запускаемым из командной строки или из пользовательской среды тестирования. API автоматизации поддержаны примерами на C++ и VBScript для всех вызовов API, хотя может использоваться любой язык автоматизации.

Для прототипов, работающих в малом и/или большом объемах выпуска, эмулятор JTAG Analog Devices может использоваться для прошивки программы в Вашу пользовательскую систему. Программатор flash доступен через то же самое API автоматизации, так что процесс программирования flash может быть описан скриптом, или для него может быть разработано графическое приложение, удобное для использования персоналом, не знакомым со средой разработки VisualDSP++. Драйверы устройств предоставляются (с открытым исходным кодом) для всех устройств flash, которые можно найти на оценочных платах разработчика EZ-KIT Lite, и эти драйверы можно просто адаптировать для любого устройства памяти, откуда будет загружаться код процессора.

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

VisualDSP++ включает в себя всестороннюю, индексированную, со встроенным поиском систему помощи, доступную локально и онлайн при наличии подключения к Интернет. В дополнение к информации, касающейся VisualDSP++, в систему помощи включены руководства по процессорам Analog Devices, апноуты и многое другое.

Лицензированные пользователи VisualDSP++ имеют право на бесплатную техподдержку. Для поддержки VisualDSP++ выделен специальный персонал, имеющий специальный опыт в этой области. Нет никакой платы, привязанной к инциденту или обслуживанию; поддержка остается бесплатной независимо от того, как долго Вы владеете лицензионным VisualDSP++.

Главные и второстепенные апгрейды и обновления (major, minor upgrades) для VisualDSP++ также бесплатны, и распространяются через веб-сайт Analog Devices.

Установка VisualDSP++. Можно бесплатно пользоваться VisualDSP++ в течение 90 дней. Инсталлятор VisualDSP++ можно либо загрузить с сайта Analog Devices [12], либо получить на компакт-диске от официального дистрибьютора.

Поддержка платформ и процессоров. VisualDSP++ поддерживает процессоры Blackfin и работает н операционных системах Windows® 7 (начиная с версии VisualDSP++ 5.0 Update 8), Windows® Vista, Windows® XP и Windows® 2000.

Интегрированная среда разработки от Analog Devices, основанная на фреймворке Eclipse™ (более современная, чем VisualDSP++). Включает инструменты генерации кода с языков C/C++ и ассемблера, предназначена для поддержки старых и новых процессоров Blackfin® и SHARC®. Предоставляет встроенную поддержку стеков TCP/IP, популярные программные компоненты Micrium (RTOS, File System, стеки USB), многоядерных процессоров Analog Devices, и алгоритмические программные модули.

Существует большое количество открытого программного обеспечения для процессоров Blackfin. Эта врезка предоставляет описание нескольких таких пакетов.

GNU Toolchain. Компоненты GNU следующие:

• GNU Binutils, содержащие коллекцию двоичных инструментов, главные из них это as (GNU assembler) и ld (GNU linker). Основной проект binutils можно найти на страницах GNU, там же находится подробное руководство.
• GNU Compiler Collection (gcc), в которую входят компиляторы C, C++, Fortran. Основной проект gcc можно найти на страницах GNU, там же находится подробное руководство.
• GNU Debugger (gdb), это отладчик, позволяющий увидеть, что происходит в программе, когда она выполняется ли когда падает по ошибке. Основной проект gdb можно найти на страницах GNU.
• Генератор μClinux’s flat format – elf2flt.
• Инструменты для поддержки файловой системы встраиваемой версии форматов:
   - ext2 с genext2fs
   - cram с cramfs.
• Инструментарий для создания приложений "в металле" (bare metal, т. е. ПО без операционной системы) и загрузчиков, называемый ldr-utils. Эти инструменты получают на входе стандартные elf-файлы gcc, и преобразуют их в формат, который может интерпретировать загрузчик (Blackfin bootloader).
• Библиотеки, включая libdsp, newlib, libgloss и μClibc.
• Компоненты тулчейна, поддерживающие Canadian Cross Compiler. Это означает, что Вам больше не нужен хост Linux. Вы можете разрабатывать bare metal приложения и приложения Linux (не ядро) на Microsoft Windows PC.
• JTAG tools (urjtag и gdbproxy) для программирования памяти flash через JTAG, или для отладки самостоятельного приложения.
• Интегрированная среда разработки (Integrated Development Environments, IDE). Blackfin GNU Toolchain подключается ко множеству систем IDE и графическим отладчикам.

Linux and μClinux. Термин μClinux означает Linux для микроконтроллера. Он обычно относится к полному дистрибутиву, а не к имени ядра. Подобно Red-Hat, Debian, Gentoo или Damn Small Linux, μClinux это имя коллекции приложений уровня пользователя, системных библиотек и ядра Linux.

Подробнее про различия Linux and μClinux см. ссылку [13]. Ссылки на различные открытые проекты, нацеленные на процессоры Blackfin см. на страничке [14].

Eclipse IDE. Это универсальная, интегрированная среда разработки. Предоставляет управление проектами, редактирование и отладку исходного кода, подключение внешних инструментов для сборки. Eclipse можно загрузить с сайта eclipse.org. Eclipse IDE написана на Java, и работает на Windows, Linux и Mac OS X.

Установка плагина Eclipse для Blackfin на примере Eclipse 4.2 (Juno) описана по ссылке [15].

Blackfin μClinux. Предназначается для встраиваемых приложений сетей, интернет, мобильной телеметрии, переносных портативных устройств. Многие разработчики хотят получить нечто большее, чем просто процессор и тулчейн для разработки. Для ускорения выхода на рынок при выборе процессора часто принимается во внимание доступность операционной системы (OS) и существующей программной поддержки (готовые примеры приложений).

μClinux это открытая (open source) OS, которая достигла большой популярности. Популярности μClinux способствует расширение доступной базы примеров исходного кода, лицензии без лицензионных выплат, надежность, поддержка со стороны open source комьюнити, доступность инструментария, поддержка сети, портируемость.

Чтобы способствовать распространению этих знаний, в феврале 2004 года был запущен ресурс blackfin.uclinux.org. Этот сайт работает как центральный репозиторий для всех проектов μClinux на процессоре Blackfin, на нем опубликованы примеры кода, форумы вопросов и ответов, отслеживание исправления ошибок (bug tracking).

μClinux портирована на следующие процессоры Analog Devices:

• ADSP-BF522/3/4/5/6/7 (ревизия 0.1 или выше)
• ADSP-BF531/2/3 (ревизия 0.3 или выше)
• ADSP-BF534/6/7 (ревизия 0.2 или выше)
• ADSP-BF542/4/7/8/9 (ревизия 0.1 или выше)
• ADSP-BF561 (ревизия 0.3 или выше)

Размер ядра по умолчанию занимает 0.5 .. 1 мегабайт. Рабочий образ системы помещается на 4 мегабайтах памяти flash (serial, NAND или parallel NOR).

Поддерживаются следующие инструменты отладки:

• GDB с поддержкой симуляции и JTAG.
• KGDB (для разработки ядра и драйверов).
• GDBSERVER (через Ethernet или последовательный порт).
ICEBear USB ICE (для использования вместе с GBD).
gnICE USB JTAG In-Circuit-Emulator.

Ядра реального времени (Real-Time) и обычные (General-Purpose). ADEOS была портирована на процессор Blackfin. ADEOS это уровень абстрагирования от аппаратуры, позволяющий сосуществовать ядру реального времени и обычному ядру. ADEOS поддерживает окружения двух операционных систем (dual-OS Linux environments), достигаемые при использовании RTLinux или RTAI, без использования технологий, попадающих под патент RTLinux.

Расширенную таблицу примеров программ Linux, работающих на процессорах Blackfin, см. по ссылке [16].

Установочный пакет VisualDSP++ включает набор примеров кода для процессоров Blackfin. Папки каталога установки содержат программы сигнальной обработки, оверлеев, скрипты, VDK, BTC и многое другое. Другие папки предоставляют примеры программ, которые можно запустить на системах оценочных плат разработчика EZ-KIT Lite.

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

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

[Выбор аппаратного обеспечения для разработки]

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

Аппаратные наборы от Analog Devices могут иметь в своем составе как оценочные платы (такие как EZ-KIT Lite или STAMP), так и платы расширения и эмуляторы JTAG.

Обычно платы для разработки и оценки это отдельные печатные платы (printed circuit board, PCB), на которых содержится целевой процессор Blackfin вместе с другими устройствами. Analog Devices предоставляет два вида оценочных систем для каждой серии процессоров Blackfin: EZ-KIT Lite и EZ-Board.

Каждый оценочный набор EZ-KIT Lite и EZ-Board включает в себя плату, кабель, источник питания, документацию, программное обеспечение и лицензионный ключ.

EZ-KIT Lite Evaluation System. Плата EZ-KIT Lite это недорогая аппаратная платформа, которая включает процессор Blackfin, окруженный некоторыми другими устройствами, такими как audio-кодеки, кодировщики и декодеры video, память flash, SDRAM, и так далее.

Каждая плата EZ-KIT Lite также содержит эмулятор JTAG с коннектором USB 2.0 и стандартным 13-выводным, с шагом 100 mil коннектором JTAG, который можно использовать с высокопроизводительными эмуляторами JTAG компании Analog Devices. С помощью порта JTAG процессора и программного обеспечения VisualDSP++ Вы можете устанавливать точки останова (breakpoints) в листингах исходного кода и дизассемблера, делать пошаговое выполнение кода, просматривать/заполнять память, сохранять её в файл, выполнять манипуляции с данными в реальном времени, выполнять профайлинг выполнения кода и доступа к памяти, строить графики данных и использовать стандартный ввод/вывод (например, в целях отладки).

Оценочные системы EZ-KIT Lite включают серийный номер, который после регистрации дает полный лицензионный статус VisualDSP++ на 90 дней, считая от даты установки. После истечения 90 дней состояние лицензии меняется на урезанное, когда ограничивается размер приложения, которое может быть собрано, и поддерживается только соединение с агентом отладки.

На большинстве плат EZ-KIT Lite установлено три коннектора расширения (expansion connectors), сконфигурированных в форме буквы "U". Через эти коннекторы можно подключить несколько плат от сторонних фирм. Подробнее см. "EZ-KIT Lite Expansion Boards" на странице 2-50 даташита [1].

EZ-Board Evaluation System. Эти оценочные платы предоставляют разработчикам недорогую платформу для начального старта разработки программ Blackfin с помощью внешнего эмулятора JTAG или отдельной платы агента отладки (standalone debug agent board). EZ-Board также поддерживает μClinux™. EZ-Board является лицензированным продуктом, предоставляющим полноценную, но ограниченную по времени лицензию на 90 дней с момента установки.

Примечание: чтобы отлаживать код, у Вас должна быть Debug Agent Board или эмулятор. На плате EZ-Board есть интерфейс расширения, позволяющий подключать различные платы расширения EZ-Extender.

Таблица 2-4 предоставляет сравнение функций EZKIT-Lite и EZ-Board.

Таблица 2-4. Оценочные платы.

Плата Есть агент отладки? Поддерживаются μClinux Evaluation Tools? 90-дневная оценочная лицензия VisualDSP++ Кабели
EZ-Kit Lite ДА ДА ЕСТЬ ЕСТЬ
EZ-Board нет ДА ЕСТЬ ЕСТЬ

В настоящий момент платы EZ-Boards доступны только для процессоров ADSP-BF512/F, ADSP-BF514F, ADSP-BF516F, ADSP-BF518F, ADSP-BF522, ADSP-BF524 и ADSP-BF526.

[Ссылки]

1. Getting Started With Blackfin® Processors, Revision 6.0, September 2010 site:analog.com (getting-started-blackfin-processors-6.0.pdf).
2. Неофициальная классификация семейств процессоров Blackfin.
3. Blackfin ADSP-BF538.
4. Blackfin Processors site:analog.com.
5. Blackfin: запуск программ из FLASH.
6. Эмулятор Blackfin ICE-100B.
7. Косяки VisualDSP.
8. Библиотека Blackfin DSP Run-Time, общее описание.
9. VisualDSP: полезные директивы #pragma.
10. VisualDSP: что такое BTC?
11. PGO Linker: инструмент размещения кода для процессоров Blackfin.
12. VisualDSP++ Development Software Release 5.0 Test Drive Download site:analog.com.
13. Differences between μClinux and Linux site:docs.blackfin.uclinux.org.
14. Analog Devices Open Source Projects For Blackfin Processors site:blackfin.uclinux.org.
15. Installing Eclipse 4.2 (Juno) site:blackfin.uclinux.org.
16. Some projects or products that use the uClinux distribution site:docs.blackfin.uclinux.org.
17Обзор VisualDSP++ Kernel RTOS (VDK).

 

Добавить комментарий


Защитный код
Обновить

Top of Page