OSDev

для всех
Текущее время: 30 апр 2024, 03:37

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос про MMIO [x86]
СообщениеДобавлено: 19 июл 2012, 15:49 

Зарегистрирован: 19 июл 2012, 15:31
Сообщения: 2
Здравствуйте.

Хочу разобраться с таким зверем, как MMIO. По общему описанию понятно, что это способ общения с устройствами через использование некоторых зарезервированных блоков физического адресного пространства (но без расхода под это собственно ОЗУ). Но некоторые вопросы еще остались неясными:

1. Что/кто и как резервирует эти области, и можно ли их перебиндить на другие адреса?
2. Всеми ли устройствами можно манипулировать через MMIO?
3. Есть ли какой-то флаг или режим, игнорирующий обращение к MMIO для кода ядра, если вдруг произошло обращение по одному из забинденных адресов, чтобы исключить обращение к устройствам для тех участков кода, которым это не требуется?
4. Является ли работа с MMIO линейной? т.е. при каждом ли выполнении одной и той же последовательности команд записи и чтения (с момента чистого ресета компьютера) мы будем получать одинаковый результат? (подразумевается, что на одном и том же компьютере, или при эквивалентных конфигурациях)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос про MMIO [x86]
СообщениеДобавлено: 19 июл 2012, 15:59 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Evgeniy писал(а):
1. Что/кто и как резервирует эти области, и можно ли их перебиндить на другие адреса?


На ПК - BIOS. Можно манипуляциями с чипсетом, но делать так не рекомендую - могут быть неопределенные последствия из-за SMBIOS и прочих резидентных частей биоса.

Evgeniy писал(а):
2. Всеми ли устройствами можно манипулировать через MMIO?

Большинством, не всеми.

Evgeniy писал(а):
3. Есть ли какой-то флаг или режим, игнорирующий обращение к MMIO для кода ядра, если вдруг произошло обращение по одному из забинденных адресов, чтобы исключить обращение к устройствам для тех участков кода, которым это не требуется?

Нет, с точки зрения проца MMIO отличается от памяти только выключенным (с помощью MTRR) кешированием.

Evgeniy писал(а):
4. Является ли работа с MMIO линейной? т.е. при каждом ли выполнении одной и той же последовательности команд записи и чтения (с момента чистого ресета компьютера) мы будем получать одинаковый результат? (подразумевается, что на одном и том же компьютере, или при эквивалентных конфигурациях)

Зависит от устройства, в которому идет обращение. Полагаться на это в общем случае нельзя.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос про MMIO [x86]
СообщениеДобавлено: 19 июл 2012, 16:09 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
1. Что/кто и как резервирует эти области, и можно ли их перебиндить на другие адреса?

Что-Материнка
Кто-BIOS
как- через PCI
Да обычная практика в виду того что расход ОЗУ иногда бывает.

Цитата:
2. Всеми ли устройствами можно манипулировать через MMIO?

Нет. Только PCI и то у тех у которых это реализовано.

3. Нету. Но ты можешь страницами сделать всё что тебе нужно.

4. Да. Даже чтение может изменять значения состояния устройства.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос про MMIO [x86]
СообщениеДобавлено: 19 июл 2012, 16:25 

Зарегистрирован: 19 июл 2012, 15:31
Сообщения: 2
Спасибо за столь оперативные ответы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

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


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

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