Мысловский Э.В. Цифровые сигнальные процесссоры (2003), страница 10
Описание файла
PDF-файл из архива "Мысловский Э.В. Цифровые сигнальные процесссоры (2003)", который расположен в категории "". Всё это находится в предмете "компьютерные методы и технологии автоматизации и управления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 10 страницы из PDF
Редактор связей сканирует каждыйассемблированный модуль и разрешает обращения между модулями к глобальным ивнешним символам. Он назначает (раздает) адреса перемещаемых программ и фрагментовданных. Редактор связей читает также файл описания архитектуры .I.DF для создания61карты системной памяти и размещения в ней программы и данных. Идентификацияархитектурного файла для редактора связей происходит включением ключа -а в строкевызова программы. Редактор связей может создавать три различных файла. Файлотображения памяти (memory image file).DXE создается всегда - это исполняемаяпрограмма, которая содержит разные коды операций и данные, которые должны бытьрасположены впамяти.Вспомогательный файл распределения (memory listing file).MAP суммируетинформацию, относящуюся к созданной программе. Вспомогательный файл таблицысимволов (symbol table file).SYM перечисляет все символы, встреченные редакторомсвязей и их абсолютные адреса.
Этот файл также используется программамимоделирования (симуляторами) АDSP-21хх и эмуляторамиИнициализирующие файлы данных .DAT не обозначены запуске редактора связейявно поскольку они перечислены директивой .INIT в файле исходного кода. Файлыданных объединяют с помощью редактора связей. Если в файлах с данными сделаныизменения, необходимо просто запустить редактор связей заново. (Примечание: с тех поркак директива ассемблера .VAR используется для объявления, как однословныхпеременных, так и многословных буферов данных, термин «буфер данных «включает всебя как переменные, так и буфера.).3.7.1 Запуск редактора связейРедакторсвязейвызывают,перечисляяфайлы,которыедолжныбытьскомпонованы:LD21 файл1..] [-ключ... ]Пример: Запуск редактора связей для компоновки файлов mine.s subl.s subl2.s ифайла описания архитектуры archfile.ldfLD21 mine subl subl2 -a archfileКаждый входной файл должен содержать только один модуль.
Если файлыотсутствуют в текущем каталоге вашей операционной системы, с каждым именем файладолжен быть путь к нему. Имена файлов должны идентифицировать ассемблерныевыходные файлы без расширений (т.е. .CDE .OBJ .INT).Выходные файлы редакторасвязей получают по умолчанию имя 210Х.
Вы можете переименовать эти файлы,62используя ключ -е. Редактор связей может быть также вызван с ключом -i которыйназывает отдельный файл, содержащий список файлов для компоновки:LD2i -i файл все [-ключ ...]В этом случае редактор связей читает дополнительный файл файл_все, которыйявляется простым текстовым файлом, содержащим в каждой строке одно имя файла.Другие ключи управляют различными операциями редактора связей.
Они могутбыть введены как в верхнем, так и в нижнем регистре. Несколько ключей должны бытьотделены друг от друга хотя бы одним пробелом.Редактор связей размещает память для модулей в соответствии с порядком, вкотором они были перечислены. Для модулей, которые содержат объявления циклическихбуферов данных, изменения в порядке входных файлов могут определить, сможет липрограмма быть успешно скомпонована в доступном пространстве памяти. Поэтому:модули, содержащие циклические буферы различных размеров должны быть перечисленыдля редактора связей в порядке понижения размеров буферов.
Это позволит редакторусвязей размещать вначале буфера большего размера, которые имеют большиеограничения на допустимые базовые адреса. Если вы забыли синтаксис для вызоваредактора связей, наберите в командной строке: LD21 -helpЭта команда покажет синтаксис вызова программы и покажет список доступныхключей.Есливыассемблировалиисходнуюпрограмму,сгенерированнуюСкомпилятором, редактор связей должен быть вызван с ключом -с.Ключи редактора связей перечислены в таблице 3.3.Таблица 3.3 Ключи редактора связей633.7.2.
Как работает редактор связейДанный раздел дает представление о том, как работает редактор связей, когда онобрабатывает программные модули. При лучшем понимании принципов работы редакторасвязей, вы сможете структурировать свои программы для более эффективногоиспользования памяти.Работа редактора связей состоит в комбинировании ассемблированных модулей иинициализации данных в исполняемой программе, называемой файлом отображенияпамяти .DXE .Две основные задачи: размещение памяти и разрешение символов.3.7.3 Распределение памятиРедактор связей читает каждый модуль кода и объявления переменныхданных/буферов для определения типа памяти, в которой они должны быть расположены- ОЗУ или ПЗУ, память программ или память данных, имя сегмента и т.д.Редактор связей читает также содержимое файла-описания архитектуры .АСН,чтобы определить, какие пространства памяти доступны и какие у них характеристики.
Наоснове этой информации происходит размещение каждого модуля, буфера и переменной всоответствующем типе памяти. Если объект имеет абсолютный адрес, указанныйпараметром ABS, его называют неперемещаемым. Если абсолютный адрес не присвоен,объектсчитаетсяперемещаемым.Редакторсвязейприсваиваетадрескаждомуперемещаемому объекту. Если вы захотите, чтобы в памяти процессора (внешней иливнутренней) во время выполнения отдельной загрузочной страницы существоваланезагружаемая подпрограмма или буфер данных, вы должны использовать параметрBOOT чтобы связать его с этой страницей.
При совместном использовании с параметромSTATIC редактор связей зарезервирует пространство для объекта во время выполнениястраницы.Выходной файл карты распределения памяти программы (.МАР) показывает ,какрасположение вашей программы в памяти начальной загрузки, так и соответствующееотображение кода в памяти во время выполнения (после выполнения начальной загрузки).Этот файл помогает понять перенос из памяти начальной загрузки в рабочуюпамять, Вы не можете указать область, где модуль будет размещен в памяти начальнойзагрузки – редактор связей самостоятельно реализует эту функцию, составляя эффективноупакованные загрузочные страницы.643.7.4 Разрешение символовЧтобы разрешить программные символы, редактор связей должен поставить всоответствие каждому символу определенный адрес в пространстве памяти.
Именапрограммных меток, переменных/буферов являются символами, которые определены висходном коде. Ассемблер просто пропускает их редактору связей, задача которогоопределить адрес каждого из символов, после размещения в памяти всех модулей.Обращение к символу может происходить только внутри модуля, где он определен, покаон не определен директивами ENTRY или GLOBAL. Эти директивы ассемблерарасширяют диапазон обращения к символу. Другие модули должны объявить этот символдирективой EXTERNAL перед обращением к нему.
Для каждой ссылки EXTERNALредактор связей ищет в других модулях определения ENTRY или GLOBAL. Принахождении нескольких совпадений выводится сообщение об ошибке. Если поиск невыявил определений символа, редактор связей включает поиск библиотечного файла всоответствии с последовательностью, описанной в разделе «Последовательность поискабиблиотеки». Этот поиск включает просмотр переменной среды окружения ADIL иаргументов ключей -user -dirЕсли подключаемый символ не найден с помощью поиска в библиотеке, редакторсвязей выводит сообщение, об ошибке.После того как распределение памяти завершено, и все внешние ссылкиразрешены, редактор связей присваивает каждому символу значение адреса.
Редакторсвязей вырабатывает файл таблицы символов .SYM если задан ключ -g ,который содержитсписок всех встреченных программных символов и их адресов. Этот файл показывает,какие символы могут быть доступны каждому модулю.3.7.5 Построение единой библиотеки для быстрого доступаПрограммное обеспечение разработчика ADSP-21XX включает построительбиблиотеки - утилиту LIB21, которая позволяет вам записать несколько библиотечныхподпрограмм и упаковать их в один файл для быстрого доступа. После созданиябиблиотечногофайланеобходимовызватьредакторсвязейсключом-userимя_библиотеки, который позволяет находить, выделять и компоновать необходимыеподпрограммы из файла имя_библиотеки.Использование утилиты LIB21 и ключа -user подразумевает то же самое, что иприменение ключа -dir или переменной среды окружения ADIL65Преимущество утилиты LIB21 состоит в том, что редактор связей работаетбыстрее.
Утилита LIB21 вызывается одним из двух способов:LIB21 имя_библиотеки файл1 ...] [-V версия ]илиLIB21 имя_библиотеки -i списочный_файл [ -V версия ]Выходнойфайлимя_библиотеки.Аобъединяетвсебеотдельноассемблированные модули, перечисленные в командной строке (файл1 , файл 2 и т.д.).Этимодули должны быть указаны без расширений. Ключ -i имеет такое же действие, как ипри вызове редактора связей. Файл списочный_файл содержит список с одним именемфайла на строке.
Ключ –V позволяет вставить номер версии для подпрограмм вбиблиотечном модуле; аргумент версия является символьной строкой. Строка версии невлияет на исполнение программы.Ниже приведен пример создания библиотечного файла быстрого доступа:Пример: Запуск редактора связей для компоновки библиотеки быстрогодоступа filter.a из файлов taps.s coeffs.s start_input.sLIB21 filter taps coeffs start input -v V1.0Утилита LIB21 создаст файл FILTER.A объединяющий три входных модуля.Символьная строка версии «V1.0 вставляется в файл. Редактор связей можно вызыватьстрокой:Пример: Запуск редактора связей для компоновки программы, с использованиембиблиотеки быстрого доступа filter.a, из файлов main.s sum.s graph.sLD21 main sum graph -user filterЧто вызовет компоновку модулей main sum и graph. Полагается, что из файлаFILTER.A будет использована одна или более библиотечных подпрограмм, и редакторсвязей выделит требуемые функции и включит их в процесс компоновки.663.8 Описание файла архитектурыОписаниефайла архитектуры начинаетсясдирективыARCHITECTURE (имя_apхитектуры).
Затем следует описание подключаемых модулей($OBJECTS = модуль1, модуль2 ...). После этого описывается распределение памяти,например:Пример:Примерописанияраспределенияпамятивфатеописанияархитектуры.Директива SECTIONS объявляет используемые сегменты. При созданиипрограмм многопроцессорных систем, создается один .LDF файл. Указание на то, какомупроцессору принадлежит сегмент, осуществляется директивой PROCESSOR.Задание: В системе Visual DSP создайте проект, введите последовательновышеприведенные примеры, откомпилируйте проект и запустите его вотладчике.67Пример: Пример файла описания архитектуры1. Для чего необходим ассемблер?2. Какие функции выполняет редактор связей?3.Объяснить состав и назначение секций файла конфигурации?4.