Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ — страница 12 из 43

ызова программы компилятора 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