Ошибки в программе
3.4. Компоновка программы
3.4.1. Компоновкой (linking) – называется объединение нескольких объектных модулей, полученных в результате раздельной трансляции соответствующих исходных модулей, в единый загрузочный модуль и настройка перемещаемых сегментов на конкретные адреса. Компоновка программы выполняется автоматически с помощью компьютерной программы-компоновщика. На этапе компоновки объектные модули прикладной программы, объединяются с библиотечными модулями, причем,. общем случае объединяемые объектные модули могут быть получены в результате трансляции с разных исходных языков программирования.
Рассмотрим компоновку программы с помощью компоновщика Micro Series Linking Loader фирмы IAR Systems, входными файлами которого являются файлы объединяемых объектных модулей, а выходным файлом –hex-файл разрабатываемой программы (см. п. 3.4.2). Кроме hex-файла по желанию пользователя могут быть также созданы и выведены на экран монитора или записаны на магнитный диск карта перекрестных ссылок, стандартная карта загрузки или карта сегментов программы.
3.4.2. Формат hex-файла (Intel standard format) приведен на рис. 3.4. Каждая строка этого текстового файла начинается двоеточием, вслед за которым расположены без пробелов от 5 до 37 двухразрядных шестнадцатеричных чисел, несущих следующую информацию: 1-е число – количество информационных байтов в строке,
2-е число – старший байт адреса (в адресном пространстве программной памяти МК), 3-е число – младший байт адреса, 4-е число – разделитель (00 во всех строках, кроме последней, 01 в последней строке), последнее число – контрольный код, между 4-ым и последним числами – машинные коды команд МК.
3.4.3. Для запуска компоновщика используется следующая командная строка:
xlink.exe <CPU> <Input file(s)> [<Segment definition(s)>] [/<Options>],
В скобках < > указаны названия полей, которые разделяются пробелами и предназначены для задания различных параметров. Внутри полей <Input file(s)>и <Options>,перечисление выполняется через пробел, внутри поля<Segmentdefinition(s)> –через запятую. В квадратных скобках указаны поля, которые не являются обязательными.
Рис. 3.4. Формат hex-файла (Intel Standard Format)
В поле <CPU> указывается тип процессора (8051).
Поле <Input file(s)> содержит имена входных объектных файлов.
Поле <Segment definition(s)>предназначено для задания абсолютных адресов перемещаемых сегментов программы. Данное поле может иметь одну из трех конструкций:
(SEGA,SEGB...) – указывается порядок размещения сегментов,
(SEGA,SEGB...)=2000 – указывается порядок размещения сегментов и
абсолютный адрес (hex) первого сегмента.
(SEGA)=+100 – предписывается увеличить размер сегмента
с именем SEGA на 100 (hex).
В поле <Options>, которое следует после символа “ / “, указываются выходные параметры, которые разделяются пробелами:
O=absfile – определяется имя выходного hex-файла,
например, O=program.hex,
X=listfile – определяется имя файла карты перекрестных ссылок,
например, X=cros_ref.lst,
M=listfile – определяется имя файла стандартной карты загрузки,
например, М=load_map.lst,
S=listfile– определяется имя файла карты сегментов,
например, S=segm_map.lst,
V,symbol=value – определяется символ, например, V,EXTDAT=22 означает,
что внешней переменной с именем EXTDAT присваивается
значение 22 (hex).
Например, командная строка запуска компоновщика для компоновки программы из двух объектных модулей с именами program.r03 и mylib.r03, соответственно, причем в первом модуле объявлен перемещаемый сегмент MAIN, который требуется разместить в программной памяти МК, начиная с адреса 100Н, а во втором модуле объявлен перемещаемый сегмент DELAY, который требуется разместить в программной памяти МК вслед за сегментом MAIN, и в результате компоновки должен быть получен hex-файл с именем program.hex, а также файл стандартной карты загрузки с именем program.lst, будет иметь следующий вид:
xlink 8051 program mylib (MAIN,DELAY)=100 /O=program.hex M=program.lst
3.4.4. Если в командной строке после опции М не указано имя файла, то карта загрузки выводится на экран монитора, если же имя файла указано, то создается текстовый файл на магнитном диске.
3.4.5. При успешном завершении компоновки на экран монитора выводится сообщение
Дата добавления: 2015-10-09; просмотров: 569;