Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labex.doc
Скачиваний:
3
Добавлен:
19.11.2019
Размер:
4.14 Mб
Скачать

5.3 Оборудование Персональный компьютер at386 и выше, содержащий манипулятор типа «мышь» и установленный соответствующий драйвер; компилятор языка c.

4.7.Задание на работу

  1. Ознакомиться с теоретическими сведениями, приведенными во втором разделе и ответить на контрольные вопросы.

  2. В соответствии с вариантом задания, выданным преподавателем, разработать программное обеспечение, реализующее тестирование работоспособности манипулятора типа «мышь».

Варианты заданий:

1) Тестирование корректности распознавания манипулятором горизонтальных и вертикальных перемещений с различными скоростями.

2) Тестирование исправности клавиш мыши.

4.8.Оформление отчета

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

4.9.Контрольные вопросы

  1. Приведите основные типы интерфейсов манипуляторов «мышь».

  2. Приведите основные варианты конструкции манипуляторов «мышь»?

  3. Каким образом строится взаимодействие «мыши» с системной платой?

  4. Какие порты служат для обращения к контроллеру «мыши»?

  5. Каков порядок программирования контроллера манипулятора «мышь»?

  6. Каковы характерные неисправности манипулятора «мышь» и способы их устранения?

  7. Объяснить принцип действия оптической «мыши».

ЛАБОРАТОРНАЯ РАБОТА №6

РАЗРАБОТКА программного обеспечения ТЕСТИРОВАНИЯ НГМД

4.10.Цель и задачи работы

Целью работы является изучение принципов функционирования и освоение методов тестирования накопителей на гибких магнитных дисках (НГМД) и их реализация в программном обеспечении.

4.11.Основные теоретические положения

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

1) накопители на жестких дисках;

2) накопители на гибких дисках;

3) накопители на оптических дисках;

4) контроллеры накопителей дисков;

5) обслуживающие подпрограммы (драйверы устройств).

Конструктивно различаются несколько основных типов накопителей на гибких магнитных дисках: 3.5 дисковод высокой плотности (емкость дискеты 1.44 Мбайта), 5.25 дисковод высокой плотности (емкость дискеты 1.2 Мбайта) и 5.25 дисковод обычной плотности (емкость дискеты составляет 360 Кбайт).

Изначально в компьютерах IBM PC/XT применялся универсальный контроллер, позволявший подключить к компьютеру до четырех накопителей на гибких дисках или магнитной ленте. В IBM AT число реально поддерживаемых контроллером дисководов было сокращено до двух, а с ленточными накопителями контроллер уже практически не использовался. На сегодняшний день контроллер не претерпел практически никаких изменений из-за соображений совместимости. Упрощенная схема подключения контроллера гибких дисков приведена на рисунке 6.1.

Рисунок 6.1 Схема подключения контроллера гибких дисков

Конструкция дисковода стандарта 3.5

Основными внутренними элементами дисковода являются дискетная рама, шпиндельный двигатель, блок головок с приводом и плата электроники.

Шпиндельный двигатель предназначен для перемещения магнитного носителя. Обеспечивает вращение с постоянной угловой скоростью 300 оборотов/мин. Двигатель привода блока головок предназначен для радиального перемещения магнитных головок относительно поверхности дискеты. В этом качестве используются шаговые двигатели с червячной, зубчатой или ленточной передачей. Накопитель содержит ряд электромеханических датчиков для определения собственного текущего состояния. В частности, для опознания свойств дискеты на плате электроники возле переднего торца дисковода установлено три механических нажимных датчика: два – под отверстиями защиты и плотности записи, и третий – за датчиком плотности, – для определения момента опускания дискеты.

Дисковод соединяется с контроллером при помощи 34-проводного кабеля, в котором четные провода являются сигнальными, а нечетные – общими. Интерфейс дисковода включает сигналы выбора устройства, запуска двигателя, перемещения головок на один шаг, включения записи, считываемые/записываемые данные, а также информационные сигналы от дисковода – начало дорожки, признак установки головок на нулевую (внешнюю) дорожку, сигналы с датчиков и т.п. Вся работа по кодированию информации, поиску дорожек и секторов, синхронизации, коррекции ошибок выполняется контроллером НГМД [5].

Стандартный формат дискеты типа HD (High Density – высокая плотность) – 80 дорожек на каждой из сторон, 18 секторов по 512 байт на дорожке. Уплотненный формат – 82 или 84 дорожки, до 20 секторов по 512 байт, или до 11 секторов по 1024 байта.

Характерные неисправности дисководов

– отказ датчика опускания диска или плохой контакт крайнего провода интерфейсного кабеля, передающего сигнал «Disk Change» (смена диска). При этом система не реагирует на смену дискеты;

– отказ датчика плотности или защиты записи. В первом случае перестают читаться и записываться дискеты одной из плотностей (DD или HD), во втором запись становится постоянно доступной или недоступной вне зависимости от положения защелки на дискете.

– неверное подключение интерфейсного кабеля;

Формат загрузочного сектора дискеты

Загрузочный сектор располагается в первом секторе дискет и часто используется для определения типа (размера) носителя (720 Кб, 1.44 Мб, 2.88 Мб). В жестких дисках первым сектором является MBR (Master Boot Record). Началом каждого логического диска так же является загрузочный сектор. Формат загрузочного сектора приводится в таблице 6.1.

Таблица 6.1

Формат загрузочного сектора дискеты

Смещение,

байт

Размер, байт

Описание

0

3

Машинная инструкция перехода на программу начальной загрузки

3

8

Название фирмы-производителя и номер операционной системы

11

2

Количество байт в одном секторе диска

13

1

Количество секторов в одном кластере диска

14

2

Количество зарезервированных секторов

16

1

Количество копий таблиц размещения файлов

17

2

Размер корневого каталога (максимальное количество дескрипторов файлов)

19

2

Общее количество секторов на носителе в разделе DOS

21

1

Описатель среды носителя данных

22

2

Количество секторов, занимаемых одной копией таблицы размещения файлов

24

2

Количество секторов на дорожке

26

2

Количество головок накопителя

28

4

Количество скрытых секторов для раздела меньше 32 Мб

32

4

Общее количество секторов на логическом диске, превышающем 32 Мб

36

1

Физический номер дисковода

37

1

Зарезервировано

38

1

Признак расширенной загрузочной записи

39

4

Серийный номер диска

43

11

Метка тома

54

8

Тип файловой системы

62

448

Программа начальной загрузки

510

2

Признак корректного загрузочного сектора

Программирование контроллера НГМД

Операционная система MS-DOS предоставляет широкий набор функций для работы с дисковыми накопителями [6].

Для определения наличия того или иного оборудования в системе используется прерывание 11h.

Выход: AX = битовые флаги оборудования

0 дискета установлена

6,7 число дисковых накопителей (только если бит 0 = 1)

00 = 1, 01 = 2, 10 = 3, 11 = 4

Нижний уровень работы с дисками образуют функции прерывания INT 13h.

Функция 00h – сброс системы контроллера дисковода

DL = номер накопителя (если бит 7 установлен, то сбрасываются оба контроллера НГМД и НЖМД).

Операция осуществляет полный сброс контроллера дисковода. Используется в случаях, когда после других дисковых операций возвращается код серьезной ошибки.

Функция 01h – определить состояние дисковода

Возвращает в AL байт состояния дисковода после последней операции ввода-вывода. Байт состояния имеет следующий формат:

0000 0001 Ошибка команды для дискеты

0000 0010 Не найден адресный маркер на диске

0000 0011 Попытка записи на защищенный диск

0000 0100 Не найден сектор

0000 1000 Выход за границы DMA

0000 1001 Попытка доступа через границу 64К

0001 0000 Чтение сбойного участка на диске

0010 0000 Ошибка контроллера дисковода

0100 0000 Ошибка установки

1000 0000 Ошибка оборудования

Функция 02h – чтение сектора

AL = число секторов для чтения (должно быть не нулевым)

CH = младшие 8 разрядов номера трека

CL = номер сектора 1-63 (разряды 0-5) старшие два разряда номера трека (разряды 6-7, только для жесткого диска)

