Эмулятор ПЗУ — отладчик для MCS-51



Категория: Микроконтроллеры


Описываемая ниже конструкция была создана примерно 8 лет назад. Однако, судя по моей электронной почте, она по сей день не утратила актуальности. Ниже приводится описание конструкции, можно сказать, «по просьбам читателей».

Не из-за крутизны, а от бедности...

До недавнего времени эмулятор ПЗУ являлся чуть ли не единственным инструментом разработчика ПО для микроконтроллеров. И лишь в последнее время стали доступными фирменные эмуляторы, а в некоторых микроконтроллерах появились встроенные отладочные возможности. Однако и сегодня фирменные средства отладки не по карману многим разработчикам. При работе на семействе микроконтроллеров MCS-51 есть довольно простой выход. Дело в том, что эти микроконтроллеры способны выполнять программу из внешней памяти. Для этого достаточно установить на выводе EA низкий логический уровень. Иногда в таком виде они и используются в конструкции – программа выполняется из внешнего ПЗУ, хотя в настоящее время в подавляющем большинстве случаев используется встроенная память программ. В качестве внешней памяти программ можно применить ОЗУ со схемой загрузки кодов программы с компьютера. Это и есть эмулятор ПЗУ. Загружая в ОЗУ версии отлаживаемой программы, можно наблюдать ее работу на реальном «железе», что невозможно сделать с помощью программных симуляторов.

Мне могут возразить: зачем сегодня нужен эмулятор ПЗУ, если существуют совместимые микроконтроллеры фирмы Atmel с внутрисхемным программированием? Все-таки преимущества у эмулятора имеются.

Какими преимуществами обладает эмулятор? возможность использования любого микроконтроллера в качестве отладочного: будь это обычный AT89С52 или быстрый DS80C320. Некоторые микроконтроллеры имеют уникальную периферию, которой может и не быть в вариантах с внутрисхемным программированием. Более того, эмулятор ПЗУ можно использовать с любыми микропроцессорами, которые позволяют работать с 8-разрядной внешней памятью программ скорость загрузки программ в эмулятор намного превышает программирование внутренней памяти программ. Разница очень разительна: десятки секунд для программирования и порядка секунды для загрузки эмулятора. Такая скорость смены версий программы позволяет подбирать константы на реальном устройстве, оттачивать поведение пользовательского интерфейса и прочее. Это несомненно делает конечный программный продукт качественнее неограниченное количество перезагрузок эмулятора. Несмотря на то, что современная встроенная flash-память программ имеет довольно большое число циклов стирания-записи, при отладке программы постоянно не дает покоя мысль о ресурсе памяти. Это вынуждает лишний раз не перепрограммировать микроконтроллер, что увеличивает время поиска ошибок пожалуй, самое главное. Описываемый эмулятор ПЗУ имеет дополнительные аппаратные средства, которые позволяют в процессе выполнения программы просмотреть значения интересующих переменных, модифицировать эти значения и организовать точки останова. Возможности, конечно, не очень широкие, но все равно это несоизмеримо лучше симулятора, так как выполнение программы происходит в конкретном устройстве со всей периферией Описание конструкции эмулятора

Эмулятор ПЗУ выполнен в виде ISA-карты (рис 1). При разработке эмулятора использование COM-порта было сразу отброшено, так как скорость обмена при этом явно недостаточна. Причем дело не столько во времени загрузки кодов программы, сколько в скорости работы отладочных функций. Они должны работать возможно быстрее, чтобы с включенной отладкой программа выполнялась практически так же, как и с выключенной. Остались два варианта: LPT-порт и ISA-шина. Вечно занятый LPT-порт не хотелось нагружать еще одним устройством, в то время как использование разных дополнительных ISA-карт было привычным делом. Поэтому был выбран ISA-вариант. В принципе, конструкцию можно переделать и на LPT-порт.
 
 

 

Рис. 1. Внешний вид эмулятора.

