OSDev http://osdev.su/ |
|
Вопрос про MMIO [x86] http://osdev.su/viewtopic.php?f=5&t=602 |
Страница 1 из 1 |
Автор: | Evgeniy [ 19 июл 2012, 15:49 ] |
Заголовок сообщения: | Вопрос про MMIO [x86] |
Здравствуйте. Хочу разобраться с таким зверем, как MMIO. По общему описанию понятно, что это способ общения с устройствами через использование некоторых зарезервированных блоков физического адресного пространства (но без расхода под это собственно ОЗУ). Но некоторые вопросы еще остались неясными: 1. Что/кто и как резервирует эти области, и можно ли их перебиндить на другие адреса? 2. Всеми ли устройствами можно манипулировать через MMIO? 3. Есть ли какой-то флаг или режим, игнорирующий обращение к MMIO для кода ядра, если вдруг произошло обращение по одному из забинденных адресов, чтобы исключить обращение к устройствам для тех участков кода, которым это не требуется? 4. Является ли работа с MMIO линейной? т.е. при каждом ли выполнении одной и той же последовательности команд записи и чтения (с момента чистого ресета компьютера) мы будем получать одинаковый результат? (подразумевается, что на одном и том же компьютере, или при эквивалентных конфигурациях) |
Автор: | grindars [ 19 июл 2012, 15:59 ] |
Заголовок сообщения: | Re: Вопрос про MMIO [x86] |
Evgeniy писал(а): 1. Что/кто и как резервирует эти области, и можно ли их перебиндить на другие адреса? На ПК - BIOS. Можно манипуляциями с чипсетом, но делать так не рекомендую - могут быть неопределенные последствия из-за SMBIOS и прочих резидентных частей биоса. Evgeniy писал(а): 2. Всеми ли устройствами можно манипулировать через MMIO? Большинством, не всеми. Evgeniy писал(а): 3. Есть ли какой-то флаг или режим, игнорирующий обращение к MMIO для кода ядра, если вдруг произошло обращение по одному из забинденных адресов, чтобы исключить обращение к устройствам для тех участков кода, которым это не требуется? Нет, с точки зрения проца MMIO отличается от памяти только выключенным (с помощью MTRR) кешированием. Evgeniy писал(а): 4. Является ли работа с MMIO линейной? т.е. при каждом ли выполнении одной и той же последовательности команд записи и чтения (с момента чистого ресета компьютера) мы будем получать одинаковый результат? (подразумевается, что на одном и том же компьютере, или при эквивалентных конфигурациях) Зависит от устройства, в которому идет обращение. Полагаться на это в общем случае нельзя. |
Автор: | pavia [ 19 июл 2012, 16:09 ] |
Заголовок сообщения: | Re: Вопрос про MMIO [x86] |
Цитата: 1. Что/кто и как резервирует эти области, и можно ли их перебиндить на другие адреса? Что-Материнка Кто-BIOS как- через PCI Да обычная практика в виду того что расход ОЗУ иногда бывает. Цитата: 2. Всеми ли устройствами можно манипулировать через MMIO? Нет. Только PCI и то у тех у которых это реализовано. 3. Нету. Но ты можешь страницами сделать всё что тебе нужно. 4. Да. Даже чтение может изменять значения состояния устройства. |
Автор: | Evgeniy [ 19 июл 2012, 16:25 ] |
Заголовок сообщения: | Re: Вопрос про MMIO [x86] |
Спасибо за столь оперативные ответы. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |