Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - Олег Вальпа 7 стр.


Введите текст этого файла с помощью любого текстового редактора с кодировкой DOS в компьютер и сохраните в файле с именем asmdsp.bat или скопируйте с компакт-диска, прилагаемого к книге. Он позволит автоматизировать процесс трансляции файлов с программами для сигнального процессора. Если просмотреть строки этого командного файла, то нетрудно понять что он делает. В первой строке командного файла находится команда запрета отображения командных строк на экран. Далее следуют две строки для установки пути к рабочему каталогу с файлами трансляции и переменной adi_dsp. Затем проверяется, было ли введено имя файла в командной строке при запуске данного файла. Если имени задано не было, производится переход на метку с названием no file, после которой на экран отобразится подсказка о правильном использовании командного файла. Команда pause выводит строку "Нажмите любую клавишу…" и ожидает соответствующее действие от пользователя. Если имя файла для трансляции было задано в строке при запуске командного файла, то переход на метку не производится и начинается процесс компиляции файла с программой. Все процессы трансляции предваряются соответствующим сообщением. Компиляция выполняется командой asm21 %1 -2181 -l. Здесь после вызова программы компилятора asm21.exe с именем файла из командной строки %1 используется ключ -2181 для задания типа процессора и ключ -I для генерации листинга программы. Список всех ключей для конфигуратора bld21.exe, компилятора asm21.exe, компоновщика ld21.exe, распределителя spl2.exe и симулятора sim2181.exe можно получить, запустив отдельно соответствующую программу без параметров или с ключом -help. Переведенный текст этих сообщений приведен в табл. 6.3.

Таблица 6.3 Формат записи программ и назначение ключей

bld21.exe [-ключ] имя_файла
-cУстановить чувствительность к регистру символов
-helpВывести на экран справку о программе
asm21.exe [-ключ_1] [-ключ_2] … [-ключ_N] имя_файла
-Dvar[=exp]Определить идентификатор для Си препроцессора, например -dten=10
-cУстановить чувствительность к регистру символов
-cpВключить Си препроцессор
-IСоздать файл листинга программы
-i [глубина]Раскрыть содержимое включенных файлов в листинге с указанной глубиной
-m [глубина]Раскрыть макросы в файле листинга с указанной глубиной
-pИспользовать только препроцессор
-sОтменить семантическую проверку много функциональных инструкций
-o имя_файлаПереименовать выходной файл
-2181Поддержать специальные ассемблерные инструкции для процессора ADSP-2181
-helpВывести на экран справку о программе
ld21.exe имя_файла1 [имя_файла2] … [имя_файлаN] [-ключ_1] [-ключ_2] … [-ключ_N]
-i имя_файлаУказать командный списочный файл
-e имяПрисвоить выходным файлам новое имя (по умолчанию 210x.exe)
-a имя_файлаУказать файл описания архитектуры
-user имя_файлаПоиск библиотечного файла, созданного утилитой построителя библиотеки Iib21.exe
-s размерЗадать размер динамической памяти
-dir путьУказать пути каталога для поиска файлов библиотек
-libКомпоновать программу с библиотекой Си
-gСоздать файл таблицы символов *.sym
-pmstackПереместить стек в память программ (PM)
-romИспользовать ПЗУ версии библиотечных программ Си
-cСоздать стек для компилированных Си программ (DM)
-dryrunБыстрый запуск для теста на ошибки без создания файла загрузки
-xСоздать файл распределения памяти *.map
-pПоместить копию библиотечной подпрограммы на загрузочных страницах
-group fileИспользовать файл групповых модулей
-helpВывести на экран справку о программе
spl21.exe входной_файл выходной_файл [-ключ_1] [-ключ_2] … [-ключ_N]
-dmРаспределить только память данных DM
-pmРаспределить только память программ РМ
-bmРаспределить только память загрузки BM
-bs #Установить размер загрузочной памяти (2048, 1024, 512 или 256 байт)
-bb #Установить размер границы загрузки (2048 или 1024 байт)
-uФормат выходного файла Motorola S (по умолчанию)
-iФормат выходного файла Intel Hex
-usФормат Motorola S1, байтовый (только с ключами -pm или -dm)
-us2Формат Motorola S2, байтовый (только с ключами -pm или -dm)
-uiФормат Intel Hex, байтовый (только с ключами -pm или -dm)
-loaderСоздать загрузочный файл
-bp #Большие загрузочные страницы, где # как HEX адрес
-bi #Большие загрузочные страницы, где # как HEX величина
-flagБольшие загрузочные страницы с использованием выходных флагов
-IdИспользовать специальный загрузчик
-2181Создать код для процессора ADSP-2181
sim2181 [-a имя_файла] [-c] [-e имя_файла] [-h] [-k имя_файла] [-v] [-w имя_файла]
-a имя_файлаСчитывать при запуске файл архитектуры
-cУстановить чувствительность к регистру символов
-e имя_файлаЗагрузить при запуске входной файл с расширением exe (lda)
-hВывести на экран справку о программе
-k имя_файлаЗагрузить и выполнить файл командных строк
-o имя_файлаГенерировать файл с сообщениями об ошибках
-vИзбыточность
-w имя_файлаЗапустить симулятор с загрузкой ранее созданного файла конфигурации окон с расширением win

После компиляции программы будет создан файл с именем программы и расширением obj. Однако если на этапе компиляции будут обнаружены ошибки, этого не произойдет и с помощью команды if not exist %1.obj goto error будет осуществлен переход на метку error, для выдачи соответствующего сообщения. При успешной компиляции трансляция программы продолжится.

Компоновка программы выполняется с помощью командной строки: ld21 %1 -a adsp2181 -e %1 -x -g. Здесь после команды вызова компоновщика ld21.exe с именем файла из строки запуска командного файла %1, следует несколько ключей с параметрами. Ключ -a adsp2181 указывает имя файла архитектуры процессора adsp2181.ach. Данный файл создан с помощью построителя программ System Builder и входит в поставку пакета кросс средств. Он состоит из пяти следующих строк:

$2181

$ADSP2181

$0000 3FFF paxINT_PM_USER t

$0000 3FDF dadINT_DM_USER t

$

Этот файл содержит данные, определяющие тип процессора и структуру его памяти, и всегда должен находиться в том же каталоге, где находится файл транслируемой программы. Ключ -е %1 назначает имя выходного файла. Ключи -x и -g предназначены для генерации файла карты памяти *.map и файла с таблицей символьных имен *.sym соответственно. Эти файлы можно использовать в дальнейшем для анализа распределения памяти процессора. Файл с расширением sym необходим, кроме того, для отладки программы с помощью симулятора sim2181.exe. В результате компоновки будет получен файл с именем программы и расширением exe. Этот файл уже можно использовать для загрузки в симулятор или непосредственно в процессор, например через интерфейс IDMA. Формат данного файла приведен в табл. 6.4.

Таблица 6.4 Формат загрузочного файла

СимволОписание назначения
←←iПризнак начала загрузочного файла
@PAПризнак блока памяти программ РМ
0000Адрес загрузки кодов в память РМ
СимволОписание назначения
123456Первый код команды
789abcВторой код команды
def012Третий код команды
и т.д.
#123XXXXXXXXПризнак конца блока команд с контрольной суммой
@DAПризнак блока памяти данных DM
0000Адрес загрузки данных в память DM
1234Первое слово данных
5679Второе слово данных
и т.д.
#123XXXXXXXXПризнак конца блока данных с контрольной суммой
←←oПризнак конца загрузочного файла

X - контрольная сумма адреса и данных.

Позже мы подробно рассмотрим способ его загрузки в процессор через интерфейс IDMA. Несмотря на то, что этот файл имеет расширение exe, он не имеет ничего общего с исполняемыми файлами для персональных компьютеров. Тем не менее, случайный его запуск на компьютере может привести к непредсказуемым результатам. Непонятно, чем руководствовалась фирма Analog Device, давая такое расширение этому файлу при разработке кросс средств. Для устранения таких неприятных моментов в командный файл включены следующие четыре строчки:

if not exist %1.lda goto next1

del %1.lda

:next1

en %1.exe %1.lda

Эти строки предназначены для переименования нежелательного расширения загрузочного файла с расширением exe в файл с нейтральным расширением lda. Это делается в последней командной строке. Первые три строки предназначены для проверки наличия файла с расширением Ida от предыдущей трансляции и его удаления, в случае обнаружения, для генерации нового файла.

При успешной генерации загрузочного файла будет выведено соответствующее сообщение и осуществлен переход к группе команд для формирования файла прошивки для ПЗУ, из которого может производиться автоматическая загрузка процессора через интерфейс BDMA. Данный процесс называется "сплиттингом" (распределением) и осуществляется командой: spl21 %1.lda %1 - loader-2181 > %1.msg.