Принципиальная схема эмулятора (рис. 2) довольна громоздка, но не сложна. Сразу напрашивается какая-нибудь Altera, но в те далекие времена о ней никто у нас даже не слышал. Кратко рассмотрим работу схемы.

  width=710>
Рисунок не помещается на странице и поэтому сжат!
Для того, чтобы просмотреть его полностью, щелкните здесь.


Рис. 5. Принципиальная схема переходной платы 1.

На переходной плате (рис. 5) установлена 40-контактная панелька, куда может быть вставлен эмулирующий микроконтроллер U1. Дополнительно на плате установлена защелка адреса U2  и панелька для аналогового компаратора U3. Для не очень критичных задач может использоваться компаратор КР544СА3 (LM311), хотя допустимый диапазон входного напряжения у него уже, чем у встроенного компаратора. Компаратор может быть включен с помощью перемычек J3 и J4. Выход компаратора может быть подключен как к порту P3.6 (соответствует внутреннему подключению), так и к порту P1.0. Последнее необходимо в том случае, когда задействованы функции отладки и порт WR (P3.6) занят. Отладочные функции могут быть включены или выключены с помощью перемычек J1 и J2. Отключение функций понадобилось для того, чтобы иметь возможность задействовать все порты. При использовании отладочных функций свободными являются только 14 линий портов (а не 15). Переходная плата имеет дополнительные разъемы земли и питания, что позволяет прямо к ней подключать простейшие внешние устройства.

Эмуляция 8XC5X, порты P0 и P2 которого используются для подключения внешней памяти данных.

На описанной выше переходной плате имеются дополнительные разъемы, которые подключены к портам P0 и P2. Хотя при работе с эмулятором (т.е. с внешней памятью программ) эти порты и нельзя использовать для ввода-вывода, зато ничто не мешает использовать их для подключения внешней памяти данных (в общем случае – внешних устройств, расположенных в адресном пространстве внешней памяти данных). Если в отлаживаемом устройстве микроконтроллер используется именно так, то описанной выше переходной платы вполне достаточно. Нужно лишь дополнить ее шлейфом с 40-контактной DIP-вилкой.

Эмуляция 8XC5X, все порты которого используются для ввода-вывода.

Это самый тяжелый случай. Когда требуется полностью эмулировать «полноразмерный» микроконтроллер, имеющий четыре 8-разрядных порта, обычный микроконтроллер в качестве отладочного не подходит. Конечно, можно отлаживать проект «по частям», временно переопределяя некоторую часть портов на свободные порты, затем переопределяя другую часть и т.д. Большинство проектов таким способом отладить удается, однако такой процесс отладки трудоемок и требует повышенных затрат времени. Положение спасает тот факт, что в мире производится большое количество всевозможных клонов 51-х микроконтроллеров, причем среди них есть и такие, которые имеют дополнительные порты ввода-вывода. Одним из таких микроконтроллеров является SAB80C535 фирмы Siemens. Этот микроконтроллер имеет 52-е ядро, кроме того, он имеет встроенный АЦП, сторожевой таймер, блоки захвата/сравнения и т.д. Однако самым важным является то, что этот микроконтроллер имеет дополнительные порты, которые могут подменить собой занятые внешней памятью программ порты P0 и P2. При этом требуются минимальные изменения в исходном тексте программы: нужно лишь подключить внешний файл с переопределениями портов. На основе SAB80C535 сделана переходная плата 2 (рис. 6).

 

Рис. 6. Переходная плата 2.

Эта плата имеет панельку для микроконтроллера U1 (корпус PLCC-68), защелку адреса U2, 34-контактный разъем XP1 для подключения эмулятора ПЗУ и четыре 8-контактных разъема (эмулируемые порты P0, P1, P2 и P3) для подключения шлейфа с 40-контактной DIP-вилкой (рис. 7). SAB80C535 имеет инверсную полярность сброса по отношению к 80С51, поэтому используется инвертор на транзисторе VT1. Аппаратная инверсия применена для обеспечения совместимости ПО.

 






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.