Введите текст этого файла с помощью любого текстового редактора с кодировкой 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, давая такое расширение этому файлу при разработке кросс средств. Для устранения таких неприятных моментов в командный файл включены следующие четыре строчки: