Вам наверное не раз приходилось встречаться с директивами препроцессора в исходном коде библиотек Analog Devices, которые используют загадочные определения наподобие __ADSP_STIRLING__, __ADSP_EDINBURGH__ и т. п. Это макроопределения, которые отражают подгруппы аналогичных по возможностям процессоров. Процессоры одной подгруппы имеют незначительные отличия друг от друга, что позволяет легко портировать низкоуровневый код с одного процессора на другой, когда они находятся в одной подгруппе. Например, процессоры ADSP-BF531, ADSP-BF532, ADSP-BF533 относятся к подгруппе Edinburgh (__ADSP_EDINBURGH__) и они аналогичны друг-другу по возможностям, т. е. для того, чтобы программа процессора ADSP-BF531 заработала на процессоре ADSP-BF532, скорее всего будет достаточно перенастроить свойства проекта (указать другой процессор ADSP-BF532) и перекомпилировать проект.
К сожалению, на сайте Analog Devices нет никакой информации о классификации процессоров по подгруппам. Есть только обобщенная таблица по функциональным возможностям [1], в которой нет никакой классификации по семействам процессоров. Однако имеется заголовочный файл services.h (находится в каталоге установки Blackfin\include\services среды разработки VisualDSP++), где эти подгруппы определены с помощью директив препроцессора. Т. е. на основе процессора, заданного в проекте, условными операторами препроцессора #if, #elif и #ifndef и т. п. определяются макроопределения для семейств (подгрупп родственных процессоров). Для удобства я составил таблицу, чтобы можно было проще ориентироваться в семействах моделей процессоров Blackfin.
Семейство |
Какие процессоры входят |
Edinburgh(__ADSP_EDINBURGH__) |
ADSP-BF531, ADSP-BF532, ADSP-BF533 |
Braemar(__ADSP_BRAEMAR__) |
ADSP-BF534, ADSP-BF536, ADSP-BF537 |
Stirling(__ADSP_STIRLING__) |
ADSP-BF538, ADSP-BF539 |
Moab(__ADSP_MOAB__) |
ADSP-BF542, ADSP-BF542M, ADSP-BF544, ADSP-BF544M, ADSP-BF547, ADSP-BF547M, ADSP-BF548, ADSP-BF548M, ADSP-BF549, ADSP-BF549M |
Kookaburra(__ADSP_KOOKABURRA__) |
ADSP-BF523, ADSP-BF525, ADSP-BF527 |
Mockingbird(__ADSP_MOCKINGBIRD__) |
ADSP-BF522, ADSP-BF524, ADSP-BF526 |
Brodie(__ADSP_BRODIE__) |
ADSP-BF512, ADSP-BF514, ADSP-BF516, ADSP-BF518 |
Moy(__ADSP_MOY__) |
ADSP-BF504, ADSP-BF504F, ADSP-BF506F |
Delta(__ADSP_DELTA__) |
ADSP-BF590, ADSP-BF592 |
Teton(__ADSP_TETON__) |
ADSP-BF561 |
[Ссылки]
1. Blackfin Processor Family site:analog.com. |