реклама на сайте
подробности

 
 
> Конфигурирование BAR PCI, Назначение базового адреса регистра PCI
GrAlexI
сообщение Dec 28 2011, 08:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 22-06-11
Пользователь №: 65 818



Данный вопрос обсуждался, но возникают непонятки, да и на практике не могу разобраться, как назначается базовые адреса, да и как выделяется диапазон памяти?

Понятно конечно, что при установки младших 4 битов в значение "0000" (которые не изменяются) указываю, что требуется адрес для памяти ввода-вывода и этот адрес должен располагаться где-то в 32-разрядном адресном пространстве. А вот указание требуемого объема памяти, надо что-либо указывать?

Если требуется 64 байта тогда первые 6 бит указывают на мою память, а остальные фиксирована (указывает BIOS). Не надоли как-то указать эти 6 бит - 4 из которых имеют значение "0000" (смотреть выше) и остальные, например, установить в "1", а оставшиеся 26 бит - "0"?

После этого BIOS считывает установленные значения и записывает адрес в PCI устройство. И вот здесь возникает вопрос этот пройдённый адрес от BIOS - указатель на начало адресного пространство, которое необходимо сохранить или PCI устройство должно его как-то обработать?


Сообщение отредактировал GrAlexI - Dec 28 2011, 08:57
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shivers
сообщение Dec 28 2011, 12:22
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(GrAlexI @ Dec 28 2011, 11:54) *
Данный вопрос обсуждался, но возникают непонятки, да и на практике не могу разобраться, как назначается базовые адреса, да и как выделяется диапазон памяти?

Понятно конечно, что при установки младших 4 битов в значение "0000" (которые не изменяются) указываю, что требуется адрес для памяти ввода-вывода и этот адрес должен располагаться где-то в 32-разрядном адресном пространстве. А вот указание требуемого объема памяти, надо что-либо указывать?

Если требуется 64 байта тогда первые 6 бит указывают на мою память, а остальные фиксирована (указывает BIOS). Не надоли как-то указать эти 6 бит - 4 из которых имеют значение "0000" (смотреть выше) и остальные, например, установить в "1", а оставшиеся 26 бит - "0"?

После этого BIOS считывает установленные значения и записывает адрес в PCI устройство. И вот здесь возникает вопрос этот пройдённый адрес от BIOS - указатель на начало адресного пространство, которое необходимо сохранить или PCI устройство должно его как-то обработать?

Я может чтото не понимаю, но в чем собственно проблема?
Биос пишет FFFFFFFF, считывает значение, и по количеству непрописываемых единиц определяет размер памяти для устройства. Потом вычисляет прописывает BAR ... можно работать.
А вот как непрописываемые единицы устроены и сколько их - это зависит от самого устройства. У мостов часто делают специальный регистр маски, которым настраивает размер окна. В зависимости от маски и BAR в писиайном хеадере будет читаться по разному; т.е. размер может быть настраиваемым.
Go to the top of the page
 
+Quote Post



Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 17:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01412 секунд с 7
ELECTRONIX ©2004-2016