Методические указания для практических занятий по дисциплине мдк. 02. 01
Скачать 7.37 Mb.
|
Практическая работа №63. Программирование микропроцессорных систем (система команд микроконтроллеров семейства AVR). 285 Цель работы: изучить систему команд микроконтроллеров семейства AVR. Основные теоретические сведения. Система команд (instruction set) микропроцессора представляет собой совокупность выполняемых микропроцессором операций и правила их кодирования в программе. Система команд AVR-микроконтроллеров включает команды (инструкции) арифметических и логических операций, команды ветвления, управляющие последовательностью выполнения программы, команды передачи данных и команды операций с би- тами. Всего в систему команд входит более 130 инструкций. Младшие модели микроконтроллеров не поддерживают некоторых из них. Система команд AVR-микроконтроллеров приведена ниже. 286 287 Практическая работа №64. Программирование микропроцессорных систем (кодирование). Цель работы: изучить процесс разработки прикладного ПО устройств на примере языка ассемблера AVR-микроконтроллеров. Теоретические сведения. Процесс разработки прикладного ПО устройств на основе однокристальных микроконтроллеров включает следующие этапы: − разработки алгоритма и структуры программы; − написания исходного текста программы; − получения выполняемой программы; − тестирования и отладки программы; − получения загрузочной программы. На этапе разработки алгоритма и структуры программы выбирается метод решения задачи и разрабатывается алгоритм его реализации. Алгоритм – это набор правил или описание последовательности операций для решения определённой задачи или достижения некоторой цели. Графическим изображением алгоритма является схема алгоритма (flowchart), выполняемая 288 в соответствии с ГОСТ 19.701–90 «Единая система программной документации. Схемы алго- ритмов, программ, данных и систем. Условные обозначения и правила выполнения». На этапе написания исходного текста программы разработанный алгоритм записывается в виде программы на исходном языке (ассемблере или языке высокого уровня). Языком ассемблера называется язык программирования, в котором каждой команде про- цессора или совокупности команд процессора соответствует сокращённая символическая запись (мнемоника). Использование символического обозначения команд, а также адресов регистров и ячеек памяти, переменных, констант и других элементов программы существенно облегчает процесс составления программ по сравнению с программированием на уровне машинных кодов. Символические обозначения элементов обычно отражают их содержательный смысл. Язык ассемблера обеспечивает возможность гибкого доступа ко всем ресурсам программируемого микропроцессора (микроконтроллера) и позволяет создавать программы, наиболее эффективные как по быстродействию, так и по объёму занимаемой программной памяти. В этой связи программирование на языке ассемблера предполагает знание архитектуры и свойств микропроцессора, т. е. всего того, что входит в понятие «программная модель». Языки ассемблера являются машинно- ориентированными и, следовательно, отличаются для разных типов микропроцессоров. В ряде ассемблеров допускается оформление повторяющейся последовательности команд как одной макрокоманды (макроса), такие ассемблеры называют макроассемблерами. Языки высокого уровня (С, Паскаль, Бейсик и др.), как и ассемблер, обеспечивают доступ ко всем ресурсам микроконтроллера, но вместе с тем дают возможность создавать хорошо структурированные программы, снимают с программиста заботу о распределении памяти и содержат большой набор библиотечных функций для выполнения стандартных операций. На этапе получения выполняемой программы исходный текст программы с помощью специальных средств (трансляторов, компиляторов, компоновщиков и др.) преобразуется в исполняемый код. Транслятором (translator) называют программу, служащую для перевода (трансляции) программ на языке ассемблера в машинный код, «понимаемый» процессором. Компилятор (compiler) представляет собой программу, преобразующую в эквивалентный машинный код текст программы на языке высокого уровня. Результатом работы транслятора или компилятора может быть как выполняемый загрузочный модуль, так и объектный модуль (программа, команды, переменные и константы которой не «привязаны» к конкретным адресам ячеек памяти). Для построения выполняемой программы из объектных модулей применяется компоновщик (редактор связей, linker). В процессе получения выполняемой программы из исходного текста программы устраняются синтаксические ошибки, состоящие в нарушении правил синтаксиса используемого языка программирования. На этапе тестирования и отладки программы производится поиск, локализация и устранение в ней логических ошибок. Тестирование служит для обнаружения в программе ошибок и выполняется с использованием некоторого набора тестовых данных. Тестовые данные должны обеспечивать проверку всех ветвей алгоритма. При тестировании программы могут подвергаться проверке также некоторые показатели системы, связанные с программой (например, объём кодов и данных). После тестирования программа должна быть подвергнута отладке (debug), задачей которой является локализация ошибки, т. е. нахождение места в программе, вызывающего ошибку. Тестирование и отладка программы могут привести (и, как правило, приводят) к необходимости возврата к ранним этапам процесса разработки программы для устранения ошибок в постановке задачи, разработке алгоритма, написании исходного текста и т. д. Таким образом, процесс разработки программы, как и весь процесс проектирования, является итерационным. На этапе получения загрузочной программы производится «освобожде- ние» программы от лишних фрагментов, использовавшихся для тестирования и отладки. Эти фрагменты увеличивают объём программы и не нужны при нормальном функционировании микропроцессорной системы. 289 Далее полученная загрузочная программа заносится в память микроконтроллера. По завершении процесса разработки производится документирование, т. е. составление комплекта документов, необходимых для эксплуатации и сопровождения программы. Сопровождение программы (program maintenance) – это процесс внесения изменений, исправления оставшихся ошибок и проведения консультаций по программе, находящейся в эксплуатации. Виды программных документов регламентированы ГОСТ 19.101–77 «Единая система программной документации. Виды программ и программных документов». Разработка ПО для встраиваемых микропроцессоров производится на персональном компьютере с использованием специальных программных и аппаратных средств. Такой способ создания ПО носит название кросс-разработки. Совокупность аппаратных и программных средств, применяемых для разработки и отладки ПО, объединяют общим наименованием средства поддержки разработки. В настоящем практикуме процесс разработки ПО изучается на примере языка ассемблера AVR-микроконтроллеров. Создание исходного текста программы, трансляция и отладка выполняются в интегрированной среде разработки (Integrated Development Environment – IDE) AVR Studio Практическая часть. Составить программу вычисления произведения и суммы двух чисел А и В, находящихся в РОН. Из суммы А и В вычесть число С. За основу взять програм му, приведённую выше. Числа изменить в соответствии с заданным вариантом (табл. 1). В начало программы поместить директиву .device для микроконтроллера ATmega8535 (здесь и далее предполагается использование микроконтроллера ATmega8535). В комментариях указать фамилию и номер группы. Контрольные вопросы 1. Назначение однокристальных микроконтроллеров. 2. Особенности архитектуры однокристальных микроконтроллеров. 3. Архитектура и программная модель AVR-микроконтроллеров. Практическая работа №65. Программирование микропроцессорных систем (декодирование). Цель работы: изучить процесс разработки прикладного ПО устройств на примере языка ассемблера AVR-микроконтроллеров. Теоретические сведения. Работа в среде AVR Studio. В состав среды AVR Studio входит редактор исходных текстов, транслятор с языка ассемблера, отладчик и симулятор. Транслятор работает с исходными программами на языке ассемблера, содержащими метки, директивы, команды и комментарии. Метка представляет собой символическое обозначение адреса (последовательность символов, заканчивающаяся двоеточием). Метки используются для указания места в про- грамме, в которое передаётся управление при переходах, а также для задания имён переменных. 290 Директивы являются инструкциями для транслятора и не заносятся в исполняемый код программы. Список директив приведён ниже. Директивы могут иметь один или несколько параметров. Команды записываются в программе в виде мнемонического обозначения выполняемой операции и могут иметь один или несколько операндов, т. е. аргументов, с которыми они вызываются. Транслятор позволяет указывать операнды в различных системах счисления: десятичной (по умолчанию, например, 15, 154), шестнадцатеричной (префикс 0х или $, например, 0x0f, $0f, 0x9a, $9a), восьмеричной (префикс – нуль, например, 017, 0232) и двоичной (префикс 0b, например, 0b00001111, 0b10011010). Строка программы должна быть не длиннее 120 символов и может иметь одну из четырёх форм: [метка:] .директива [параметры] [;Комментарий] [метка:] команда [операнды] [;Комментарий] [;Комментарий] [Пустая строка] Позиции в квадратных скобках необязательны. Текст после точки с запятой и до конца строки является комментарием и транслятором игнорируется. Включение в текст программы комментариев является признаком хорошего стиля программирования и облегчает её сопровождение. Кроме того, улучшению читаемости также способствует форматирование текста программы. При программировании на ассемблере выполнение этих правил особенно важно, т. к. программы на языке ассемблера отличаются существенной неудобочитаемостью. Указать тип микроконтроллера, для которого транслируется программа, позволяет директива .device, например: .device ATmega8535 ; программа для микроконтроллера ATmega8535 При наличии в программе команд, не поддерживаемых указанным в директиве микроконтроллером, транслятор выдаёт соответствующее предупреждение. Входным для транслятора является файл .asm с текстом программы на языке ассемблера. Транслятор создаёт четыре новых файла: файл листинга (.lst), объектный файл (.obj), файл-прошивку памяти программ (.hex) и файл-прошивку энергонезависимой памяти данных (.eep). Файл листинга – это отчёт транслятора о своей работе. На рисунке ниже приведена часть листинга трансляции программы, в которой числа 2, 5 и 19 заносятся соответственно в регистры R17, R18 и R19; вычисляется произведение и сумма содержимого регистров R17 и R18; из суммы содержимого регистров R17 и R18 вычитается содержимое регистра R19. Листинг содержит исходный текст транслируемой программы, каждой команде которой поставлены в соответствие машинные коды (правый столбец чисел) и адреса ячеек памяти программ, в которых они будут размещены (левый столбец чисел). Машинные коды и адреса приводятся в шестнадцатеричной системе счисления. 291 Объектный файл имеет специальный формат и используется для отладки программы с помощью симулятора-отладчика среды AVR Studio. Файл прошивки памяти программ служит для занесения отлаженной программы в память программ микроконтроллера. Файл прошивки EEPROM-памяти данных предназначен для загрузки информации в энергонезависимую память данных. Операции загрузки памяти программ и энергонезависимой памяти данных вы- полняются с помощью специальных аппаратных средств (программаторов). Практическая часть. Выполнить разработку программы в среде AVR Studio*, проделав следующие операции. 1. Создать новый проект, воспользовавшись командой New Project меню Project. В появившемся диалоговом окне в поле Project Name ввести имя создавае- мого проекта без расширения (информация о проекте сохраняется в файле с расширением .aps). В поле Location указать место размещения файлов проекта на диске (путь); в поле Project type выбрать пункт AVR Assembler (исходные тексты программ разрабатываются на языке ассемблера). Для создания файла исходной программы установить флажок Create initial File. Задать имя файла программы, отличающееся от имени проекта, можно в поле Initial File (расши- рение .asm файлов программ на ассемблере устанавливается автоматически). Создание каталога для хранения файлов проекта обеспечивается установкой флажка Create Folder. Рекомендуется каждый проект размещать в отдельном каталоге. Нажать кнопку «Next». 2. В группе Select debug platform and device в поле Debug Platform указать способ отладки создаваемого проекта – AVR Simulator (симулятор- отладчик), в поле Device выбрать тип микроконтроллера, для которого создаётся программа (ATmega8535). Нажать кнопку «Finish». На экране появится дерево иерархии проекта (окно Workspace, закладка Project) и окно редактора исходных текстов программ. Если при создании проекта не был установлен флажок Create initial file, создать файл исходного текста программы можно командой New File меню File. 3. Ввести и отредактировать текст программы. Сохранить файл, воспользовавшись командой Save меню File. Если файл с исходным текстом программы уже существует, его можно включить в проект командой Add existing File меню Project или контекстного меню окна иерархии проекта при выделенной группе Assembler. 4. Провести трансляцию созданной программы, воспользовавшись командой Build and run меню Project (или сочетанием клавиш Ctrl+F7 на клавиатуре). Перед трансляцией убедиться, что установлен флажок List file в диалоговом окне AVR Assembler, вызов которого осуществляется командой AVR Assembler Setup меню Project (это необходимо для создания листинга трансляции). По окончании трансляции в окне Output на закладке Build появится информация о результатах трансляции. Открыть файл листинга можно из дерева иерархии проекта (окно Workspace, закладка Project). После этого с помощью команды Save Project меню Project сохранить изменения в файле проекта. 5. Оформить отчет. Отчёт должен содержать: титульный лист с указанием номера и названия работы, номера группы и фамилий выполнивших работу; цель работы; схему программной модели AVR-микроконтроллера; перечень этапов разработки прикладного ПО для встраиваемых МП (МК); распечатку листинга трансляции созданной программы с расшифровкой одной из строк. Контрольные вопросы 1. Этапы разработки ПО для встраиваемых микропроцессоров. 2. Формат строки программы на ассемблере для AVR-микроконтроллеров. 3. Состав листинга трансляции. Практическая работа №66. Программирование микропроцессорных систем (логические основы). Цель работы: ознакомление с аппаратными и программными средствами отладки ПО; изучение команд отладчика среды AVR Studio; приобретение навыков отладки программ под управлением отладчика. 292 Основные сведения. Особенность отладки ПО устройств на базе встраиваемых МП (в том числе однокристальных микроконтроллеров) состоит в отсутствии в их составе развитых средств для реализации пользовательского интерфейса и ограниченных возможностях системного ПО. В то же время, именно для встраиваемых микропроцессорных систем этап отладки является чрезвычайно ответственным, так как для них характерна тесная взаимосвязь работы ПО и аппаратных средств. Взаимодействие микропроцессора (микроконтроллера) с датчиками и ис- полнительными устройствами происходит путём передачи данных через регистры периферийных устройств (регистры ввода-вывода). Отдельные разряды таких регистров задают режимы работы периферийных устройств, имеют смысл готовности к обмену, завершения передачи данных и т. п. Состояние этих разрядов может устанавливаться как программно, так и аппаратно. При отладке ПО часто приходится переходить на уровень межрегистровых передач и проверять правильность установки отдельных разрядов. Кроме того, на этапе отладки может производиться оптимизация алгоритма, нахождение критиче- ских участков кода и проверка надёжности разработанного ПО. Для решения указанных задач применяются аппаратные и программные средства отладки ПО. К аппаратным средствам отладки относятся аппаратные эмуляторы и проверочные модули. Аппаратные эмуляторы предназначены для отладки программного и аппаратного обеспечения микропроцессорных систем в режиме реального времени. Они работают под управлением «ведущего» компьютера, оснащённого специальным ПО – программами- отладчиками. Основными видами аппаратных эмуляторов являются: − внутрисхемные эмуляторы или эмуляторы-приставки, замещающие микропроцессор в отлаживаемой системе; − внутрикристальные эмуляторы, представляющие собой одно из внутренних устройств микропроцессора. Внутрисхемный эмулятор (In-Circuit Emulator, ICE) – это устройство, содержащее аппаратный имитатор процессора и схемы управления имитатором. При отладке с помощью эмулятора микропроцессор извлекается из отлаживае- мой системы, на его место подключается контактная колодка, количество и на- значение контактов которой идентично выводам замещаемого микропроцессора. С помощью гибкого кабеля контактная колодка соединятся с эмулятором. Управление процессом отладки осуществляется с персонального компьютера. Эмуляторам-приставкам присущи следующие недостатки: высокая стоимость, недостаточная надёжность, высокое энергопотребление, влияние на электрические характеристики цепей, к которым подключается эмулятор. Внутрикристальные эмуляторы (On-Chip Emulator) позволяют проводить отладку программ без извлечения микропроцессора из системы. При этом осуществляется непосредственный контроль за выполнением программы, так как средства внутрикристальной отладки обеспечивают прямой доступ к регистрам, памяти и периферии микропроцессора. Наиболее распространённым средством внутрикристальной отладки является последовательный интерфейс IEEE 1149.1, известный как JTAG (Joint Test Action Group – Объединённая рабочая группа по автоматизации тестирования). Последовательный отладочный порт JTAG мик- ропроцессора с помощью специального устройства сопряжения подключается к компьютеру, чем обеспечивается доступ к отладочным средствам процессора. 293 Такой способ отладки также называют сканирующей эмуляцией. Достоинствами этого способа является возможность выполнения различных действий на процессоре без его изъятия из системы, использование малого числа выводов процессора и поддержка его максимальной производительности без изменения электрических характеристик системы. Проверочные модули предназначены для быстрой отладки программного обеспечения в реальном масштабе времени. Проверочные модули бывают двух видов: стартовые наборы и отладочные платы. Стартовые наборы (Starter Kit) предназначены для обучения работе с кон- кретным микропроцессором. Стартовый набор позволяет изучить характеристики микропроцессора, отладить не слишком сложные программы, выполнить несложное макетирование, проверить возможность применения микропроцессора для решения конкретной задачи. В состав стартового набора входит плата, ПО и комплект документации. На плате устанавливается микропроцессор, устройство загрузки программ, последовательные или параллельные порты, разъёмы для связи с внешними устройствами и другие элементы. Плата подключается к компьютеру через параллельный или последовательный порт. Стартовые наборы удобны на начальном этапе работы с микропроцессором. Отладочные платы (Evaluation Board) предназначены для проверки разработанного алгоритма в реальных условиях. Они позволяют проводить отладку и оптимизацию алгоритма с использованием установленной на плате периферии, а также изготовить на базе платы законченное устройство. Обычно на плате размещается микропроцессор, схемы синхронизации, интерфейсы расширения памяти и периферии, схема электропитания и др. Плата подключается к компьютеру через параллельный или последовательный порт или непосредственно устанавливается в слот PCI. Основными программными средствами отладки являются симуляторы и отладчики. Симуляторы (simulator) или симуляторы системы команд представляют собой программы, имитирующие работу того или иного процессора на уровне его команд. Симуляторы обычно используются для проверки программ или её отдельных частей перед испытанием на аппаратных средствах. Отладчики (debugger) представляют собой программы, предназначенные для анализа работы созданного программного обеспечения. Можно указать следующие возможности отладчиков. 1. Пошаговое выполнение. Программа выполняется последовательно команда за командой с возвратом управления отладчику после каждого шага. 2. Прогон. Выполнение программы начинается с указанной команды и осуществляется без остановки до конца программы. 3. Прогон с контрольными точками. При выполнении программы происходит останов и передача управления отладчику после выполнения команд с адресами, указанными в списке контрольных точек. 4. Просмотр и изменение содержимого регистров и ячеек памяти. Пользователь имеет возможность выводить на экран и изменять (модифицировать) содержимое регистров и ячеек памяти. Отладчики ПО встраиваемых микропроцессоров обычно используются совместно с внутрисхемными или внутрикристальными эмуляторами, а также могут работать в режиме симулятора. Некоторые отладчики позволяют также выполнять профилирование, т. е. определять действительное время выполнения некоторого участка программы. Иногда функцию профилирования выполняет специальная программа – профилировщик (profiler). |