Главная Гальваническое покрытие Обработка поверхности Радиотехника
Бессточные операции Гальвано- химическое производство Достижения

Самые новые
Основы организации современных гальвано-химических производств
Взаимная адаптация технологий гальванического производства и очистки сточных вод
Импульсная металлизация печатных плат
Создание высокоэффективных систем промывки деталей
Утилизация гальванических отходов как гигиеническая проблема
Получение химико-механических цинковых покрытий на высокопрочных термообработанных сталях
Переработка металлургических отходов
Последние достижения в гальванопластике
Обработка промывных вод травильных агрегатов
Экологические перспективные технологии цинкования, кадмирования и меднения
Об утилизации гальванических шламов
Технологии изготовления технологической оснастки и продуктов методом гальванопластики
Россия экспортировала продукции химической промышленности и каучука на 11,3 млн долларов
В октябре экспорт ферросплавов уменьшился на 0,03% до 108,9 тыс. тонн
Мировое производство стали за 10 месяцев 2006 года выросло на 9,2%
Производство алюминия продолжает расти
Химическое производство в России выросло на 1,2%
Китай за 10 месяцев увеличил выпуск медной продукции на 6,6% до 4,6 млн. т
"Антон" - "Северсталь"
Чистая прибыль ОАО "Ульяновский автомобильный завод"
Оценка эфф. подготовки поверхности полистирола перед химической металлизацией
"Российские металлургические компании и ЕС - особые отношения"
Аналитики расходятся во мнениях по прогнозу цен на железную руду
Evraz увеличивает выплаты
Китай вышел на ежемесячный объем экспорта стали
Чистая прибыль Borealis в III квартале выросла в 2,6 раза
"Цинк среди драгоценных металлов"
Росбанк стал держателем 29,33% "Норникеля"
"Северсталь" подорожала на 2.7 миллиарда долларов после вчерашнего IPO
Новая волна слухов на тему консолидации в мировой металлургии
Итоги деятельности химического комплекса за 9 месяцев
Стратегия развития металлургической промышленности
Инженеры в почете
Информационное обеспечение химического комплекса
Дефицит кадров
Спрос на оцинкованную сталь растет
Карта: 1 2 3 4 5 6 7 8 9
10 11 12 13 14
Главная Радиотехника


Отладка программы микроконтроллера семейства MCS-51 с помощью эмулятора ПЗУ


С появлением микроциклоров в технике проектирования электронных устройств появился новый раздел: программирование. Сложность рабочей программы микроциклора стала определять сложность разработки устройства в целом. В микроконтроллерах (МК), интегрировавших в себе память и некоторые периферийные устройства, эта тенденция проявляется наиболее сильно.

Сложность и трудоемкость циклов отладки программного обеспечения МК определяется следующими факторами [1]:

  • отладка программной и аппаратной частей системы сильно взаимосвязаны;
  • отсутствует непосредственный доступ к внутренним ресурсам и контрольным точкам МК;
  • многоразрядный характер сигналов, сложно распределенных во времени;
  • непериодичность или большая скважность появления сигналов в системе;
  • большое разнообразие внешних устройств и протоколов обмена информацией с ними.
В связи с этим традиционная контрольно-измерительная аппаратура (например, осциллограф) может лишь в ограниченной степени использоваться для отладки программы МК.

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

Поэтому в настоящее время отладку программы МК проводят обычно кросс-средствами на базе управляющего компьютера. Это позволяет в минимальной степени отвлекать ресурсы МК и обеспечивает поддержку системы в цикле ее отладки. Отлаживаемое устройство соединяется с управляющим компьютером через некоторое инструментальное средство, например, эмулятор ПЗУ, загружаемый управляющим компьютером и подключенный к розетке ПЗУ отлаживаемого устройства. Отладочный комплекс, построенный позволяет загружать и редактировать программу, вводить в нее тестовые модули, получать определенную отладочную информацию о системе и многое другое, о чем мы расскажем в этой аналитической статье.

