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

 
 
> Boot ROM на сетевой карточке RTL8139D, как же это работает ?
Demeny
сообщение Aug 11 2008, 14:26
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Смотрел даташиты на котроллеры PCI-Ethernet от Realtek. Заметил интересную особенность, например, на чипе RTL8139B микросхема Boot ROM подключена "нормальным образом", то есть линии адреса A0-A16 и данных D0-D7 ROM (а заодно и RD/WR# и CS/OE#) подключены к отдельным выводам RTL8139B. Как это работает, мне понятно - RTL8139B декодирует адрес из диапазона ROM на шине PCI, далее выставляет соотв. адрес на ROM, OE#=0, получает данные от ROM и выставляет их на PCI. Всё логично.
Теперь смотрим RTL8139D - там нет выделенных линий на линии адреса и данных ROM, эти линии расшарены с линиями PCI интерфейса, а именно A0-A16 (ROM) объединены с AD0-AD16 (PCI) , а линии данных D0-D7 (ROM) объединены с AD24-AD31 (PCI). Выделенной линией для Boot ROM осталасть только ROMCS/OEB.
Мне непонятно, как осуществляется доступ к ROM в этом случае ? Как чип RTL8139D "ухитряется" считать данные из ROM прямо по линиям PCI ? Ведь ROM микросхема может оказаться достаточно медленной на чтение (порядка 70 нс).


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
rezident
сообщение Aug 11 2008, 14:52
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Demeny @ Aug 11 2008, 20:26) *
Мне непонятно, как осуществляется доступ к ROM в этом случае ? Как чип RTL8139D "ухитряется" считать данные из ROM прямо по линиям PCI ? Ведь ROM микросхема может оказаться достаточно медленной на чтение (порядка 70 нс).
Читает данные из BOOTROM вовсе не чип сетевой карты, а основной процессор после прохождения POST-программы основного BIOS. После успешного прохождения POST сканируются адреса из выделенного для BIOS внешних устройств диапазона. При обнаружении определенной сигнатуры (я уже запамятовал ее, что-то типа 0x55AA) определяется смещение адреса этого BIOS и ему передается управление.
В Википедии кое-что есть на эту тему.
Go to the top of the page
 
+Quote Post
Demeny
сообщение Aug 11 2008, 18:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(rezident @ Aug 11 2008, 18:52) *
Читает данные из BOOTROM вовсе не чип сетевой карты, а основной процессор после прохождения POST-программы основного BIOS. После успешного прохождения POST сканируются адреса из выделенного для BIOS внешних устройств диапазона. При обнаружении определенной сигнатуры (я уже запамятовал ее, что-то типа 0x55AA) определяется смещение адреса этого BIOS и ему передается управление.

То, что Вы описали, справедливо для ISA-устройств. На картах PCI по-другому - в конфигурационном пространстве есть регистр базового адреса Boot ROM, в него в процессе PnP записывается 32-битный адрес, на который маппится Boot ROM (аналогично BAR-регистрам). Декодирование этого адреса осуществляет PCI-контроллер, и возвращает при чтении данные из ROM. А дальше - проверяется сигнатура, передаётся управление и т. п.
Вопрос в другом - как удаётся совместить линии PCI AD[0]-AD[31] и линии адреса и данных ROM ?


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 11 2008, 23:27
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Demeny @ Aug 12 2008, 00:21) *
Вопрос в другом - как удаётся совместить линии PCI AD[0]-AD[31] и линии адреса и данных ROM ?
А какая принципиальная разница будет ли ретранслировать данные контроллер PCI или они будут выдаваться непосредственно м/с ROM, дешифрация которой осуществляется контроллером PCI?
Go to the top of the page
 
+Quote Post
Demeny
сообщение Aug 15 2008, 06:53
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(rezident @ Aug 12 2008, 03:27) *
А какая принципиальная разница будет ли ретранслировать данные контроллер PCI или они будут выдаваться непосредственно м/с ROM, дешифрация которой осуществляется контроллером PCI?

Поскольку адрес на PCI-карту всегда приходит с двумя нулевыми младшими битами (32-bit alignment), а нужный байт выбирается с помощью C/BE0-3 , то выставленный адрес нельзя использовать непосредственно для выборки данных из ROM, иначе мы будем получать только каждый четвёртый байт sad.gif
Отсюда вывод - PCI-контроллер сначала сам декодирует адрес, используя в т. ч. линии C/BE0-3, после этого уже обращается в ROM с нужным адресом. И даже если микросхема ROM очень медленная - контроллер PCI не завершает транзакцию до тех пор, пока не получит данные от ROM. Наверное, так.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post

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

 


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


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