OSDev
http://www.osdev.ru/

DMA 32 bit
http://www.osdev.ru/viewtopic.php?f=6&t=416
Страница 2 из 3

Автор:  JSON [ 20 май 2011, 19:01 ]
Заголовок сообщения:  Re: DMA 32 bit

Спасибо за ответы. Некоторые ссылки и материалы видел.

Особенно вдохновил ответ про использование чуть более современный HDD для загрузки ОС.
Вообщем я так и поступил. Дискеты использовать удобно и быстро. Но я нашел компромисс - создал RAW HDD образ на 1,4 МБ и записал те же параметры - количество головок, цилиндров и секторов на трек. Поменять только номер устройства, и биос грузит загрузчик по тому же адрессу.

Еще почитал и вник в программирование контроллера винчестера и понял, что моя идея вполне осуществима. Но смущает то, что адресс порта не всегда стандартный. На одном компе нормально, а на другом даже не запустится мотор привода магнитных пластин. Без недостатков не обходиться.

Вообщем, тему можно закрыть, но если есть еще DMA в устройствах то можно обсудить. :)))

Автор:  SII [ 20 май 2011, 20:17 ]
Заголовок сообщения:  Re: DMA 32 bit

Прямой доступ много у кого есть, и у всех по-своему -- в соответствии с потребностями устройств. Те же контроллеры USB не кидают же процу прерывание каждый раз, как им надо байт данных принять-передать.

Автор:  Himik [ 21 май 2011, 02:50 ]
Заголовок сообщения:  Re: DMA 32 bit

StasBaybak, В общем-то у стандартных контроллеров IDE стандартные номера портов. Просто современные контроллеры уже работают по другим стандартам, это как-то выясняется через PCI. Я знаю специалиста по этим делам, попробуй с ним связаться. На форумах он бывает под именем Shm, но на каком сейчас он форуме общается я не знаю, спроси его по icq 625184622

Есть ещё книга
Кулаков. "Программирование дисковых подсистем" http://narod.ru/disk/6064476000/disksubsys.zip.html

Автор:  JSON [ 21 май 2011, 14:13 ]
Заголовок сообщения:  Re: DMA 32 bit

Himik писал(а):
StasBaybak, В общем-то у стандартных контроллеров IDE стандартные номера портов. Просто современные контроллеры уже работают по другим стандартам, это как-то выясняется через PCI. Я знаю специалиста по этим делам, попробуй с ним связаться. На форумах он бывает под именем Shm, но на каком сейчас он форуме общается я не знаю, спроси его по icq 625184622

О, замечательно.
Цитата:
Есть ещё книга
Кулаков. "Программирование дисковых подсистем" http://narod.ru/disk/6064476000/disksubsys.zip.html

Читал ее и пользовался исходниками. Но там все через 16 битный режим. Для драйверов не подходит, нужен справочник с подробным описанием всех функций контролера жесткого диска.



Я разобрался со вторичным загрузчиком. Грузит всю ОС в нужные мне адреса. И передает управление ядру. Специальная часть ядра сделана для инициализации серверов, драйверов, записывая в них стартовые данные. И после выхода из этой функции, все компоненты работают так, как будто их только что загрузили. То есть ядро подготавливает таблицы процессов и задач.

Спасибо, achesnokov. Я реализовал через Unreal Mode. Это дает возможность быстро загрузить всю ОС средствами BIOS.
Не нужно дополнительно писать драйвер для загрузчика или для ядра.

Автор:  Himik [ 21 май 2011, 14:54 ]
Заголовок сообщения:  Re: DMA 32 bit

StasBaybak писал(а):
Читал ее и пользовался исходниками. Но там все через 16 битный режим. Для драйверов не подходит, нужен справочник с подробным описанием всех функций контролера жесткого диска.

Есть ещё описание работы дисков через DMA в книге
Владимир Кулаков "Программирование на аппаратном уровне" 2-е издание, страница 588 и далее. У меня только бумажная версия.

Автор:  phantom-84 [ 21 май 2011, 16:55 ]
Заголовок сообщения:  Re: DMA 32 bit

StasBaybak писал(а):
Еще почитал и вник в программирование контроллера винчестера и понял, что моя идея вполне осуществима. Но смущает то, что адресс порта не всегда стандартный. На одном компе нормально, а на другом даже не запустится мотор привода магнитных пластин. Без недостатков не обходиться.
"Не всегда стандартный" адрес стандартизирован. См. "PCI IDE в естественном режиме". Вот небольшая подборка тем, где это обсуждалось (на названия тем не обращай внимания - до программирования SATA в AHCI-режиме нигде дело так и не дошло):

Взаимодействие с винтом через SATA
Поиск портов SATA Диска

StasBaybak писал(а):
Читал ее и пользовался исходниками. Но там все через 16 битный режим. Для драйверов не подходит, нужен справочник с подробным описанием всех функций контролера жесткого диска.
Плохо читал. С жесткими дисками "через 16 битный режим" не работают. Либо PIO, либо "DMA 32 bit" (на самом деле существует множество различных DMA-режимов. Нужный режим выбирается спец. командой. Или используется режим, установленный BIOS).

Автор:  Himik [ 21 май 2011, 17:35 ]
Заголовок сообщения:  Re: DMA 32 bit

phantom-84 писал(а):
С жесткими дисками "через 16 битный режим" не работают.

Кажется, StasBaybak не нравятся примеры для 16 битного режима процессора. StasBaybak, тут надо понимать, что устройства работают независтмо от процессора, и им без разницы режим процессора. Кстати, процессор даже в 16-битном режиме умеет работать с 32-битными данными, точно так же, как в 32-битном режиме.

Автор:  JSON [ 21 май 2011, 18:03 ]
Заголовок сообщения:  Re: DMA 32 bit

Ну да.

Но Big Real Mode - рулит. :)

Автор:  SII [ 21 май 2011, 18:08 ]
Заголовок сообщения:  Re: DMA 32 bit

Кстати говоря, этот режим, как его ни называй, является, по сути, 16-разрядным реальным, и адресация памяти через дополнительные сегментные регистры за пределами младшего мегабайта становится возможной только благодаря тому, что процессор "понимает" префиксы изменения разрядности не только в защищённом, но и в реальном режимах. А вот 64-разрядные данные и адреса нельзя использовать не только в реальном, но и в 32-разрядном защищённом режимах, а только в 64-разрядном...

А насчёт работы устройств правильно заметили. Контроллерам глубоко плевать, в каком режиме работает процессор, они об этом понятия не имеют вообще. Более того, технически нет никаких проблем с использованием ПКшных контроллеров с процессорами совершенно других архитектур -- лишь бы на уровне электроники удалось обеспечить их согласование.

Автор:  phantom-84 [ 21 май 2011, 18:49 ]
Заголовок сообщения:  Re: DMA 32 bit

StasBaybak писал(а):
Ну да.
Этот режим называется реальным.

SII писал(а):
Кстати говоря, этот режим, как его ни называй, является, по сути, 16-разрядным реальным, и адресация памяти через дополнительные сегментные регистры за пределами младшего мегабайта становится возможной только благодаря тому, что процессор "понимает" префиксы изменения разрядности не только в защищённом, но и в реальном режимах.
На самом деле этого недостаточно для доступа к памяти за пределами первого мега (точнее 1 мб 65520 байт). Признаком "нереального" (или по-другому "большого реального") режима является увеличенный лимит (больше 65536 байт) хотя бы в одном теневом сегментном регистре.

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/