Курсовая работа: Микроконтроллеры для начинающих. И не только
Несмотря на очевидные преимущества программирования на ассемблере
перед программированием в машинных кодах, во многих случаях ассемблер
недостаточно эффективен для реализации задач разработчика. Дело в том, что МК
способен выполнять лишь простейшие действия вроде арифметических операций над
целыми числами, пересылок, сравнений и т.п. Для более сложных задач, например,
для операций над числами с плавающей запятой, разработчикам приходилось писать
специальные подпрограммы, пользоваться которыми неудобно и громоздко. Следующим
шагом в разработке программ для МК стало создание специальных компьютерных программ
– трансляторов с языков программирования высокого уровня, или компиляторов.
Наибольшее распространение получил язык программирования Си.
С появлением трансляторов разработка программ для МК резко
упростилась. Если, например, нужно сложить в программе два числа, то теперь
достаточно просто написать
a = b + c;
а транслятор преобразует это выражение в необходимую
последовательность машинных команда зависимости от типов переменных a, b и c.
Использование языка высокого уровня позволяет разработчику отвлечься
от системы команд конкретного МК и оперировать более простыми и понятными
человеку категориями. От разработчика требуется только знание общей архитектуры
МК, принципов работы необходимых для решения поставленной задачи встроенных
периферийных устройств и навыки программирования на языке Си. Функциональное
наполнение программы реализуется с помощью средств языка Си, который содержит
большое число разнообразных подпрограмм (функций): арифметических, для работы с
символьными строками и многих других.
Рассмотрим процесс создания программы для МК на языке Си. В
процессе разработки потребуется персональный
компьютер.
После уяснения поставленной задачи
разработчик пишет исходный текст своей программы на языке Си с помощью любого
текстового редактора. Затем он запускает программу-транслятор с языка Си,
которая преобразует исходный текст в промежуточный объектный файл. Транслятор
управляется с помощью набора ключей (их описание можно найти в его документации),
которые указываются в его командной строке. Если при написании программы
разработчик допустил синтаксические ошибки, транслятор выдаёт на экран их список с указанием для каждой номера строки в файле
исходного текста. Разработчик должен исправить все
ошибки. После успешной трансляции объектные файлы нужно обработать редактором связей (линкером),
который и генерирует файл программы в машинных кодах.
При использовании языка высокого уровня возникает одна
проблема. Преобразование конструкций языка в машинные коды возложено
на компилятор, а выполнить это преобразование можно с различной степенью эффективности. Критериями
эффективности являются размер машинного кода (чем он
меньше, тем, естественно, лучше) и скорость
машинного кода. Задача генерации компактного и быстрого кода
весьма сложна, и от её решения зависит общее качество компилятора. Современные
компиляторы Си используют многоуровневую оптимизацию,
особенности архитектуры конкретного МК, позволяют
создавать смешанные программы, в которых часть подпрограмм написана
на ассемблере.
Описанный процесс выглядит довольно громоздким:
разработчик должен вручную запускать разнообразные программы (текстовый редактор, компилятор Си, линкер), помнить управляющие
ключи, искать ошибки в программе по номерам строк в
файле. Последним на сегодняшний день шагом в облегчении труда разработчика
программ для МК стало появление интегрированных сред разработки (Integrated Development Environment, IDE). Интегрированная среда разработки –
это компьютерная программа, связывающая воедино все этапы разработки программы. Она совмещает в себе текстовый редактор для
написания исходных текстов, трансляторы с ассемблера
и Си, линкер, отладчик,
справочную информацию по МК и другие средства, необходимые разработчику. Настройка
трансляторов, линкера и других компонентов производится не методом указания
ключей в командной строке, а в виде диалоговых окон, где нужно только
расставить «галочки» в нужных местах. Преобразование
исходных текстов программ в файл машинных кодов
запускается одной
клавишей.
Появление интегрированных сред разработки
программ ещё больше повысило эффективность создания
программ для МК, позволило разработчику
сосредоточиться на сути
решаемой задачи и отвлечься
от конкретных деталей её реализации.
Интегрированные пакеты для разработки программ выпускают несколько
фирм. Пакеты разных производителей схожи между собой по функциям, но
различаются предоставляемыми
сервисными возможностями, удобством работы и качеством
генерируемого машинного кода.
Основные характеристики наиболее популярных пакетов средств
разработки приведены в таблице.
4. Символьная отладка программ для МК
За редким исключением программы для МК из-за содержащихся в них
ошибок не начинают работать с первого раза и требуют отладки. К вопросам
отладки разработчики относятся по-разному. Некоторые из них считают, что
достаточно внимательно проанализировать исходный текст, посмотреть с помощью
осциллографа, что происходит на выводах МК, и можно исправить все ошибки. Такой
способ применим, если разработчик имеет большой опыт, отлично знает применяемый
МК и располагает транслятором, который всегда генерирует правильный код (обычно
это ассемблер), и достаточным временем.
Другие используют в своей практике самодельные
отладочные мониторы – наборы специальных подпрограмм, загружаемых в МК вместе с
основной программой. Последняя вызывает в контрольных точках подпрограммы
монитора, а те выдают информацию о состоянии ресурсов МК. Таким способом можно
отладить практически любую программу, но у него есть недостатки, которые могут
оказаться существенными. Во-первых, отладочному монитору необходимо
предоставить для работы часть ресурсов МК: как минимум – часть адресного
пространства кода и некоторое число ячеек стека, а как максимум – ещё часть ОЗУ
и периферийные устройства МК, используемые монитором для отображения
информации. Выделить ресурсы отладочному монитору бывает непросто, если
основная программа сама активно загружает МК. Например, у МК PIC16C5x (Microchip) всего две ячейки стека, и
использовать вызовы подпрограмм отладочного монитора затруднительно. Во-вторых,
вызовы монитора отнимают время у основной программы и, следовательно, его
нельзя вызывать из критичных ко времени частей программы. В-третьих, создание
отладочного монитора, само по себе, требует времени.
Самый эффективный способ отладки программ для МК – применение
специализированных профессиональных отладочных средств, к которым следует
отнести отладчики-симуляторы и внутрисхемные эмуляторы.
Прежде чем рассказывать о возможностях, предоставляемых такими
отладчиками, необходимо коснуться выбора компилятора, с помощью которого исходные
тексты программ преобразуются в машинный код. В подавляющем большинстве случаев
предпочтительно программирование на языке высокого уровня. Использование
ассемблера необходимо, если к размеру и быстродействию генерируемого кода
предъявляются очень жёсткие требования, В настоящее время таких случаев становится
всё меньше, так как практически всегда можно взять более «быстрый» МК с большим
объёмом памяти. Кроме того, современные пакеты кросс-средств позволяют легко
писать смешанные программы, где часть модулей написана на Си, а наиболее
критичные к быстродействию части – на ассемблере. Компиляторы Си позволяют
также вставлять в исходные тексты ассемблерные инструкции.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8 |