OSDev

для всех
Текущее время: 18 ноя 2019, 00:13

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




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: DMA 32 bit
СообщениеДобавлено: 17 май 2011, 23:15 

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
Не могу найти как работать с DMA в защищенном режиме! Как, не подскажите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 18 май 2011, 09:44 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1391
Защищённый режим абсолютно никакого отношения к этому не имеет. Просто с приходом шины PCI (и, есно, её продолжателя PCI Express) наконец-то отказались от идиотского контроллера 8237, использовавшегося в древней технике (теперь его аналог в чипсете присутствует лишь "на всякий случай" и "для совместимости", и хоть какая-то польза от него может быть только при работе с гибкими дисками, которые сами уже давно, по большому счёту, умерли). Каждое устройство PCI, потенциально способное обмениваться большими порциями информации (контроллеры дисков, например), само организует прямой доступ к памяти, как то делалось на всех вменяемых машинах ещё полвека назад. Так что изучайте документацию на нужные контроллеры.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 18 май 2011, 17:00 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1094
Откуда: Балаково
StasBaybak писал(а):
Не могу найти как работать с DMA в защищенном режиме! Как, не подскажите.

Практически точно так же, как и в реальном режиме. DMA работает только по физическим адресам.
А что ты делаешь, если не секрет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 18 май 2011, 17:42 

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
Немного не то. Смотрите на заголовок "32 bit".
Есть ядро ОС. Пишу вторичный загрузчик.
DMA работает только с 24 разрядными адресами. это кажись предел в 16МБ не ошибаюсь.
Так вот, нашел исходники для флоппи, но там все реализовано через DMA и под 16-разрядный режим.

Как грузить ОС с флоппи в адреса пямяти выше 64МБ? По байту вытягивать с портов?
Или через шину?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 18 май 2011, 18:11 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1094
Откуда: Балаково
Так он больше не умеет, нет ни каких 32 бит, т.к. устройство очень старое. Со времён PC/AT 286 он не модернизировался.

Можно использовать промежуточный буфер в районе 16М адресов, а затем результат перекопировать в 4Г пространство простым копированием.

Вроде бы у IDE контроллеров есть встроенные DMA, которые 32 битные. Но они только для IDE.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 18 май 2011, 22:05 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1391
Ну так эти контроллеры являются PCI-устройствами (или, как сейчас, PCI Express, но в первом приближении можно считать, что разницы между этими шинами для программиста нет). Посему у них и имеется возможность самостоятельно организовывать прямой доступ к памяти. Соответственно, если нужно читать-писать жёсткий диск или там ДВД -- изучаем документацию на дисковый контроллер. Ну а если флоп -- то только программная пересылка туда, куда нужно (благо, даже полные 2,88 Мбайт, если таковой привод кто-нибудь сможет найти, процессор перешлёт в миллион раз быстрей, чем эти мегабайты будут с флопа прочитаны).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 19 май 2011, 12:59 

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
Немного почитал про ATA и PCI. Как я понял порт DMA контролера вычисляется через контролер жесткого драйва(HDD), потом в PRD заноситься дескриптор адреса в памяти.

Я верно понял?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 19 май 2011, 16:15 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
http://bos.asmhackers.net/- неплохой пример работы с флоппи в защ. режиме. Мне удалось разобраться примерно за месяц. Сейчас конечно не помню подробности. Если знаешь fasm ,конечно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 19 май 2011, 16:52 

Зарегистрирован: 19 май 2011, 14:54
Сообщения: 73
Цитата:
Немного не то. Смотрите на заголовок "32 bit".
Есть ядро ОС. Пишу вторичный загрузчик.
Как грузить ОС с флоппи в адреса пямяти выше 64МБ? По байту вытягивать с портов?
Или через шину?

Вторичный загрузчик для работы с адресами за пределами 1M переходит в т.н. BIG REAL MODE (FLAT). В этом режиме CS:IP обычные 16-ти битные, а в сегментные регистры загружены селекторы, позволяющие адресовать всю память 4G. В этом режиме можно вызывать обычные функции BIOS. Загрузчик, пользуясь BIOS грузит покластерно ядро в память. Потом обычным memcpy() копирует блоки в любой адрес, какой нужно. Именно так реализована загрузка Windows. Так же работает GRUB (Linux, FreeBSD,NetBSD). По загрузке Windows: http://support.microsoft.com/kb/100323/en-us По DMA документация http://www.intel-assembler.it/PORTALE/4 ... 7A_DMA.pdf По FLAT режиму http://en.wikipedia.org/wiki/Unreal_mode , http://www.sudleyplace.com/pmtorm.html


Последний раз редактировалось achesnokov 20 май 2011, 00:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMA 32 bit
СообщениеДобавлено: 19 май 2011, 20:34 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1204
Цитата:
Немного почитал про ATA и PCI. Как я понял порт DMA контролера вычисляется через контролер жесткого драйва(HDD), потом в PRD заноситься дескриптор адреса в памяти.

Я верно понял?
Примерно так. Только "DMA контроллер" - это часть PCI IDE. У других видов устройств свои правила программирования прямого доступа к памяти.

Цитата:
http://bos.asmhackers.net/- неплохой пример работы с флоппи в защ. режиме.
Вообще-то речь о "DMA 32 bit". Флоппик - это пожалуй сейчас тот единственный случай, когда еще нужно использовать логику 8237.


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

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


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

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


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

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