IMHO интерфейс FWH должен быть. Как вариант - универсалка LPC/FWH.
8 Mbit fwh флешки в руках нет. Есть только 4 Mbit. Можно ли как-нибудь исхитриться затолкать прошивку на то, что есть? Убедиться, что материнка хоть какие-то признаки жизни подает.
IMHO можно попробовать залить старшую половину и смотреть/слушать, что скажет bootblock :).
Залил старшую половину - материнка отозвалась! Бутблок выполняется. Посткоды бегут. Пауза на 0d с писком - "не нашла vga биос", останавливается на post 41 и обращается к флопику за прошивкой.
8Мбит флешки в пределах видимости нет. Можно ли как-нибудь перепаковать биос в 4 Мбит?
CBROM195.exe V1.95 [12/14/07] (C)Phoenix Technologies 2001-2007
******** DSG43169.BIN BIOS component ********
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K)14064h(80.10K)DSG43169.BIN
1. XGROUP CODE 0FF60h(63.84K)0ADD5h(43.46K)awardext.rom
2. ACPI table 0473Dh(17.81K)019AEh(6.42K)ACPITBL.BIN
3. YGROUP ROM 0BDF0h(47.48K)05292h(20.64K)awardeyt.rom
4. GROUP ROM[ 0] 05930h(22.30K)02828h(10.04K)_EN_CODE.BIN
5. SETUP0 01C40h(7.06K)00B8Dh(2.89K)_ITEM.BIN
6. PCI ROM[A] 1A400h(105.00K)13BB4h(78.93K)ADDON.ROM\7901B_HR.ROM
7. PCI ROM[B] 0EC00h(59.00K)0916Dh(36.36K)ADDON.ROM\raid562.bin
8. PCI ROM[C] 0CE00h(51.50K)07D72h(31.36K)ADDON.ROM\BA1228L2.LOM
9. PCI ROM[D] 0CE00h(51.50K)07D8Ch(31.39K)ADDON.ROM\BA1230L2.LOM
10. GV3 01A2Dh(6.54K)00B4Ch(2.82K)PPMINIT.ROM
11. OSB LOGO ROM 4B30Ch(300.76K)011BCh(4.43K)LOGO\SMLOGO.BMP
12. OSB BMP ROM 03476h(13.12K)007BBh(1.93K)LOGO\64N8IIP.BMP
13. OSB BMP1 ROM 0345Dh(13.09K)008D3h(2.21K)LOGO\64N8P4P.BMP
14. OSB BMP2 ROM 0345Dh(13.09K)008DCh(2.21K)LOGO\64N8P4HT.BMP
15. OSB BMP3 ROM 04286h(16.63K)00A67h(2.60K)LOGO\64N8P4E.BMP
16. OSB BMP4 ROM 04286h(16.63K)00B61h(2.84K)LOGO\64N8P4HE.BMP
17. OSB BMP5 ROM 0345Dh(13.09K)006AAh(1.67K)LOGO\64N8PDP.BMP
18. OSB BMP6 ROM 0345Dh(13.09K)00932h(2.30K)LOGO\64N8PDE.BMP
19. Flash ROM 0BB2Ch(46.79K)06621h(25.53K)ADDON.ROM\AWDFLASH.EXE
20. RPB ROM 029EAh(10.48K)01F8Fh(7.89K)ADDON.ROM\rpb_c.rom
(SP) NCPUCODE 0E400h(57.00K)0E400h(57.00K)NCPUCODE.BIN
Total compress code space = C9000h(804.00K)
Total compressed code size = 71C33h(455.05K)
Remain compress code space = 573EDh(348.98K)
** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
------------------+--------------------+--------------------+-------------------
PGA478 2E 0F29| PGA478 09 0F65| SLOT1 04 0F64| PGA478 0F 0F62
PGA478 07 0F61| SLOT1 05 0F60| SLOT1 03 0F49| SLOT1 06 0F44
SLOT1 05 0F43| SLOT1 17 0F41| SLOT1 02 0F37| SLOT1 17 0F34
SLOT1 08 0F34| SLOT1 03 0F47| SLOT1 03 0F4A| PGA423 2C 0F25
SLOT1 0C 0F33| SLOT1 0A 0F32| SLOT1 05 0F31| PGA478 12 0F30
[off]IMHO попробовать можно, но перепаковывать придется руками.[/off]
pci rom a - adaptec scsi; pci rom c, d - pxe; awdflash - если их выкинуть, то в 512k влезает вроде как.
Попробовл их изъять cbrom'ом, получил посреди биоса сплошной кусок FF, как раз 512k+ размером. Вырезал.
Удивился, обнаружив, что cbrom32v195 извлеченные модули еще и распаковывает.
Результат открывается в modbin'e, на вид корректно. Сохранил, чексумму поправить.
Зашил. Поведение материнки не изменилось. Или я что-то делаю не так, или-или...
Скорее всего проблема возникает в процессе копирования из ПЗУ и распаковки в ОЗУ, т.к. обычно начальный адрес копируемого участка IMHO задается константой в bootblock'е. Т.е. возможно придется искать это место в bootblock'е.
Поскольку я не особо интересовался деталями работы bootblock'а, то могу и ошибаться :).
В случае достаточного количества места - переделать с большой долей вероятности можно. Особенно если вышеупомянутые модули сетевух-рэйдов сотоварищи не нужны.
п.с. Не забывайте указывать (прямую) ссылку на BIOS, чтобы проще было другим интересующимся и желающим помочь.
Ссылка на оригинальный биос:
http://www.supermicro.com/about/policies/disclaimer.cfm?url=/support/resources/getfile.aspx?ID=542
Поиском по команде пересылки цепочек нашел такой кусок кода (вызывается после выдачи POST C3):
sub_FFC65:
push 2000h ; segment
call near ptr sub_F61F0 ; call near, but ret far
; --> 2000:xxxx
mov esi, 0
jnz short loc_FFC79
mov esi, 0FFF00000h
loc_FFC79:
movzx ecx, cx
shl ecx, 4
or esi, ecx
cld
mov ax, cs ; unreal mode on
mov ds, ax
lgdt qword ptr ds:0FBF6h
mov eax, cr0
or al, 1
mov cr0, eax
jmp short $+2
mov ax, 8
mov ds, ax
mov es, ax
and esi, 0FFF00000h ; all flash ROM, if 8 Mbit
mov edi, 300000h
mov ecx, 40000h ; 8 Mbit
rep movs dword ptr es:[edi], dword ptr [esi]
mov eax, cr0 ; unreal mode off
and al, 0FEh
mov cr0, eax
jmp short $+2
push 2000h ; segment
call near ptr sub_F61F6 ; call near, but ret far
; --> 2000:xxxx
call sub_FE5CC ; search '*BBSS*'
mov si, [si]
and si, 0FFF0h
push si
mov bx, [si+0Ah]
and bx, 0FFF0h
pop ax
add ax, bx
and ax, 0F000h
add ax, 0FFEh
push ax
call sub_FE705 ; unreal mode on
pop ax
mov esi, 300000h
mov ecx, 0E0000h
add ecx, esi
loc_FFCF2:
mov ebx, [esi]
and ebx, 0FFFFFFh
cmp ebx, 686C2Dh ; search '-lh'
jz short loc_FFD0A
inc esi
jmp short loc_FFCF2
loc_FFD0A:
sub esi, 2
add cx, ax
sub ecx, esi
xor ah, ah
loc_FFD15:
lods byte ptr [esi]
add ah, al ; checksum
loopd loc_FFD15
mov al, [esi]
push ax
call sub_FE720 ; unreal mode off
pop ax
cmp ah, al
jnz loc_FE58B ; checksum wrong
.....
sub_FE5CC:
mov ax, cs
mov es, ax
mov ax, 0E000h
mov ds, ax
mov ax, 0FFF0h
cld
loc_FE5D9:
mov si, ax
lea di, ds:0E045h ; '*BBSS*'
mov cx, 6
repe cmpsb
jz short locret_FE5ED
sub ax, 10h
jnz short loc_FE5D9
xor si, si
locret_FE5ED:
retn
sub_F61F0:
mov cx, 0C000h
xor cl, cl
retf
sub_F61F6:
pusha
popa
retf
Сначала там какие-то извращения с ESI/ECX, но в конце концов ESI указывает на FFF00000h, т.е. на начало флешки, если я правильно понимаю.
Потом копируем всю 8-мимегабитную флешку в память, начиная с 300000h.
Скопировав, ищем строку '*BBSS*', потом с ориентиром на эту строку начинаем вытаскивать какие-то данные и куда-то их запихивать.
Далее начинаем искать сигнатуру '-lh', затем определяем длину модуля и начинаем считать контрольную сумму.
Ежели КС не сошлась, уходим по последней метке - там потом будет выдан C5, а за ним 01 и дальнейшие коды по восстановлению.
Если КС сошлась, то ползем дальше - это я особо не смотрел.
P.S. Мог где-то и ошибиться с интерпретацией.
8Мбит флешки в пределах видимости нет. Можно ли как-нибудь перепаковать биос в 4 Мбит?
CBROM195.exe V1.95 [12/14/07] (C)Phoenix Technologies 2001-2007 ******** DSG43169.BIN BIOS component ******** No. Item-Name Original-Size Compressed-Size Original-File-Name ================================================================================ 0. System BIOS 20000h(128.00K)14064h(80.10K)DSG43169.BIN 1. XGROUP CODE 0FF60h(63.84K)0ADD5h(43.46K)awardext.rom 2. ACPI table 0473Dh(17.81K)019AEh(6.42K)ACPITBL.BIN 3. YGROUP ROM 0BDF0h(47.48K)05292h(20.64K)awardeyt.rom 4. GROUP ROM[ 0] 05930h(22.30K)02828h(10.04K)_EN_CODE.BIN 5. SETUP0 01C40h(7.06K)00B8Dh(2.89K)_ITEM.BIN 6. PCI ROM[A] 1A400h(105.00K)13BB4h(78.93K)ADDON.ROM\7901B_HR.ROM 7. PCI ROM[B] 0EC00h(59.00K)0916Dh(36.36K)ADDON.ROM\raid562.bin 8. PCI ROM[C] 0CE00h(51.50K)07D72h(31.36K)ADDON.ROM\BA1228L2.LOM 9. PCI ROM[D] 0CE00h(51.50K)07D8Ch(31.39K)ADDON.ROM\BA1230L2.LOM 10. GV3 01A2Dh(6.54K)00B4Ch(2.82K)PPMINIT.ROM 11. OSB LOGO ROM 4B30Ch(300.76K)011BCh(4.43K)LOGO\SMLOGO.BMP 12. OSB BMP ROM 03476h(13.12K)007BBh(1.93K)LOGO\64N8IIP.BMP 13. OSB BMP1 ROM 0345Dh(13.09K)008D3h(2.21K)LOGO\64N8P4P.BMP 14. OSB BMP2 ROM 0345Dh(13.09K)008DCh(2.21K)LOGO\64N8P4HT.BMP 15. OSB BMP3 ROM 04286h(16.63K)00A67h(2.60K)LOGO\64N8P4E.BMP 16. OSB BMP4 ROM 04286h(16.63K)00B61h(2.84K)LOGO\64N8P4HE.BMP 17. OSB BMP5 ROM 0345Dh(13.09K)006AAh(1.67K)LOGO\64N8PDP.BMP 18. OSB BMP6 ROM 0345Dh(13.09K)00932h(2.30K)LOGO\64N8PDE.BMP 19. Flash ROM 0BB2Ch(46.79K)06621h(25.53K)ADDON.ROM\AWDFLASH.EXE 20. RPB ROM 029EAh(10.48K)01F8Fh(7.89K)ADDON.ROM\rpb_c.rom (SP) NCPUCODE 0E400h(57.00K)0E400h(57.00K)NCPUCODE.BIN Total compress code space = C9000h(804.00K) Total compressed code size = 71C33h(455.05K) Remain compress code space = 573EDh(348.98K) ** Micro Code Information ** Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID ------------------+--------------------+--------------------+------------------- PGA478 2E 0F29| PGA478 09 0F65| SLOT1 04 0F64| PGA478 0F 0F62 PGA478 07 0F61| SLOT1 05 0F60| SLOT1 03 0F49| SLOT1 06 0F44 SLOT1 05 0F43| SLOT1 17 0F41| SLOT1 02 0F37| SLOT1 17 0F34 SLOT1 08 0F34| SLOT1 03 0F47| SLOT1 03 0F4A| PGA423 2C 0F25 SLOT1 0C 0F33| SLOT1 0A 0F32| SLOT1 05 0F31| PGA478 12 0F30Попробовл их изъять cbrom'ом, получил посреди биоса сплошной кусок FF, как раз 512k+ размером. Вырезал.
Удивился, обнаружив, что cbrom32v195 извлеченные модули еще и распаковывает.
Результат открывается в modbin'e, на вид корректно. Сохранил, чексумму поправить.
Зашил. Поведение материнки не изменилось. Или я что-то делаю не так, или-или...
Поскольку я не особо интересовался деталями работы bootblock'а, то могу и ошибаться :).
п.с. Не забывайте указывать (прямую) ссылку на BIOS, чтобы проще было другим интересующимся и желающим помочь.
http://www.supermicro.com/about/policies/disclaimer.cfm?url=/support/resources/getfile.aspx?ID=542
sub_FFC65: push 2000h ; segment call near ptr sub_F61F0 ; call near, but ret far ; --> 2000:xxxx mov esi, 0 jnz short loc_FFC79 mov esi, 0FFF00000h loc_FFC79: movzx ecx, cx shl ecx, 4 or esi, ecx cld mov ax, cs ; unreal mode on mov ds, ax lgdt qword ptr ds:0FBF6h mov eax, cr0 or al, 1 mov cr0, eax jmp short $+2 mov ax, 8 mov ds, ax mov es, ax and esi, 0FFF00000h ; all flash ROM, if 8 Mbit mov edi, 300000h mov ecx, 40000h ; 8 Mbit rep movs dword ptr es:[edi], dword ptr [esi] mov eax, cr0 ; unreal mode off and al, 0FEh mov cr0, eax jmp short $+2 push 2000h ; segment call near ptr sub_F61F6 ; call near, but ret far ; --> 2000:xxxx call sub_FE5CC ; search '*BBSS*' mov si, [si] and si, 0FFF0h push si mov bx, [si+0Ah] and bx, 0FFF0h pop ax add ax, bx and ax, 0F000h add ax, 0FFEh push ax call sub_FE705 ; unreal mode on pop ax mov esi, 300000h mov ecx, 0E0000h add ecx, esi loc_FFCF2: mov ebx, [esi] and ebx, 0FFFFFFh cmp ebx, 686C2Dh ; search '-lh' jz short loc_FFD0A inc esi jmp short loc_FFCF2 loc_FFD0A: sub esi, 2 add cx, ax sub ecx, esi xor ah, ah loc_FFD15: lods byte ptr [esi] add ah, al ; checksum loopd loc_FFD15 mov al, [esi] push ax call sub_FE720 ; unreal mode off pop ax cmp ah, al jnz loc_FE58B ; checksum wrong .....sub_FE5CC: mov ax, cs mov es, ax mov ax, 0E000h mov ds, ax mov ax, 0FFF0h cld loc_FE5D9: mov si, ax lea di, ds:0E045h ; '*BBSS*' mov cx, 6 repe cmpsb jz short locret_FE5ED sub ax, 10h jnz short loc_FE5D9 xor si, si locret_FE5ED: retnsub_F61F0: mov cx, 0C000h xor cl, cl retfsub_F61F6: pusha popa retfСначала там какие-то извращения с ESI/ECX, но в конце концов ESI указывает на FFF00000h, т.е. на начало флешки, если я правильно понимаю.
Потом копируем всю 8-мимегабитную флешку в память, начиная с 300000h.
Скопировав, ищем строку '*BBSS*', потом с ориентиром на эту строку начинаем вытаскивать какие-то данные и куда-то их запихивать.
Далее начинаем искать сигнатуру '-lh', затем определяем длину модуля и начинаем считать контрольную сумму.
Ежели КС не сошлась, уходим по последней метке - там потом будет выдан C5, а за ним 01 и дальнейшие коды по восстановлению.
Если КС сошлась, то ползем дальше - это я особо не смотрел.
P.S. Мог где-то и ошибиться с интерпретацией.