ПРАКТИКУМ ПО ОМПТ. Практикум по основам микропроцессорной техники Саранск 2003 удк 004. 384 378. 146147
Скачать 0.74 Mb.
|
3. СРЕДСТВА ОТЛАДКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯОпыт создания микропроцессорных систем показывает, что наиболее трудоемким этапом является не сборка элементов системы, не написание программ как таковое, а отладка системы – отладка аппаратной части, программ и отладка работы их в комплексе. Отладка программы состоит в проверке правильности выполняемых ею действий. Программист, садясь писать программу, конечно, знает, что именно она должна делать, что должно являться результатом ее выполнения. Однако, составляя программу, программист может допустить какие-либо ошибки – их то и выявляют в процессе отладки. Ошибки могут заключаться в простейшем случае в случайных опечатках, определяться неправильно составленным алгоритмом, неправильной интерпретацией программистом действий отдельных команд и т.д. Убедиться, что программа выполняет свои действия так, как задумал программист, невозможно без составления контрольного примера. При составлении контрольного примера программист задается определенными значениями исходных операндов. Затем он “вручную” должен рассчитать результат действия программы, а если в программе есть логические ветвления, еще и оценить, по каким ветвям будет двигаться программа. После этого, задав исходные данные и запустив программу на выполнение, программист должен убедиться, что программа выдает именно то же самое и таким же образом, что он получал в своем примере на бумаге. Понятно, что пример должен составляться таким образом, чтобы можно было выявить все “узкие” места программы. Вполне возможно, что для того, чтобы проверить программу со всех сторон, придется составить несколько таких примеров. Иногда программа может быть настолько сложной, что найти ошибки, оценивая только конечный результат ее действий, оказывается просто невозможно. В этом случае необходимо проверять промежуточные результаты ее действий, постепенно отыскивая то место в программе, где расходятся результаты примера и работы программы. Зачастую нерационально запускать программу для проверки с контрольным примером в реальной отлаживаемой системе. Иногда это сложно с технической точки зрения. И почти всегда при этом сложно задавать для проверяемой программы исходные данные, получать промежуточные или окончательные результаты ее работы. Поэтому для отладки программ обычно используются специальные отладочные средства. Сначала появились аппаратные отладочные средства, затем, с появлением персональных компьютеров, и программные отладочные средства. Ниже в пособии будут детально рассмотрены примеры и тех и других средств. Но сначала рассмотрим, что это такое в принципе. Программа на ассемблере пишется всегда для какого-то конкретного микропроцессора. ”Запустить” отлаживаемую программу на проверку можно в любой микро-ЭВМ, которая реализована на том же микропроцессоре. Аппаратные отладочные средства и представляют собой по сути дела такую микро-ЭВМ, в которую можно оперативно загрузить отлаживаемую программу, в которой есть средства для ввода в регистры микропроцессора или в ячейки памяти исходных данных и их просмотра после выполнения всей программы или ее части. Часто предусматривается возможность расширения структуры отладочной микро-ЭВМ дополнительными периферийными блоками и таким образом проектировщику предоставляется возможность отладки этой аппаратной части. Примечательно, что при этом отлаживаемые аппаратные модули работают в реальном масштабе времени. С помощью персонального компьютера можно выполнить трансляцию программ пользователя с языка ассемблера в машинные коды, а также реализовать программу, которая имитировала бы работу реальной микропроцессорной системы. Т.е. программные средства отладки фактически представляют собой компьютерную модель отлаживаемой системы, с помощью которой можно, прежде всего, “видеть” состав внутренних программно доступных элементов микропроцессора, ячейки памяти и их содержимое, наблюдать, как это содержимое меняется после выполнения соответствующих команд программы. Отлаживаемая программа при этом в реальном масштабе времени, конечно, не работает. 3.1. УЧЕБНО-ОТЛАДОЧНОЕ УСТРОЙСТВО "ЭЛЕКТРОНИКА-580"3.1.1. Общие сведенияУчебно-отладочное устройство (УОУ) предназначено для практического овладения инженерно-техническими работниками, студентами ВУЗов и учащимися техникумов принципами построения микро-ЭВМ различного назначения на базе микропроцессора КР580ВМ80А, для обучения программированию указанного микропроцессора, а также для отладки программного обеспечения этих микро-ЭВМ. УОУ по структуре представляет собой универсальную микро-ЭВМ и может быть использована в простых системах управления технологическими процессами при условии оснащения соответствующим программным обеспечением и средствами связи с объектом. Тактовая частота микропроцессора в УОУ – 2 МГц. Имеющиеся в УОУ магистральные разъемы позволяют подключить к нему различные внешние устройства, например, дополнительную память или интерфейсные устройства. Дополнительные платы памяти или интерфейса могут быть встроены также и во внутрь УОУ, где предусмотрены дополнительные разъемы для установки печатной платы. Общий вид УОУ приведен на рис. 6. УОУ содержит оперативное запоминающее устройство (ОЗУ) на интегральных микросхемах типа КР565РУ2А емкостью 2 Кбайта с адресным полем 8000Н-87FFН (в шестнадцатеричном коде). Для осуществления диалога пользователя с УОУ предусмотрены клавиатура и цифровой дисплей, действие которых обеспечивается программой-монитором объемом 1Кбайт, записанной в постоянное запоминающее устройство (ПЗУ) типа К573РФ2 и занимающей адреса памяти 0000Н-03FFH. Рис. 6. Общий вид учебно-отладочного устройства Верхний и правый ряды клавиш содержат командные клавиши УОУ, их функции описаны ниже. Остальные 16 клавиш служат для ввода в УОУ различной информации (адресов, данных, команд) в виде шестнадцатеричных кодов. Цифровой дисплей выполнен на 8 светодиодных индикаторах. Выводимая на дисплей информация отображается также в виде шестнадцатеричных кодов. Действие дисплея основано на принципе прямого доступа к памяти. На индикаторах отображается содержимое ячеек ОЗУ с адресами от 83F8H до 83FFH (ячейка с адресом 83F8H соответствует левому знаку дисплея). Для длительного сохранения программ пользователя предусмотрена возможность записи их на бытовой магнитофон с последующим считыванием в ОЗУ УОУ (гнездо для подключения магнитофона находится на задней стенке корпуса). На передней панели УОУ имеются также 2 светодиодных индикатора работы с магнитофоном (ввод и вывод) и 2 индикатора "Z" и "C" для контроля состояния признаков (флажков) нуля и переноса соответственно. Кроме того, приведена таблица команд микропроцессора, позволяющая определять их шестнадцатеричные коды (см. табл. 6). Основные режимы выполнения программ в УОУ: а) пошаговый (тумблер “прогон-отладка” в положении ”отладка”); б) прогон программы пользователя в автоматическом режиме (тумблер “прогон-отладка” в положении “прогон”); в) прогон программы пользователя с остановом по заданному адресу и числу проходов (тумблер “прогон-отладка” в положении “отладка”). 3.1.2. Устройство и работа УОУСтруктурная схема УОУ приведена на рис. 7. Центральным элементом УОУ является МП КР580ВМ80А, обеспечивающий обработку информации и управление всеми остальными узлами УОУ. Тактирование МП осуществляется Рис. 7. Структурная схема УОУ “Электроника-580” кварцевым генератором тактовых импульсов (ГТИ), формирующим сдвинутые по фазе сигналы Ф1 и Ф2. Обмен информацией между МП и остальными узлами УОУ осуществляется с помощью двух шин: 16-битной шины адреса (ША) и 8-битной двунаправленной шины данных (ШД). Для повышения нагрузочной способности ШД обмен информации между МП и большинством узлов УОУ ведется через двунаправленные шинные формирователи (буфер данных - БД). Непосредственно к ШД МП подключен только регистр слова-состояния (РСС), запоминающий информацию об операциях, выполняемых МП в данном цикле, т.е. слово-состояние МП. Слово-состояние передается по ШД МП в начале каждого машинного цикла. Буфер адресной шины (БА) необходим для увеличения нагрузочной способности шины адреса (ША). Хранение программ и данных, необходимых для работы УОУ, осуществляется в ПЗУ и ОЗУ. Для управления ими используется дешифратор адреса (ДА) и формирователь управляющих сигналов (ФУС). ДА дешифрирует 6 старших адресов ША, т.е. разряды А10...А15, формируя сигналы ВК выбора кристалла микросхем ЗУ, а также сигнал ВК ИФ для интерфейса. ФУС, используя информацию РСС и сигналы ЧТ и ЗП микропроцессора, формирует сигналы записи и чтения для запоминающих устройств и интерфейса, а также служебные сигналы, в частности сигнал сброса СБР. Управление работой УОУ осуществляется с помощью клавиатуры из 25 клавиш, одна из которых использована для управления сбросом МП, а остальные объединены в 3 группы по 8 клавиш и присоединены к адаптеру параллельного интерфейса на основе БИС КР580ВВ55А (АПИ). Индикация информации осуществляется с помощью дисплея, управляемого узлом прямого доступа к памяти (ПДП). Узел ПДП осуществляет выборку информации для дисплея из 8 ячеек ОЗУ и передачу ее на индикацию. В эти ячейки ОЗУ информация готовится и заносится программой-монитором УОУ. Для обеспечения возможности длительного сохранения программ и данных в состав УОУ введен модем, обеспечивающий ввод-вывод информации на бытовой магнитофон. Управление модемом осуществляется программным путем через АПИ. 3.1.3. Клавиатура пульта управленияРасположение цифровых и командных клавиш УОУ показано на рис. 8, назначение командных клавиш приведено в табл. 7. Цифровые клавиши используются также для задания имен регистров и регистровых пар МП: клавиши A, B, C, D, E, 8/H, 9/L, F - для обозначения аккумулятора A, регистров общего назначения (РОН) B...L, регистра признаков F клавиша 2/S для обозначения указателя стека SP клавиша 1/T для обозначения содержимого вершины стека (ST) Старшие разряды вершины стека хранятся по адресу SP+1, младшие - по адресу SP.
Рис. 8. Расположение клавиш УОУ Табл. 7. Командные клавиши УОУ
3.1.4. Индикатор адреса и данныхИндикатор адреса и данных состоит из 8 разрядов, каждый из которых является семисегментной ячейкой на светодиодах. Для отображения символов B, D, R недостаточно семи сегментов, поэтому используются стилизованные обозначения: B - ō D - d R - г При отображении содержимого ячейки памяти в разрядах 1-4 индикатора в шестнадцатеричной системе счисления высвечивается адрес, в разрядах 7-8 - данные, хранящиеся по этому адресу. Например, при просмотре содержимого ячейки памяти с адресом 817АН, если там хранится значение F3H, мы увидим на индикаторе: 817A F3 Если включен режим записи данных в память, то перед высвечиваемыми данными появляется запятая: 817A ,F3 В других случаях в адресных разрядах 1-4 отображается, например, содержимое счетчика команд, а в разрядах данных 7-8 - очередная команда, либо содержимое 8-битного регистра МП. В последнем случае в пятом разряде индикатора появляется еще и наименование регистра, а в шестом – символ “-“. Например, при чтении содержимого регистра А, если там хранится число 13Н, мы увидим на индикаторе: 817A A-13 3.1.5. Просмотр и изменение содержимого памяти и регистровПрограммы и данные размещаются в ОЗУ по адресам 8000Н - 87FFН. Для просмотра содержимого ячейки памяти с адресом NNNN (символ “N” здесь и далее обозначает любую шестнадцатеричную цифру) следует нажать клавиши: ADDR N N N N После этого в разрядах 1-4 индикатора отобразится заданный адрес ячейки памяти, в разрядах 7-8 - ее содержимое. Если при вводе адреса была допущена ошибка, ее можно исправить нажатием других цифровых клавиш, так как в качестве адреса записываются и отображаются на дисплее четыре последних нажатых клавиши. Нажатие клавиши CLR восстанавливает предыдущее значение адреса памяти (при условии, что другие командные клавиши не нажимались). Нажатие на клавишу NEXT выводит на индикатор информацию об адресе и значении следующей ячейки памяти. При нажатии на клавишу MEM включается режим записи данных в память, при этом перед данными в разрядах 7-8 зажигается запятая. При последующем нажатии одной или двух цифровых клавиш соответствующая информация будет заноситься в ячейку памяти, адрес которой высвечивается в разрядах 1-4, и отображаться в разрядах 7-8 индикатора. Если при вводе данных допущена ошибка, ее можно исправить нажатием других цифровых клавиш, так как записываются в память и отображаются на дисплее только две последних нажатых клавиши. Нажатие клавиши CLR восстанавливает первоначальное содержимое ячейки памяти (при условии, что другие командные клавиши не нажимались). При попытке ввести данные без предварительного нажатия клавиши MEM, а также, если на дисплее установлен адрес ПЗУ, либо фактически отсутствующий в ОЗУ, на дисплее высветится сигнал ошибки “Err”. В этом случае, для того, чтобы восстановить предыдущий адрес и разрешить ввод данных в память, следует нажать на клавишу MEM. Для перехода к вводу данных в следующую ячейку памяти нужно нажать клавишу NEXT, при этом режим записи данных в память сохраняется. Клавиша MEM выполняет также дополнительную функцию - повторные нажатия этой клавиши уменьшают на единицу адрес ячейки памяти. Для чтения содержимого одного из 8-битных регистров микропроцессора X надо нажать следующие клавиши: REG X где X – цифровая клавиша с наименованием соответствующего регистра (A, B, C, D, E, H, L, F). В разряде 5 индикатора отображается имя регистра, в разрядах 7-8 - его содержимое. В разрядах 1-4 при этом отображается содержимое счетчика команд PC. Нажатие на клавишу NEXT выводит на индикатор содержимое следующего регистра в последовательности - A, B, C, D, E, F, H, L, A и т.д. Запись информации в 8-битные регистры производится непосредственно после его выбора и отображения путем нажатия одной или двух цифровых клавиш. Для отображения на индикаторе информации, хранящейся в 16-битных регистрах или регистровых парах R микропроцессора, надо нажать клавиши: ADDR R MEM где R - обозначение одной из клавиш, приведенных ниже:
После нажатия клавиш в разрядах 5-6 индикатора отобразится имя регистровой пары, в разрядах 1-4 - ее содержимое. 3.1.6. Работа с контрольными точкамиМонитор УОУ предоставляет возможность выполнения программы пользователя с введением контрольных точек, т.е. адресов, на которых необходимо прервать выполнение программы для проверки промежуточных результатов. Если введены контрольные точки, то при выполнении программы в режиме отладки проверяются условия: - соответствует ли содержимое счетчика команд какой-либо контрольной точке; - изменилось ли содержимое ячейки памяти, адресуемое любой контрольной точкой. Если ни одно из этих условий не выполняется, то продолжается выполнение программы, иначе монитор уменьшает на единицу содержимое числа проходов данной точки, и если оно равно нулю, то происходит останов программы пользователя. Наибольшее число проходов контрольной точки до останова равно FFH=256. Программа останавливается до выполнения команды, адресуемой контрольной точкой, но после изменения содержимого ячейки памяти, адресуемой этой точкой. Ввод контрольной точки по адресу NNNN с числом проходов NN осуществляется нажатием клавиш: ADDR N N N N BRK N N После этого в разрядах 5-6 индикатора отображается символ контрольной точки “BP,”, в разрядах 1-4 - ее адрес, в разрядах 7-8 - число проходов. Например, пользователь задал контрольную точку в программе по адресу 8220H с числом проходов 5. Тогда после запуска программы клавишей RUN содержимое счетчика команд 5 раз сравняется с числом 8220H без останова, а перед шестым выполнением соответствующей команды произойдет останов и на индикаторе появится: 8220 ?? Здесь и далее символами “??” обозначается любая записанная ранее или случайная информация. Нажатие на клавишу BRK выведет на индикатор информацию об этой контрольной точке (число проходов уменьшилось до нуля): 8220 BP,?? Число проходов можно оставить нулевым, либо ввести новое значение. Клавиша CLR исключает данную контрольную точку. Пробелы в разрядах 1-4 и 7-8 означают, что контрольных точек больше нет. Если они есть, то будет индицироваться адрес следующей контрольной точки. Последовательным нажатием на клавишу NEXT можно просмотреть и изменить все контрольные точки. Нажатие на клавишу RST исключает все контрольные точки. Имеется возможность прекратить выполнение программы не только по адресу заданной команды, но и после выполнения заданного количества команд. Для этого в ячейку памяти 83Е6Н надо записать число команд NN, которое надо выполнить. Это можно сделать нажатием на клавиши: ADDR 83E6 BRK N N 3.1.7. Выполнение программ пользователяПри включении питания УОУ, так же, как и при нажатии на клавишу RST, запускается программа-монитор, записывающая в счетчик команд пользователя и устанавливающая на дисплее адрес 8200H, а в указатель стека пользователя – 83E0H. Поэтому программы пользователя рекомендуется располагать в ОЗУ, начиная с адреса 8200H. В общем случае для выполнения программы пользователя в реальном масштабе времени необходимо: 1. Установить тумблер режима в положение "прогон", в котором УОУ работает без подключения монитора. 2. Задать начальный адрес программы NNNN, нажав клавиши: ADDR N N N N. 3. Пустить программу клавишей RUN. Для того чтобы после выполнения программы пользователя произошел останов и обращение к монитору, который включает дисплей, необходимо в качестве завершающей команды программы использовать не команду останова HLT, а команду RST4 (ее код E7H), которая в УОУ и выполняет функцию “возврат к монитору”. После выполнения программы на индикаторе отображается значение адреса, следующего за командой, на которой произошел останов, и данные по этому адресу. Для поиска ошибок рекомендуется использовать пошаговый режим выполнения программы пользователя, когда останов происходит после выполнения каждой команды. Для выполнения программы в пошаговом режиме нужно: 1. Установить тумблер режима в положение "отладка". 2. Задать начальный адрес программы NNNN: ADDR N N N N. 3. Нажать клавишу STEP. После выполнения очередной команды произойдет останов. На индикаторе отобразится новое значение адреса в разрядах 1-4 и содержимое ячейки памяти по этому адресу в разрядах 7-8. Далее можно с помощью соответствующих командных клавиш посмотреть содержимое каких-либо регистров МП или ячеек памяти, которые изменялись выполненной командой, и проверить правильность результата. 4. Нажатием на клавишу STEP выполнить следующую команду программы и т.д. Удобным способом отладки программ является выполнение программы в режиме с остановом по контрольным точкам. В отличие от пошагового режима, когда производится останов после выполнения каждой команды программы, этот режим позволяет останавливаться только при достижении заданного адреса. Для выполнения программы в режиме с остановом по контрольным точкам надо: 1. Установить тумблер режима в положение "отладка". 2. Ввести контрольные точки. 3. Задать начальный адрес программы NNNN. 4. Запустить программу на выполнение, нажав клавишу RUN. После выполнения части программы управление передается монитору, а на индикаторе отображается адрес контрольной точки, на которой произошел останов. Далее можно проверить содержимое каких-либо регистров или ячеек памяти, которые изменялись в программе, откорректировать при необходимости контрольные точки и нажатием на клавишу RUN продолжить выполнение программы до достижения следующей контрольной точки. В этом режиме программа автоматически прерывается монитором после выполнения каждой команды для контроля точек останова, поэтому общее время выполнения программы увеличивается. Клавиатура и индикатор блокированы до момента, пока не будет достигнута контрольная точка с нулевым числом проходов. |