Форумы Modlabs.net: Вендор VooDoo2 - Форумы Modlabs.net

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Вендор VooDoo2

#1 Пользователь офлайн   DOB 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 253
  • Регистрация: 31 Январь 03

Отправлено 14 Февраль 2014 - 00:56

Вот стало интересно, а чем задается вендор на вуудуу2 ??? программно или все же электрическо-механически ?
0

#2 Пользователь офлайн   DOB 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 253
  • Регистрация: 31 Январь 03

Отправлено 14 Март 2014 - 19:19

чего то тишина по этому вопросу
0

#3 Пользователь офлайн   max1024 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Участник клуба Voodoo Masters
  • Сообщений: 514
  • Регистрация: 16 Февраль 03

Отправлено 17 Март 2014 - 17:52

Я думаю программно, в биосе, кто ж будет заморачиваться делать HW идентификацию.
0

#4 Пользователь офлайн   Slaventus86 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 119
  • Регистрация: 25 Апрель 12

Отправлено 17 Март 2014 - 19:10

Возможно, и по Vendor ID с помощью параметра SUBSYS это задается
0

#5 Пользователь офлайн   ps2 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 49
  • Регистрация: 26 Октябрь 06

Отправлено 17 Март 2014 - 20:37

Тоже интересовался этим вопросом.

Просмотр сообщения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.
0

#6 Пользователь офлайн   DOB 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 253
  • Регистрация: 31 Январь 03

Отправлено 18 Март 2014 - 17:56

может перемычек не 16, а 16 комбинаций перемычек ??
0

#7 Пользователь офлайн   ps2 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 49
  • Регистрация: 26 Октябрь 06

Отправлено 18 Март 2014 - 20:32

Исходил из того, что регистр Vendor_ID 16-битный, т.е. комбинаций 65536.
0

#8 Пользователь офлайн   DOB 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 253
  • Регистрация: 31 Январь 03

Отправлено 18 Март 2014 - 22:00

тогда не резисторы и перемычки
0

#9 Пользователь офлайн   dE fENDER 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 271
  • Регистрация: 18 Декабрь 08

Отправлено 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 софт его мог читать без драйвера - опять же легче пропатчить софт, чем возится с ядром системы.

Если интересно, как его можно прочитать в прикладном софте - могу написать алгоритм.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 members, 1 guests, 0 anonymous users