Написание собственных драйверов устройств для Windows может оказаться задачей не из легких, а кроме того ошибки допущенные при написании драйвера с легкостью могут привести к порче данных на диске компьютера и к подвисанию системы. Поэтому во всяком случае для того, чтобы начать писать программы, работающие напрямую с устройствами FireWire разумно использовать специальные системные библиотеки, позволяющие пользовательскому процессу, находящимуся вне ядра ОС использовать соответствующие API. Одной из операционных систем, предоставляющих такую возможность является Linux, где с помощью системной библиотеки Hbrawl394 можно без риска нарушить целостность ядра во время работы использовать все доступные функции шины FireWire.
Фактичекси работа программы с устройствами сводится к следующему: 1 .получение через интерфейс управления шиной необходимой информации об устройствах (тип устройств, максимальная скорость передачи, топология подключения к шине, нахождение менеджера изохронных ресурсов, проверка наличия достаточных по мощности источников питания и.т.п.)
2. через интерфейс управления шиной выделяются каналы и настраиваются для изохронной передачи, предоставляются сервисы доступные другим устройствам и выполняются
прочие действия по настройке шины. 3. происходит обмен данными с выбранным устройством при помощи асинхронных операций чтения/записи по виртуальным адресам, находящимся в устройстве, а так же получение и прием данных через выделенные ранее изохронные каналы.
Каждое устройство представлено областью памяти 256Т6 в конце которой по адресу OxFFFF'FOOO'0000 находится область занимающая 256 мегабайт и называемая CSR-регистрами, при помощи операций асинхронного чтения записи в эти регистры происходит вся процедура управления каждым из устройств. Структура CSR определена специальным стандартом ISO/IEC-13213, нас будет интересовать группа регистров, являющихся обязательными для Fire Wire устройств. Стандарт ШЕЕ 1394 определяет лишь часть этих регистров.
рисунок "карты памяти" устройства
