Hi,
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 ?