Здесь после команды вызова сплиттера sp21.exe с именем файла из командной строки с расширением Ida, следует несколько ключей и команда перенаправления вывода сообщений, с помощью символа >, в файл с расширением msg. Ключ -loader предназначен для добавления в выходной файл кода загрузчика, а ключ -2181 позволяет формировать код загрузки для процессора ADSP-2181. О коде загрузки я расскажу чуть позже.

В результате работы сплиттера будет создан файл прошивки для ПЗУ, с расширением bnm HEX формата Motorola. На практике, для программирования микросхем памяти чаще пользуются бинарным форматом файлов. Поэтому в командном файле добавлено еще несколько строк, осуществляющих преобразование файла bnm в бинарный файл с расширением bin. Для этого используется распространенная программа hexbin2.exe. Эту программу также можно найти на компакт-диске.

Теперь, когда мы познакомились со всеми процедурами трансляции, выполняемыми с помощью командного файла asmdsp.bat, можно начать транслировать нашу программу. Не забудьте, что вместе с программой в каталоге проекта должен находиться файл описания def2181.h, файл архитектуры adsp2181.ach и созданный и описанный выше командный файл asmdsp.bat.

Выполните трансляцию программы mem_clr.dsp с помощью командной строки asmdsp.bat mem_clr. Обратите внимание на то, что в качестве параметра для командного файла используется имя нашей программы без расширения. Оно будет автоматически подставляться вместо символов %1 командного файла. В результате работы командного файла на экране должны последовательно появиться сообщения:

Компиляция...

...завершена успешно

Нажмите любую клавишу...

Компоновка...

...завершена успешно

Нажмите любую клавишу...

Сплиттинг...

...завершен успешно

Нажмите любую клавишу...

Преобразование в бинарный файл...

...завершено успешно

Нажмите любую клавишу...

По завершении работы командного файла в каталоге с программой должны появиться файлы с именем программы и расширениями int, lst, obj, lda, map, sym, msg, cde, bnl, bnm, bnu и bin. Описание назначения данных файлов проекта в краткой форме приведено в табл. 6.5.

Таблица 6.5 Описание расширений файлов проекта

РасширениеОписание
batКомандный файл
sysИсходный файл системной архитектуры
achФайл описания архитектуры
dspФайл ассемблерного модуля (текст программы)
lstФайл листинга
intФайл инициализации
objОбъектный файл
cdeФайл кода
datФайл инициализации данных кода
exe (lda)Файл загрузки образа памяти
mapФайл распределения памяти
symФайл символов
bnuВыходной файл разделителя программ. Содержит старшие байты
bnmВыходной файл разделителя программ. Содержит средние байты
bnlВыходной файл разделителя программ. Содержит младшие байты
binФайл для программирования ПЗУ в двоичном формате
msgФайл сообщений

Итак, с помощью приведенного выше командного файла мы получили необходимые нам файлы с расширениями lda и bin для непосредственной загрузки в память процессора и для прошивки ПЗУ соответственно. Файл с расширением sym понадобится нам для отладки программы с помощью программы симулятора sim2181.exe.

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

Для автоматического удаления этих файлов я рекомендую создать и использовать еще один командный файл asmclr.bat, состоящий из строк:

del *.map

del *.lst

del *.hex

del *.msg

del *.cde

del *.int

del *.obj

del *.bnl

del *.bnm

del *.bnu

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

Теперь можно приступить к отладке программы. Проследить за ходом выполнения программы и изменением состояния внутренних регистров и ячеек памяти процессора нам поможет программа симулятора sim2181.exe, входящая в состав средств разработки программ.

Данная программа работает только в операционной системе DOS и даже не допускает работу в режиме эмуляции DOS из Windows. Поэтому для запуска данного симулятора необходимо перегрузить компьютер в режим работы DOS, после чего необходимо запустить программу симулятора в командной строке sim2181.exe. После загрузки программы на экране монитора должно появиться окно с изображением названия и версии программы (рис. 6.1).

Разработка устройств на основе цифровых...

Рис. 6.1. Окно с изображением названия и версии программы

Несколько секунд спустя должно появиться окно с главным меню и приглашением к вводу команд в центре экрана (рис. 6.2).

Назад Дальше