OSDev

для всех
Текущее время: 29 апр 2024, 16:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Программирование floppy
СообщениеДобавлено: 03 окт 2007, 13:58 

Зарегистрирован: 19 сен 2007, 12:48
Сообщения: 15
Подскажите, можно считывать и записывать данные в floppy без использования DMA?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 03 окт 2007, 23:14 

Зарегистрирован: 08 май 2007, 07:25
Сообщения: 22
Serg79
Кулаков "Программирование дисковых подсистем".
Но ИМХО без DMA это гемморой, можешь посмотреть исходники Колибри ОС.
http://www.kolibrios.org/?p=Download
Я сам дорабатывал процедуры из процедур Кулакова.
Правда, если ты не знаешь асм, то можешь не смотреть. :mrgreen:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 05 окт 2007, 07:43 

Зарегистрирован: 19 сен 2007, 12:48
Сообщения: 15
Цитата:
<!-- m --><a class=\"postlink\" href=\"http://www.kolibrios.org/?p=Download\">http://www.kolibrios.org/?p=Download</a><!-- m -->
//Mario79
Посмотрел, но там также используется DMA. С использованием DMA, я уже запустил код считывающий и записывающий данные.
Цитата:
Кулаков "Программирование дисковых подсистем".
Про эту книгу очень много хорошего слышал, но найти ее нигде не могу. Может кто знает, где можно скачать ее в электронном ввиде (google, yandex, rambler и т.д. не помогли мне). А в магазинах ее уже очень давно нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 05 окт 2007, 11:57 

Зарегистрирован: 08 май 2007, 07:25
Сообщения: 22
Serg79
К сожалению в электронном виде есть только:
В. Кулаков. Программирование на аппаратном уровне
http://www.pcports.ru/files/lib/kulakov.rar
В ней дан лишь сокращенный материал, не описыающий прямую работу с Floppy.

А по второй книге можно скачать только исходники примеров:
http://www.piter.com/books/download/
В общем там исходники примеров для обеих книг.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 18 окт 2007, 07:31 

Зарегистрирован: 19 сен 2007, 12:48
Сообщения: 15
Подскажите, как грамотно определять драйвером отсутствие дискеты в флоповике.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 18 окт 2007, 10:26 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Даешь какую-либо команду и анализируешь результат.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 18 окт 2007, 16:51 

Зарегистрирован: 08 май 2007, 07:25
Сообщения: 22
Serg79
Ты практически не сможешь различить разницу между отсутствием дискеты и наличием полностью сбойной дискеты. Судить можно только по косвенному признаку - вернется ошибка. Да и не требуется обычно определять наличие дискеты - ОС возвращает код ошибки (Access denied) и все.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 29 окт 2007, 12:44 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Цитата:
Подскажите, можно считывать и записывать данные в floppy без использования DMA?
//Serg79 3.10.2007, 14:58

Хмм... А в чём, собственно, проблема-то? Контроллер поддерживает как DMA, так и программную передачу данных (по прерываниям или путём опроса готовности -- это уж как программисту заблагорассудится). Причём программная передача может даже оказаться предпочтительней, поскольку FDC подключён к древнему контроллеру DMA и не может поэтому обращаться к любой области физической памяти (устройства PCI осуществляют DMA уже самостоятельно, без использования контроллера, поэтому им доступна вся память).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 29 окт 2007, 13:05 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Дело в том, что без DMA придется читать/записывать данные побайтово. Кроме того, флоппик сам по себе очень медленное устройство, так что какой бы контроллер DMA не использовался, он не будет уменьшать скорость передачи данных при взаимодействии с флоппиком.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование floppy
СообщениеДобавлено: 29 окт 2007, 13:54 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Цитата:
Дело в том, что без DMA придется читать/записывать данные побайтово. Кроме того, флоппик сам по себе очень медленное устройство, так что какой бы контроллер DMA не использовался, он не будет уменьшать скорость передачи данных при взаимодействии с флоппиком.
//Phantom-84 29.10.2007, 14:05

DMA действительно уменьшать скорость обмена не будет -- как и увеличивать, поскольку она ограничена приводом, а отнюдь не памятью, шиной, процессором и т.п. Но в чём загвоздка-то? Если речь идёт о загрузке системы, то там абсолютно без разницы, программно производится чтение или с использованием DMA -- система грузиться быстрее не станет. Если же подразумевается работа с флопиком в уже загруженной системе, то DMA на первый взгляд имеет определённые преимущества: пока идёт обмен данными, процессор свободен для другой работы. Однако не следует забывать, что после чтения (или перед записью) придётся, скорее всего, осуществлять перемещение содержимого буфера из его реального местоположения в памяти куда-то в нижнюю память, куда может дотянуться допотопный контроллер DMA 8237 -- а это затраты времени процессора, поскольку пересылать информацию придётся ему (и что обидно, при этом будет впустую гробиться часть кэша процессора). В то же время ничто не мешает реализовать обмен с флопиком по прерываниям, что будет, конечно, подтормаживать работу других задач (процессору придётся отвлекаться на обслуживание прерывания для передачи каждого байта), однако при этом можно избежать лишней пересылки данных из памяти в память -- достаточно обработчику прерывания указать, по какому адресу буфер находится (естественно, при этом нельзя изменять отображение этой страницы памяти, т.е. она должна быть закреплена, но никаких принципиальных сложностей при этом не возникает -- собственно, то же самое приходится проделывать и при использовании DMA). Получаются только накладные расходы на переключение контекста процессора, но если не раздувать обработчик прерывания (в частности, выполнять его в контексте текущей задачи), они будут не слишком высоки. Какой подход окажется выгоднее -- сказать не берусь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB