Реферат: Работа с дисками
Значение | Емкость, Кбайт | Диаметр | Количество секторов на одну дорожку | Количество дорожек |
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 (Diskette Parameter Table), а также одну или две таблицы параметров жесткого диска HDPT (Hard Disk Parameter Table). Если имеется специальная "дисковая" система ввода/вывода, то она сама создает таблицы 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 | 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 |
Параметры
устройства: |
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 - сброс контроллера; |
3 | 1 - разрешение прерываний и прямого доступа к памяти |
4-7 | Значение 1 в каждом разряде вызывает включение соответствующего двигателя НГМД. Для компьютеров IBM PC/AT биты 6-7 не используются |
Порт 3F4h предназначен только для чтения. С его помощью можно получить байт основного состояния контроллера. Назначение отдельных бит приведено ниже:
Биты | Назначение |
0-3 | Значение 1 говорит о том, что соответствующий НГМД занят, он выполняет операцию поиска. Для IBM PC/AT биты 2-3 не используются |
4 | Контроллер занят выполнением команды чтения или записи |
5 |
0 - используется режим прямого
доступа к памяти; |
6 |
Направление передачи данных: |
7 | Запрос на передачу данных - контроллер готов к записи или чтению данных |
Порт 3F5h предназначен для записи или чтения данных. Он используется для всех операций.
Выполнение любой операции начинается с того, что программа посылает в этот порт байт кода операции, за которым следует один или несколько байт параметров. Количество байт параметров и их назначение зависит от кода операции (т. е. от первого байта). После выполнения операции программа считывает несколько байт результата для анализа результата выполнения операции.
Порт 3F7h работает на запись и чтение, он используется только в IBM PC/AT.
При записи в этот порт биты 0-1 определяют скорость передачи данных:
Биты | Скорость передачи данных, Кбайт/с |
00 | 500 (высокая плотность HD) |
01 | 300 (двойная плотность DD) |
10 | 250 (одинарная плотность SD) |
11 | Зарезервировано |
Приведем назначение отдельных бит порта 3F7h при чтении из него:
Биты | Назначение |
0 | 1 - выбран НГМД 0 |
1 | 1 - выбран НГМД 1 |
2-5 | Выбраны головки : бит 2 соответствует головке 0, бит 3 - головке 1 и т. д. |
6 | Переключатель записи |
7 | 1 - признак замены дискеты |
4.2 Команды для контроллера НГМД.
Контроллер НГМД может выполнять 15 операций, или команд. Команда разделяется на три фазы - командная фаза, фаза выполнения, фаза результата. В командной фазе программа должна передать контроллеру всю информацию, необходимую для команды. В фазе выполнения команда выполняется, и в фазе результата программа получает от контроллера информацию о состоянии контроллера.
Информация, необходимая для команды, передается контроллеру через порт данных 3F5h. В соответствии с форматом команды программа должна последовательно вывести в этот порт код команды и все параметры.
Прежде чем программа начнет командную фазу, она должна убедиться в том, что контроллер завершил выполнение предыдущей операции и готов к приему команды. Для этого программа должна прочитать байт основного состояния контроллера из порта с адресом 3F4h и проверить биты 6 и 7. Бит 6 должен быть установлен в 0. Это означает, что данные будут передаваться от процессора к контроллеру. Бит 7 должен быть установлен в 1 - это готовность контроллера к приему команды.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9