Управление контроллером привода гибкого диска (на примере контроллера I8272A)



© А.Д. Руднев, А.А. Шалыто

Санкт-Петербургский государственный университет информационных технологий, механики и оптики

Проектная документация

Аннотация

В настоящее время только небольшая часть драйверов (в основном драйверы сетевых карт и протоколов) строятся с использованием конечных автоматов. Как показано в настоящей работе, применение автоматов может повысить надёжность и других типов драйверов.

Отметим также, что даже в тех случаях, когда автоматы применяют для описания поведения компонент, обычно отсутствует формальный переход от такого описания к коду программ.

Другим важным фактором, препятствующим созданию надежных драйверов, является практически полное отсутствие какой–либо документации. Сформулируем задачу, решаемую в данной работе.

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

Между пользовательской программой и гибким диском расположен контроллер I8272A, который управляется с помощью базовой системы ввода – вывода BIOS. В работе в учебных целях вместо подпрограмм BIOS, которые не используются, на основе автоматного подхода разрабатывается модуль управления контроллером гибкого диска. Этот модуль осуществляет две основные операции – инициализацию контроллера и чтение сектора данных. Все операции рассчитаны на работу с современной конфигурацией дисководов, которая содержит один привод, читающий двухсторонние диски двойной плотности размером три с половиной дюйма.