[LinuxBIOS] Bios memory init

Hugo MERCIER hugo.mercier at laposte.net
Sat Apr 22 12:24:25 CEST 2006


I'm investigating the Linuxbios port to the ASUS A7V600 motherboard.

I'm currently at an early phase of the development. I'm just trying to
get the bios executing code ... and I noticed some strange behavior ... 

I wrote a little piece of asm to make the speaker beep.

I created an "empty" bios image (full of 0xFF) except a jmp at FFFFFFF0
to a beep routine and flashed it. Result : nothing happens.

I then copied and overwrite the original bios in order to make it beep
only (modification of the jmp and insertion of the beep function). I
flashed it and it beeps ...

So, it seems the flash memory has to contain some correct bytes before
the processor is "launched". Right ?

Consequently, I took this modified beeping image, and iteratively filled
it with 0xFF and tested if it beeps, in a dichotomic manner, in order to
find what part of the memory is needed.

Result: Two blocks in the memory have to be present before execution of
any instruction: a 1024bytes block at FFFF7C00 and a 16bytes block at
FFFFFFD0. The second block begins with "0x00 0x7C 0xFF 0xFF", so it
seems to be a pointer to the first block.

I can't figure out what these blocks mean. It is divided into 4
subblocks. It's not x86 code. Some sort of init table ... processor
microcode ? other chipsets init ?

The dump of the two blocks are in attachment.

Any ideas ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: block1.bin
Type: application/octet-stream
Size: 1024 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20060422/94c709f0/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: block2.bin
Type: application/octet-stream
Size: 16 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20060422/94c709f0/attachment-0001.bin>

More information about the coreboot mailing list