Кафедра ЭВМ дгту icon

Кафедра ЭВМ дгту




Скачати 83.35 Kb.
НазваКафедра ЭВМ дгту
Дата12.07.2012
Розмір83.35 Kb.
ТипДокументи


РАБОТА С IDE HDD ЧЕРЕЗ ПОРТЫ КОНТРОЛЛЕРА


Ершов А.А., Маргулис М.Б.

Кафедра ЭВМ ДГТУ


margulis@cs.dgtu.donetsk.ua

Abstract




Yershov A.A., Margulis M.B., work with ide HDD through controller’s ports. Work with HDD is basic at the controller’s ports interface. This article contents work with HDD as C++ programs. The program modules used addressing ports .


Введение


Оптимизация вычислительного процесса во многом определяется организацией работы с HDD. В этой статье исследован метод работы с жестким диском через порты контроллера, который реализован в виде подпрограммы на языке С (компилятор Borland C++ 3.1).

Размеры носителей на жестких дисках достигли таких размеров, при которых работа с полным объемом данных через обычный набор прерываний не представляется возможной. Современные ОС Windows 95/98/Millenium/NT/XP реализуют доступ к HDD через расширенные прерывания. Однако, и их возможности ограничены. Для того, чтобы решить эту проблему, надо обращаться непосредственно, т.е. напрямую к контроллеру жесткого диска.


1. Определение реальных параметров HDD (до LBA-трансляции)

Первым этапом исследования доступа к пространству жесткого диска любого размера является реализация задачи идентификации НDD. Это значит, что нужно определить реальные физические параметры жесткого диска. Эти реальные физические параметры получили название IDE-характеристик - они не зависят от BIOS.

При реализации задачи идентификации жесткого диска необходимо обеспечить преобразование сквозного абсолютного физического адреса сектора на диске – Linear Basic Address (LBA-адрес) - в специальный адрес сектора, который определяется его реальным физическим расположением в определенном цилиндре и на определенной стороне (головке) – Cylinder, Head, Sector (CHS-адрес).

В соответствии с данными о работе IDE-интерфейса [2], реальные физические параметры жесткого диска могут быть определены путем анализа реакции IDE HDD на обращение к его портам (для Primary Master -1f6, 1f7). При этом будет заполняться специальная структура данных. Поля этой структуры определяют всевозможные характеристики диска – в том числе и размеры (геометрию) исследуемого жесткого диска.

^

Фрагмент программы, который реализует идентификацию HDD, имеет вид:




union {

int infs[256];



struct

{ int Config;

int Cyls, Rsrv1, Heads, BPT, BPS, SPT;

int Vendor[3]; //Производитель

char Serial[20]; //Серийный номер. 0=нет.

int BufType; //тип буффера

int BufSize; //размер буффера в 512 байтных блоках. 0=нет.

int ECC;

char Revision[8];

char Model[40]; //Номер модели. 0=нет.

int Features; //ЗАрезервировано.

int DwordIO;

int Capabil;

int Rsrv2; //Зарезервировано

int PIO, DMA;

int ExtValid;

//Логические характеристики

int CurrCyls, CurrHeads, CurrSect;

long Capacity; //Колличество секторов

int BlkMode;

long LBACapacity;

int SingleDMA;

int MultiDMA;

int AdvancedPIO;

int MinDMACycle, RecDMACycle, MinPIOCycle, MinIORDYPIOCycle;

} su;


}um;


void init_hd1(void)

{

int BasePort=0x1f0;

long tt,i;


tt = biostime(0,0);

outportb(BasePort+6,0xA0);

outportb(BasePort+7,0xEC);

while((inportb(BasePort+7)&0x80)!=0)

if((biostime(0,0)-tt)>5) break;

for(i=0;i<255;i++)

um.infs[i]=inport(BasePort);

}


2. Перевод из LBA-адреса сектора в физический CHS-адрес


