Реферат: Работа с дисками

При анализе конфигурации дисковой системы для нас представляют наибольший интерес ячейки CMOS-памяти со следующими адресами:

• 14h - байт конфигурации

Биты 7, 6 этого байта имеют такое же значение, что и в младшем байте слова конфигурации, возвращаемого прерыванием INT 11h - они содержат информацию о количестве установленных в компьютере НГМД.

Значение бита 0, равное нулю, говорит о том, что в системе нет ни одного НГМД.

• 10h - тип НГМД

Младшая и старшая тетрады этого байта описывают, соответственно, второй и первый НГМД:

Значение Емкость, Кбайт Диаметр Количество секторов на одну дорожку Количество дорожек
0000 НГМД не установлен - - -
0001 360 5,25" 9 40
0010 1200 5,25" 15 80
0011 720 3,5" 9 40
0100 1440 3,5" 18 80

• 12h - тип НМД C: и D:

Этот байт разделен на две тетрады аналогично байту, который описывает НГМД. Однако в тетраде можно закодировать только 16 значений, а различных типов НМД значительно больше. Поэтому тип 15 используется специальным образом - если тип НМД в младшей тетраде (диск C:) равен 15, то правильное значение типа находится в CMOS-памяти по адресу 19h. Аналогично для диска D: этот тип можно взять из байта по адресу 1Ah (если содержимое старшей тетрады байта с адресом 12h равно 15).

Если в вашем компьютере установлен НМД с интерфейсом ESDI , SCSI или другим специализированным интерфейсом, то, как правило, для работы с ними используется специальная "дисковая" базовая система ввода/вывода. Соответствующая микросхема ПЗУ может быть расположена непосредственно в контроллере. При этом в CMOS-памяти в ячейке 12h для типа диска может быть указано нулевое значение, несмотря на то, что диск установлен. Прерывание INT 11h , тем не менее, скажет вам, что в системе имеется НМД.

Если используется "дисковая" базовая система ввода/вывода, то она сама инициализирует таблицу параметров диска (будет описана позже) и выполняет обработку прерывания INT 13h . Так как MS-DOS при обращении к дискам использует именно это прерывание, то не возникает никаких проблем, связанных с отсутствием типа диска в CMOS-памяти. Другие операционные системы, такие как Windows NT и OS/2 , используют для работы с дисками специальные драйверы.

3.4 Таблицы параметров НМД и НГМД.

Для работы с диском на физическом уровне необходимо знать такие его характеристики, как количество головок, секторов и др. Эти характеристики можно определить из таблиц параметров НГМД и НМД, заполняемых BIOS в процессе инициализации системы.

Анализируя содержимое CMOS-памяти в компьютерах IBM PC/AT или установку переключателей конфигурации на основной плате в компьютерах IBM PC и IBM PC/XT, BIOS в процессе инициализации создает таблицу параметров дискеты DPT (DisketteParameterTable), а также одну или две таблицы параметров жесткого диска HDPT (HardDiskParameterTable). Если имеется специальная "дисковая" система ввода/вывода, то она сама создает таблицы HDPT.

Таблица параметров дискеты DPT имеет длину 10 байт, ее адрес располагается в области данных BIOS по адресу 0000h:0078h, что соответствует вектору прерывания INT 1Eh . Таблица содержит следующие параметры:

Смещение, байт Размер, байт Имя поля Описание
0 1 srt_hut Биты 0...3:SRT (Step Rate Time) - задержка для переключения головок, лежит в пределах 1 - 16 мс и задается с интервалом 1 мс (0Fh - 1 мс, 0Eh - 2 мс, 0Dh - 3 мс, ...).Биты 4...7:Задержка разгрузки головки, лежит в пределах 16 - 240 мс и задается с интервалом 16 мс (1 - 16 мс, 2 - 32 мс, ..., 0Fh - 240 mc)
1 1 dma_hlt Бит 0:Значение этого бита, равное 1, говорит о том, что используется прямой доступ к памяти;
Биты 2...7:Время загрузки головок HLT - интервал между сигналом загрузки головок и началом операции чтения или записи, лежит в пределах 2 - 254 мс и задается с интервалом 2 мс (1 - 2 мс, 2 - 4 мс, ..., 0FFh - 254 мс)
2 1 motor_w Задержка перед выключением двигателя
3 1 sec_size Код размера сектора в байтах:0 - 128;1 - 256;2 - 512;3 - 1024
4 1 eot Номер последнего сектора на дорожке
5 1 gap_rw Длина межсекторного промежутка для чтения или записи
6 1 dtl Максимальная длина передаваемых данных. Используется, когда не задана длина сектора
7 1 gap_f Длина межсекторного промежутка для операции форматирования
8 1 fill_char Байт-заполнитель для форматирования, обычно используется F6h
9 1 hst Время установки головки в мс
10 1 mot_start Время запуска двигателя в 1/8 долях секунды

