ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Робота з дисками
         

     

    Кибернетика

    Міністерство загальної та професійної освіти

    Російської Федерації

    Саратовський державний університет

    ІМЕНІ Н. Г. ЧЕРНИШЕВСЬКОГО

    Кафедра теоретичних основ комп'ютерної безпеки та криптографії

    ____РАБОТА З дисками найменування курсової роботи ВЕЛИКИМИ літерами.

    Курсова робота

    студента 1 курсу факультету комп'ютерних наукта інформаційних технологій
    Томнікова Вадима Анатолійовича прізвище, ім'я, по батькові (повністю)

    Науковий керівник професор В. В. Рідель посаду, уч.степень, уч.званіе підпис, дата ініціали,прізвище

    Зав. кафедрою професор В. В. Салій посаду, уч.степень, уч.званіе підпис, дата ініціали,прізвище

    Саратов 2003
    Зміст.

    Введення.
    1. Глава 1. Огляд дискових пристроїв.
    2. Глава 2. Фізичні аспекти роботи з дисками.
    3. Глава 3. Робота з дисками на фізичному рівні.

    1. Визначення типу комп'ютера.

    2. Переривання INT 11h.

    3. Аналіз вмісту CMOS-пам'яті.

    4. Таблиці параметрів НМД і НГМД.
    4. Глава 4. Програмування контролера НГМД.

    1. Порти контролера НГМД.

    2. Команди для контролера НГМД.

    3. Використання команд контролера НГМД.

    4. Трохи про контроллер прямого доступу до пам'яті.
    5. Глава 5. Функції BIOS для роботи з дисками.
    6. Глава 6. Робота з дисками за коштами MS-DOS.

    1. Таблиця розділів та логічні диски.

    2. Головний завантажувальний запис.

    3. Таблиця розділів диска.

    4. Завантажувальна запис.

    5. Завантаження операційної системи.

    6. Поля елемента таблиці розділу диска.

    7. Первинний і додатковий розділ.

    8. Завантажувальна запис.

    9. Формат завантажувального запису.
    10. Розширений блок параметрів BIOS.
    11. Логічний номер сектора.
    12. Переривання INT 25h і INT 26h.
    13. Таблиця розміщення файлів.
    14. Послідовний і прямий доступ.
    15. Кластери.
    16. Вміст таблиці FAT.
    17. Два формату таблиці FAT.
    18. Визначення формату таблиці FAT.
    19. Ідентифікація кластерів.
    20. Читання таблиці FAT.
    Введення.

    У розпорядженні програміста є засоби різного рівня,призначені для роботи з дискової системою в середовищі MS-DOS.

    По-перше, будь-яка програма може звертатися безпосередньо доапаратурі контролера жорсткого диска або контролера накопичувача на гнучкихмагнітних дисках. Це найнижчий рівень, застосування якого виправданедалеко не завжди. Більш того, у багатьох джерелах настійнорекомендується не працювати з контролером на рівні портів, якщо точно невідомо, навіщо це потрібно. Більшість завдань вирішується із застосуванням функцій
    MS-DOS або BIOS (навіть такі нетрадиційні завдання, як захист віднесанкціонованого копіювання). Однак іноді буває програміствимушений використовувати найнижчий рівень, ризикуючи втратити сумісність зчисленними типами дискових контролерів.

    По-друге, програма MS-DOS може працювати з дисками за допомогоюпереривання BIOS. У роботі будуть розглянуті різні функції переривання
    INT 13h, призначеного для виконання операцій читання, записи іформатування. Використання функцій переривання INT 13h набагатокраще, ніж безпосереднє програмування контролера, такяк BIOS приховує особливості апаратної реалізації контролера.

    По-третє, програма може звертатися до перериваннях MS-DOS, спеціальнопризначеним для доступу до дискової системи. Сервіс, що надаєтьсяцими переривань також можна розділити на низько-і високорівневий,тому у програміста завжди є вибір.

    Вибираючи засоби звернення до дискової системі, програміст повиненспочатку розглянути можливість використання найбільш високорівневихдокументованих засобів, таких як переривання MS-DOS. І лише потім маєсенс звернутися до функцій BIOS або до програмування портів контролера.

    Незважаючи на все сказане вище, розповідь про засоби роботи здискової системою буде вестися в зворотному порядку. Спочатку будерозказано про використання найбільш низькорівневих коштів, і лише потімбуде розказано про переривання BIOS і MS-DOS. Це дозволить підійти довивчення високорівневих коштів, маючи повне уявлення про те, яквлаштована дискова система.

    Глава 1. Огляд дискових пристроїв.

    Перші персональні комп'ютери типу IBM PC не мали жорсткого диска
    ( "вінчестера", або, по вітчизняній термінології, накопичувача на жорсткомумагнітному диску - НМД). Вони були обладнані двома флоппі-дисками
    (накопичувачами на гнучкому магнітному диску - НГМД), які і представлялисобою дискову систему. У таких комп'ютерах встановлені, як правило, дванакопичувача для флоппі-дисків (дискет).

    Ці накопичувачі підключені до контролера - спеціального пристрою,що виконує функції управління. Контролер звичайно виконаний у вигляді плати івставлений в роз'єм системної шини, що знаходиться на основній платікомп'ютера.

    У комп'ютері IBM PC використовували дискети діаметром 5,25 ". Заразкористувачі практично відмовилися від громіздких дискет діаметром 5,25 ",віддаючи перевагу більш компактним дискети діаметром 3,5 ". Комп'ютер
    IBM XT мав один або два НГМД для дискет діаметром 5,25 "і, як правило,один НМД ємністю 20 Мбайт. Усі дисководи підключалися до одного спільногоконтролера. Модель IBM AT та комп'ютери більш високого класу можуть матикілька дискових контролерів, два НГМД з різним діаметром (3,5 "і
    5,25 ") і кілька НМД.

    Мабуть, найцікавіша різновид сучасних дисковихнакопичувачів - оптичні, або лазерні. В даний час існуєкілька типів оптичних дискових накопичувачів. Цей пристрій читаннякомпакт-дисків CD-ROM, пристрій для запису CD Recordable, накопичувачі WORM імагнітооптичні накопичувачі.

    Диски CD-ROM (Compact-Disk, Read-Only Memory) - це диски, які засвоїм форматом і технології запису інформації нагадують звукові компакт -диски. Вони мають діаметр 120 мм і можуть містити близько 800 Мбайтінформації. Ця інформація записується один раз і згодом можетільки читатися, як з постійного пристрою, що запам'ятовує.

    Диски CD Recordable зовні дуже схожі на диски CD-ROM, однак здопомогою спеціального пристрою користувач може записати на нього своюінформацію. При необхідності можна на один і той же диск дозапісиватьнові дані. Диск CD Recordable можна прочитати за допомогою звичайногопристрої читання компакт-дисків CD-ROM.

    WORM-диски (Write Once, Read Many) призначені для однократногозапису і багаторазового зчитування даних. Ці диски, як і CD Recordable,найкращим чином підходять для архівного зберігання інформації, наприклад,вмісту великих баз даних.

    Магнитооптичні накопичувачі можуть багаторазово записувати інформаціюна один і той самий носій (як звичайні магнітні диски). Це одні з самихдорогих дискових накопичувачів. Їх продуктивність можна порівняти зпродуктивністю звичайних жорстких дисків.

    Основний недолік лазерних накопичувачів (крім магнітооптичних) --відносно невисоку швидкодію в порівнянні з традиційниминакопичувачами на жорстких дисках. Однак цей недолік поступоводолається.

    Глава 2. Фізичні аспекти роботи з дисками.

    Що ж, власне, представляє з себе диск?

    Дискета (флоппі-диск) - це кругла платівка в квадратному конверті,покрита з двох сторін магнітним матеріалом. Цей матеріал схожий на той,що використовується в магнітних стрічках звичайних побутових магнітофонів, алевідрізняється за деякими характеристиками (наприклад, за формою і ширині петлігістерезіза). Ближче до центру в диску знаходиться маленький отвір,призначене для синхронізації. Коли дискета вставляється у дисковод, зобох сторін (зверху і знизу) до неї притискаються магнітні головки. При цьомунемає ніякого зазору між головками і поверхнею дискети. За допомогоюспеціального крокової двигуна головки можуть переміщатися стрибкоподібновздовж радіуса диска, як би прокреслюючи при обертанні диска концентричнікола. Ці кола називаються доріжками, треками або циліндрами - влітературі можна зустріти різні назви.

    Жорсткий диск складається з декількох жорстких круглих пластинок, покритихмагнітним матеріалом. Платівки обертаються з величезною швидкістю (порядку
    7200 - 14400 оборотів в хвилину) в герметичному корпусі. Біля кожної сторонипластинки розташовується по одній магнітної голівки, але ці голівки нестикаються з диском, а плавають на повітряній подушці в безпосереднійблизькості від його поверхні. Подаючи команди дискового контролера,програма може переміщати блок головок вздовж радіуса диска, переходячи такимчином від одного циліндра до іншого. Переміщаючись уздовж окружності доріжки,магнітна головка може записувати або зчитувати інформацію приблизно так,як це відбувається в побутовому магнітофоні. Запис виконується за бітам, прицьому додається різна службова інформація та інформація для контролюданих.

    Дані записуються не суцільним потоком, а блоками певногорозміру. Ці блоки називаються секторами. Сектор являє собоюнайменший обсяг даних, що записується або прочитуєтьсяконтролером. Для кожного сектора виконується контроль запису або читання.
    Під час запису сектора обчислюється контрольна сума всіх байтів, що знаходяться всекторі, і ця контрольна сума записується на диск у службове область,розташовану після сектора. При читанні ця контрольна сума обчислюєтьсянаново і порівнюється з контрольною сумою, зчитаної з службової області.
    При розбіжності контролер повідомляє програмі про помилку. Доріжкинумеруються починаючи від нульової, головки теж починаючи від нульової, а отсектори - починаючи з першого. Чому так було зроблено - сказати важко, алесаме така нумерація використовується при роботі з контролером диска іфункціями переривання BIOS, що обслуговують дискову підсистему. В операціяхчитання або запису на фізичному рівні необхідно вказувати номер доріжки
    (0, 1, ...), головки (0, 1, ...), номер сектора (1, 2, ...).

    Для правильної роботи з дисками на фізичному рівні програма повиннарозташовувати істотно більшою інформацією про диски, ніж просто номерпотрібної доріжки або головки. Наприклад, вона повинна знати, скільки головок іскільки доріжок має те чи інше дисковий пристрій, скільки байтміститься в одному секторі і багато іншого.

    Глава 3. Робота з дисками на фізичному рівні.

    Перш ніж почати роботу з дисками на фізичному рівні, необхідноз'ясувати конфігурацію дискової системи - скільки дисководів і якого типупідключено до комп'ютера, скільки доріжок і головок є на кожному здисководів і т. д. Спосіб, яким визначається конфігурація дисковоїсистеми, залежить від моделі комп'ютера (PC, XT, AT), тому спочаткузаймемося визначенням типу персонального комп'ютера.

    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, 12hout 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 працює тільки на запис, це порт виводу. З його допомогоюможна вибирати для роботи один з НГМД (одночасно можна працювати тількиз одним НГМД), скидати контролер в початковий стан, дозволяти чизабороняти переривання від контролера і роботу схем прямого доступу до пам'яті,включати або вимикати двигуни НГМД.

    Наведемо призначення окремих біт в порту:
    | Біти | Призначення |
    | 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 | Зарезервовано |


    Наведемо призначення окремих біт порту 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 - це готовністьконтролера до прийому команди.

    Фаза виконання починається після встановлення бітів 6 і 7 байти основногостану в 1. Після завершення команди контролер формує сигнал запитупереривання.

    У фазі результату процесор зчитує стан контролера. Цестан зберігається в декількох внутрішніх регістрах контролера:
    • RS - регістр основного стану;
    • ST0, ST1, ST2, ST3 - регістри додаткового стану.

    Регістр основного стану доступний через порт 3F4h, вмістінших регістрів процесор зчитує після виконання контролеромкоманди через порт даних 3F5h.
    У форматах команд і таблицях, наведених нижче, використовуються наступніпозначення:
    | Позначення | Опис |
    | MT | Двостороння операція |
    | MFM | Подвійна/одинарна щільність запису |
    | SK | Пропуск видалених даних |
    | HDS | Номер головки для двостороннього НГМД |
    | DS1, DS0 | Номер вибираного НГМД |
    | C | Номер циліндра |
    | H | Номер головки для двостороннього НГМД |
    | R | Номер сектора |
    | N | Число байт в секторі |
    | EOT | Номер останнього сектора на доріжці |
    | GPL | Розмір проміжку |
    | DTL | Кількість зчитуються або записуваних байт |
    | SC | Кількість секторів у циліндрі |
    | D | Дані |
    | PCN | Номер циліндра після виконання команди читання стану |
    | | Переривання |
    | SRT | Час кроку, MS |
    | HUT | Час розвантаження голівки |
    | HLT | Час завантаження голівки |
    | ND | Режим переривання |
    | NCN | Номер циліндра після пошуку |


    Наведемо формати всіх команд контролера НГМД.

    . Читання даних
    | Читання даних | C, H, R, N, | ST0, ST1, ST2, C, H, |
    | Читання видалених даних | EOT, EOT, GPL, | R, N |
    | Запис даних | DTL | |
    | Запис видалених даних | | |
    | Читання даних з доріжки | | |
    | Сканування до "одно" | | |
    | Сканування до "менше" або | | |
    | "дорівнює" | | |
    | Сканування до "більше" або | | |
    | "дорівнює" | | |
    | Форматування доріжки | N, SC, GPL, D | ST0, ST1, ST2, C, H, |
    | | | R, N |
    | Читання індексних даних | Відсутні | ST0, ST1, ST2, C, H, |
    | | | R, N |
    | Ініціалізація | Відсутні | Відсутні |
    | Читання стану переривання | Відсутні | ST0, PCN |
    | Визначити параметри | 1 байт: | Відсутні |
    | | Мл. тетрада - | |
    | | HUT | |
    | | Ст. тетрада - | |
    | | SRT | |
    | | 2 байт: | |
    | | Біт 0 - ND | |
    | | Біти 1-7 - HLT | |
    | Читання стану накопичувача | Відсутні | ST3 |
    | Пошук | C | Відсутні |

    Після виконання команди центральний процесор повинен отримати відконтролера байти результату. Серед них - вміст внутрішніх регістрівстану контролера ST0, ST1, ST2, ST3. Опишемо призначення окремих бітцих регістрів.

    Формат регістра ST0:
    | Біти | Назва | Призначення |
    | 1, 0 | US1, US2 | Код НГМД |
    | 2 | HD | Номер голівки |
    | 3 | NC | Встановлюється, якщо НГМД не готовий |
    | | | Виконати команду читання або запису |
    | 4 | EC | Збій обладнання |
    | 5 | SE | Завершено команда "Пошук" |
    | 7, 6 | I, C | Код переривання: |
    | | | 00 - нормальне завершення; |
    | | | 01 - аварійне завершення; |
    | | | 10 - неправильна команда; |
    | | | 11 - немає готовності НГМД |


    Формат регістра ST1:
    | Біти | Назва | Призначення |
    | 0 | MA | Пропуск адресної позначки. Цей біт встановлюється в |
    | | | 1, якщо контролер не може знайти адресну мітку |
    | 1 | NN | Захист запису. Встановлюється, якщо під час виконання |
    | | | Операції контролер отримує від НГМД сигнал захисту |
    | | | Запису |
    | 2 | ND | Сектор не знайдено |
    | 3 | - | Зарезервовано |
    | 4 | OR | Переповнення. Процесор не встигає виконувати обмін |
    | | | Даними з контролером |
    | 5 | DE | Помилка даних під час перевірки контрольної суми |
    | 6 | - | Зарезервовано |
    | 7 | EN | Неіснуючий сектор, встановлюється, коли |
    | | | Контролер намагається прочитати сектор із занадто |
    | | | Великим адресою |


    Формат регістра ST2:
    | Біти | Назва | Призначення |
    | 0 | MD | Пропущений адресний маркер в поле даних |
    | 1 | BC | Доріжка не читається |
    | 2 | SN | Помилка сканування. Встановлюється, якщо |
    | | | При виконанні команди сканування |
    | | | Контролер не може знайти потрібну доріжку |
    | 3 | SH | Сканування виконано, доріжка знайдено |
    | 4 | WC | Помилка адреси доріжки |
    | 5 | DD | Помилка в поле даних |
    | 6 | CM | Під час операції читання або сканування |
    | | | Не виявлено сектор з маркером видалених |
    | | | Даних |
    | 7 | - | Зарезервовано |


    Формат регістра ST3:
    | Біти | Назва | Призначення |
    | 1, 0 | US1, US2 | Код обраного НГМД |
    | 2 | HD | Номер вибраної голівки |
    | 3 | TS | Використовується режим двосторонньої записи |
    | 4 | T0 | Головка встановлена на доріжку 0 |
    | 5 | RDY | НГМД готовий до роботи |
    | 6 | WP | Захист запису на диску |
    | 7 | FT | Несправність НГМД |

    Додатково перед виконанням операції і після її завершення требапроаналізувати вміст описаного вище регістра основного стануконтролера RS.

    Команда "Визначити параметри" задає часи затримки для трьохвнутрішніх таймерів контролера. Перший байт параметрів складається з двохполів - SRT і HUT. Поле SRT задає часовий проміжок між кроковимиімпульсами двигуна переміщення головки. Це поле має ширину 4 біта.
    Поле HUT визначає час розвантаження головки і теж має ширину 4 біта.

    Другий байт параметрів складається з полів HLT і ND. Поле HLT маєширину 7 біт і визначає час завантаження головки. Біт ND призначений длявикористання каналу прямого доступу ПДП - якщо цей біт встановлений у 0, то
    ПДП використовується, інакше обмін даними йде через центральний процесор.

    Параметри для команди "Визначити параметри" найкраще взяти зтаблиці параметрів дискети, яка заповнюється базовою системоювведення/виводу BIOS під час ініціалізації системи. Звичайно, якщо вам потрібнінестандартні параметри, ви можете використовувати свої, орієнтуючись наоригінальні значення з таблиці параметрів дискети.

    Команда "Ініціалізація" може виконуватися одночасно для всіхнакопичувачів. За цією командою голівки переміщаються на нульову доріжку.
    Команда "Пошук" використовується для встановлення головки на потрібну доріжку. Пошукможе виконуватися одночасно для декількох накопичувачів.

    Команда "Читання стану переривання" може вироблятися післязавершення інших команд для з'ясування стану контролера післяпереривання. Цю команду зручно використовувати після команд "Пошук" або
    "Ініціалізація".
    Після надходження команди "Читання даних" завантажується головка, контролерзчитує мітки адреси ідентифікатора ID і поля ID. Контролерпослідовно зчитує номери секторів, і як тільки лічений номерспівпаде із замовленим вами, контролер байт за байтом зчитує дані,розташовані в секторі, і передає їх або центральному процесору, абоканалу прямого доступу до пам'яті. При передачі даних контролер повиненобслуговуватися кожні 27 мкс в режимі одинарною щільності і 13 мкс в режиміподвійної щільності, інакше в регістрі стану ST3 встановлюється прапорпереповнення OR.

    Якщо контролер не може знайти потрібний сектор, то в регістрі ST1встановлюється прапор відсутності даних ND. При помилку читання даних,виявленої схемами надмірного циклічного контролю CRC,встановлюється прапор помилки даних DE.
    При зчитуванні адресної мітки видалених даних в регістрі ST2 і скинутийв 0 бите SK команди прапор CM встановлюється в 1, читаються всі дані зцього сектора, потім виконання команди припиняється.

    Поле команди MT дозволяє задати виконання многодорожечной операції,при якій контролер зчитує дані з обох боків дискети. Поле MFMвизначає щільність оброблюваної інформації: значення 0 відповідаєодинарною щільності, 1 - подвійний.

    Якщо поле команди N містить 0, то поле DTL визначає обсягпереданих даних. Якщо поле N містить відмінне від нуля значення, поле
    DTL ігнорується і повинно містити значення 0FFh.
    Виконання команди "Запис" аналогічно. У режимі запису обмін данимиодинарною щільності і кожні 15 мкс в режимі подвійної щільності.

    За командою "Запис видалених даних" на початку поля даних записуєтьсяадресна мітка видалених даних замість звичайної адресної мітки даних.

    За командою "Читання даних доріжки" зчитуються усі поля даних,кожного сектора доріжки як безперервні блоки даних. За допомогою цієїкоманди можна виконувати многодорожечной операції і пропуски.

    Команда "Читання індексних даних" дозволяє визначити положенняголовки.

    Команда "Форматування доріжки" форматує всю доріжку - на неїзаписуються інтервали, адресні мітки, поля індексних даних і поляданих. Вам не обов'язково мати у своєму розпорядженні сектори в порядку збільшенняномерів, тому що при форматуванні контролер запитує параметри C, H,
    R і N.

    Група команд "Сканування" дозволяє порівнювати дані, що надходятьвід контролера і від центрального процесора. Контролер виконує побайтнопорівняння і шукає сектор, що задовольняє заданій умові. При виконанніумови сканування в регістрі стану ST2 встановлюється прапор SH, вІнакше - прапор SN.

    4.3 Використання команд контролера НГМД.

    Виконавши скидання контролера, вам треба його проініціалізувати, вказавшивсі робочі параметри. Потім можна видавати контролеру команди, кожен разперевіряючи регістр основного стану ST і аналізуючи байти результату
    ST0 ... ST3. Можна запропонувати наступну послідовність дій:
    • скидання контролера видачею у порт 3F2h байти з бітом 2, встановленимв 0;
    • дозвіл роботи контролера видачею у цей же порт байти з бітом 2,встановленимв 1;
    • видача контролеру команди "Ініціалізація";
    • видача контролеру команди "Визначити параметри";
    • включення двигуна і очікування протягом приблизно 0,5 с (часрозгону двигуна);
    • установка головки в потрібне положення командою "Пошук";
    • перевірка результатів установки командою "Читання станупереривання ";
    • для IBM PC/AT установка потрібної швидкості передачі даних видачею упорт 3F7h байт з відповідним значенням: 0 для дискет з високоющільністю запису (HD), 1 для подвійної щільності (DD) і 2 для одинарної
    (SD);
    • якщо установка головок виконана правильно, можна видавати командичитання або запису даних (перед цим треба правильно запрограмуватиконтролер прямого доступу до пам'яті, якщо ви збираєтеся використовувати режим
    ПДП).

    4.4 Трохи про контроллер прямого доступу до пам'яті.

    Наведемо основні відомості, необхідні для того, щоб розібратися впрограмі, яка демонструє використання команд контролера НГМД.
    Контролер прямого доступу до пам'яті (ПДП) має декілька каналів і для IBM
    PC/AT складається з двох мікросхем Intel 8237A (або аналогічних). Контролер
    НГМД використовує канал з номером 2.

    Перед початком ініціалізації контролера ПДП програма повинна надіслати впорти 0Bh і 0Ch код операції, яка буде виконуватися - 46h для операціїчитання і 4Ah для операції запису.

    У процесі ініціалізації програма повинна повідомити контролеру ПДПадреса буфера, куди йому слід помістити дані або звідки треба взятидані, і довжину переданих даних в байтах.

    Адреса необхідно представити у вигляді номера сторінки та зсуву. Дляконтролера ПДП комп'ютера IBM PC/AT використовується 8-бітовий номер сторінкиі 16-бітове зсув. Наприклад, для адреси 23456h номер сторінки будедорівнює 2h, а зсув - 3456h.

    Для програмування каналу 2 контролера ПДП програма повинна спочаткувивести молодший байт зміщення в порт з адресою 04h, потім вивести в цей жепорт старший байт зсуву і, нарешті, вивести байт номера сторінки в портз адресою 81h.

    Довжина переданих даних виводиться аналогічним чином в порт задресою 05h - спочатку молодший байт довжини, потім старший.

    Після визначення режиму роботи каналу, адреса буфера і довжинипереданих даних, програма повинна дозволити роботу контролера ПДП,видавши в порт з адресою 0Ch байт 2. Тепер канал прямого доступу готовий дороботі і буде чекати дані від контролера НГМД.

    Глава 5. Функції BIOS для роботи з дисками.

    Найкращий і найбезпечніший спосіб роботи з дисками на фізичномурівні в середовищі MS-DOS - використання функцій базової системи введення/виводу
    BIOS. Ці функції враховують всі особливості апаратури і надаютьдосить широкий набір засобів доступу до дисків на фізичному рівні.

    Вся дискова підсистема обслуговується перериванням INT 13h. Цепереривання виконує безліч функцій. Для виклику певної функціїпрограма повинна занести її код в регістр AH. При цьому в інші регістрислід записати параметри - номер НМД або НГМД, номер циліндра, головки,адреса таблиць параметрів НМД або НГМД і т. д.

    Наведемо крат

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status