Board:kontron/986lcd-m: Difference between revisions

From coreboot
Jump to navigation Jump to search
mNo edit summary
(VGA setup.)
Line 110: Line 110:
}}
}}


== Build tutorial ==
== Build tutorial (without onboard VGA) ==


  $ svn co svn://coreboot.org/repos/trunk/coreboot-v2
  $ svn co svn://coreboot.org/repos/trunk/coreboot-v2
Line 122: Line 122:


The resulting '''coreboot.rom''' is your coreboot ROM image you can flash using [[flashrom]].
The resulting '''coreboot.rom''' is your coreboot ROM image you can flash using [[flashrom]].
== Build tutorial (with onboard VGA) ==
$ svn co svn://coreboot.org/repos/trunk/coreboot-v2
$ cd coreboot-v2/targets
In order to use on-board VGA you have to use the VGA blob from the vendor BIOS, and modify the coreboot config files a bit. Edit '''src/mainboard/kontron/986lcd-m/Config.lb''' in the section starting with '''chip drivers/pci/onboard'''. Depending on whether you use a 1 MB, 512 KB, or 256 KB ROM chip, you'll have to set the correct '''rom_address''' value:
chip drivers/pci/onboard
  device pci 02.0 on end # vga controller
  # register "rom_address" = "0xfffc0000" # 256 KB image
  # register "rom_address" = "0xfff80000" # 512 KB image
  register "rom_address" = "0xfff00000"  # 1 MB image
end
Then, you have to obtain the VGA blob from the vendor BIOS. Thus, get the original vendor BIOS image using [[Flashrom]]:
$ '''flashrom -r kontron.dd'''
You can list all components of the vendor BIOS via the [http://packages.debian.org/sid/amideco amideco] utility ('''apt-get install amideco''' on Debian systems):
$ '''amideco kontron.dd -l'''
-=AmiBIOSDeco, version 0.31e (Linux)=-
FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd
        AMIBIOS information:
Version        : 0800
Packed Data    : 693A0 (431008 bytes)
Start          : DF83C
Packed Offset  : DF83C
Offset          : 0
Released        : 07 June 2007
DirName        : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression  Offset |
+------------------------------------------------------------------------------+
    08 01 (        Interface)    00798 ( 01944) => 00798 ( 01944)      DF83Ch
    04 02 (    Setup Client)    05B6E ( 23406) => 09437 ( 37943)  +  D9CB8h
    0C 03 (          ROM-ID)    00008 ( 00008) => 00008 ( 00008)      D9C9Ch
    0E 04 (        OEM Logo)    0005D ( 00093) => 03E11 ( 15889)  +  D9C28h
    1A 05 (      Small Logo)    00532 ( 01330) => 026A2 ( 09890)  +  D96E0h
    18 06 (ADM (Display MGR))    017FD ( 06141) => 04245 ( 16965)  +  D7ECCh
    19 07 (        ADM Font)    0059C ( 01436) => 01304 ( 04868)  +  D791Ch
    1B 08 (            SLAB)    2FF20 (196384) => 65299 (414361)  +  A79E8h
    21 09 (    Multilanguage)    032A6 ( 12966) => 0723E ( 29246)  +  A472Ch
    20 10 (    PCI AddOn ROM)    09145 ( 37189) => 0EC00 ( 60416)  +  9B5D0h
    20 11 (    PCI AddOn ROM)    09681 ( 38529) => 10000 ( 65536)  +  91F38h
    20 12 (    PCI AddOn ROM)    06008 ( 24584) => 0A800 ( 43008)  +  8BF1Ch
    11 13 (    P6 Microcode)    00001 ( 00001) => 00005 ( 00005)  +  7DEF4h
    90 14 (  User-Defined ;))    021DE ( 08670) => 04200 ( 16896)  +  7BD00h
    2A 15 (        User ROM)    005F8 ( 01528) => 00C7A ( 03194)  +  7B6F4h
    2E 16 (        User ROM)    047B3 ( 18355) => 07800 ( 30720)  +  76F2Ch
    06 17 (        DMI Data)    00258 ( 00600) => 01024 ( 04132)  +  76CC0h
    80 18 (  User-Defined ;))    00044 ( 00068) => 00044 ( 00068)      76C68h
Total Sections  : 18
The next step is to extract all components:
$ '''amideco kontron.dd -x'''
-=AmiBIOSDeco, version 0.31e (Linux)=-
FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd
        AMIBIOS information:
Version        : 0800
Packed Data    : 693A0 (431008 bytes)
Start          : DF83C
Packed Offset  : DF83C
Offset          : 0
Released        : 07 June 2007
DirName        : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression  Offset |
+------------------------------------------------------------------------------+
Total Sections  : 18
The file we need is the 64KB VGA blob named '''amipci_01.20''':
$ '''ls'''
amibody.04  amibody.0e  amibody.1a  amibody.2e    '''amipci_01.20'''
amibody.06  amibody.11  amibody.1b  amibody.80    amipci_02.20
amibody.08  amibody.18  amibody.21  amibody.90    kontron.dd
amibody.0c  amibody.19  amibody.2a  amipci_00.20
In order to use onboard VGA you further need to edit '''targets/kontron/986lcd-m/Config.lb'''. Comment out the line
option ROM_SIZE = 1024 * 1024
and enable the line
option ROM_SIZE = (1024 * 1024) '''- (64 * 1024)'''
instead (we're assuming a 1 MB ROM chip here, change that if you use another size). This will leave 64 KB room in the coreboot ROM image. We can now build coreboot as usual:
$ ./buildtarget kontron/986lcd-m
$ cd kontron/986lcd-m/kontron_986lcd_m
Now copy your [[Payloads|payload]] into the current directory and name it '''payload.elf'''. Then:
$ make -s
Finally, prepend the 64 KB VGA blob to the coreboot image:
$ '''cat amipci_01.20 coreboot.rom > coreboot_final.rom'''
The resulting '''coreboot_final.rom''' is your coreboot ROM image you can flash using [[flashrom]].


== Notes ==
== Notes ==
Line 128: Line 239:
* Currently you have to use '''pci=noacpi''' on the kernel command line to make IDE and SATA work.
* Currently you have to use '''pci=noacpi''' on the kernel command line to make IDE and SATA work.
* If you experience kernel crashes (when building without onboard VGA support) try to blacklist the '''agpgart''' and '''intel_agp''' kernel modules.
* If you experience kernel crashes (when building without onboard VGA support) try to blacklist the '''agpgart''' and '''intel_agp''' kernel modules.
* TODO: Add notes for proper (onboard) VGA setup.


{{PD-self}}
{{PD-self}}

Revision as of 22:31, 21 December 2008

Top
Side
Backpanel
Board and power supply

This page describes how to use coreboot on the Kontron 986LCD-M/mITX mainboard. It is maintained by Uwe Hermann.

Status

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Intel(R) Core(TM)2 CPU T5300 @ 1.73GHz (dual core)
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK CPU: L1 I cache: 32K, L1 D cache: 32K
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK L2 cache: 2048K
L3 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multiple CPU support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multi-core support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Both cores show up in /proc/cpuinfo.
Hardware virtualization OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Hardware virtualization is not supported by this CPU. Doing modprobe kvm-intel yields kvm: no hardware support (coreboot + vendor BIOS).
RAM
EDO OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SDRAM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SO-DIMM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR2 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine, but currently you need to populate both RAM slots with DIMMs (of the same size?).
DDR3 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Dual channel support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
ECC support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | ?
On-board Hardware
On-board IDE 3.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board IDE 2.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SATA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: SATA disk (hda1 in FILO, /dev/sda1 in Linux), but you currently have to use pci=noacpi.
On-board SCSI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: USB thumb drive in all 4 backpanel USB ports, as well as on the USB pin headers on the board (USB6_7, see manual).
On-board VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK You need to prepend the VGA blob from the proprietary BIOS for this to work. Console works, X11 works (use the intel X.org driver).
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP The eth1 interface (in this case) works fine, but so far ifconfig -a only shows one of the three NICs (?)
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Doesn't seem to work, yet.
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board FireWire OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
On-board Smartcard reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board CompactFlash OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK There's an onboard CompactFlash slot on the back-side of the board. FILO sees it as (hd2,0) / hdc1, Linux as /dev/sdb1.
On-board PCMCIA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Wifi OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Bluetooth OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SD card reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Add-on slots/cards
ISA add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Audio/Modem-Riser (AMR/CNR) cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Doesn't seem to work properly (at least not with pci=noacpi). A tested PCI NIC appears in ifconfig -a but does not work.
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Mini-PCI-Express add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
PCI-X add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
AGP graphics cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x1 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x2 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x4 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x8 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x16 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Doesn't seem to work (at least not with pci=noacpi). A tested PCIe VGA card doesn't appear in lspci,
PCI Express x32 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
HTX add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Legacy / Super I/O
Floppy OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | ?
Serial port 1 (COM1) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Serial port 2 (COM2) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | ?
Parallel port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Doing modprobe ppdev works, but no further test were performed.
PS/2 keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
PS/2 mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Game port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Infrared OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | ?
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
DiskOnChip OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Input
Trackpoint OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Displayport OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Thinklight OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Miscellaneous
Sensors / fan control OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine using the w83627hf, coretemp (and also i2c-dev, i2c-i810, and eeprom) Linux kernel modules.
Hardware watchdog OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Not yet actually tested, but it seems to be found: iTCO_wdt: Found a ICH7 or ICH7R TCO device (Version=2, TCOBASE=0x0560).
SMBus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | ?
CAN bus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
CPU frequency scaling OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Needs ACPI. With pci=noacpi the cpufreq-info utility doesn't output anything useful. On vendor BIOS you can use p4-clockmod (discouraged) or acpi-cpufreq (iff you enabled the respective option in the BIOS menu).
Other powersaving features OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP There's a (partial?) ACPI implementation for this board, but it may need further testing/fixing.
Reboot OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Seems to work fine, even with pci=noacpi.
Poweroff OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Needs ACPI, thus won't work if you use pci=noacpi.
Suspend OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Nonstandard LEDs OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
High precision event timers (HPET) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK The HPET is detected by Linux (hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0) and powertop output suggests that it works ok.
Random number generator (RNG) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on modem ring OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested The board supports WOL (tested with vendor BIOS using the wakeonlan utility).
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Works fine with vendor BIOS.
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A Doesn't seem to be supported (by the hardware / vendor BIOS), tested with a PS/2 mouse, as well as with a USB mouse.
TPM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Flashrom OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine, but you have to use -m kontron:986lcd-m when booted with the vendor BIOS (not needed when booted with coreboot).

Build tutorial (without onboard VGA)

$ svn co svn://coreboot.org/repos/trunk/coreboot-v2
$ cd coreboot-v2/targets
$ ./buildtarget kontron/986lcd-m
$ cd kontron/986lcd-m/kontron_986lcd_m

Now copy your payload into the current directory and name it payload.elf. Then:

$ make -s

The resulting coreboot.rom is your coreboot ROM image you can flash using flashrom.

Build tutorial (with onboard VGA)

$ svn co svn://coreboot.org/repos/trunk/coreboot-v2
$ cd coreboot-v2/targets

In order to use on-board VGA you have to use the VGA blob from the vendor BIOS, and modify the coreboot config files a bit. Edit src/mainboard/kontron/986lcd-m/Config.lb in the section starting with chip drivers/pci/onboard. Depending on whether you use a 1 MB, 512 KB, or 256 KB ROM chip, you'll have to set the correct rom_address value:

chip drivers/pci/onboard
  device pci 02.0 on end # vga controller
  # register "rom_address" = "0xfffc0000" # 256 KB image
  # register "rom_address" = "0xfff80000" # 512 KB image
  register "rom_address" = "0xfff00000"   # 1 MB image
end

Then, you have to obtain the VGA blob from the vendor BIOS. Thus, get the original vendor BIOS image using Flashrom:

$ flashrom -r kontron.dd

You can list all components of the vendor BIOS via the amideco utility (apt-get install amideco on Debian systems):

$ amideco kontron.dd -l
-=AmiBIOSDeco, version 0.31e (Linux)=-

FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd

        AMIBIOS information:
Version         : 0800
Packed Data     : 693A0 (431008 bytes)
Start           : DF83C
Packed Offset   : DF83C
Offset          : 0
Released        : 07 June 2007
DirName         : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression   Offset |
+------------------------------------------------------------------------------+

   08 01 (        Interface)    00798 ( 01944) => 00798 ( 01944)      DF83Ch
   04 02 (     Setup Client)    05B6E ( 23406) => 09437 ( 37943)  +   D9CB8h
   0C 03 (           ROM-ID)    00008 ( 00008) => 00008 ( 00008)      D9C9Ch
   0E 04 (         OEM Logo)    0005D ( 00093) => 03E11 ( 15889)  +   D9C28h
   1A 05 (       Small Logo)    00532 ( 01330) => 026A2 ( 09890)  +   D96E0h
   18 06 (ADM (Display MGR))    017FD ( 06141) => 04245 ( 16965)  +   D7ECCh
   19 07 (         ADM Font)    0059C ( 01436) => 01304 ( 04868)  +   D791Ch
   1B 08 (             SLAB)    2FF20 (196384) => 65299 (414361)  +   A79E8h
   21 09 (    Multilanguage)    032A6 ( 12966) => 0723E ( 29246)  +   A472Ch
   20 10 (    PCI AddOn ROM)    09145 ( 37189) => 0EC00 ( 60416)  +   9B5D0h
   20 11 (    PCI AddOn ROM)    09681 ( 38529) => 10000 ( 65536)  +   91F38h
   20 12 (    PCI AddOn ROM)    06008 ( 24584) => 0A800 ( 43008)  +   8BF1Ch
   11 13 (     P6 Microcode)    00001 ( 00001) => 00005 ( 00005)  +   7DEF4h
   90 14 (  User-Defined ;))    021DE ( 08670) => 04200 ( 16896)  +   7BD00h
   2A 15 (         User ROM)    005F8 ( 01528) => 00C7A ( 03194)  +   7B6F4h
   2E 16 (         User ROM)    047B3 ( 18355) => 07800 ( 30720)  +   76F2Ch
   06 17 (         DMI Data)    00258 ( 00600) => 01024 ( 04132)  +   76CC0h
   80 18 (  User-Defined ;))    00044 ( 00068) => 00044 ( 00068)      76C68h
Total Sections  : 18

The next step is to extract all components:

$ amideco kontron.dd -x
-=AmiBIOSDeco, version 0.31e (Linux)=-

FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd

        AMIBIOS information:
Version         : 0800
Packed Data     : 693A0 (431008 bytes)
Start           : DF83C
Packed Offset   : DF83C
Offset          : 0
Released        : 07 June 2007
DirName         : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression   Offset |
+------------------------------------------------------------------------------+

Total Sections  : 18

The file we need is the 64KB VGA blob named amipci_01.20:

$ ls
amibody.04  amibody.0e  amibody.1a  amibody.2e    amipci_01.20
amibody.06  amibody.11  amibody.1b  amibody.80    amipci_02.20
amibody.08  amibody.18  amibody.21  amibody.90    kontron.dd
amibody.0c  amibody.19  amibody.2a  amipci_00.20

In order to use onboard VGA you further need to edit targets/kontron/986lcd-m/Config.lb. Comment out the line

option ROM_SIZE = 1024 * 1024

and enable the line

option ROM_SIZE = (1024 * 1024) - (64 * 1024)

instead (we're assuming a 1 MB ROM chip here, change that if you use another size). This will leave 64 KB room in the coreboot ROM image. We can now build coreboot as usual:

$ ./buildtarget kontron/986lcd-m
$ cd kontron/986lcd-m/kontron_986lcd_m

Now copy your payload into the current directory and name it payload.elf. Then:

$ make -s

Finally, prepend the 64 KB VGA blob to the coreboot image:

$ cat amipci_01.20 coreboot.rom > coreboot_final.rom

The resulting coreboot_final.rom is your coreboot ROM image you can flash using flashrom.

Notes

  • If you use FILO, SATA will probably be hda and hdb, while hdc is the master drive of the IDE controller.
  • Currently you have to use pci=noacpi on the kernel command line to make IDE and SATA work.
  • If you experience kernel crashes (when building without onboard VGA support) try to blacklist the agpgart and intel_agp kernel modules.
Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.