Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Шрифт:
Описание
Таблица 6.1 Описание символьных имен регистров управления и состояния процессора ADSP-2181
Имя | Описание | Адрес |
---|---|---|
IDMA | Регистр управления IDMA | 0x3FE0 |
BDMA_BIAD | Регистр внутреннего адреса BDMA | 0x3FE1 |
BDMA_BEAD | Регистр внешнего адреса BDMA | 0x3FE2 |
BDMA_BDMA_Ctrl | Регистр управления BDMA | 0x3FE3 |
BDMA_BWCOUNT | Регистр счетчика слов BDMA | 0x3FE4 |
PFDATA | Регистр данных программируемых флагов | 0x3FE5 |
PFTYPE | Регистр управления программируемыми флагами | 0x3FE6 |
SPORT1_Autobuf | Регистр управления автобуферизацией SPORT1 | 0x3FEF |
SPORT1_RFSDIV | Регистр делителя кадровых импульсов SPORT1 | 0x3FF0 |
SPORT1_SCLKDIV | Регистр делителя тактовых импульсов SPORT1 | 0x3FF1 |
SPORT1_Control_Reg | Регистр управления SPORT1 | 0x3FF2 |
SPORT0_Autobuf | Регистр управления автобуферизацией SPORT0 | 0x3FF3 |
SPORT0_RFSDIV | Регистр делителя кадровых импульсов SPORT0 | 0x3FF4 |
SPORT0_SCLKDIV | Регистр делителя тактовых импульсов SPORT0 | 0x3FF5 |
SPORT0_Control_Reg | Регистр управления SPORT0 | 0x3FF6 |
SPORT0_TX_Channels0 | Регистр младшего слова передатчика SPORT0 | 0x3FF7 |
SPORT0_TX_Channels1 | Регистр старшего слова передатчика SPORT0 | 0x3FF8 |
SPORT0_RX_Channels0 | Регистр младшего слова приемника SPORT0 | 0x3FF9 |
SPORT0_RX_Channels1 | Регистр старшего слова приемника SPORT0 | 0x3FFA |
TSCALE | Регистр масштабирования таймера | 0x3FFB |
TCOUNT | Регистр счетчика таймера | 0x3FFC |
TPERIOD | Регистр периода таймера | 0x3FFD |
DM_Wait_Reg | Регистр тактов ожидания памяти данных | 0x3FFE |
System_Control_Reg | Регистр управления системой | 0x3FFF |
Как видно из содержимого данного файла, в каждой его строке производится директивное назначение определенному символьному имени конкретного числового значения. Символьные имена могут быть произвольными, важно только, чтобы они одинаково записывались в данном файле и в самой программе. В дальнейшем мы часто будем использовать символьное описание регистров, для обращения к ним по записи или чтению из программы. В частности, в нашей программе mem_clr.dsp содержатся строки команд для обращения к регистру конфигурирования PFTYPE и регистру данных PFDATA программируемых флагов PF процессора. Файл def2181.h должен находиться в том же каталоге, в котором будет храниться файл программы во время ее трансляции. Иначе компилятор выдаст сообщение об ошибке во время компиляции программы.
Далее, в файле программы начинается запись команд. Поскольку с нулевого адреса памяти программ должны быть записаны векторы прерываний или их обработчики, первой располагается команда перехода jump BEGIN на начало программы, а затем команды возврата из прерывания rti для каждого из прерываний процессора. Все команды должны заканчиваться точкой с запятой, в соответствии с требованиями синтаксиса ассемблера. Заметьте, что в одной строке присутствует сразу несколько команд. Такая запись допускается компилятором ассемблера. Так как для каждого вектора прерывания в памяти программ отведено по четыре 24-разрядных ячейки памяти, а каждая команда процессора занимает одну 24-разрядную ячейку памяти, то оставшиеся неиспользованные ячейки памяти заполняются пустыми командами пор. Сразу же после метки BEGIN записаны команды инициализации конфигурационного регистра флагов PFTYPE с помощью рабочего регистра ax0 блока ALU процессора. Непосредственная запись константы в память данных не поддерживается процессором. Ниже располагаются строки
Естественно, что комментарии, некоторые директивы, метки и команды с операторами могут отсутствовать в программе. Здесь приведен лишь общий пример записи программ.
Директивы и команды заранее определены языком программирования и не допускают произвольных записей. Метка может состоять из произвольного набора букв, символа подчеркивания и цифр без пробелов, начинающихся с буквы, длиной не более 32 символов, и должна заканчиваться двоеточием. Команды могут записываться в верхнем или нижнем регистре. Компилятор по умолчанию не распознает регистр записей программы, т.е. является контекстно-независимым, и допускает запись комментариев, директив, меток и команд с операторами в любом регистре. Это необходимо учитывать при задании имен меткам. Так, например, метка MET1: и met1: будут восприниматься компилятором как одна и та же, что приведет к сообщению об ошибке. Для того чтобы компилятор различал регистр букв, необходимо включить в строку его запуска ключ – с. Комментарии могут содержать любые наборы произвольных символов в одной или нескольких строчках, заключенных между открывающейся { и закрывающейся фигурной скобкой } или между символами /* и */.
Позже мы рассмотрим более подробно все разрешенные директивы и систему команд процессора. Но вначале доведем процедуру программирования процессора на примере нашей программы до конца. Надеюсь, это поможет пробудить живой интерес к изучению и позволит быстрее освоить на практике программирование сигнального процессора. Итак, после создания файла с программой нам необходимо выполнить его трансляцию, для получения машинных кодов и загрузить в симулятор для отладки. После отладки программы ее можно будет загрузить в память процессора для выполнения.
Для трансляции программы с целью получения машинного загрузочного кода для процессора нам потребуются программные средства разработки. Семейство процессоров ADSP сопровождается полным набором программного обеспечения (трансляторы и эмуляторы) и аппаратных отладочных средств (отладочные комплекты и внутрисхемные эмуляторы), предоставляемые фирмой Analog Device для разработки программ и облегчения процесса освоения программирования на практике.
На сегодняшний день существует два программных пакета кросс средств для разработки и отладки программ для сигнального процессора ADSP-2181. С появлением новых процессоров продолжают добавляться дополнительные инструментарии разработки программ. Первый из этих пакетов входит в поставку отладочного комплекта EZ-KIT Lite и работает под управлением операционной системы DOS, или в режиме эмуляции DOS под Windows. Второй пакет Visual DSP, более позднего происхождения, распространяется самостоятельно и работает под управлением операционной системы Windows. Все кросс средства доступны на сайте компании Analog Device по адресу www.analog.com. Каким из этих пакетов пользоваться, обычно решает сам пользователь. Каждый из пакетов имеет свои преимущества и недостатки. Поэтому познакомим читателей с обоими пакетами поочередно, а они сами сделают свой выбор. Вначале рассмотрим пакет кросс средств для работы под DOS. Данные средства разработки для сигнальных процессоров ADSP-2181 включают в себя:
• System Builder (системный конфигуратор (построитель) программы). Это программный инструмент для описания особенностей оборудования. Он определяет структуру аппаратной системы, позволяя разработчику указать количество доступной памяти, местоположение программной памяти и памяти данных и любого отображенного в память порта ввода-вывода для аппаратного окружения. Данный построитель использует высокоуровневые конструкции, записываемые программистом в файле с расширением sys. После обработки данного файла построитель формирует файл архитектуры с расширением ach. Файл архитектуры используется в дальнейшем компоновщиком, симулятором и эмулятором. Допускается не выполнять процедуру системного конфигурирования при использовании готового файла архитектуры для конкретного процессора.