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