Кросс-редактор связей Link работает в среде операционной системы MSDOS (версия не ниже 3.30) и дает пользователю возможность объединять до 20 сформированных кросс-ассемблером X8051 объектных модулей, настраивая их на выполнение с определенного адреса. При этом создается загрузочный модуль МК-программы.
Основные функции кросс-редактора связей Link:
- настройка объектных модулей на заданное адресное пространство памяти программ микроконтроллера 8051;
- разрешение внешних ссылок;
- формирование в различных форматах загрузочного модуля и таблицы символических имен;
- выявление ошибок редактирования;
- формирование листинга редактирования в виде карты загрузки.
Работа кросс-редактора связей начинается с запуска файла link.exe и ведется в диалоговом режиме. Сразу после запуска указанного файла на экран выдается заголовок, а затем запрашивается имя входного файла и значение смещения объектного модуля, входящего в этот файл:
Input Filename:
Enter Offset For 'Code':
Эти сообщения повторяются до тех пор, пока все входные файлы не будут перечислены. Расширение входных файлов по умолчанию принимается равным.obj. Шестнадцатеричное значение смещения прибавляется к начальному адресу объектного модуля МК-программы, устанавливаемому, как известно, директивой ORG.
|
|
После того, как все входные файлы перечислены, на запрос имени следующего входного файла надо нажать клавишу "Enter" и на экране появится запрос имени выходного файла (загрузочного модуля):
Output Filename:
Если не указано имя выходного файла, то присваивается имя первого входного файла.
После нажатия клавиши "Enter" на экране появится запрос имени файла библиотеки:
Library Filename:
Ответ из нажатия клавиши "Enter" завершает ввод имен библиотечных файлов, расширение которых по умолчанию принимается равным.lib.
В следующем сообщении запрашиваются ключи вывода результатов работы кросс-редактора связей:
Options (D, S, A, M, Z, X, H, E, T, 1, 2, 3, <CR>=Default):
где
D - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением.hex (по умолчанию) и файла с расширением.map, содержащего ошибки редактирования, таблицу общих символических имен в алфавитном порядке, карту загрузки;
S - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением.hex (по умолчанию) и файла с расширением.sym, содержащего таблицу общих символических имен (длина имени 32 знака);
A - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением.hex (по умолчанию) и файла с расширением.sym, содержащего таблицу общих символических имен (длина имени 10 знаков);
M - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением.hex (по умолчанию) и файла с расширением.sym в формате MICROTEK, содержащего таблицу символических имен. При этом в исходный модуль МК-программы должна быть включена директива SYMBOLS;
|
|
Z - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением.hex (по умолчанию) и файла с расширением.sym в формате ZAK, содержащего таблицу символических имен. При этом в исходный модуль МК-программы должна быть включена директива SYMBOLS;
X - не используется;
H - вывод на диск выходного файла с расширением.hex (по умолчанию) в шестнадцатеричном формате INTEL;
E - вывод на диск выходного файла с расширением.hex (по умолчанию) в расширенном шестнадцатеричном формате INTEL;
T - вывод на диск выходного файла с расширением.tek (по умолчанию) в шестнадцатеричном формате TEKTRONIX;
1 - вывод на диск выходного файла с расширением.s19 (по умолчанию) в формате MOTOROLA S19;
2 - вывод на диск выходного файла с расширением.s28 (по умолчанию) в формате MOTOROLA S28;
3 - вывод на диск выходного файла с расширением.s37 (по умолчанию) в формате MOTOROLA S37.
Из перечисленных выше форматов, в которых может быть представлен выходной файл кросс-редактора связей (загрузочный модуль МК-программы), наиболее востребованным является шестнадцатеричный формат INTEL.
Файл в указанном формате состоит из записей (строк), причем каждая строка содержит шесть полей (поле <признак записи>, поле <длина>, поле <адрес загрузки>, поле <тип записи>, поле <данные> и поле <контрольная сумма>).
Поле <признак записи> состоит из одного символа ":" (двоеточие).
Поле <длина> занимает один байт и содержит число байтов данных в записи. Это число не может превышать значение, заданное из диапазона 01H-0FFH операндом директивы RECSIZE. При отсутствии в исходном модуле МК-программы указанной директивы число в поле <длина> не может превышать 10H. Значение поля <длина> последней записи файла равно нулю.
Поле <адрес загрузки> состоит из двух байтов и представляет собой шестнадцатеричный адрес загрузки первого в записи байта данных. В последней записи файла это поле содержит нулевой адрес.
Поле <тип записи> состоит из одного байта, значение которого равно 00H (01H), если запись не последняя (последняя).
Поле <данные> состоит из фактических данных, байты которых нумеруются слева направо. В последней записи файла данные отсутствуют.
Поле <контрольная сумма> занимает один байт и представляет собой дополнительный код двоичной суммы значений поля <длина>, поля <адрес загрузки>, поля <тип записи> и поля <данные>.
Пример файла в шестнадцатеричном формате INTEL (файл prim.hex):
:0F00000075F06484F9740AC5F084C425F0F82201
:00000001FF
Пример файла с расширением.map (файл prim.map):
Global Symbol Name Global Value Global Filename
***********************************************************
* LOAD MAP *
***********************************************************
* Section Name Starting Address Ending Address Size *
***********************************************************
* prim.obj *
* CODE 0000 000E 000F *
***********************************************************
Link Errors: 0 Output Format: Intel Hex