Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Отладка микроконтроллеров с помощью эмулятора ПЗУ. Энциклопедия радиоэлектроники и электротехники

Бесплатная техническая библиотека

Энциклопедия радиоэлектроники и электротехники / Микроконтроллеры

Комментарии к статье Комментарии к статье

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

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

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

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

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

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

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

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

Загрузите эмулятор ПЗУ кодами команды "нет операции" (NOP) в пределах всего адресного пространства программ МК. Для MCS-51 это код 00Н. Выполняя такую "программу", МК последовательно перебирает все адреса программной памяти. Проконтролируйте осциллографом сигналы ALE, РМЕ и портов Р0, Р2. Осциллограммы на линиях портов должны соответствовать временным диаграммам двоичного счетчика с учетом мультиплексирования на Р0 младшего байта адреса и данных.

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

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

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

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

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

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

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

Например, чтобы вывести содержимое внутреннего ОЗУ данных МК, соедините его выход сигнала записи во внешнюю память данных (WR) со входом сигнала записи эмулятора ПЗУ и используйте подпрограмму, приведенную в табл. 3. Предполагается, что объем памяти программ отлаживаемого устройства не превышает 32 Кбайт, поэтому отладочная информация, помещаемая в память эмулятора, начинается с адреса 8000Н. Содержимое регистров R0 и R1 пересылается отдельно, так как в дальнейшем они используются в подпрограмме для организации цикла. После вывода отладочной информации программу МК приостанавливают, считывают управляющим компьютером содержимое ячеек памяти эмулятора ПЗУ 8000H-807FH, выводят его на дисплей и анализируют. Аналогичным образом может быть выведено содержимое всех программно доступных регистров МК.

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

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

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

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

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

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

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

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

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

Литература

  1. Выдолоб Г., Кудряшов В., Самойлов В. Эмулятор ПЗУ/ОЗУ RE020. - Радио, 1997. №11, С. 30-32.
  2. Зеленко Г. В., Иванников А. Д., Сыпчук П. П. Проектирование и отладка микропроцессорных систем. - М. Машиностроение. 1982.
  3. Уильяме Г. Б. Отладка микропроцессорных систем: Пер. с англ. - М Энергоатомиздат. 1988

Авторы: Г.Выдолоб, В.Самойлов, г.Москва (Зеленоград)

Смотрите другие статьи раздела Микроконтроллеры.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Впервые преоодолена передача ВИЧ от матери к ребенку 02.01.2026

Проблема вертикальной передачи ВИЧ - от матери к ребенку - остается одной из ключевых задач глобальной медицины. Недавний отчет Всемирной организации здравоохранения (ВОЗ) демонстрирует историческое достижение: Бразилия впервые в своей истории полностью преодолела этот путь передачи вируса. Страна стала 19-й в мире и первой с населением более 100 миллионов человек, которая достигла такого результата. Достижения Бразилии основаны на комплексных медицинских программах, обеспечивающих своевременный доступ к диагностике и терапии для всех слоев населения. ВОЗ официально подтвердило, что уровень передачи ВИЧ от матери к ребенку снизился до менее двух процентов. Более 95% беременных женщин в стране получают регулярный скрининг на ВИЧ и необходимое лечение в рамках стандартного ведения беременности. Изначально программа тестировалась в крупных муниципалитетах и штатах с населением более 100 тысяч человек, а затем была масштабирована на всю страну. Такой подход позволил унифицировать ста ...>>

Нанослой германия увеличивает эффективность солнечных батарей на треть 02.01.2026

Разработка высокоэффективных солнечных батарей остается одной из ключевых задач современной энергетики. Недавнее исследование южнокорейских ученых позволило повысить производительность тонкопленочных солнечных элементов почти на 30%, что открывает новые перспективы для возобновляемых источников энергии, гибкой электроники и сенсорных устройств. Команда исследователей сосредоточилась на элементах на основе моносульфида олова (SnS) - нетоксичного и доступного материала, который идеально подходит для гибких солнечных панелей. До настоящего времени эффективность SnS-устройств оставалась низкой из-за проблем на границе контакта с металлическим электродом. В этой области возникали структурные дефекты, диффузия элементов и электрические потери, что существенно ограничивало возможности таких батарей. "Этот интерфейс был главным барьером для достижения высокой производительности", - отмечает профессор Джейонг Хо из Национального университета Чоннам. Для решения этих проблем ученые предлож ...>>

Электростатическое решение для борьбы с льдом и инеем 01.01.2026