DH = номер поверхности (головки)

DL = номер накопителя (разряд 7 установлен для НЖМД)

ES:BX – буфер данных

Выход: CF установлен при ошибке: если AH = 11h (скорректированная ошибка ECC), AL = длина поврежденного участка, CF сброшен при нормальном завершении: AH = состояние (аналогично функции 01h), AL = число переданных секторов

Функция 03h – запись сектора

AL = число секторов для записи (должно быть не нулевым)

CH = младшие 8 разрядов номера трека

CL = номер сектора 1-63 (разряды 0-5) старшие два разряда номера трека (разряды 6-7, только для жесткого диска)

DH = номер поверхности (головки)

DL = номер накопителя (разряд 7 установлен для НЖМД)

ES:BX – буфер данных

Выход: CF установлен при ошибке: если AH = 11h (скорректированная ошибка ECC), AL = длина поврежденного участка, CF сброшен при нормальном завершении: AH = состояние (аналогично функции 01h), AL = число переданных секторов.

Функция 04h – верификация секторов

AL = число секторов для проверки (должно быть не нулевым)

CH = младшие 8 разрядов номера трека

CL = номер сектора 1-63 (разряды 0-5) старшие два разряда номера трека (разряды 6-7, только для жесткого диска)

DH = номер поверхности (головки)

DL = номер накопителя (разряд 7 установлен для НЖМД)

ES:BX – буфер данных

Выход: CF установлен при ошибке, CF сброшен при нормальном завершении: AH = состояние (аналогично функции 01h), AL = число проверенных секторов

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

Функция 05h – форматирование дорожки

AL = число секторов для форматирования, CH = номер трека, DH = номер поверхности, DL = номер накопителя, ES:BX – адрес буфера для заполнения

Выход: CF установлен при ошибке, CF сброшен при нормальном завершении: AH = состояние (аналогично функции 01h)

Функция 08h – параметры дискового накопителя

DL = номер накопителя (бит 7 установлен для жесткого диска)

Выход: CF установлен при ошибке: AH = состояние (07h) состояние (аналогично 01h), CF сброшен при нормальном завершении: AH = 00h;

BL = тип накопителя: ( возможные значения: 01h – 360K; 02h – 1.2M; 03h – 720K; 04h – 1.44M; 06h – 2.88M), CH = младшие 8 бит максимального номера трека, CL = максимальный номер сектора (биты 5-0) старшие два разряда максимального номера трека (биты7-6), DH = максимальный номер поверхности, DL = максимальный номер накопителя, ES:DI – таблица параметров накопителя (только для НГМД).

Функция 15h – тип дискового накопителя

DL = номер накопителя (бит 7 установлен для жесткого диска)

Выход: CF сброшен в случае нормального завершения, AH = код типа:

00h нет подобного накопителя

01h НГМД без поддержки сигнала смены носителя

02h НГМД с поддержкой сигнала смены носителя

03h жесткий диск

CX:DX = количество 521-байтовых секторов

CF установлен при возникновении ошибки: AH = состояние (см. 01h)

Функция 16h – смена диска

DL = номер накопителя (00h-7Fh)

Выход: CF сброшен если сигнал смены носителя неактивен, AH = 00h (носитель не менялся), CF установлен, если сигнал смены носителя активен, AH = состояние:

01h недопустимая команда

06h сигнал смены носителя активен или не поддерживается

80h накопитель не готов или отсутствует

Примечание: предварительно необходимо вызвать функцию 15h для определения поддержки накопителем сигнала смены носителя.

Процесс выполнения команды контроллером дисководов состоит из трех основных фаз: фазы посылки команды, фазы выполнения команды и фазы выдачи результата. Наличие двух последних фаз определяется кодом команды.

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

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

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

  • Выбор дисковода и включение его мотора

  • Установка скорости передачи данных через регистр CCR

  • Перемещение головок дисковода на заданный цилиндр при помощи команд поиска и рекалибровки

  • Инициализация контроллера прямого доступа к памяти

  • Подача команды чтения или записи данных

  • Ожидание сигнала прерывания

  • Прием информации о результатах выполнения операции

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]