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

 
 
 
Reply to this topicStart new topic
> PCI Control Register, о записи в разряды 0 и 1
Санчо
сообщение Dec 5 2006, 22:45
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 30-07-06
Пользователь №: 19 193



Просветите пожалуйста, кто производит запись в регистр CONTROL биты 0 и 1. Я так понимаю, что запись производится при конфигурации, если было обнаружено, что устройство на шине требует н-ое кол-во адресного простр-ва ввода/вывода и ему назначен диапазон адресов (т.е. записан базовый адрес в в соответствующий BAR), то в бит 0 записывается 1. И соответственно для пространства памяти в бит 1 тоже.
Поправьте, если я не так понял. Спасибо.
Go to the top of the page
 
+Quote Post
qwqw
сообщение Dec 6 2006, 00:49
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 192
Регистрация: 23-11-05
Из: г. Москва
Пользователь №: 11 307



Эти биты выставляются устройством, то есть вами.
Запись базовых адресов имеет смысл только если хотя бы один из этих бит = '1'.
Go to the top of the page
 
+Quote Post
Санчо
сообщение Dec 6 2006, 01:14
Сообщение #3





Группа: Новичок
Сообщений: 11
Регистрация: 30-07-06
Пользователь №: 19 193



Тогда как правильно определить, что моему устройству был выделен диапазон адресов: сравнить BAR после записи - если не равен всем единицам или нулям - значит базовый адрес записан?
Go to the top of the page
 
+Quote Post
DeadMoroz
сообщение Dec 6 2006, 02:59
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-02-05
Пользователь №: 2 391



Эти биты устанавливаются системой при конфигурировании базовых адресов.
В Вашем драйвере устройства также стоит проверить базовые адреса на отличие от 0.
Go to the top of the page
 
+Quote Post
Санчо
сообщение Dec 6 2006, 03:21
Сообщение #5





Группа: Новичок
Сообщений: 11
Регистрация: 30-07-06
Пользователь №: 19 193



Мнения разошлись! Может еще какие варианты будут?
И все таки, насколько я понимаю ихний, стандарт гласит (п.6.2.2 PCI Spec 2.2):

For instance, device that do not implement an I/O Space will not implement a writable element at bit location 0 of the Command register. Devices typically power up with all 0's in this register...

Т.е. если устройства обычно стартуют с нулями в этом регистре и при этом требуют адр. пространство, то все таки система должна в них писать единичку?
Go to the top of the page
 
+Quote Post
BSV
сообщение Dec 6 2006, 08:02
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



Единички должна писать система (BIOS). Смысл - разрешение декодирования адресов памяти и ввода вывода после записи в BARы конкретных значений. Но уж железными '1' они быть точно не могут, так как это противоречит спецификации.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
voffka
сообщение Dec 6 2006, 16:18
Сообщение #7





Группа: Новичок
Сообщений: 14
Регистрация: 8-08-06
Пользователь №: 19 409



BSV, полностью с вами согласен.
Добавлю, что если устройство не предполагает работы с каким-либо из этих адресных пространств,то в соотв. бит должен быть заведен 0 (записать 1 нельзя).То есть устройство не воспринимает транзакции в соответствующем адресном пространстве.В то же время это не влияет на генерацию транзакций самим устройством.Например, если биты 0 и 1 Command регистра PCI-PCI бриджа выставлены в 0, то он пропускает транзакции только в одном направлении (Secondary --> Primary).
Go to the top of the page
 
+Quote Post
qwqw
сообщение Dec 6 2006, 18:24
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 192
Регистрация: 23-11-05
Из: г. Москва
Пользователь №: 11 307



Виноват, я поспешил с ответом. В свое оправдание скажу, что на практике это требование оказалось не так критично и жесткое прописывание битов вполне работоспособно (протестировано на многих современных материнках). Но стандарт есть стандарт, признаю ошибку.
Go to the top of the page
 
+Quote Post
DeadMoroz
сообщение Dec 7 2006, 04:16
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-02-05
Пользователь №: 2 391



Ну да, на практике я даже адреса жестко задавал, и работало (но не везде). Как говорится: если нельзя, но очень хочется, то можноsmile.gif
Go to the top of the page
 
+Quote Post
Санчо
сообщение Dec 9 2006, 10:10
Сообщение #10





Группа: Новичок
Сообщений: 11
Регистрация: 30-07-06
Пользователь №: 19 193



Спасибо всем за участие, имхо вопрос исчерпан.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:49
Рейтинг@Mail.ru


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