Все времена зависят от частоты тактового генератора контроллера НГМД, приведенные значения соответствуют частоте 8 МГц.

Адреса таблиц параметров жестких дисков HDPT расположены по адресам, соответствующим векторам прерываний INT 41h (для первого физического диска) и INT 46h (для второго физического диска). Эти таблицы имеют следующий формат:

Смещение, байт Размер, байт Имя поля Описание
0 2 max_cyl Максимальное количество дорожек на диске
2 1 max_head Максимальное количество магнитных головок
3 2 srwcc Начальная дорожка для предварительной записи (Starting reduced-write current cylinder)
5 2 swpc Начальная дорожка для предварительной компенсации при записи (Starting write precompensation cylinder)
7 1 max_ecc Максимальная длина блока коррекции ошибок ECC (Maximum ECC data burst length)
8 1 dstopt Параметры устройства:
бит 7 - запрет восстановления;
бит 6 - запрет восстановления по блоку коррекции ошибок ECC (Error Correction Code);
биты 2-0 - дополнительные параметры устройства
9 1 st_del Стандартная величина задержки
10 1 fm_del Величина задержки для форматирования диска
11 1 chk_del Величина задержки для проверки диска
12 4 reserve Зарезервировано

Таблица параметров жесткого диска содержит такие важнейшие значения, как максимальное количество дорожек и максимальное количество головок. Если вам не удалось определить тип диска, то таблица HDPT - единственное надежное место, откуда можно получить информацию о количестве дорожек и головок.

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

Большинство дисковых операций можно выполнить на уровне функций BIOS. Это самый простой и надежный способ работы с диском на физическом уровне. Однако в отдельных случаях вам может потребоваться непосредственный доступ к контроллеру НГМД - например, если вы разрабатываете систему защиты данных от несанкционированного копирования.

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

4.1 Порты контроллера НГМД.

Программа обращается к контроллеру для выполнения различных операций с помощью команд ввода/вывода. Для IBM PC и IBM PC/XT используются три порта с адресами 3F2h, 3F4h и 3F5h. В компьютерах IBM PC/AT дополнительно используются два порта с адресами 3F6h и 3F7h.

Порт 3F2h работает только на запись, это порт вывода. С его помощью можно выбирать для работы один из НГМД (одновременно можно работать только с одним НГМД), сбрасывать контроллер в исходное состояние, разрешать или запрещать прерывания от контроллера и работу схем прямого доступа к памяти, включать или выключать двигатели НГМД.

Приведем назначение отдельных бит этого порта:

Биты Назначение
0-1 Выбор НГМД. Компьютеры IBM PC/AT не используют бит 1, так как в них установлены только два НГМД
2 0 - сброс контроллера;
1 - разрешение работы контроллера
3 1 - разрешение прерываний и прямого доступа к памяти
4-7 Значение 1 в каждом разряде вызывает включение соответствующего двигателя НГМД. Для компьютеров IBM PC/AT биты 6-7 не используются

Порт 3F4h предназначен только для чтения. С его помощью можно получить байт основного состояния контроллера. Назначение отдельных бит приведено ниже:

Биты Назначение
0-3 Значение 1 говорит о том, что соответствующий НГМД занят, он выполняет операцию поиска. Для IBM PC/AT биты 2-3 не используются
4 Контроллер занят выполнением команды чтения или записи
5 0 - используется режим прямого доступа к памяти;
1 - режим прямого доступа к памяти не используется
6 Направление передачи данных:
0 - от процессора к контроллеру;
1 - от контроллера к процессору
7 Запрос на передачу данных - контроллер готов к записи или чтению данных

Порт 3F5h предназначен для записи или чтения данных. Он используется для всех операций.

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

Порт 3F7h работает на запись и чтение, он используется только в IBM PC/AT.

При записи в этот порт биты 0-1 определяют скорость передачи данных:

Биты Скорость передачи данных, Кбайт/с
00 500 (высокая плотность HD)
01 300 (двойная плотность DD)
10 250 (одинарная плотность SD)
11 Зарезервировано

К-во Просмотров: 916
Бесплатно скачать Реферат: Работа с дисками