Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦПОС - Методические указания к курсовому проект...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
960.51 Кб
Скачать

2.2.Отладка программы

Отладка программы производится с помощью программного имитатора sim5x.exe . Имитатор работает под управлением командного файла siminit.cmd . В этом файле задаётся конфигурация памяти разрабатываемой системы, и записываются различные команды имитатора (например, загрузка исполняемой программы), которые в принципе могут вводится после запуска имитатора. Однако при отладке и тестировании программы приходится неоднократно запускать имитатор и запись некоторых команд в файл позволяет избежать рутинных операций по вводу некоторых команд. Следует обратить внимание на то, что конфигурация памяти, задаваемая для имитатора не должна противоречить конфигурации памяти, задаваемой в командном файле компоновки исполняемой программы. Как правило, память имитатора "шире". Пример командного файла имитатора приведен в разделе 4.4. Естественно, при работе с конкретными исполняемыми программами необходимо корректировать имя загружаемой программы в команде load и указывать используемые области памяти в командах mem.

При работе с имитатором отсчеты входного сигнала записываются в файл данных infile.dat, который подключается для чтения к порту ввода; выходные данные записываются в выходной файл outfilre.dat. Соответствующие команды для определения портов и подключения файлов с комментариями приведены в примере командного файла имитатора.

Подача сигнала на вход фильтра производится по прерываниям.

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

100 (+1000) rpt 20

Это выражение означает, что первый запрос на прерывание возникнет через 100 тактов после запуска программы на выполнение и затем запрос на прерывание будет повторятся 20 раз с интервалом 1000 тактов.

При использовании прерываний по таймеру период прерываний задаётся регистром периода таймера. Для задания периода необходимо в секцию программы "Init_main" к командам задания режима добавить следующие команды

SPLK #1000,PRD

SPLK #1000,TIM

При этом прерывания будут повторятся с интервалом 1000 тактов. Под тактом понимается время командного цикла. Командный цикл процессора Tk (длительность такта) равен 2/f , где f – тактовая частота работы процессора.

В качестве входного тестового сигнала при проверке программы реализации фильтра используется единичный импульс. При этом выходным сигналом является импульсная характеристика. Совпадение полученной характеристики с теоретической (снятой в пакете FD) является критерием правильного выполнения программы. Для формирования единичного импульса файл входных отсчетов должен представлять собой следующую последовательность значений (одна 1 и последовательность нулей):

7FFF

0000

0000

0000

..

..

Количество записей в файле определяет количество рассчитываемых значений ИХ. Оно должно превышать порядок фильтра и количество запросов на прерывание, задаваемых в файле t_int.dat.

При отладке программы для выяснения состояния процессора и режима его работы необходимо знать и использовать значения разрядов регистра масок (запретов) прерываний IMR и регистра флагов (признаков наличия запросов) IFR. Распределение различных прерываний по разрядам регистров приведены в табл. 9.

Таблица 9

Разряд

D5

D4

D3

D2

D1

D0

IFR

IMR

XINT

RINT

TINT

INT3

INT2

INT1

Признак запрета всех прерываний INTM – разряд D9 ST0. При значении INTM равном 1 все маскируемые прерывания запрещены.

При отладке программы можно использовать команды:

  • INTM - вызов на экран бита разрешения/запрета всех прерываний для контроля правильности установки режима,

  • WA CLK - вызов на экран счетчика машинных циклов,

  • TINT - вызов на экран бита разрешения/запрета прерывания таймера.

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

  1. Отключить временно в командном файле имитатора команду для подключения файла t_int.dat, определяющего период прерываний. Команду можно временно убрать, поставив в первой позиции соответствующей строки точку с запятой.

  2. Запустить имитатор и проверить загрузку текста программы, правильность загрузки коэффициентов и параметров фильтра (окна памяти mem), правильность подключения входного и выходного файлов данных (команды меню Memory, List).

  3. Выполнить программу по шагам до реализации петли ожидания запросов на прерывания (метка Loop) и несколько шагов по петле.

  4. Проверить наличие разрешения используемого прерывания, т.е. установку соответствующих значений в разрядах регистров ST0 и IMR.

  5. Установить значение 1 в используемый по заданию разряд регистра IFR, соответствующий используемому типу прерываний; при этом будет имитироваться подача запроса на прерывание.

  6. Выполнить далее программу по шагам. При правильном выполнении программы должен произойти переход на ветвь таблицы векторов прерывания и далее к выполнению подпрограммы прерывания. После выполнения команды ввода и считывания первого значения из входного файла данных в ячейке INAD должно появится первое значение сигнала 7FFF. Имеет смысл проверить выполнение подпрограммы обработки прерывания по шагам до конца и возврат после её окончания в основную программу.

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

  • установить значение 1 в используемый разряд регистра IFR,

  • запустить команду RUN,

  • после остановки выполнения программы проверять правильность считывания очередного отсчета из файла входных данных в ячейке INAD, формирование выходного значения в ячейке OUTAD.

Для проверки влияния режимов работы запретите прерывания процессора, занеся при нахождении в основной программе в ST0 значение 0600; выполните после этого программу, обратив внимание на то , что прерывания не происходят. Восстановите содержимое ST0 и запретите используемые прерывания, занеся в IMR соответствующие значения; выполните после этого программу.

После считывания всех значений из файла отсчетов входного сигнала необходимо выйти из программы имитатора и проверить правильность формирования файла выходных данных и совпадение полученных значений ИХ с значениями, полученными в пакете FD. Соответствующие пояснения приведены в разделе 3.3.

Если полученная ИХ является правильной, можно переходить к дальнейшей проверке программы. Если же она не совпадает с расчетной, необходимо проверять правильность вычисления выходных отсчетов фильтра, т.е. правильность выполнения подпрограммы обработки прерывания.

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

  1. После запуска программы имитатора установить точку останова на используемую команду перехода (ветвь) таблицы векторов прерывания.

  2. Проверить правильность подключения файла к входу запроса на прерывания – команды меню Pin, List.

  3. Ввести команду CLK.

  4. Последовательно выполнять команду RUN и после останова проверять полученное значение периода прерываний – значение CLK (или изменение значение счетчика таймера TIM) и изменения значений отсчетов сигнала в ячейках INAD и OUTAD.

Полученное значение периода прерываний (CLK) должно примерно совпадать с требуемым по заданию.

Отладка программы при использовании прерываний по таймеру не отличается от описанной выше. Файл t_int.dat, определяющий поступление запросов на внешние прерывания в командном файле имитатора необходимо отключить постоянно. На первом этапе проверки программы вместо отключения этого файла необходимо из программы убрать команды настройки таймера

SPLK #1000,PRD

SPLK #1000,TIM,

а затем при проверке правильности периода прерываний включить эти команды в программу. Полученный период прерываний можно проверить по значению CLK или регистра TIM.