Каталог файлов

Главная » Все файлы » Книги по электронике (Электронная библиотека)

Выберите файл!!!


ПРОГРАММИРУЕМ МИКРОКОНТРОЛЛЕРЫ Z8 2
17.12.2009, 01:22
загрузка...
ПРОГРАММИРУЕМ МИКРОКОНТРОЛЛЕРЫ Z8
М.Гладштейн г.Рыбинск
Часть 2. Кросс-средства для разработки прикладных программ микроконтроллеров
2.1. Принципы построения средств разработки
Разработка прикладной программы (ПП) начинается с создания исходного файла программы на определенном языке программирования и заканчивается получением отлаженного файла программы, пригодно¬го для загрузки в память программ микроконтроллера (МК) - загру¬зочного файла, а также корректной документации - листинга прог¬раммы. Поскольку написать программу сразу без ошибок практически невозможно, процесс разработки ПП, в общем случае, является цик¬лическим, требует многократного повторения: после обнаружения ошибки необходимо скорректировать исходный файл и повторить все операции для получения нового загрузочного файла и листинга. Ошибки могут быть двоякого рода: синтаксические ( нарушение пра¬вил языка программирования) и семантические ( ошибки данных и ал¬горитмов). Если первые обнаруживаются формально средствами разра¬ботки программ, то для выявления вторых требуются специальные программно-аппаратные отладочные средства. Для того, чтобы отлад¬ку можно было вести с использованием символьных имен исходной программы на языке программирования необходимо еще формирование списка символов в виде символьного файла, пригодного для загрузки в средство отладки.
В ходе разработки, прежде всего, необходимо транслировать (translate - переводить) программу с языка программирования на машинный язык ( т.е. в коды команд) МК. Программа на машинном языке формируется в виде объектного файла. Кроме кодов операций команд и непосредственных операндов объектный файл содержит ад¬ресную информацию ( например, адреса в командах прямого перехода или вызова подпрограмм). Для вычисления этой информации при трансляции необходимо знать начальный адрес загрузки ПП. В этом случае может быть сформирован абсолютный объектный код. Такой код не является переместимым: для правильного исполнения он должен быть загружен только в ту область памяти, для которой был транс¬лирован. Такой подход хорош только для ПП малого объема, состоя¬щих из одного модуля. Если ПП имеет значительный объем и разраба¬тывается коллективом программистов в виде отдельных модулей, та¬кой подход оказывается малопригодным.
Для решения проблемы "больших программ" применяется подход, получивший название модульное программирование [1,2]. Сущность этого подхода заключается в следующем:
- ПП может разрабатываться по частям, в виде отдельных моду¬лей;
- каждый модуль может транслироваться отдельно в объектный модуль;
- полная ПП компонуется из объектных модулей путем последо¬вательного размещения их в памяти.
Такой подход имеет ряд преимуществ, в частности:
- разрабатываемая ПП может быть разложена на независимые мо¬дули, которые могут отдельно кодироваться и транслироваться, даже если другие модули еще не существуют;
- при обнаружении ошибки в одном из модулей, только он тре¬бует повторной трансляции и компоновки с другими модулями;
- можно создавать библиотеки отлаженных объектных модулей, которые на этапе компоновки могут быть присоединены к любым ПП (например, библиотеки стандартных подпрограмм).
Для реализации такого подхода необходимо, чтобы транслятор генерировал переместимый объектный модуль, который впоследствии мог бы быть помещен компоновщиком в любую область памяти. Естест¬венно, что при этом транслятор не может вычислить значение адрес¬ной информации в объектном коде, которая зависит от начального адреса. Однако он в состоянии отметить "переместимую" информацию особым образом, чтобы компоновщик впоследствии мог это сделать.
Кроме того, для реализации модульного программирования необ¬ходимо решить проблему перекрестных ссылок: каждый модуль может ссылаться на имена, определенные в других модулях, а также неко¬торые имена, определенные в данном модуле, должны быть доступны для использования другими модулями. С этой целью вводятся специ¬альные директивы (псевдокоманды, псевдооператоры) транслятору, например: EXTERNAL (внешний) и GLOBAL (глобальный). В результате выполнения этих директив, транслятор также помечает особым обра¬зом эти имена.
Обработку переместимых объектных модулей компоновщик произ¬водит путем редактирования отмеченной адресной информации и ин¬формации по перекрестным ссылкам, вследствие чего его часто назы¬вают редактором связей.
Процесс размещения в памяти программных фрагментов осложня¬ется в микропроцессорных системах тем, что память в них имеет разнородный характер, и каждый модуль, например, может содержать исполняемый код, который надо загрузить в ПЗУ, данные, которые должны быть размещены в ОЗУ, пространство для стека и т.д. При компоновке, очевидно, необходимо скомпоновать вместе исполняемые коды, области данных, области стека и т.п. Эта проблема решается путем введения специальной директивы секционирования исходного текста программ. Следуя указаниям этой директивы, транслятор сформирует в объектном модуле секции объектного кода, которые бу¬дут впоследствии компоноваться с одноименными секциями из других объектных модулей.
Выходной файл компоновщика должен, очевидно, иметь структу¬ру, подобную структуре входного объектного модуля (чтобы можно было прикомпоновывать к нему другие модули). Кроме объектного ко¬да этот файл должен содержать и другую информацию, необходимую для получения загрузочного модуля и листинга. К такой информации относятся: сообщения об ошибках, имя исходного файла, исходные строки программы и т.п. Эта информация включается обычно в специ¬альный многоуровневый комментарий объектного модуля.
2.2. Средства разработки фирмы Zilog
Конкретные средства проектирования ПП опираются на использо¬вание определенных стандартов. Предлагаемые вниманию читателей средства разработки фирмы "Zilog" используют следующие стандарты [3]:
- для объектных файлов - стандарт IEEE (Institute of Elect¬rical and Electronics Engineers - Институт инженеров по электро¬нике и радиоэлектронике) MUFOM (Microprocessor Universal Format for Object Modules - Микропроцессорный универсальный формат для объектных модулей);
- для загрузочных файлов - стандарт фирмы "Intel" - INTEL HEX FORMAT.
Согласно стандарту MUFOM объектный модуль содержит заголо¬вок, таблицу секций, таблицу символов и программные секции. Кроме того, в него включен 4-х уровневый комментарий:
- уровень 0: сообщения об ошибках;
- уровень 1: информация о входных файлах, секциях, а также сведения о трансляторе;
- уровень 2: исходные строки на языке программирования;
- уровень 3: информация о форматировании листинга.
INTEL HEX FORMAT - это набор шестнадцатеричных записей, каж¬дая запись начинается с символа ":" (двоеточие), затем следует ряд полей, где указывается: длина записи (количество байт), адрес загрузки, тип записи, данные (до 255 байт), контрольная сумма.
Использование стандарта для объектных файлов позволяет сде¬лать основную часть средств проектирования ПП независимой от ис¬пользуемого языка программирования. Средства проектирования долж¬ны включать, таким образом, транслятор с языка программирования и набор сервисных программ (утилит) для обработки объектных файлов (компоновки, загрузки, формирования списка символов, формирования листинга и т.п.).
Для программирования микроконтроллеров, чаще всего, исполь¬зуют язык ассемблера, позволяющий получать программы более эффек¬тивные в смысле времени выполнения и объема занимаемой памяти по сравнению с языками высокого уровня [4].
Ассемблер - это транслирующая программа, работающая по прин¬ципу "строка-команда" [5] (в переводе с английского assembler - сборщик). Современные ассемблеры являются мощными трансляторами: они допускают вычисление математических выражений; они позволяют определять часто повторяющиеся фрагменты программного кода (мак¬рокоманды), а затем вставлять их в любом месте программы просто указанием имени (такой ассемблер называют макроассемблером); они способны выполнять условное ассемблирование, т.е. транслировать определенные ветви исходного программного текста в зависимости от определенных логических условий. Последнее позволяет в едином программном тексте (документе) сосредоточить целое семейство программ для разных условий применения.
С учетом изложенного и построены кросс-средства разработки ПП, предлагаемые фирмой Zilog. В отличие от собственных средств кросс-средства используют для разработки ПП целевого процессора программы для другого процессора. В качестве последнего выступает процессор IBM-совместимого персонального компьютера, работающего под управлением операционной системы DOS. Средства включают мак-роассемблер asmS8 и универсальные утилиты объектных файлов. Схема использования этих средств показана на рис. 1. На этой схеме пря¬моугольниками показаны программные средства разработки. Причем в каждом прямоугольнике, кроме названия программы на русском языке, приведен ее идентификатор. Идентификаторы всех утилит начинаются с буквы "m". Прямоугольники со скругленными углами - это файлы. Причем, кроме назначения файла, в скобках указано стандартное расширение имени файла ПП.
Исходный файл программы (расширение .s, от слова source - источник) создается с помощью любого текстового РЕДАКТОРА. Затем он подвергается ассемблированию с помощью АССЕМБЛЕРА asmS8. Ас¬семблер генерирует объектный файл (расширение .out, от слова out
- выход) и листинг ассемблера (расширение .l). В листинг ассемб¬лера выводятся сообщения о синтаксических ошибках, обнаруженных при трансляции. Это позволяет устранять такие ошибки в каждом мо¬дуле отдельно. Затем полученный объектный модуль может быть ском¬понован с другими утилитой КОМПОНОВЩИК mlink (по-английски lin¬ker - компоновщик). Выходной объектный файл КОМПОНОВЩИКа имеет расширение .lnk. Этот файл обрабатывается утилитами ФОРМИРОВАТЕ¬ЛЕМ СПИСКА СИМВОЛОВ mnm (от слова name - имя), ЗАГРУЗЧИКОМ mload (от слова load - грузить) и ФОРМИРОВАТЕЛЕМ ЛИСТИНГА mlist (от слова listing - листинг). Полученные файл символов (расширение .sym, от слова symbol - символ) и загрузочный модуль в формате INTEL HEX (расширение .hex, от слова hexadecimal - шестнадцате¬ричный) предназначены для загрузки в систему отладки. А файл лис¬тинга программы (расширение .lst) можно вывести на экран монитора или распечатать.
Кроме указанных на рис. 1 в состав универсальных утилит вхо¬дят еще несколько сервисных программ, обеспечивающих дополнитель¬ные удобные функции (см. следующие части настоящего цикла).
Таким образом, рассмотренные средства проектирования ПП поз¬воляют разрабатывать как простые, так и сложные программы для МК Z8. Следует отметить, что другие фирмы поставляют для МК Z8 ком¬пиляторы с языков высокого уровня. Например, фирма PLC (Producti¬on Languages Corporation) предлагает компилятор с языка С.
ЛИТЕРАТУРА
1. Левенталь Л. Введение в микропроцессоры: Программное обеспечение, аппаратные средства, программирование.- Пер. с англ.- М.: Энергоатомиздат, 1983. - 464 с.
2. Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем.- Пер. с англ.- М.: Радио и связь, 1987. - 512 с.
3. Z8 Microcontrollers. User's Manual. - Zilog., 1995.
4. Сташин В.В., Урусов А.В., Мологонцева О.Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах.- М.: Энергоатомиздат, 1990. - 224 с.
5. Гивоне Д., Россер Р. Микропроцессоры и микрокомпьютеры. Вводный курс.- Пер. с англ.- М.: Мир, 1983.- 464 с.
Категория: Книги по электронике (Электронная библиотека) | Добавил: Администратор
Просмотров: 1250 | Загрузок: 18 | Рейтинг: 0.0/0

Пожалуйста оставьте свои комментарии !!!!

Имя *:
Email:
Все смайлы
Код *:

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


Copyright Zloy Soft (Company) © 2008 - 2020