Рефераты. Работа с дисками p>3.1 Определение типа компьютера.

ПЗУ базовой системы ввода/вывода BIOS содержит по адресу FFFFh:FFFEh байт конфигурации, значение которого можно использовать для идентификации типа компьютера:
|Значение |Тип компьютера |
|FFh |Оригинальный IBM PC |
|FEh |IBM PC/XT, Portable PC |
|FDh |PCjr |
|FCh |IBM PC/AT |
|FBh |IBM PC/XT с памятью 640 Кбайт на материнской плате |
|F9h |Convertible PC |

Для компьютеров IBM PC и IBM PC/XT конфигурация дисковой системы определяется установкой переключателей на основной плате, в частности, переключателями устанавливается количество подключенных к системе НГМД.

Компьютеры IBM PC/AT (и более высокого класса) имеют на основной плате
CMOS-память с малым энергопотреблением, которая питается от аккумулятора. В
CMOS-памяти хранится информация о конфигурации дисковой системы. В процессе инициализации BIOS считывает эту информацию и записывает ее в свою внутреннюю область данных.

Проанализировав значение байта конфигурации, можно сделать предварительное заключение о составе дисковой системы компьютера. Если оно равно FFh, FDh, F9h, то наш компьютер не имеет НМД - это одна из разновидностей IBM PC. Значения FEh, FBh могут соответствовать IBM PC/XT и совместимым с ним компьютерам. Такие компьютеры могут быть оборудованы НМД.
И, наконец, значение FCh соответствует IBM PC/AT. Для этого компьютера конфигурация дисковой системы должна определяться исходя из содержимого
CMOS-памяти.

3.2 Прерывание INT 11h.

Прерывание базовой системы ввода/вывода INT 11h возвращает в регистре
AX байт конфигурации системы, который можно использовать для определения количества НГМД и наличия НМД. Самый младший бит байта конфигурации (бит 0)
- признак наличия в системе НМД. Если этот бит установлен в 1, то компьютер оборудован НМД, иначе дисковая система состоит только из накопителей на гибких магнитных дисках.

Биты 7 и 6 содержат информацию о количестве НГМД:
|Содержимое бит 7 и |Количество установленных НГМД |
|6 | |
|00 |1 |
|01 |2 |
|10 |3 |
|11 |4 |

Это прерывание лучше всего использовать для IBM PC/XT и IBM PC. Для
IBM PC/AT необходимо исследовать содержимое CMOS-памяти. Займемся этим.

3.3 Анализ содержимого CMOS-памяти.

Программа не может непосредственно адресовать CMOS-память, как обычную оперативную память. Для работы с CMOS-памятью необходимо использовать порты ввода/вывода с адресами 70h и 71h, причем процедура записи или чтения состоит из двух шагов.

На первом шаге операции чтения или записи программа должна записать в порт 70h номер нужной ячейки CMOS-памяти (0...3Fh). На втором шаге программа должна обратиться к порту 71h для выполнения записи в указанную ячейку памяти или чтения из нее.

Приведем фрагмент программы, составленной на языке ассемблера, который считывает байт из CMOS-памяти с адресом 12h:

mov al,12h out 70h,al ; задаем адрес в CMOS-памяти jmp $+2 ; небольшая задержка in al,71h ; записываем в AL считанное значение

Запись в CMOS-память выполняется аналогично.

При анализе конфигурации дисковой системы для нас представляют наибольший интерес ячейки 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 (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...7:Время загрузки головок HLT - |
| | | |интервал между сигналом загрузки головок и |
| | | |началом операции чтения или записи, лежит в |
| | | |пределах 2 - 254 мс и задается с интервалом |
| | | |2 мс (1 - 2 мс, 2 - 4 мс, ..., 0FFh - 254 |
| | | |мс) |
|2 |1 |motor_w|Задержка перед выключением двигателя |
|3 |1 |sec_siz|Код размера сектора в байтах:0 - 128;1 - |
| | |e |256;2 - 512;3 - 1024 |
|4 |1 |eot |Номер последнего сектора на дорожке |
|5 |1 |gap_rw |Длина межсекторного промежутка для чтения |
| | | |или записи |
|6 |1 |dtl |Максимальная длина передаваемых данных. |
| | | |Используется, когда не задана длина сектора |
|7 |1 |gap_f |Длина межсекторного промежутка для операции |
| | | |форматирования |
|8 |1 |fill_ch|Байт-заполнитель для форматирования, обычно |
| | |ar |используется F6h |
|9 |1 |hst |Время установки головки в мс |
|10 |1 |mot_sta|Время запуска двигателя в 1/8 долях секунды |
| | |rt | |

Все времена зависят от частоты тактового генератора контроллера НГМД, приведенные значения соответствуют частоте 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 работает только на запись, это порт вывода. С его помощью можно выбирать для работы один из НГМД (одновременно можно работать только с одним НГМД), сбрасывать контроллер в исходное состояние, разрешать или запрещать прерывания от контроллера и работу схем прямого доступа к памяти, включать или выключать двигатели НГМД.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.