Страница 1 из 1
Вендор VooDoo2
#1
Отправлено 14 Февраль 2014 - 00:56
Вот стало интересно, а чем задается вендор на вуудуу2 ??? программно или все же электрическо-механически ?
#3
Отправлено 17 Март 2014 - 17:52
Я думаю программно, в биосе, кто ж будет заморачиваться делать HW идентификацию.
#5
Отправлено 17 Март 2014 - 20:37
Тоже интересовался этим вопросом.
Так у обычных Voodoo2 нету биоса. Есть только в какой-то версии для мака. Нашёл упоминание "Micro Conversions Game Wizard Mac version". Вот фото обратной стороны карты (см. на чип справа).
В документации "3dfx Voodoo2 Reference Rev. 1.16" с falconfly.de есть такая инфа:
> 6.1 Vendor_ID Register
> The Vendor_ID register is used to identify the manufacturer of the PCI device. This value is assigned by a central
> authority that controls issuance of the values. This register is read only.
> Bit - 7:0
> Description - 3Dfx Interactive Vendor Identification. Default is 0x121a.
Кстати, похоже тут у них опечатка: значение 0x121a в 8 бит они не засунут. Да и сверху страницы в табличке про этот же регистр написано "15:0". Про Device_ID Register рядом тоже написано (рид-онли, дефолтное значение 0x1).
Но это всё программная документация (хоть и низкоуровневая), вот бы распиновку чипов найти.
Вряд ли где-то на плате есть 16 перемычек, т.ч. возможно эта инфа и зашита в чип FBI.
max1024 (17 Март 2014 - 17:52) писал:
Я думаю программно, в биосе, кто ж будет заморачиваться делать HW идентификацию.
Так у обычных Voodoo2 нету биоса. Есть только в какой-то версии для мака. Нашёл упоминание "Micro Conversions Game Wizard Mac version". Вот фото обратной стороны карты (см. на чип справа).
В документации "3dfx Voodoo2 Reference Rev. 1.16" с falconfly.de есть такая инфа:
> 6.1 Vendor_ID Register
> The Vendor_ID register is used to identify the manufacturer of the PCI device. This value is assigned by a central
> authority that controls issuance of the values. This register is read only.
> Bit - 7:0
> Description - 3Dfx Interactive Vendor Identification. Default is 0x121a.
Кстати, похоже тут у них опечатка: значение 0x121a в 8 бит они не засунут. Да и сверху страницы в табличке про этот же регистр написано "15:0". Про Device_ID Register рядом тоже написано (рид-онли, дефолтное значение 0x1).
Но это всё программная документация (хоть и низкоуровневая), вот бы распиновку чипов найти.
Вряд ли где-то на плате есть 16 перемычек, т.ч. возможно эта инфа и зашита в чип FBI.
#7
Отправлено 18 Март 2014 - 20:32
Исходил из того, что регистр Vendor_ID 16-битный, т.е. комбинаций 65536.
#9
Отправлено 23 Март 2014 - 19:56
DOB (14 Февраль 2014 - 00:56) писал:
Вот стало интересно, а чем задается вендор на вуудуу2 ??? программно или все же электрическо-механически ?
С какой-то конкретной целью интересуетесь?
Задание вендора/идентификатора для аппаратного устройства относится к технологии pnp и входит в спецификацию шины pci. Сразу после сброса PCI-устройство должно уметь правильно отвечать на чтение-запись конфигурационных регистров. Реализуется обычно это в виде некоторого конечного автомата и программируется, например, таким кодом (это часть простого конечного автомата для шины PCI на Verilog'е):
module pci(reset,clk,frame,irdy,trdy,devsel,idsel,ad,cbe,par,stop,inta,led_out); ... parameter DEVICE_ID = 16'h9500; parameter VENDOR_ID = 16'h106d; parameter DEVICE_CLASS = 24'hFF0000; parameter DEVICE_REV = 8'h01; parameter SUBSYSTEM_ID = 16'h0001; parameter SUBSYSTEM_VENDOR_ID = 16'hBEBE; parameter ST_CFGREAD = 3'b110; parameter CFGREAD = 4'b1010; ... always @(posedge clk) begin if (~reset) begin ... end else begin case (state) ... ST_CFGREAD: begin enable <= EN_RD; if (~irdy || trdy) begin case (address) 0: data <= { DEVICE_ID, VENDOR_ID }; 1: data <= { 5'b0, DEVSEL_TIMING, 9'b0, 14'b0, memen, 1'b0}; 2: data <= { DEVICE_CLASS, DEVICE_REV }; 4: data <= { 12'b0, baseaddr, 8'b0, 4'b0010 }; 11: data <= {SUBSYSTEM_ID, SUBSYSTEM_VENDOR_ID }; 16: data <= { 24'b0, baseaddr }; default: data <= 'h00000000; endcase address <= address + 1; end ... end ... endcase end end endmodule
Пока его разработчики отлаживают на ПЛИС - это программный код, зашивающийся на флешку или сразу в ПЛИС (в этом случае он будет оставаться в ней до хардресета/отключения питания). Потом этот исходник отправляют китайцам на завод. Там они компилируют его своим компилятором Verilog'а, который принципиально отличается от плисовского, и по окончанию процесса получают фотомаски для ASIC-микросхемы. В них идентификаторы уже получаются аппаратно зашитыми в чип и изменить их простыми методами уже невозможно.
Хотя ничего не мешает делать эти коды перезаписываемыми, но практического смысла на релизном устройстве от этого никакого нет, поведение системы окажется неопределенным, если устройство будет менять свой идентификатор после сброса. Некоторые серверные мат. платы даже снимают питание с PCI-устройств, которые не успели инициализироваться за некоторый промежуток времени, хотя в стандарте этот промежуток оговорен только для PCI-express устройств (0.1 секунды).
Если интересует подмена - то подменить его проще всего в софте. Драйверы для 32-битных систем не требуют подписи, и большинство нормальных драйверов не содержат его в хардкоде, а находится он записанным обычным текстом в inf-файлах. Если он все-таки захардкоден в драйвере - ищем дизассемблером, заменяем, затем у драйвера надо будет пересчитать контрольную сумму.
Если хотим, чтобы он отображался другим в свойствах системы для NT начиная с 2000 и выше - это реально сложный путь, нужно писать драйвер-фильтр шины. В Win9x софт его мог читать без драйвера - опять же легче пропатчить софт, чем возится с ядром системы.
Если интересно, как его можно прочитать в прикладном софте - могу написать алгоритм.
Поделиться темой:
Страница 1 из 1