Формула для перевода из физических CHS-координат в линейный LBA-адрес имеет следующий вид:


LBAsect = Cylinder*HeadPerCyl*SectPerTrk + Head*SectPerTrk + Sector.


Для перевода LBA-адреса в CHS-адрес можно использовать несколько формул. Например, для определения номера сектора CHS-стандарта, нужно учесть количество цилиндров и дорожек в линейном адресе текущего сектора:


Sect = LBAsect mod (HeadPerCyl* SectPerTrk).


Следует заметить, что нулевой результат здесь означает: Sect= SectPerTrk. Приведенная формула описывает самую простую часть перевода в стандарт CHS. Другие элементы перевода требуют дополнительных условий.

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

Итерационный метод имеет некоторые недостатки. Так, для достаточно больших номеров LBA могут возникнуть некоторые задержки по времени. С другой стороны, при использовании современных процессоров этот недостаток не существенен. Реализация алгоритма перевода в стандарт CHS:


union byte_byte

{ struct { … } one; unsigned int all; } itrack;

for(i=0, itrack.all= 0, isec=0,head=0;i<=sector;i++)

{ isec++;

if(isec>um.su.SPT){isec=1;ihead++;}

if(ihead>um.su.Heads-1){ihead=0;itrack.all++;

}

if(itrack.all>um.su.Cyls)return(2);



  1. Чтение из секторов


Перед первым обращением к процедуре манипулирования секторами HDD следует заполнить объединение (um), описывающee этот HDD.

В подпрограмму передается номер LBA-сектора, который внутри самой процедуры переводится в физический адрес CHS. Эти физические параметры заносятся в порты контроллера и из порта данных (для Primary Master- это 1f0h) читаются байты (это и есть содержимое сектора). Программно это реализовано следующим образом:


outportb(0x1f6,ihead);

outportb(0x1f2,Nsec);

outportb(0x1f3,isec);

outportb(0x1f4,itrack.one.lo);

outportb(0x1f5,itrack.one.hi);

outportb(0x1f7,command);

still_going: //Цикл ожидания готовности контроллера

asm {

in al,dx

test al,8

jz still_going

}

asm { //Подготовка буфера

push ds

pop es

mov cx,N

mov di,offset buffer

mov dx,0x1f0
rep insw


}



  1. Запись секторов на диск


Запись секторов на диск производится по тому же принципу, что и их чтение .Здесь единственное отличие в том, что в командный порт посылается команда чтения и данные из порта не читаются (командой rep insw), а записываются командой Ассемблера rep outsw.


outportb(0x1f6,ihead);

outportb(0x1f2,Nsec);

outportb(0x1f3,isec);

outportb(0x1f4,itrack.one.lo);

outportb(0x1f5,itrack.one.hi);

outportb(0x1f7,command);

still_going3:

asm{ //Цикл ожидания готовности контроллера

mov dx,0x1f7

in al,dx

test al,8

jz still_going3

}

asm{ //Подготовка буффера

push ds

pop es

mov cx,N

mov si,offset buffer

mov dx,0x1f0

rep outsw

}


Заключение


Актуальность описанной задачи обусловлена тем, что возможности доступа к пространству HDD свыше 8Гб ограничены. Если же реализовать алгоритм доступа через порты контроллера, то для режима АТА этот метод позволяет работать с объемами до 31,5Гб, а для режима АТА2 - до 0,5Тб. Следует отметить, что возможности контроллера IDE HDD не ограничены только чтением и записью. Полный список команд можно найти в таблице 1.

Для написания системных приложений практически всегда требуется доступ к ресурсам на самом низком уровне. Ресурсы могут быть различны, но любая программа хранит свои данные на HDD. Поэтому задача низкоуровнего доступа к данным на жестком диске без ограничения на размер носителя сегодня актуальна и в дальнейшем при увеличении размеров носителей ее актуальность только увеличится.

Список команд контроллера

Таблица 1


^ Код команды

Пояснения

90

Диагностика диска

50

Форматировать дорожку

ЕС

Идентификация диска

91

Инециализировать параметры диска

Е4

Чтение буфера

С8

Чтение DMA (с повтором)

С9

Чтение DMA (без повтора)

20

Чтение сектора (с повтором)

21

Чтение сектора (без повтора)

22

Длинное чтение (с повтором)

23

Длинное чтение (без повтора)

30

Запись сектора (с повтором)

31

Запись сектора (без повтора)

32

Длинная запись (с повтором)

33

Длинная запись (без повтора)

99 Е6

Установить режим sleep

Е8

Запись буффера

СА

Запись DMA (с повтором)

СВ

Запись DMA (без повтора)

C3

Запись с верификацией


Далее в таблице 2 приводится список портов которые работают с primary HDD.


Список портов для работы с контроллером

Таблица 2


Номер порта

Пояснения

1f0

Порт данных (r/w)

1f1

Порт ошибок (r)

1f2

Номер сектора для обработки (w)

1f3

Количество секторов для обработки (w)

1f4

Младшая часть значения цилиндра (слово)(w)

1f5

Старшая часть значения цилиндра (слово)(w)

1f6

Диск/головка

1f7

Порт команд (w)

1f7

Порт статуса (r)



Литература

  1. Фролов А.В. Фролов Г.В. “Библиотека системного программиста”. М: Диалог МИФИ 1999. – 254 с.

  2. http://mirrors.usaaa.ru:8000/hardware/bookide/bookide5.stml

  3. http://citforum.vrs.ru/hardware/bookide/bookide5.stml

  4. http://azx.8m.com/betadisk.html

Схожі:

Кафедра ЭВМ дгту iconЛекція 3 "Економічна інформатика" Тема 3-б. Системне забезпечення інформаційних процесів Операційні системи
Операционная система (ОС), это комплекс программ, предназначенный для управления работой аппаратуры и программ на эвм, обеспечения...
Кафедра ЭВМ дгту iconПо курсу "использование ЭВМ для решения задач водоподготовки"
Конспект лекций по курсу «Использование ЭВМ для решения задач водоподготовки» (для студентов 5 курса дневной и заочной форм обучения...
Кафедра ЭВМ дгту iconЦель изучения дисциплины подготовка специалиста, который будет владеть знаниями, необходимыми для широкого использования ЭВМ в области подготовки воды
Эвм с целью дальнейшего их применения для описания процессов водоподготовки, для теоретического отображения процессов подготовки...
Кафедра ЭВМ дгту iconМежгосударственный стандарт единая система конструкторской документации основные положения общие требования к выполнению конструкторских и технологических документов на печатающих и графических устройствах вывода ЭВМ гост 004-88 межгосударственный совет по стандартизации,
Общие требования к выполнению конструкторских и технологических документов на печатающих и графических устройствах вывода ЭВМ
Кафедра ЭВМ дгту iconКафедра авіаційних радіоелектронних комплексів
З 1967 р кафедра мала назву «Кафедра технічної експлуатації авіаційного радіоелектронного обладнання», а з 1987 р. – «Кафедра експлуатації...
Кафедра ЭВМ дгту iconДокументи
1. /Горнец_Организация ЭВМ и систем_2006.djvu
Кафедра ЭВМ дгту iconДокументи
1. /_01_Бройдо_Архитектура ЭВМ и систем_2006.djvu
Кафедра ЭВМ дгту iconДокументи
1. /_02_Цилькер Организация ЭВМ и систем.djvu
Кафедра ЭВМ дгту iconОглавление С. 1 Структура математического обеспечения ЭВМ 3
Синтаксические диаграммы и функции распознавания цепочек для нетерминальных символов 56
Кафедра ЭВМ дгту iconОглавление С. 1 Структура математического обеспечения ЭВМ 3
Синтаксические диаграммы и функции распознавания цепочек для нетерминальных символов 56
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи