Методические указания для практических занятий по дисциплине мдк. 02. 01
Скачать 7.37 Mb.
|
Оформление отчета о проделанной работе Отчет о работе должен содержать: 1) техническое задание; 2) анализ задания; 3) программу получения тестовых значений (с комментариями), распечатку текстовых значений; 4) оценку количества внешних устройств и их назначение; 5) схему подключения внешних устройств к МК через порт Р4 и системную шину; 6) структуру программного обеспечения МПС; 7) блок-схемы алгоритмов программ; 8) тексты программ (с комментариями); 9) результаты тестирования и анализ результатов (методику тестирования, копии экранов с содержимым внешней памяти, анализ допущенных ошибок, анализ несовпадения результатов с вычисленными значениями, анализ несовпадения результатов тестирования схемного АЛУ и АЛУ, написанного на языке VHDL). Практическая работа №31. Тестирование и отладка микропроцессорных систем при программировании. Цель работы: изучение назначения и особенностей архитектуры однокристальных микроконтроллеров; ознакомление с архитектурой и программной моделью AVR- микроконтроллеров. Основные теоретические сведения. Микроконтроллеры составляют наиболее широкий класс микропроцессоров, используемых в приборах, устройствах и системах различного назначения. Микроконтроллер - это специализированный микропроцессор, предназначенный для построения устройств управления техническими объектами и технологическими процессами. Конструктивно микроконтроллер представляет собой большую интегральную схему (БИС), на кристалле которой размещены все составные части типовой вычислительной системы: микропроцессор, память, а также периферийные устройства для реализации дополнительных функций. Так как все элементы микроконтроллера размещены на одном кристалле, их также называют однокристальными (однокорпусными) микро-ЭВМ или однокристальными микроконтроллерами. Цель применения микроконтроллеров - сокращение числа компонентов, уменьшение размеров и снижение стоимости приборов (систем). 167 Как правило, микроконтроллеры имеют RISC-архитектуру (RISC - Reduced Instruction Set Computer - вычислитель с сокращённым набором команд), незначительную ёмкость памяти, физическое и логическое разделение памяти программ и памяти данных, ориентированную на задачи управления систему команд. Таким образом, микроконтроллеры предназначены для решения задач управления, контроля, регулирования и первичной обработки информации и менее эффективны при реализации сложных алгоритмов обработки данных. В состав типовой микроконтроллерной системы управления входит микроконтроллер и аппаратура его сопряжения с объектом управления (рис. 1). Микроконтроллер производит периодический опрос сигналов состояния объекта и в соответствии с заложенным алгоритмом генерирует последовательности сигналов управления. Сигналы состояния характеризуют текущие параметры объекта управления. Они формируются путём преобразования выходных сигналов датчиков (Д) с помощью аналого-цифровых преобразователей (АЦП) или формирователей сигналов состояния (ФСС); последние чаще всего выполняют функции гальванической развязки и формирования уровней. Сигналы управления, выработанные микроконтроллером, подвергаются преобразованию с помощью цифро-аналоговых преобразователей (ЦАП) или формирователей сигналов управления (ФСУ), в качестве которых применяются усилители мощности, оптроны, ключи и др. Выходные сигналы ЦАП и ФСУ представляют собой управляющие воздействия, которые поступают на исполнительные устройства (ИУ). В системе может быть также предусмотрены панель управления, устройство индикации и интерфейс для обмена информацией с внешними устройствами. В зависимости от назначения и характеристик конкретной системы некоторые из указанных элементов могут отсутствовать. Разрядность выпускаемых микроконтроллеров варьируется от 4 до 64 бит. Наибольшее распространение получили 8-разрядные микроконтроллеры как пригодные для использования в различных приложениях и имеющие низкую стоимость. Характерными представителями таких устройств являются микроконтроллеры семейства AVR фирмы Atmel. AVR-микроконтроллеры - это 8-разрядные RISC-микроконтроллеры, отличительными особенностями которых являются наличие FLASH-памяти программ, широкий спектр периферийных устройств, высокая вычислительная производительность, а также доступность средств разработки программного обеспечения. В состав семейства AVR в настоящее время входят более 50 различных устройств, которые подразделяются на несколько групп. Универсальные AVR-микроконтроллеры входят в группы Tiny AVR и Mega AVR. Tiny AVR (ATtinyXXX) - дешёвые устройства с небольшим количеством выводов. Mega AVR (ATmegaXXX) - мощные AVR-микроконтроллеры, имеющие наибольшие объёмы памяти и количество выводов, а также максимально полный набор периферийных устройств. Специализированные AVR-микроконтроллеры представлены группами LCD AVR (ATmega169, ATmega329) - микроконтроллеры для работы с жидкокристаллическими индикаторами; USB AVR (AT43USBX\X, AT76C711) микроконтроллеры с интерфейсом USB; 168 DVD AVR (AT78CXXX) - контроллеры CD/DVD-приводов; RF AVR (AT86RFXXX) - микроконтроллеры для построения систем беспроводной связи; Secure AVR (AT90SCXXXAT, AT97SCXXXX) - микроконтроллеры для смарт-карт; FPGA AVR (AT94K\XAL) - AVR- микроконтроллеры, выполненные на одном кристалле с ПЛИС. Кроме того, ранее выпускалось группа Classic AVR (AT90SXXXX) - устройства, занимающие промежуточное положение между микроконтроллерами групп Mega и Tiny (заменены совместимыми усовершенствованными аналогами группы Mega). Архитектура AVR-микроконтроллеров. AVR-микроконтроллеры содержат на кристалле следующие аппаратные средства: 8-разрядное процессорное ядро, память программ, оперативную память данных, энергонезависимую память данных, регистры ввода-вывода, схему прерываний, схему программирования, а также периферийные устройства (рис. 2) Процессорное ядро (Central Processing Unit - CPU) AVR-микроконтроллеров содержит арифметико-логическое устройство (АЛУ), регистры общего назначения (РОН), программный счётчик, указатель стека, регистр состояния, регистр команд, дешифратор команд, схему управления выполнением команд. В АЛУ выполняются все вычислительные операции. Операции производятся только над содержимым РОН. На выборку содержимого регистров, выполнение операции и запись результата обратно в РОН затрачивается один машинный такт (один период тактовой частоты). Регистры общего назначения представляют собой 8-разрядные ячейки памяти с быстрым доступом, непосредственно доступные АЛУ. В AVR-микроконтроллерах имеется 32 РОН. Программный счётчик (Program Counter - PC) содержит адрес следующей выполняемой команды. Указатель стека (Stack Pointer - SP) служит для хранения адреса вершины стека (см. лабораторную работу № 5). Регистр состояния (Status Register - SREG) содержит слово состояния процессора. Регистр команд, дешифратор команд и схема управления выполнением команд обеспечивают выборку из памяти программ команды, адрес которой содержится в программном счётчике, её декодирование, определение способа доступа к указанным в команде аргументам и собственно выполнение команды. Для ускорения выполнения команд используется механизм 169 конвейеризации, который заключается в том, что во время исполнения текущей команды про- граммный код следующей выбирается из памяти и декодируется. Память AVR-микроконтроллеров организована по схеме гарвардского типа - адресные пространства памяти программ и памяти данных разделены. Память программ представляет собой перепрограммируемое ПЗУ типа FLASH и выполнена в виде последовательности 16-разрядных ячеек, так как большинство команд AVR- микроконтроллера являются 16-разрядными словами. FLASH-память не обладает возможностью перезаписи отдельных ячеек, поэтому всегда выполняется полная очистка всей памяти программ. При этом гарантируется не менее 10 000 циклов перезаписи. Память программ имеет размер от 1 до 128K слов. Оперативная память данных представляет собой статическое ОЗУ (SRAM - Static Random- Access Memory) и организована как последовательность 8-разрядных ячеек. Оперативная память данных может быть внутренней (до 16K байт) и внешней (до 64К байт). Энергонезависимая (nonvolatile) память данных организована как последовательность 8- разрядных ячеек и представляет собой перепрограммируемое ПЗУ с электрическим стиранием (РПЗУ-ЭС, или EEPROM - Electrically Erasable Programmable Read-only Memory). Энергонезависимая память данных имеет размер до 64К байт. Регистры ввода-вывода предназначены для управления процессорным ядром и периферийными устройствами AVR-микроконтроллера. Схема прерываний обеспечивает возможность асинхронного прерывания процесса выполнения программы при определённых условиях. К периферийным устройствам AVR-микроконтроллера относятся порты ввода-вывода, таймеры, счётчики, сторожевой таймер, аналоговый компаратор, аналого-цифровой преобразователь, универсальный асинхронный (синхронно-асинхронный) приёмопередатчик - УАПП (УСАПП), последовательный периферийный интерфейс SPI, интерфейс JTAG и др. Набором периферийных устройств определяются функциональные возможности микроконтроллера. Обмен информацией между устройствами AVR-микроконтроллера осуществляется посредством внутренней 8-разрядной шины данных. Программная модель AVR-микроконтроллеров. Программная модель микропроцессора представляет собой совокупность программно доступных ресурсов. В программную модель микроконтроллеров семейства AVR входят РОН, регистры ввода-вывода, память программ, оперативная память данных и энергонезависимая память данных (рис. 3). 170 РОН (R0...R31) могут использоваться в программе для хранения данных, адресов, констант и другой информации. Шесть старших регистров объединены попарно и составляют три 16- разрядных регистра Х [R27:R26], Y [R29:R28] и Z [R31:R30] (рис. 4). РОН, регистры ввода-вывода и оперативная память данных образуют единое адресное пространство. Адресное пространство - это множество доступных ячеек памяти, различимых по адресам; адресом называется число, однозначно идентифицирующее ячейку памяти (регистр). Адреса ячеек памяти традиционно записываются в шестнадцатеричной системе счисления, на что указывает знак $ в обозначении адреса. Адреса в едином адресном пространстве AVR- микроконтроллеров распределяются следующим образом. Младшие 32 адреса ($0000...$001F) соответствуют РОН. Следующие 64 адреса ($0020...$005F) занимают регистры ввода-вывода. Внутренняя оперативная память данных у AVR-микроконтроллеров начинается с адреса $0060. В память программ, кроме собственно программы, могут быть записаны постоянные данные, которые не изменяются в процессе работы микропроцессорной системы (константы, таблицы линеаризации датчиков и т. п.). Выполнение программы при включении питания или после сброса микроконтроллера начинается с команды, находящейся по адресу $0000 (т. е. в первой ячейке) памяти программ. Энергонезависимая память данных предназначена для хранения информации, которая может изменяться непосредственно в процессе работы микропроцессорной системы (калибровочные коэффициенты, конфигурационные параметры и т. п.). Энергонезависимая память данных имеет отдельное адресное пространство и может быть считана и записана программным путём. Система команд AVR-микроконтроллеров. Система команд (instruction set) микропроцессора представляет собой совокупность выполняемых микропроцессором операций и правила их кодирования в программе. Система команд AVR-микроконтроллеров включает команды (инструкции) арифметических и логических операций, команды ветвления, управляющие последовательностью выполнения программы, команды передачи данных и команды операций с битами. Всего в систему команд входит более 130 инструкций. Младшие модели микроконтроллеров не поддерживают некоторых из них. Система команд AVR-микроконтроллеров приведена в Приложении 2. Программирование микроконтроллеров. Процесс разработки прикладного ПО устройств на основе однокристальных микроконтроллеров включает следующие этапы (рис. 5): - разработки алгоритма и структуры программы; - написания исходного текста программы; - получения выполняемой программы; - тестирования и отладки программы; - получения загрузочной программы. 171 На этапе разработки алгоритма и структуры программы выбирается метод решения задачи и разрабатывается алгоритм его реализации. Алгоритм - это набор правил или описание последовательности операций для решения определённой задачи или достижения некоторой цели. Графическим изображением алгоритма является схема алгоритма (flowchart), выполняемая в соответствии с ГОСТ 19.701-90 «Единая система программной документации. Схемы алго- ритмов, программ, данных и систем. Условные обозначения и правила выполнения». На этапе написания исходного текста программы разработанный алгоритм записывается в виде программы на исходном языке (ассемблере или языке высокого уровня). Языком ассемблера называется язык программирования, в котором каждой команде про- цессора или совокупности команд процессора соответствует сокращённая символическая запись (мнемоника). Использование символического обозначения команд, а также адресов регистров и ячеек памяти, переменных, констант и других элементов программы существенно облегчает процесс составления программ по сравнению с программированием на уровне машинных кодов. Символические обозначения элементов обычно отражают их содержательный смысл. Язык ассемблера обеспечивает возможность гибкого доступа ко всем ресурсам программируемого микропроцессора (микроконтроллера) и позволяет создавать программы, наиболее эффективные как по быстродействию, так и по объёму занимаемой программной памяти. В этой связи программирование на языке ассемблера предполагает знание архитектуры и свойств микропроцессора, т. е. всего того, что входит в понятие «программная модель». Языки ассемблера являются машинно-ориентированными и, следовательно, отличаются для разных типов микропроцессоров. В ряде ассемблеров допускается оформление повторяющейся после- довательности команд как одной макрокоманды (макроса), такие ассемблеры называют макроассемблерами. Языки высокого уровня (С, Паскаль, Бейсик и др.), как и ассемблер, обеспечивают доступ ко всем ресурсам микроконтроллера, но вместе с тем дают возможность создавать хорошо структурированные программы, снимают с программиста заботу о распределении памяти и содержат большой набор библиотечных функций для выполнения стандартных операций. На этапе получения выполняемой программы исходный текст программы с помощью специальных средств (трансляторов, компиляторов, компоновщиков и др.) преобразуется в исполняемый код. Транслятором (translator) называют программу, служащую для перевода 172 (трансляции) программ на языке ассемблера в машинный код, «понимаемый» процессором. Компилятор (compiler) представляет собой программу, преобразующую в эквивалентный машинный код текст программы на языке высокого уровня. Результатом работы транслятора или компилятора может быть как выполняемый загрузочный модуль, так и объектный модуль (программа, команды, переменные и константы которой не «привязаны» к конкретным адресам ячеек памяти). Для построения выполняемой программы из объектных модулей применяется компоновщик (редактор связей, linker). В процессе получения выполняемой программы из исходного текста программы устраняются синтаксические ошибки, состоящие в нарушении правил синтаксиса используемого языка программирования. На этапе тестирования и отладки программы производится поиск, локализация и устранение в ней логических ошибок. Тестирование служит для обнаружения в программе ошибок и выполняется с использованием некоторого набора тестовых данных. Тестовые данные должны обеспечивать проверку всех ветвей алгоритма. При тестировании программы могут подвергаться проверке также некоторые показатели системы, связанные с программой (например, объём кодов и данных). После тестирования программа должна быть подвергнута отладке (debug), задачей которой является локализация ошибки, т. е. нахождение места в программе, вызывающего ошибку. Тестирование и отладка программы могут привести (и, как правило, приводят) к необходимости возврата к ранним этапам процесса разработки программы для устранения ошибок в постановке задачи, разработке алгоритма, написании исходного текста и т. д. Таким образом, процесс разработки программы, как и весь процесс проектирования, является итерационным. На этапе получения загрузочной программы производится «освобождение» программы от лишних фрагментов, использовавшихся для тестирования и отладки. Эти фрагменты увеличивают объём программы и не нужны при нормальном функционировании микропроцессорной системы. Далее полученная загрузочная программа заносится в память микроконтроллера. По завершении процесса разработки производится документирование, т. е. составление комплекта документов, необходимых для эксплуатации и сопровождения программы. Сопровождение программы (program maintenance) - это процесс внесения изменений, исправления оставшихся ошибок и проведения консультаций по программе, находящейся в эксплуатации. Виды программных документов регламентированы ГОСТ 19.101-77 «Единая система программной документации. Виды программ и программных документов». Разработка ПО для встраиваемых микропроцессоров производится на персональном компьютере с использованием специальных программных и аппаратных средств. Такой способ создания ПО носит название кросс-разработки. Совокупность аппаратных и программных средств, применяемых для разработки и отладки ПО, объединяют общим наименованием средства поддержки разработки. В настоящем практикуме процесс разработки ПО изучается на примере языка ассемблера |