OSDev

для всех
Текущее время: 14 дек 2019, 15:58

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




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

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
Спасибо за ответы. Некоторые ссылки и материалы видел.

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

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

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


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

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1401
Прямой доступ много у кого есть, и у всех по-своему -- в соответствии с потребностями устройств. Те же контроллеры USB не кидают же процу прерывание каждый раз, как им надо байт данных принять-передать.


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

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

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


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

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

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

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



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

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


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

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1096
Откуда: Балаково
StasBaybak писал(а):
Читал ее и пользовался исходниками. Но там все через 16 битный режим. Для драйверов не подходит, нужен справочник с подробным описанием всех функций контролера жесткого диска.

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


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

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

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

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


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

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1096
Откуда: Балаково
phantom-84 писал(а):
С жесткими дисками "через 16 битный режим" не работают.

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


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

Зарегистрирован: 04 май 2011, 18:13
Сообщения: 121
Ну да.

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


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

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

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


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

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1204
StasBaybak писал(а):
Ну да.
Этот режим называется реальным.

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


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

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


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

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


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

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