logo
К курсовому по ЭиМПТ 2012

5 Программирование микроконтроллеров

Процесс разработки прикладного ПО устройств на основе однокристальных микроконтроллеров включает следующие этапы (рисунок 5) [12]:

5.1 Этап разработки алгоритма и структуры программы

На этом этапе выбирается метод решения задачи и разрабатывается алгоритм его реализации.

Алгоритм – это набор правил или описание последовательности операций для решения определённой задачи или достижения некоторой цели (рисунок 5). Графическим изображением алгоритма является схема алгоритма (flowchart), выполняемая в соответствии с ГОСТ 19.701–90 «Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения» [14].

5.2 Этап написания исходного текста программы

На этом этапе разработанный алгоритм записывается в виде программы на исходном языке (ассемблере или языке высокого уровня).

Языком ассемблера называется язык программирования, в котором каждой команде процессора или совокупности команд процессора соответствует сокращённая символическая запись (мнемоника). Использование символического обозначения команд, а также адресов регистров и ячеек памяти, переменных, констант и других элементов программы существенно облегчает процесс составления программ по сравнению с программированием на уровне машинных кодов. Символические обозначения элементов обычно отражают их содержательный смысл. Язык ассемблера обеспечивает возможность доступа ко всем ресурсам программируемого микропроцессора (микроконтроллера) и позволяет создавать программы, эффективные как по быстродействию, так и по объёму занимаемой памяти.

В этой связи программирование на языке ассемблера предполагает знание архитектуры и свойств микропроцессора, т. е. всего того, что входит в понятие «программная модель». Языки ассемблера различаются для разных типов микропроцессоров, т. е. являются машинно-ориентированными. В ряде ассемблеров допускается оформление повторяющейся последовательности команд как одной макрокоманды (макроса), такие ассемблеры называют макроассемблерами.

Языки высокого уровня (С, Паскаль, Бейсик и др.), как и ассемблер, обеспечивают доступ ко всем ресурсам микроконтроллера, но вместе с тем дают возможность создавать хорошо структурированные программы, снимают с программиста заботу о распределении памяти и содержат большой набор библиотечных функций для выполнения стандартных операций.

5.3 Этап получения выполняемой программы

На этом этапе исходный текст программы с помощью специальных средств (трансляторов, компиляторов, компоновщиков и др.) преобразуется в исполняемый код .

Транслятором (translator) называют программу, служащую для перевода (трансляции) программ на языке ассемблера в машинный код, «понимаемый» процессором. .

Компилятор (compiler) представляет собой программу, преобразующую в эквивалентный машинный код текст программы на языке высокого уровня.

Результатом работы транслятора или компилятора может быть как выполняемый загрузочный модуль, так и объектный модуль (программа, команды, переменные и константы которой не «привязаны» к конкретным адресам ячеек памяти).

Для построения выполняемой программы из объектных модулей применяется компоновщик (редактор связей, linker). В процессе получения выполняемой программы из исходного текста программы устраняются синтаксические ошибки, состоящие в нарушении правил синтаксиса используемого языка программирования.

5.4 Этап тестирования и отладки программы

На этом этапе производится поиск, локализация и устранение в ней логических ошибок.

Тестирование служит для обнаружения в программе ошибок и выполняется с использованием некоторого набора тестовых данных. Тестовые данные должны обеспечивать проверку всех ветвей алгоритма. При тестировании программы могут подвергаться проверке также некоторые показатели системы, связанные с программой (например, объём кодов и данных). После тестирования программа должна быть подвергнута отладке (debug), задачей которой является локализация ошибки, т. е. нахождение места в программе, вызывающего ошибку.

Тестирование и отладка программы могут привести (и, как правило, приводят) к необходимости возврата к ранним этапам процесса разработки программы для устранения ошибок в постановке задачи, разработке алгоритма, написании исходного текста и т. д. Таким образом, процесс разработки программы, как и весь процесс проектирования, является итерационным.

5.5 Этап получения загрузочной программы

На этом этапе производится «освобождение» программы от лишних фрагментов, использовавшихся для тестирования и отладки. Эти фрагменты увеличивают объём программы и не нужны при нормальном функционировании микропроцессорной системы. Далее полученная загрузочная программа заносится в память микроконтроллера.

По завершении процесса разработки производится документирование, т. е. составление комплекта документов, необходимых для эксплуатации и сопровождения программы.

Сопровождение программы (program maintenance) – это процесс внесения изменений, исправления оставшихся ошибок и проведения консультаций по программе, находящейся в эксплуатации. Виды программных документов регламентированы ГОСТ 19.101–77 «Единая система программной документации. Виды программ и программных документов» [2].

Разработка ПО для встраиваемых микропроцессоров производится на персональном компьютере с использованием специальных программных и аппаратных средств. Такой способ создания ПО носит название кросс-разработки. Совокупность аппаратных и программных средств, применяемых для разработки и отладки ПО, объединяют общим наименованием средства поддержки разработки. В настоящем лабораторном практикуме процесс разработки ПО изучается на примере языка ассемблера AVR-микроконтроллеров. Создание исходного текста программы, трансляция и отладка выполняются в интегрированной среде разработки (Integrated Development Environment – IDE) AVR Studio.