Хотя эмулятор ПЗУ является не единственным и не самым мощным отладочным средством, его популярность и "долголетие" обеспечиваются следующими достоинствами:
  • универсальность применения независимо от типа МК (необходима только возможность работы с внешней памятью программ);
  • работа в реальном масштабе времени;
  • невысокая цена и доступность широкому кругу профессиональных разработчиков и радиолюбителей.
Рассмотрим особенности отладки рабочей программы с помощью эмулятора ПЗУ на примере МК семейства 8051 (1816ВЕ31(51), 1830ВЕ31(51), 80(С)31(51) и т.п.). Для визуального контроля сигналов в отлаживаемом устройстве будем пользоваться осциллографом.

Приступая к отладке, необходимо проверить работоспособность аппаратной части системы и прежде всего самого МК. Для этого воспользуемся тестами "свободного счета" [2], которые заключаются в переборе всех возможных кодовых комбинаций на линиях портов МК.

Прежде всего убедитесь по схеме отлаживаемого устройства, что линии портов МК не нагружены на выходы других элементов и временно отсоедините такие нагрузки, если они есть. Это необходимо сделать потому, что в цикле тестирования линии портов МК будут устанавливаться в состояние вывода. Загрузите эмулятор ПЗУ кодами 00h в пределах адресного пространства программ МК. При выполнении такой тестовой программы МК последовательно перебирает все адреса программной памяти, выполняя на каждом шаге команду "нет операции". Запустив программу на выполнение, проконтролируйте осциллографом сигналы ALE, PME и портов P0, P2. Вид сигналов на линиях портов должен соответствовать временным диаграммам двоичного счетчика с учетом мультиплексирования младшего байта адреса и данных на порте P0.

Далее проверьте порты P1 и P3, загрузив эмулятор ПЗУ следующей тестовой программой:


mov     p1,#0     ; (P1):=0mov     p3,#0     ; (P3):=0mark:inc     p1        ; (P1):=(P1)+1inc     p3        ; (P3):=(P3)+1sjmp    mark      ; Переход на метку mark
Эта программа выводит на линии указанных портов последовательность кодов от 00h до FFh, моделируя восьмиразрядный двоичный счетчик. Если временные диаграммы сигналов на линиях портов P1 и P3 соответствуют требуемым, восстановите отключенные нагрузки портов и переходите к отладке программы МК. Помните, что вы отлаживаете одновременно программную и аппаратную часть системы, и не забывайте периодически контролировать осциллографом ее сигналы в контрольных точках. Несоответствие вида сигналов вашим представлениям о них - повод для серьезных размышлений и дополнительных проверок.

При разработке и отладке рабочей программы МК следует придерживаться модульного принципа, значит разделять ее на части по функциональному признаку. Это позволяет легко перемещать отдельные программные модули и применять их в других проектах. Модуль, в который передается управление после включения питания или сброса МК, называется главным или основным.

Во избежание непредсказуемых результатов работы программы инициализируйте все переменные перед их первым использованием. В некоторых случаях может потребоваться инициализация периферийного оборудования. Блок инициализации может быть помещен как в начало основного программного модуля, так и перед ним, в зависимости от конкретного алгоритма работы отлаживаемого устройства.

В начале отладки базовой модуль содержит только точку входа в программу и обработчик ситуации выхода из программы. Несмотря на то, что в микроконтроллерных системах выход из программы встречается крайне редко, такую возможность необходимо предусмотреть для корректного завершения аварийных ситуаций. Пример основного программного модуля в начале отладки приведен ниже.


start:         ; Точка входа в программу...     ...    ; Команды основного программного модуляend:...     ...    ; Команды обработчика ситуации выхода из программыljmp    end    ; Переход на метку end
Передачу управления на точку входа в программу следует проводить командой перехода, а не вызова подпрограммы, чтобы не засорять стек адресом возврата. В приведенном примере при выходе из программы произведено зацикливание, имея в виду что перезапуск системы сигналом "СБРОС" ("RESET") выведет ее из этого состояния.

В цикле отладки к основному модулю по мере готовности добавляются другие программные модули, причем порядок их отладки и подключения играет важную роль.

Отладку следует начинать с драйверов устройств вывода информации (дисплей, цифро-аналоговый преобразователь и т.п.), поместив вызов драйвера в базовой модуль. Затем отлаживаются драйверы остальных периферийных устройств, подпрограммы обработки данных, и лишь после этого совместная работа всех программных модулей. При наличии дисплея его драйвер отлаживается в первую очередь и используется в дальнейшем для вывода отладочной информации, например, содержимого внутренней памяти данных МК. Если используемый вами эмулятор ПЗУ позволяет записывать и считывать информацию как управляющим компьютером, так и отлаживаемым устройством, то отладочную информацию можно выводить на дисплей управляющего компьютера, используя эмулятор ПЗУ в качестве внешней памяти данных МК. Для этого содержимое внутренней памяти данных МК копируется в свободную область памяти эмулятора ПЗУ, а затем считывается управляющим компьютером и выводится на его дисплей. Например, чтобы вывести содержимое внутреннего ОЗУ данных МК, подключите его выход сигнала записи во внешнюю память данных WR к входу сигнала записи эмулятора ПЗУ и используйте следующую подпрограмму.


savedata:anl     psw,#0E7h     ; Выбор регистрового банка 0mov     dptr,#8000h   ; Занесение в DPTR начального адреса       ; внешней памяти данныхmov     a,r0          ; Пересылка содержимого R0 вmovx    @dptr,a       ; эмулятор ПЗУinc     dptr          ; Увеличение адреса внешней памяти данныхmov     a,r1          ; Пересылка содержимого R1 вmovx    @dptr,a       ; эмулятор ПЗУmov     r1,#7Eh       ; Загрузка счетчика циклаmov     r0,#1h        ; Загрузка адреса внутреннего ОЗУ данныхloop:inc     r0            ; Увеличение адреса внутреннего ОЗУ данныхinc     dptr          ; Увеличение адреса внешней памяти данныхmov     a,@r0         ; Пересылка содержимого внутреннегоmovx    @dptr,a       ; ОЗУ данных в эмулятор ПЗУdjnz    r1,loop       ; Проверка завершения циклаret
В подпрограмме предполагается, что объем памяти программ отлаживаемого устройства не превышает 32 кбайт, поэтому свободная область памяти эмулятора ПЗУ, используемая для вывода отладочной информации опять начинается с адреса 8000h. Содержимое регистров R0 и R1 пересылается отдельно, так как в дальнейшем они используются в подпрограмме для организации цикла. После выполнения подпрограммы вывода отладочной информации делают останов и считывают управляющим компьютером содержимое 128 байт памяти эмулятора ПЗУ с начального адреса 8000h. Эта информация выводится на дисплей управляющего компьютера и анализируется. Аналогичным образом может быть выведено содержимое других программно доступных регистров МК.

Приступая к отладке драйвера периферийного устройства, отключите его управляющие сигналы, вырабатываемые МК, чтобы избежать возможного выхода устройства из строя. Если цикл носит однократный характер, "зациклите" программу и запрограммируйте при необходимости сигнал синхронизации для осциллографа. Отлаживайте драйвер, контролируя осциллографом формируемые МК сигналы. Убедившись в соответствии временных диаграмм управляющих сигналов требуемым, подключите периферийное устройство и продолжите отладку драйвера на реальной аппаратуре. В заключение удалите из программного модуля отладочные элементы и проверьте его работу в окончательном виде.

Отлаженный модуль не следует удалять из программы, даже если он в данный момент не используется. Пользование общими ресурсами МК довольно часто приводит к тому, что полностью отлаженная подпрограмма перестает работать при добавлении другой подпрограммы. Поэтому после отладки очередного программного модуля убедитесь, что ранее отлаженные драйверы и подпрограммы работают правильно. При использовании прерываний не запрещайте их без крайней необходимости после отладки и подключения соответствующей подпрограммы.

При "зависании" отлаживаемой программы пригодится следующий метод локализации ошибки: введите в программу контрольные точки путем вывода на дисплей последовательного набора чисел. После выполнения ("зависания") такой программы на дисплее отобразится число, соответствующее последней успешно пройденной контрольной точке. Если несколько контрольных точек попали в бесконечный цикл, то на дисплее будет отображаться быстрая смена чисел. Для того чтобы определить какие именно контрольные точки попали в цикл, установите программную задержку при выводе каждого числа, например в виде холостого цикла. При отсутствии встроенного дисплея отладочную информацию можно вывести на дисплей управляющего компьютера через свободную область памяти эмулятора ПЗУ.

Отладив все драйверы устройств, приступайте к отладке прочих подпрограмм. Если подпрограмма реализует сложный алгоритм обработки или преобразования данных, то при отладке такого программного модуля могут возникнуть затруднения. Вывод на дисплей одного или нескольких промежуточных значений переменных дает мало информации для анализа ошибок. Преодолеть трудности поможет запись отладочной информации необходимого объема в свободную область памяти эмулятора ПЗУ с последующим считыванием и выводом на дисплей управляющего компьютера.

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

С помощью эмулятора ПЗУ можно отладить программу МК, размещаемую и во внутренней памяти, если на этапе проектирования временно разместить ее во внешней памяти программ. При этом занимаются порты P0 и Р2 и, если оставшихся линий ввода-вывода МК не достаточно, то на этапе отладки используются стандартные схемы расширения портов ввода-вывода, адресуемые как ячейки внешней памяти данных. В простейших случаях для увеличения линий вывода применяются регистры, а для увеличения линий ввода - элементы с третьим состоянием на выходе.

Отладив программу МК с помощью эмулятора, удалите из нее отладочные элементы, запрограммируйте ПЗУ (или МК с внутренней памятью программ) и проверьте работу устройства в окончательном виде.

Изложенными приемами не ограничиваются возможности отладки программ МК с помощью эмулятора ПЗУ. цикл отладки как и проектирования в целом в определенной степени искусство, поэтому на одном и том же инструменте каждый создает свою музыку. Авторы будут благодарны читателям, которые поделятся своими оригинальными средствами и методами отладки программ МК.

ЛИТЕРАТУРА

  • Зеленко Г.В., Иванников А.Д., Сыпчук П.П. Проектирование и отладка микроциклорных систем. М.: Машиностроение, 1982, с.30.
  • Уильямс Г.Б. Отладка микроциклорных систем: Пер. с англ..- М.: Энергоатомиздат, 1988, с.41.


Автор: Г. Выдолоб В. Самойлов

Читайте далее: Соответствие FBT мониторов - оригинального номера и номера от HR, Кодовое обозначение миниатюрных полупроводниковых приборов, Устранение неполадок в принтерах Hewlett Packard LaserJet 5L (6L) часть 2, Подсветка LCD дисплеев, Принтеры Hewlett-Рackard LJ-1200 : индикация ошибок., Изготовление тормозных площадок, Большие проблемы маленьких копиров, Обман струйных принтеров НР, Лампы экспонирования., Коротроны, Почти все о SCSI, Типовое включение УМС8-xx, Современные цифро-аналоговые преобразователи фирмы Maxim - Часть I, Современные цифро-аналоговые преобразователи фирмы Maxim - Часть III, Протокол POCSAG и его применение, Использование модулей Telecontrolli в охранных системах, Проектирование антенны для радиочастотных модулей Telecontrolli, Электронные таблетки iButton — транспорт информации, Как всех посчитать (или передача данных по радиоканалу),
Самые читаемые