Рефераты

Разработка контрольно-проверочной программы модуля ввода-вывода МФПУ-1

Исходное значение ресурса для каждого из двух типов ЭСППЗУ составляет

10000 циклов программирования.

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

регистр контроля код, отличный от кода исправности, форсируя выдачу

сигнала ошибки.

Анализ инструментальных средств

1 Выбор языка программирования

МФПУ-1 является специализированной ЭВМ, в состав которого входят

несколько модулей, в частности модуль ввода-вывода основанной на

микропроцессоре Intel80386EX. Данный пульт и модуль ввода-вывода не имеют

операционной системы и средств отладки – все эти компоненты находятся в

стадии разработки. В распоряжении программиста имеются лишь небольшой

набор программ, через которые можно запускать все остальные программы:

- программа полной инициализации пульта и модуля ввода-вывода;

- программа загрузки и передачи управления другой программе – минимальная

операционная система.

Обе эти программы работают на самом низком уровне (с аппаратурой - на

уровне портов и регистров контроллеров) и предъявляют к себе

соответствующие требования. Поэтому для программирования была выбрана

среда разработки Borland C++ 3.1. Данная среда в полной мере обеспечивает

разработку системного программного обеспеченья, дает возможность

применения таких конструкций программирования как FOR, WHILE, SWITCH и

пр., а так же поддерживает инструкции языка ассемблера, что в

совокупности обеспечивает хороший инструмент для разработчика.

. Основными требованиями при программировании под МВВ были:

. оптимизация программируемого кода;

. объем кода;

. скорость выполнения;

. удобочитаемость;

. обеспечение надежности выполнения.

Основной проблемой при программировании, было, есть и остается

возможность отладки. Т.к. для данного пульта не существует полноценной

операционной системы, на которой бы работали стандартные средства

отладки, то для трассировки и выявления ошибок приходиться

программировать, так называемые, «подпорки», которые позволяли бы

отображать результату работы программ в МВВ, и вместе с этим производить

ответную реакцию от центрального процессора.

Все программное обеспечение разных модулей работает под управлением

центрального процессора. При написании программного обеспечения под МПР

задача несколько облегчается по той причине, что для данного модуля

существует «минимальная ОС», которая поддерживает основные функции

стандартной MS-DOS, такие как, ввод-вывод на экран, задержку по таймеру,

сервис прерываний и др. В процессе написания тестового программно

обеспеченья, под МПР, для процесса отладки применялась функция C++ -

printf, которая выводила на экран технологического компьютера отладочную

информацию. Данная ОС разработана фирмой OCTAGON Systems Corporations и

функционирует как ОС удаленного терминала по RS-232 порту (ПО SMARTLINK).

2 Загрузка и функционирование программ в МВВ

Особенностью загрузки программ в МВВ, является то, что загрузку можно

осуществлять двумя способами:[pic]

1. сначала происходит загрузка в МПР, а уже из него в память МВВ;

2. через порт RS232 непосредственно в МВВ.

При использовании первого метода, значительно усложняется процесс

загрузки программ и запуска их на выполнение, но снижаются требования к

средствам разработке - вполне достаточно одного компьютера.

При разработке тестового программного обеспеченья использовался

второй метод. Он гораздо проще, быстрее, эффективнее, но при этом требует

наличия двух компьютеров: один из которых подключен через порт RS232 к

МПР, а второй через такой же порт к МВВ. В такой схеме подключения

разработку и процесс программирования необходимо вести одновременно на

двух компьютерах. Данный метод несомненно более эффективен, но требует

большего технического оборудования, что вызывает большие затраты на

разработку программного обеспечения.

Для загрузки программного обеспечения в модуль ввода-вывода

применяются три системные программы, которые должны отработать

последовательно:

1. инициализация модуля ввода-вывода и МФПУ в целом;

2. загрузка программного обеспеченья через порт RS-232 в модуль;

3. пуск загруженной программы с указанного адреса.

Следует отметить, что все загружаемые программы в МВВ-34 должны быть

в бинарном виде, т.е. не должны содержать никаких заголовков (как у *.EXE

файла). При компиляции программы с языка C++ получается файл типа EXE, и

для перевода его в бинарный формат применялась программа EXE2BIN.EXE.

