[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.dehttp://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866





More information about the coreboot mailing list