[coreboot] I'm not able to extract the VGA BIOS from phoenix BIOS
Stefan Reinauer
stepan at coresystems.de
Thu Apr 29 18:03:51 CEST 2010
On 4/29/10 1:55 AM, Joop Boonen wrote:
> Hello All,
>
> I have the Arima HDAMA server.
> The BIOS can be found here:
> http://www.arimacorp.com/server/Product/ViewDownload.asp?View=HDAMA%20rev.G
>
I suggest you try Luc Verhaegen's cool bios_extract utility instead. You
will find it in his git repository:
http://cgit.freedesktop.org/~libv/bios_extract/
What might help is to do
$ dd if=hdamg217.rom of=hdama.rom bs=512k count=1
This cuts away the Phoenix BIOS flash description at the end and leaves
you with the image only.
I tried with the latest version of bios_extract and applied the
following patch, and I was able to extract all modules:
diff --git a/bios_extract.c b/bios_extract.c
index cd87ee8..8fe2fed 100644
--- a/bios_extract.c
+++ b/bios_extract.c
@@ -90,6 +90,7 @@ static struct {
{"AMIEBBLK", "AMIBIOSC", AMI95Extract},
{"Award BootBlock", "= Award Decompression Bios =", AwardExtract},
{"Phoenix FirstBIOS", "BCPSEGMENT", PhoenixExtract},
+ {"Phoenix ServerBIOS", "BCPSEGMENT", PhoenixExtract},
{"PhoenixBIOS 4.0", "BCPSEGMENT", PhoenixExtract},
{"Phoenix TrustedCore", "BCPSEGMENT", PhoenixTrustedExtract},
{NULL, NULL, NULL},
./bios_extract hdama.rom
Using file "hdama.rom" (512kB)
Found Phoenix BIOS "Phoenix ServerBIOS 3 Release 6.0 "
Version "DEVEL4E0", created on 03/20/06 at 14:37:39.
0x715FC ( 27134 bytes) -> romexec_0.rom
0x6E1CB ( 13338 bytes) -> strings_0.rom (29401 bytes)
0x6D65D ( 2899 bytes) -> display_0.rom (4128 bytes)
0x6B62E ( 8208 bytes) -> update_0.rom
0x6B1E3 ( 1072 bytes) -> decompcode_0.rom [0x5000:0xB6D0]
0x6564F ( 23421 bytes) -> oprom_0.rom (36864 bytes)
0x65608 ( 44 bytes) -> tcpa_H_0.rom (32 bytes)
0x65592 ( 91 bytes) -> acpi_1.rom (116 bytes)
0x65519 ( 94 bytes) -> acpi_2.rom (244 bytes)
0x654ED ( 13 bytes) -> tcpa_*_0.rom
0x64D4F ( 1927 bytes) -> bioscode_0.rom (31382 bytes)
[0xF000:0x856A]
0x60020 ( 19728 bytes) -> romexec_1.rom
0x570D9 ( 36656 bytes) -> oprom_1.rom (61440 bytes)
0x4DB9D ( 38177 bytes) -> oprom_2.rom (63488 bytes)
0x46493 ( 30447 bytes) -> oprom_3.rom (65536 bytes)
0x41DAB ( 18125 bytes) -> logo_0.rom (310162 bytes)
0x39CA5 ( 25439 bytes) -> oprom_4.rom (51200 bytes)
0x36005 ( 15493 bytes) -> setup_0.rom (37682 bytes)
0x325D7 ( 14867 bytes) -> template_0.rom (37728 bytes)
0x2FA36 ( 11142 bytes) -> miser_0.rom (16208 bytes)
0x2E63C ( 5087 bytes) -> tcpa_Q_0.rom (16096 bytes)
0x2D7C3 ( 3678 bytes) -> acpi_0.rom (10464 bytes)
0x1FA2A ( 41023 bytes) -> bioscode_1.rom (56080 bytes)
[0xE000:0x40F0]
0x14FE0 ( 43567 bytes) -> bioscode_2.rom (62416 bytes)
[0x6000:0xCC30]
0x0EB4C ( 25721 bytes) -> bioscode_3.rom (36976 bytes)
[0x6000:0x3BC0]
0x0D0A0 ( 6801 bytes) -> bioscode_4.rom (31856 bytes)
[0x5000:0xBF50]
Then I used "romheaders" from the FCode Suite:
http://www.openfirmware.info/FCODE_suite to check the resulting
oprom_?.rom files and found the first one is it:
$ romheaders oprom_0.rom
Image 1:
PCI Expansion ROM Header:
Signature: 0x55aa (Ok)
CPU unique data: 0x48 0xeb 0x7b 0x01 0x76 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Pointer to PCI Data Structure: 0x017c
PCI Data Structure:
Signature: 0x50434952 'PCIR' (Ok)
Vendor ID: 0x1002
Device ID: 0x4752
Vital Product Data: 0x0000
PCI Data Structure Length: 0x0018 (24 bytes)
PCI Data Structure Revision: 0x00
Class Code: 0x030000 (VGA Display controller)
Image Length: 0x0048 blocks (36864 bytes)
Revision Level of Code/Data: 0x0421
Code Type: 0x00 (Intel x86)
Last-Image Flag: 0x80 (last image in rom)
Reserved: 0x0000
Platform specific data for x86 compliant option rom:
Initialization Size: 0x48 (36864 bytes)
Entry point for INIT function: 0x80
Stefan
--
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: info at coresystems.de • http://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866
More information about the coreboot
mailing list