[3mdeb blog]

Thoughts dereferenced from scratchpad noise

Debugging coreboot in qemu environment - part 1

| Comments

First of all I use testing version of Debian – wheezy. Clone coreboot repository:

1
2
git clone http://review.coreboot.org/p/coreboot
cd coreboot; make menuconfig

Configure FILO as apayload and use its latest version:

1
Payload -> Add a payload -> FILO Payload -> FILO version -> HEAD

Add verbose debugging messages:

1
2
3
Debugging -> Check PIRQ table consistency Debugging -> Output verbose malloc debug messages
Debugging -> Output verbose ACPI debug messages Debugging -> Enable debug messages for option ROM execution
Debugging -> Built-in low-level shell Debugging -> Trace function calls

Try to build:

1
make

If everything builds correctly you can process. Sometimes there is need to use cross compiler. To build one:

1
2
cd util/crossgcc
./buildgcc

To explore coreboot code effectively I suggest to create tags and cscope database for coreboot. In my personal workspace I’ve got process that I go through before I start work (if you use my workspace configuration which is available @github you can follow below steps directly, if not adjust to your environment):

  1. run vim ;)
  2. :cd /path/to/code
  3. s<Tab> (fuzzyfinder –> bookmark dir)
  4. si (fuzzyfinder –> change dir)
  5. sr (run ctags to generate tags and cscope to build symbol database – ctags -R;cscope -R -q -b -v)

After steps above we can start work with code. Run vim in coreboot directory. Type: :e src/cpu/x86/16bit/reset16.inc Put cursor over protected_start and press Ctrl-]. If everything goes ok you should jump to build/mainboard/emulation/qemu-x86/bootblock.s line 537.

In second article we dive into first phase of coreboot execution in emulated environment.

Comments