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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

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


Помоги проекту - поделись книгой:

• Simulators (симулятор). Позволяет отлаживать программы путем имитации работы сигнального процессора в памяти персонального компьютера. Интерактивный пользовательский интерфейс симулятора поддерживает полное символическое ассемблирование и дизассемблирование эмулируемых команд. Симулятор полностью эмулирует конфигурацию аппаратного обеспечения, описанную с помощью файла архитектуры. Он обеспечивает покомандное выполнение ассемблерного кода ADSP-2181 и позволяет отображать на экране монитора внутренние регистры и память процессора.

• Splitter («сплиттер» — распределитель). Эта программа-утилита по выходным данным компоновщика формирует файл для прошивки ПЗУ, из которой автоматически может производиться загрузка программы в память процессора через порт BDMA.

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

Полный пакет кросс средств можно приобрести вместе с отладочным комплектом EZ-Kit Lite у представителей фирмы Analog Device. Облегченную версию кросс средств, для сигнального процессора ADSP-2181 под управлением операционной системы DOS, можно скачать с сайта www.xxivek.narod.ru. В качестве отладочного средства при этом можно использовать тестовую плату, описанную в гл. 3.

Установка полного пакета на компьютер не вызывает сложностей. Его необходимо инсталлировать на диск С в корневой каталог ADI_DSP. Облегченная версия кросс средств с сайта www.xxivek.narod.ru просто распаковывается и копируется в каталог C:\ADI_DSP. После этого необходимо создать рабочий каталог для ваших будущих рабочих программ на любом диске. Для каждого нового проекта лучше всего создавать отдельный каталог или подкаталог, это позволит упорядочить все проекты.

После установки средств разработки, в каталоге ADI_DSP должны находиться подкаталоги с файлами транслятора, библиотеками и другими служебными файлами. Основные исполняемые файлы располагаются после инсталляции пакета в каталоге C:\ADI_DSP\21XX\BIN\. Перечень исполняемых файлов и их назначение приведены в табл. 6.2.

Таблица 6.2 Назначение исполняемых файлов

Имя файла Назначение
bld21.exe Системный конфигуратор (построитель) программы
cc1.exe, g21.exe Компиляторы языка Си
asm21.exe Компилятор ассемблера
asmpp.exe Ассемблер препроцессор
asm2.exe Ассемблер
ld21.exe Компоновщик (редактор связей)
Iib21.exe Библиотекарь (программа для работы с библиотеками программ)
spl21.exe Разделитель программ для программирования ПЗУ (сплиттер)
sim2181.exe Симулятор программ для процессора ADSP-2181
hexbin2.exe Преобразователь HEX кода в двоичный формат

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

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

Создается командный файл, в начале которого записываются строки определения пути поиска файлов и установки переменных среды, а далее записываются строки команд для автоматизации необходимого процесса трансляции. После запуска такого командного файла, с именем файла транслируемой программы в качестве параметра, произойдет полная трансляция файла программы, с получением всех необходимых файлов для загрузки в процессор. Ниже приведен текст такого командного файла, специально созданного мною для облегчения и ускорения трансляции программ для сигнального процессора ADSP-2181. Данный командный файл позволяет выполнять трансляцию файлов программ, начиная с компилятора, минуя операции построителя системы System Builder и трансляции программы с языка Си.

@echo off

set path=c:\adi_dsp\21XX\bin

set adi_dsp=c:\adi_dsp

if %1 == goto no_file

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

asm21 %1 -2181 -l

if not exist %1.obj goto error

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

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

ld21 %1 -a adsp2181 -e %1 -x -g

if not exist %1.lda goto next1

del %1.lda

:next1

ren %1.exe %1.lda

if not exist %1.lda goto error2

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

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

rem для загрузки через BDMA

spl21 %1.lda %1 -loader -2181 > %1.msg

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

pause

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

hexbin2 %1.bnm %1.bin m 0 > %1.msg

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

pause

goto end

:error

echo Ошибка компиляции!

pause

goto end

:error2

echo He найден файл %1.lda !

pause

goto end

:no_file

echo Используйте: asmdsp.bat имя файла без расширения

pause

:end

Введите текст этого файла с помощью любого текстового редактора с кодировкой 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



Поделиться книгой:

На главную
Назад