- •1. Цель работы
- •2. Структура проекта
- •3. Рекомендуемый путь и этапы создания проекта в vdsp
- •3.1 Пример и описание .Ldf файла
- •Search_dir() - определение путей к текущей рабочей директории и к директории lib.
- •3.2 Структура простейшего .Asm файла
- •Rti; nop; nop; nop; /* 0x0008: irql1*/
- •3.3 Компоновка проекта и создание исполняемого .Dxe файла
- •Rti; nop; nop; nop; /* 0x0008: irql1*/
- •Rti; nop; nop; nop; /* 0x0020: sport1 transmit*/
- •Rti; nop; nop; nop; /* 0x0028: Timer*/
- •4. Запуск и отладка проекта.
- •4.1 Запуск проекта Lab1
- •4.2 Отображение содержимого памяти
- •4.3 Отображение содержимого регистров
- •4.4 Построение графиков
- •5. Задание к лабораторной работе
- •1. Особенности и типы команд сигнального процессора
- •2. Используемые условия
- •2.1 Подробное описание регистров состояния и значения их битов
- •2.2 Логическое описание условий (cond), используемых с оператором if
- •2.3 Условия завершения цикла do until (term)
- •3. Многофункциональные инструкции
- •3.1 Операции alu/mac с одновременным чтением памяти данных и памяти программ
- •3.2 Чтение памяти данных и памяти программ
- •3.3 Вычисления с чтением из памяти
- •3.4 Вычисления с записью в память
- •3.5 Вычисления с пересылкой регистр-регистр
- •4. Инструкции alu, mac и shifter
- •4.1 Инструкции и стандартные функции
- •4.2 Инструкции и стандартные функции
- •4.3 Инструкции и основные функции
- •5. Команды пересылки данных
- •6. Инструкции управления исполнением программы
- •If eq jump my_label; call (i6);
- •7. Другие инструкции и команды не вошедшие в
- •8. Обобщённая таблица команд
4.2 Отображение содержимого памяти
Меню Memory позволяет просматривать, заполнять, а также сохранять в файл определенные области памяти, изменять формат данных памяти. Изменить формат данных можно, выделив щелчком мыши нужное окно и затем нажатием клавиш Ctrl+T циклически менять формат. В зависимости от DSP, форматы данных памяти бывают: шестнадцатеричный (hexadecimal), беззнаковый целый (unsigned integer), знаковый целый (signed integer), восьмеричный (octal), дробный (fractional), символьный (character), ассемблерный (assembly), двоичный (binary).
В отладчике существует 4 типа памяти:
Program Memory (память программ), может содержать команды ассемблера и собственно данные в любом сочетании;
Data Memory (память данных);
Byte Memory;
I\O Memory (память ввода-вывода).
Для просмотра содержимого памяти необходимо:
Два раза щелкнуть мышью по колонке адреса в окне Disassembly или в окне, выбранном из меню Memory\…;
В диалоговом окне Go to Address ввести адрес в шестнадцатеричной форме или щелкнуть Browse, чтобы выбрать метку адреса памяти из списка.
При необходимости заполнить область памяти или отдельную ячейку определенными значениями (например, обнулить) следует:
Щелкнуть правой клавишей мыши в окне Disassembly или окне Memory\…;
В появившемся меню выбрать Fill…
В диалоговом окне Fill Memory, если необходимо заполнить область памяти из файла, использовать условие Fill from a file, иначе перейти к пункту 5;
В поле File name указать имя файла, из которого необходимо получить данные, далее перейти к пункту 6;
В поле Value ввести значение (в формате 0 или NOP), которым надо заполнить память;
В поле Address ввести начальный адрес заполняемой памяти;
В поле Memory выбрать тип используемой памяти;
В поле Count ввести количество заполняемых ячеек;
В поле Stride ввести шаг, с которым будут заполняться ячейки.
Отладчик предоставляет возможность сохранять в файл данные из любой области памяти, для экспорта их в другие проекты или приложения (например, Microsoft Excel). Для этого надо:
Щелкнуть правой клавишей мыши в окне Disassembly или окне Memory\…;
В появившемся меню выбрать Dump…
В диалоговом окне Dump Memory в поле Address ввести начальный адрес сохраняемой памяти;
Установить флаг Dump to a file;
В поле Format выбрать нужный формат сохраняемых данных;
Значение полей Memory, Count и Stride см. выше;
Установить флаг Write format to file, что позволит отладчику считывать данные из создаваемого файла в правильном формате.
4.3 Отображение содержимого регистров
Пункт меню Register позволяет просматривать и изменять содержание регистров, а также изменять формат данных регистров. Форматы данных регистров те же, что и у данных памяти, но отсутствует ассемблерный.
Для изменения формата регистров необходимо щелкнуть правой клавишей мыши по окну, выбранному из меню Register\…, в появившемся меню выбрать формат. Для изменения содержания регистра необходимо щелкнуть мышью в поле данных регистра и в контекстном меню выбрать Edit…, ввести значение и нажать Enter. Следует отметить, что вводить значение нужно в том формате, в котором представлены данные в окне просмотра регистров.
В отладчиках для процессоров семейства ADSP-21xx выделяют следующие типы регистров (подробное описание регистров приведено в приложении):
Register\Computational (вычислительные), к ним относятся:
регистры арифметико-логического устройства (ALU - Arithmetic Logic Unit): AX0,AX1,AY0,AY1 – 16-битные входные регистры; AR – регистр результата (16 бит); AF – регистр обратной связи, дополнительный Y-вход (16 бит);
регистры умножителя-накопителя (MAC – Multiplier Accumulator): MX0, MX1, MY0, MY1 – 16-битные входные регистры; MR0-MR2 – регистры результата (40 бит – 16 бит MR0, 16 бит MR1, 8 бит MR2); MF – регистр обратной связи, дополнительный Y-вход (16 бит);
регистры устройства циклического сдвига (Shifter): SR0,SR1 – регистр результата (32 бит – 16 бит SR0, 16 бит SR1); SI – входной регистр (16 бит); SE – регистр порядка (16 бит); SB – используется для операций с блочной плавающей точкой (5 бит).
Register\ Alternate Computational – регистры дублирующие вычислительные.
Register\DAGS – регистры генератора адреса данных (DAG - Data Address Generator): I0-I7 (Index) – 14-битные регистры, которые содержат непосредственные адреса для доступа к данным; M0-M7 (Modify) – 14-битные регистры, содержащие значения для последующего изменения в ходе программы I регистров; L0-L7 (Length) – 14-битные регистры, определяющие длину циклических буферов данных.
Register\Program Control – регистры, содержащие информацию относительно выполнения программы: PC – программный счетчик, указывает адрес инструкции, которая выполняется в данное время (14 бит); CNTR – счетчик цикла, равен количеству итераций (14 бит); CYCLES – счетчик цикла, считает число выполненных циклов процессора (32 бита); PM_ADDR – содержит последний адрес памяти программы, к которому обращались (22 бита); DM_ADDR – содержит последний адрес памяти данных, к которому обращались (22 бита).
Status – регистры состояния: ASTAT – регистр состояния арифметических устройств (8 бит);
SSTAT – регистр состояния стеков, может только считываться (8 бит); MSTAT – регистр состояния операционного режима процессора (8 бит).
Остальные регистры не входят в объем данной лабораторной работы и будут рассмотрены по мере необходимости.