|
|
 |
Ответов
|
Oct 28 2016, 13:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
как это делает BIOS, примерно так: перебираются bus, device, function. для каждого из них считываются размеры требуемых для выделения BARов. от адресуемого 32-битного пространства сверху от 4 Гбайт откусывается 512 Мбайт или 1024 Мбайт (зависит от конкретного BIOS) и методом бинарного поиска вычисляются адреса памяти, в которые может поместиться BAR, таким образом, чтобы адрес был кратен размеру BAR-а. если запрашиваемый размер BAR-ов больше чем откушенные BIOS-ом 512 Мбайт или 1024 Мбайт, то в зависимости от реализации BIOS либо всё виснет, либо устройства с большими BAR прокидываются либо ещё как. построенная карта памяти загоняется в соответствующие bus, device, function.
реализация в linux kernel есть.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
Сообщений в этой теме
Zigor PCIe enumeration Oct 27 2016, 11:45 AVR Цитата(Zigor @ Oct 27 2016, 14:45) Добрый... Oct 28 2016, 12:26 Zigor Цитата(krux @ Oct 28 2016, 17:02) как это... Oct 31 2016, 09:25 Andrew Su Цитата(Zigor @ Oct 27 2016, 13:45) Добрый... Oct 30 2016, 07:46 krux Цитатане дает понимания по какому адресу лежит Typ... Oct 31 2016, 14:25 Andrew Su Как "перебирать" Bus numbers, Device Num... Oct 31 2016, 17:08 Zigor Цитата(Andrew Su @ Oct 31 2016, 21:08) Ка... Nov 11 2016, 05:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|