Борьба с льдом и инеем на транспортных средствах и критически важных поверхностях зимой остается сложной и затратной задачей. Ученые из Virginia Tech разработали инновационную технологию, способную разрушать лед и иней без использования тепла или химических реагентов, что открывает новые возможности для безопасной и экологичной зимней эксплуатации транспорта. Исследователи обнаружили, что лед и иней образуют кристаллическую решетку с так называемыми ионными дефектами - заряженными участками, способными перемещаться под воздействием электрического поля. Эти дефекты являются ключом к управлению прочностью льда и его удалением с поверхностей. Когда на замерзшую поверхность подается положительный электрический заряд, отрицательные ионные дефекты притягиваются к источнику поля. Это вызывает разрушение кристаллической решетки льда, в результате чего часть льда буквально "отскакивает" от поверхности. Такой эффект позволяет удалять лед без применения внешнего тепла или химических средств ...>>

Случайная новость из Архива

Польза и вред видеоигр 12.08.2017

Исследователи из Монреальского университета пригласили сто добровольцев, среди которых было примерно поровну мужчин и женщин, пройти по виртуальному лабиринту. В лабиринте было несколько путей, где нужно было собирать некие предметы, и эту задачу можно было выполнить быстрее, если ты запоминал маршруты, по которым уже ходил &#8211; то есть тут следовало обращать внимания на разные окружающие приметы, вроде камня, дерева и т. д.

При такой ориентации на местности у нас в мозге срабатывает гиппокамп &#8211; особая область в мозге, которая служит одним из главных центров памяти и одновременно играет роль картографа, то есть строит карты окружающего ландшафта.

Но в лабиринте можно было поступать иначе &#8211; просто запоминать последовательность поворотов направо и налево. В таком случае в дело вступает другая область мозга, отчасти дублирующая функции гиппокампа &#8211; хвостатое ядро, входящее в состав полосатого тела.

Хвостатое ядро работает автопилотом, позволяющим выполнять некие автоматические действия, и в то же время оно включено в систему подкрепления &#8211; так называют большой комплекс нервных центров, который управляет нашей мотивацией, нашими желаниями и чувством удовольствия.

Пройти по маршруту можно и с помощью хвостатого ядра, правда, здесь это будет не столько карта местности, сколько запоминание действий, которые нужно выполнить для награды: запомнив, сколько раз и куда поворачивали раньше, можно добраться до очередного искомого предмета в лабиринте и получить порцию приятных ощущений.
Поиск по лабиринту позволил разделить тех, кто строит карты с помощью гиипокампа, и тех, кто идет маршруту с помощью хвостатого ядра &#8211; автопилота, который ищет удовольствий. Затем некоторых участников эксперимента посадили играть в игры-шутеры, другие же занялись 3-D-платформерами серии Super Mario Bros; и те, и другие должны были "наиграть" около 90 часов.

И оказалось, что игры по-разному влияют на мозг. Если в игру-шутер играл человек, который шел по маршруту, подчиняясь системе подкрепления, то в результате в его гиппокампе уменьшалось количество серого вещества. Авторы работы объясняют это тем, что такие игры в принципе склонны поощрять систему подкрепления, так что у "хронических игроков" гиппокамп может довольно сильно съежиться как бы за ненадобностью. Мы говорим "как бы", потому что гиппокамп, как ни крути, за пределами видеошутера все-таки нужен, и последствия от недостатка серого вещества в нем могут быть вполне серьезными &#8211; известно, что уменьшение гиппокампа сопровождает депрессию, шизофрению, синдром Альцгеймера и т. д.

С другой стороны, у тех игроков, которые ориентировались на местности, соединяя в уме разные элементы ландшафта &#8211; то есть у тех, которые изначально были больше задействованы навигационные умения гиппокампа &#8211; серого вещества в нем, наоборот, становилось больше; то есть даже в шутере они ориентировались по нейтральной карте, а не по предвкушению удовольствия.

Наконец, платформер про братьев Марио способствовал усилению гиппокампа у обеих категорий игроков &#8211; очевидно, само устройство подобных игр понуждает строить карты в уме.

Другие интересные новости:

▪ Строится самый крупный радиотелескоп в мире

▪ Новые 14-выводные Flash микроконтроллеры

▪ Медиаплеер iRiver P8

▪ Карманная камера Sony HDR-GW66VE для экстремалов

▪ Грипп сначала появляется в Интернете

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Справочник электрика. Подборка статей

▪ статья Люблю ли тебя, я не знаю, но кажется мне, что люблю! Крылатое выражение

▪ статья Почему в 1969 году прямо у пирса затонула американская атомная подводная лодка? Подробный ответ

▪ статья Снежноягодник кистистый. Легенды, выращивание, способы применения

▪ статья ШИМ-регуляторы оборотов маломощных электродвигателей. Энциклопедия радиоэлектроники и электротехники

▪ статья Уменьшение нагрева трансформаторов маломощных блоков питания. Энциклопедия радиоэлектроники и электротехники

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2025