Программы, загруженные в МВВ, функционируют независимо от всех

остальных модулей, т.к. МВВ имеет свой собственный процессор и

статическую память. В связи с этим возможна отдельная от других модулей

загрузка программ в МВВ, при этом программы функционирующие в других

модулях никоем образом не затрагиваются. Это позволяет вести

распределенное программирование. Единственной проблемой является то, что

результаты выполнения программ невозможно визуально ощутить. Данная

проблема устраняется путем перегрузки информации в межпроцессорное ОЗУ, а

уже с помощью программ через центральный процессор происходит вывод на

дисплей технологического компьютера.

3 Загрузка и функционирование программ в МПР

Модуль центрального процессора, через порт RS-232, подключен к

технологическому компьютеру. На этом компьютере установлена программа

SmartLink фирмы Octagon Systems Corporations, которая является удаленным

терминалом. При включении МФПУ-1 автоматически производятся следующие

действия:

. полный сброс МФПУ-1;

. определение и тест микропроцессора;

. определение и тест базовой и расширенной памяти;

. проверка CMOS;

. запуск ROM-BIOS;

. запуск OCTAGON-DOS;

. запуск драйверов поддержки LPT и RS-232 портов.

Операционная система находится во Flash-памяти пульта. А все действия

осуществляются через SmartLink.

После всех перечисленных автоматических действий можно приступать к

загрузке программ. Возможна загрузка как EXE файлов, так и COM. Все

сообщения, выводимые программами через printf, будут видны только в

терминале SmartLink.

Состав и назначение тестов

1 Ориентировочный состав тестов.

|Наименование теста |Вид контроля |

| |КПП |ВСК |

