Программное обеспечение и системы проектирования |
| Цифровые устройства - Микропроцессоры | |||
| 19.10.2009 06:54 | |||
|
Писать программу для микроконтроллера в машинных кодах - весьма скучное и тяжелое замятие. От нескольких десятков до нескольких сотен команд можно, конечно, написать и вручную, используя руководств! и таблицы кодов, которые содержатся в технических описаниях радиоэлементов. Исправление ошибки пли внесение изменения требуют значительных затрат времени на реорганизацию исполняемого кода. Но такого рода задача хорошо поддается компьютерной обработке. Теоретически любой компьютер пли микро-ЭВМ можно приспособить для подготовки машинного кода, предназначенного для любого другого микропроцессора или микроконтроллера. Программы, способные выполнять такие задачи, называются ассемблерами. Вначале подготавливается текст исходной программы, написанный на языке ассемблера. Текст обрабатывается программой-ассемблером, и получается исполняемый модуль (в машинном коде), организованный в байты, которые можно записать в СИ ПЗУ микроконтроллера. Иногда в этой последовательности действий необходим промежуточный этап объединение нескольких объектных программ, которые должны быть обработаны линкером, или редактором связен, для получения полноценной «зашивки». Кроме того, существуют программы-дизассемблеры, способные восстанавливать в виде списка мнемоники команд непосредственно из исполняемого кода. Определенную проблему представляет и тестирование программы: мы слишком далеки от языка Basic, в котором простая команда Run позволяет провести испытание без риска «зависания» в случае ошибки. Чтобы проверить программу микроконтроллера, надо в принципе «зашить» ее в СППЗУ, исполнить, чтобы отметить вероятные аномалии и ошибки, а затем соответственно изменить исходный текст, переассемблировать, стереть информацию в СНИЗУ и перепрограммировать его новыми данными. Существуют, однако, различные методы, которые позволяют избежать подобных проблем и выиграть время. Сначала большинство программ-ассемблеров отмечают наиболее грубые ошибки программирования, позволяя исправлять их уже на ранней стадии. В случае если микро-ЭВМ, на которой работает программа-ассемблер, оснащена микропроцессором того же семейства, что и данный микроконтроллер, можно протестировать разработанную программу под управлением специальной программы-отладчика, с помощью которой устанавливают более серьезные ошибки, чтобы избежать серьезного «зависания» машины. К сожалению, в большинстве случаев микропроцессор компьютера отличается от подготовленного к программированию микроконтроллера. Например, совместимый ПК оснащен 386 или 486 процессором, а программа разрабатывается для микроконтроллеров 8051, 68НC11 или PIC. В этом случае следует прибегнуть к помощи программного обеспечения, называемого обычно симулятором или программным эмулятором, которое воспроизводит поведение микроконтроллера, используя компьютер с процессором любого типа. Кроме этого, чисто программного подхода, существует и аппаратное решение проблемы ~ эмулятор. Эмулятор устройство, которое подключается к компьютеру, используемому для ассемблирования, и имеет специальный кабель с разъемом, который можно вставить вместо СППЗУ или микроконтроллера в панельку на печатной плате разрабатываемого устройства. При этом исполняемый код содержится во встроенной оперативной памяти эмулятора. Тестируемая система считывает программу именно оттуда, словно это обычное СППЗУ, а с помощью ПО системы разработки легко осуществить все необходимые изменения в исполняемом коде. Таким образом можно установить неразрывную взаимосвязь между исходным и исполняемым кодами, что значительно ускоряет процесс разработки и отладки и уменьшает количество циклов стирания. Специальные эмуляторы существуют для большинства микропроцессоров и микроконтроллеров, но есть и более универсальные модели, способные работать с различными семействами и типами этих радиоэлементов. Если вы не хотите использовать ассемблер, можно работать с языками более высокого уровня, такими как С или Pascal. При подобном выборе необходимо программное обеспечение, называемое компилятором (или кросс-компилятором), которое переведет исходный текст программы на ассемблер, после чего ее легко преобразовать в исполняемый код обычным способом. Построенный в таком случае код не всегда столь же эффективен, как код, полученный при программировании на языке ассемблера. Часто он оказывается более громоздким и обрабатывается медленнее, однако сейчас значительно увеличено быстродействие программ на языках высокого уровня (в частности, на С).
|