|Тест JTAG |( | |

|Тест интерфейса ISA |( | |

|Тест микропроцессора |( |( |

|Тест канала RS-232C |( | |

|Тест ППЗУ |( |( |

|Тест чтения перемычек выбора режима |( | |

|Быстрый тест ОЗУ | |( |

|Расширенный тест ОЗУ |( |( |

|Тест двух портового ОЗУ |( |( |

|Непрерывный контроль аппаратуры обмена |( |( |

|Расширенный контроль аппаратуры обмена |( |( |

|Тест сигнала «Отказ МВВ» |( |( |

|Тест контроллера КЛС |( |( |

|Тест обмена по КЛС |( | |

|Тест программирования ЭСППЗУ |( | |

|Тест программирования Flash-ЗУ |( | |

2 Контроля аппаратуры обмена

1 Непрерывный контроль

Модуль МВВ должен периодически переписывать информацию из первой во

вторую ячейки сторожевого таймера. Период такой операции должен

соответствовать максимальному периоду обмена по КЛС, но не реже одного

раза в 1с.

Несоответствие информации в ячейках сторожевого таймера через

указанное время после записи информации в первую ячейку позволяет МПР

констатировать отказ связи с МВВ или «зависание» последнего.

2 Расширенный контроль

В процессе контроля процессор МПР является ведущим, МВВ - ведомым.

Для перехода в режим расширенного контроля аппаратуры обмена МПР должен

записать единицу в 8 разряд управляющего слова, после чего для проведения

каждого из тестов записывать соответствующие параметры в разряды 7 - 0

управляющего слова.

1. Разряды 1 ( 0 содержат код тестируемого устройства:

. 1 – семафор;

. 2 - рабочая область;

. 3 – прерывания;

2. Разряды 3 ( 2 содержат код теста.

3. Разряды 7 ( 4 дополнительный параметр.

В начале выполнения теста МВВ должен установить нуль в 0 и 1 разряды

слова состояния, по окончании выполнения очередного теста - установить

единицу:

- при успешном завершении теста - в 0 разряд слова состояния;

- при обнаружении отказа - в 1 разряд.

3 Контроль семафоров

Для контроля каждого из семафоров процессоры должны произвести 4

теста:

. код 0 - чтение МВВ занятого семафора;

. код 1 - чтение МВВ свободного семафора;

. код 2 - чтение МПР занятого семафора;

. код 3 - чтение МПР свободного семафора.

Для проведения каждого из тестов должны быть произведены следующие

действия.

1. МПР записывает в управляющее слово:

- 6 ( 4 разряды - номер семафора (0 ( 7);

- 3 ( 2 разряды - код теста (0 ( 3).

2. МВВ производит:

- в тесте 0 - читает семафор и сравнивает с 1;

- в тесте 1 - читает семафор и сравнивает с 0;

- в тесте 2 - записывает в семафор 0;

- в тесте 3 - записывает в семафор 1.

3. МВВ записывает результат в 0 или 1 разряд слова состояния.

4. МПР принимает окончательное решение о результате теста.

4 Контроль рабочей области

Для контроля рабочей области должно быть произведено четыре теста:

- код 0 - передача нулевой информации;

- код 1 - передача единичной информации;

- код 2 - передача шахматной информации;

- код 3 - передача обратной шахматной информации

по двум направлениям:

- параметр 0 - из МПР в МВВ;

- параметр 1 - из МВВ в МПР.

Под передачей нулевой информации подразумевается запись нулей во все

ячейки рабочей области, под единичной - запись OxFFFF во все ячейки

рабочей области;

под шахматной:

- запись 0x5555 в ячейки с четными адресами и

- запись 0хАААА в ячейки с нечетными адресами;

под обратной шахматной:

- запись 0x5555 в ячейки с нечетными адресами и

- запись 0хАААА в ячейки с четными адресами.

Для проведения каждого из тестов должны быть произведены следующие

действия.

1.МПР записывает в управляющее слово:

- 4 разряд - направление (0 ( 1);

- 3 - 2 разряды - код теста (0 ( 3).

2.При направлении 0:

- МПР устанавливает семафор 0 в положение "занято" и производит

запись информации в двухпроцессорное ОЗУ;

- МПР освобождает семафор;

- МВВ после освобождения семафора считывает информацию и анализирует

ее правильность.

3.При направлении 1:

- МВВ устанавливает семафор 0 в положение "занято" и производит

запись информации в двух портовое ОЗУ

- МВВ освобождает семафор;

- МПР после освобождения семафора считывает информацию и анализирует

ее правильность;

- МВВ записывает результат в 0 или 1 разряд слова состояния;

- МПР принимает окончательное решение о результате теста.

5 Контроль прерываний

Контроль прерываний производится в следующем порядке.

1. МПР в управляющем слове задает требуемый режим.

2. МВВ, получив прерывание, устанавливает все разряды слова состояния

в 0.

3. МПР, получив прерывание, устанавливает все разряды управляющего

слова в 0.

4. МВВ, получив прерывание, устанавливает нулевой (младший) разряд

слова состояния в 1.

5. МПР, получив прерывание, устанавливает тот же разряд управляющего

слова в 1.

6. МВВ, получив прерывание, устанавливает тот же разряд слова

состояния в 0.

7. МПР, получив прерывание, устанавливает тот же разряд управляющего

слова в 0.

8. Действия 4 - 7 повторяются для разрядов 1 - 15.

9. МВВ записывает результат в 0 или 1 разряд слова состояния,

возвращая остальным разрядам значения, которые они имели до начала

теста.

10. МПР принимает окончательное решение о результате теста.

Требования к функциональным характеристикам тестов

1 Требования к программе

В состав ТПО входят программные средства встроенного контроля (ВСК) и

контрольно-проверочная программа (КПП).

ВСК предназначен для текущего и расширенного контроля в процессе

функционирования МФПУ в составе системы. Программные и аппаратные

средства ВСК должны обеспечивать полноту контроля не менее 95%.

Программные средства ВСК физически размещаются в энергонезависимых ЗУ

модулей МВВ и МПР.

КПП предназначена для полной проверки работоспособности МВВ с

применением соответствующих технических средств.

2 Требования к ВСК

В состав программных средств ВСК должны входить:

- обработчик прерывания по входу INT0 микропроцессора 386EX от схемы

аппаратного контроля выходов КЛС;

- обработчик прерывания по входу NMI микропроцессора 386EX от

сторожевого таймера программного обеспечения;

- обработчик сигнала «Отказ МВВ»;

- программные средства текущего контроля;

- программные средства расширенного контроля.

1. Обработка прерывания по входу INT0 (что соответствует входу IR1

ведущего контроллера прерываний) сводится, в соответствии с [1],

к считыванию из регистра контроля информации об ошибке (в

формате: номер выхода КЛС, код на входе передатчика, код на

выходе передатчика).

2. При обработке прерывания по входу NMI фиксируются место в

прерванной программе и время срабатывания сторожевого таймера.

3. Сигнал "Отказ МВВ", поступающий на модуль МДС, следует

обрабатывать в соответствии с техническим описанием модуля МДС.

1 Программные средства текущего контроля

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

выполнения целевых функций программного обеспечения, но не реже, чем один

раз в секунду. В состав тестов текущего контроля должны входить:

- тест микропроцессора;

- тест ППЗУ по контрольным суммам,

- другие тесты при наличии свободных аппаратных и временных ресурсов.

Кроме того, программные средства текущего контроля должны

взаимодействовать с целевым программным обеспечением для поддержки:

- непрерывного контроля данных, принимаемых и передаваемых по КЛС

путем формирования и контроля битов паритета и анализа регистров

состояния контроллера КЛС,

- периодического контроля данных, хранящихся в ОЗУ и в двух портовом

ЗУ, по битам паритета и контрольным суммам.

Текущий ВСК не должен влиять на входные/выходные сигналы и данные

МВВ.

Результаты текущего ВСК должны анализироваться на частоту появления и

устойчивость дефектов и запоминаться в ЭСППЗУ модуля МВВ (область адресов

от 60000h до 6FFFFh) или МПР с датой выявления ошибки с целью

последующего анализа.

В случае успешного завершения текущего ВСК в регистр контроля

записывается код исправности, а при выявлении устойчивых дефектов записью

в этот регистр кода ошибки инициируется сигнал «Отказ МВВ».

2 Программные средства расширенного контроля.

Расширенный контроль должен запускаться в двух случаях:

- автоматически после включения питания;

- по команде оператора.

При автоматическом запуске расширенного контроля последовательно

выполняются тесты, указанные в графе «ВСК» табл.2. Состав тестов может

уточняться в процессе разработки с учетом общего времени, отведенного на

расширенный контроль МФПУ (не более 20 секунд), и с учетом возможности

параллельного тестирования МВВ и других модулей МФПУ.

При запуске расширенного контроля по команде оператора на дисплей

МФПУ должно выдаваться меню, определяющее функциональный состав и

модификации тестов. Оператор должен иметь возможность разрешить или

запретить любую функцию тестирования, прервать выполнение тестов.

При проведении расширенного контроля выдача информации на выходные

КЛС должна быть заблокирована, т.е. бит TFE в регистре контроля

(разрешение передатчиков КЛС) должен быть очищен.

После завершения расширенного контроля МВВ начинает (продолжает)

выполнять целевую функцию. Ошибки обрабатываются аналогично текущему

контролю.

3 Требования к КПП

Должно быть предусмотрено функционирование КПП МВВ как в составе КПП

МФПУ, так и самостоятельно.

Общее управление проверкой МВВ и диалог с оператором осуществляется

технологическим компьютером. Протокол взаимодействия с МВВ по кабелю 2

приведен в ПРИЛОЖЕНИИ к настоящему документу. Взаимодействие с МПР по

кабелю 1 и взаимодействие между МПР и МВВ по шине ISA определяются

соответствующими протоколами.

При запуске КПП должна проверять наличие связи по каждому из трех

кабелей и, в зависимости от этого, формировать меню для выбора

конфигурации тестов. Отсутствие или неисправность одного или любых двух

кабелей не должно приводить к завершению программы.

КПП должна использовать для проверки МВВ преимущественно модули

встроенного контроля, а в тех случаях, когда ВСК не обеспечивает полного

контроля ввиду аппаратных и временных ограничений, КПП должна загружать в

ОЗУ модулей МВВ и/или МПР собственные программные модули и запускать их

выполнение.

4 Требования к отдельным тестам

1 Тест JTAG

Прежде всего, командой IDCODE следует прочитать код идентификации

микропроцессора (он должен быть равен 28270013h). Затем командой EXTEST

перейти в режим тестирования внешних цепей микропроцессора и произвести

выборочную проверку записи и чтения по нескольким адресам на внутренней

шине. Поскольку канал JTAG медленный, этим тестом можно проверить лишь

ограниченное количество адресов.

2 Тест интерфейса ISA

Проверяются адреса МВВ на системной шине, т.е. ячейки двух портового

ОЗУ, включая семафоры, и сигнал «Сброс». При этом обращение к двух

портовому ОЗУ по внутренней шине МВВ должно быть заблокировано, а

семафоры предварительно очищены.

3 Тест микропроцессора

Тест микропроцессора 80386EX включает тест ядра микропроцессора

(возможно использование встроенного теста, запускаемого по сигналу

«Сброс»") и тестов периферийных устройств: последовательного порта,

таймеров, контроллера прерываний, контроллера ПДП,- с использованием

диагностических режимов и регистров.

4 Тест канала RS-232C

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

последовательной установки нуля и единицы на выходе DTR и считывания

установленных значений на входе DSR. Далее производится «Установка связи»

и проверяется правильность передачи данных путем посылки несколько раз

команды «Тест» с варьированием значения параметра.

5 Тест ППЗУ

Проверяются контрольные суммы ППЗУ всех типов и ресурсы по количеству

циклов программирования. Информация о ресурсах должна храниться в одной

из ячеек ЭСППЗУ (область от 60000h до 6FFFFh). При исчерпании ресурса

выдается предупреждающее сообщение.

6 Тест чтения перемычек выбора режима

Проверяется правильность считывания четырех перемычек выбора режима

MOD1...MOD4 и перемычки разрешения программирования EPR на внешнем

разъеме X1 МФПУ. Перемычки устанавливаются оператором по запросу

программы и считываются программой.

7 «Быстрый» тест ОЗУ и «расширенный» тест ОЗУ

Поскольку полная проверка ОЗУ (256 Кбайт) занимает достаточно

длительное время, автоматически при ВСК запускается «быстрый»" тест ОЗУ,

содержащий 2 или 4 прохода, например: запись и чтение шахматного кода,

затем запись и чтение обратного шахматного кода. «Расширенный» тест ОЗУ

запускается оператором или из КПП.

8 Тест двух портового ОЗУ

Проверяется запись и чтение двух портового ОЗУ, включая семафоры, по

внутренней шине МВВ. При этом обращение к двух портовому ОЗУ по системной

шине (со стороны МПР) должно быть заблокировано, а семафоры

предварительно очищены.

9 Тест сигнала «Отказ МВВ»

Установка и сброс сигнала «Отказ МВВ» осуществляется через регистр

контроля. Считывание сигнала "Отказ МВВ" производится путем обращения к

модулю МДС со стороны МПР. Алгоритм считывания приведен в техническом

описании модуля МДС.

10 Тест контроллера КЛС

Предназначен для автономной проверки контроллера КЛС. При этом

используются:

- встроенные тесты, запускаемые через регистры самоконтроля;

- программно-управляемый контроль с использованием внутренних

обратных связей. При этом по умолчанию выходы всех передатчиков

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

данные для тестирования выбираются мультиплексором со входов

микросхем передатчиков и подаются на тестовые входы приемников.

Оператор должен также иметь возможность включить передатчики в цепь

обратной связи.

11 Тест обмена по КЛС

Этот тест должен имитировать реальный режим эксплуатации МВВ.

Информация с выходов КЛС через жгут-заглушку (см. табл.1) передается на

входы. Обмен с МПР должен соответствовать протоколу. Все аппаратные

средства МВВ (в том числе сторожевой таймер, контроллер прерываний)

должны быть задействованы как в реальном режиме. Тест должен работать

непрерывно и завершаться по команде оператора.

12 Тест программирования ЭСППЗУ

Производится запись с последующей проверкой в ЭСППЗУ по адресам от

60000h до 7FFFFh (либо, по выбору оператора, в отдельные ячейки, либо по

всем адресам). Содержимое ЭСППЗУ предварительно сохраняется. Этот тест

запускается только по явному указанию оператора.

13 Тест программирования Flash-ЗУ

Выполняется цикл «Стирание – Запись – Верификация» Flash-ЗУ.

Содержимое Flash-ЗУ предварительно сохраняется. Этот тест запускается

только по явному указанию оператора.

5 Требования к надежности

ТПО должно иметь функционально-модульную структуру; при этом отказ

отдельного функционального узла аппаратуры не должен влиять на

работоспособность ТПО в целом. При отказе функционального узла аппаратуры

программные модули, использующие этот узел, должны, если есть

возможность, переключаться на другой узел. Например, при отказе основного

ОЗУ использовать для хранения данных ячейки двух портового ОЗУ, при

отказе канала связи через COM2 использовать канал обмена через двух

портовое ОЗУ и т.д.

6 Требования к информационной и программной совместимости

КПП должна работать на любом совместимом с IBM PC компьютере, имеющем

в своем составе основную память не менее 512 килобайт, дисковод,

последовательный порт RS-232C, 80-колонный монитор, под управлением MS-

DOS, начиная с версии 2.1 и выше.

Описание функционирования КПП и ВСК

1 Модуль центрального процессора

1 «Контроль аппаратуры обмена»

1 Подпрограмма формирования управляющего слова

void Set_UPR_SL (int DOP, int CODE_TEST, int CODE_USTR)

ZapisExt (BASADR+SL_SOST,sost_sl);

Данная подпрограмма предназначена для формирования в управляющем

слове сообщения МВВ о номере тестируемого устройства, кода теста, а также

дополнительной информации.

Вход:

1. дополнительный код;

2. код теста;

3. код устройства.

Выход: нет.

Подпрограмма работает непосредственно с расширенной памятью и

адресуется используя смещение.

Логика:

1. Чтение слова состояния и обнуление младших двух разрядов, для

того, чтобы МВВ через них вернул код завершения теста;

2. Чтение слова управления и выставление в нем кода тестируемого

устройства со всеми дополнительными параметрами.

2 Подпрограмма получения кода выхода из тестов МВВ

uint ExitCod (void)

{

uint ExitCodeMvv;

CtenExt (BASADR+SL_SOST,&ExitCodeMvv);

ExitCodeMvv &= 0x0003;

return ExitCodeMvv;

}

Данная программа предназначена для получения кода выхода из теста от

МВВ.

Вход: нет.

Выход: код выхода

1 – все в порядке

2 – ошибка

Логика:

Происходит чтение слова состояния и обнуление всех разрядов кроме

младших двух. Именно в них и передается результат.

3 Подпрограмма ожидания ответа от МВВ

uint WaitOtvetMww ()

{

uint OK_ERROR_MWW;

uint cnt=0;

while ((OK_ERROR_MWW=ExitCod())==0 && cnt++ 7) return 1;

nSf = 0xFE00 + (nSf 7) return 1;

nSf = 0xFE00 + (nSf 7 ) return ERR_OTL;

ulong adrSf = 0xA08000l + ( nSf 7 ) return ERR_OTL;

return ZapisExt ( 0xA08000l+(nSf> 4;

//ветвимся по коду теста

switch ((upr_sl & 0x000C) >> 2){

//чтение МВВ занятого семафора

case0:if (OpenSf(number_sf)!=0) SetOK();

else SetError();

CloseSf (number_sf);

break;

//чтение МВВ свободного семафора

case 1:if (OpenSf(number_sf)==0) SetOK();

else SetError();

CloseSf(number_sf);

break;

//чтение МПР занятого семафора

case 2: if (OpenSf(number_sf)==0)

{

SetOK();

while ((sost_sl & 0x0003) != 0)

CtenMpr (SL_SOST,&sost_sl);

}

else SetError();

CloseSf(number_sf);

break;

//чтение МПР свободного семафора

case 3: if (CloseSf(number_sf)==0) SetOK();

else SetError();

break;

}

break;

////////////////////////////////////////////////////////

//рабочая область

case 2:OK_ERROR=0;

// Направление 0: МПР->МВВ

if (((upr_sl & 0x0010) >> 4)==0)

//ветвимся по коду теста

switch ((upr_sl & 0x000C) >> 2){

// передача нулевой информации

case 0:for (mem=0;memМПР

else

//ветвимся по коду теста

switch ((upr_sl & 0x000C) >> 2){

// передача нулевой информации

case 0:if (OpenSf (0)==1) {

SetError();break;

}

for (mem=0;mem

#include

#define INT_MWW 0x72 //Номер прерываний от МВВ

uint upr_sl;

uint sost_sl;

//Подпрограмма формирования управляющего слова

void Set_UPR_SL (int DOP, int CODE_TEST, int CODE_USTR)

= CODE_USTR

//Подпрограмма получения кода выхода из тестов МВВ

uint ExitCod (void)

{

uint ExitCodeMvv;

CtenExt (BASADR+SL_SOST,&ExitCodeMvv);

ExitCodeMvv &= 0x0003;

return ExitCodeMvv;

}

//Подпрограмма ожидания ответа от МВВ

uint WaitOtvetMww ()

{

uint OK_ERROR_MWW;

uint cnt=0;

while((OK_ERROR_MWW=ExitCod())==0&&cnt++МВВ

switch (j){ //код теста

//Передача нулевой информации

case 0:for (mem=0;memМПР

Set_UPR_SL (1,j,2); //формируем слово управления

OK_ERROR_MWW = WaitOtvetMww ();

switch (OK_ERROR_MWW){

case 1:

switch (j){ //код теста

case 0:for (uint mem=0;mem

uint seg,addr;

uint error;

uint ret;

uint kon_summa; //Контрольная сумма (должна быть 0)

uint reg_smkont;//Для хранения инф. регистра самоконтроля

#define REG_KONTR 0xFF00 //адрес регистра контроля в 2-х

портовом ОЗУ

#define REG_SAM_KONTR 0x0C86 //адрес регистра самоконтроля в ОЗУ

контр. КЛС

#define ALL_SEG 0xFFFF //Адрес последнего байта в сегменте

#define NO_ERR 0

#define CHIP 1

#define FLASH 20

#define STAT_RAM 30

#define OTK_MVV 40

#define KON_KLS 50

#define ALL_SBOI 90

//------------------------------------------------------

//Чтение ОЗУ

int ReadRam ( uint seg, uint addr )

{

_ES = seg;

_SI = addr;

asm MOV AX, word ptr ES:SI

return _AX;

}

//Запись в ОЗУ

void WriteRam ( uint seg, uint addr, int znc )

{

_ES = seg;

_SI = addr;

_AX = znc;

asm MOV word ptr ES:SI, AX

}

//------------------------------------------------------

//Тест ППЗУ

uint Flash_Test ()

{

//Сумма всех 32-раз. слов должна быть равна 0

error=0;

kon_summa=0;

for (addr=0;addr

#define NO_ERR 0

#define CHIP 1

#define FLASH 20

#define STAT_RAM 30

#define OTK_MVV 40

#define KON_KLS 50

#define ALL_SBOI 90

char* AnalysError ( uint error )

{

switch ( error )

{

case NO_ERR : return "OK";

case CHIP : return "микропроцессор - ERROR";

case FLASH : return "контрольная сумма ППЗУ - ERROR";

case STAT_RAM : return "статическое ОЗУ - ERROR";

case OTK_MVV : return "сигнал 'Отказ МВВ' - ERROR";

case KON_KLS : return "контроллер КЛС - ERROR";

case ALL_SBOI : return "общий сбой";

}

return "неизвестная ошибка !!!";

}

//******************************************************

uint RasKont ()

{

uint sost_sl=0,

slIspMww;

printf ("Расширенный контроль - ");

//Записываем ошибку, если тест пройдет нормально - то ошибки не будет

ZapisMwwInt (7,SL_ISPR_TIP,ALL_SBOI);

//Ожидаем прихода результата

uint cnt=0;

do {

CtenMwwInt (7,SL_SOST, &sost_sl);

printf ("Слово состояния - %Xh\n",sost_sl);

}

while ( (sost_sl == SS_RASKON) && (cnt++<0x100) );

// while (sost_sl & SS_REZIM == SS_RASKON);

//Считываем результат

CtenMwwInt (7,SL_ISPR_TIP,&slIspMww);

//Выводим его на экран ТК

printf ("%s\n",AnalysError (slIspMww));

//return slIspMww;

return 0;

}

-----------------------

Дата

Подпись

№ документа

Лист

Изм

3

Лист

Страницы: 1, 2


© 2010 Современные рефераты