ADLO: linuxbios v1 hangs after jumping to boot code at 0x7c00

Richard Smith rsmith at bitworks.com
Wed Jul 21 10:06:00 CEST 2004


Simon Xin Cheng wrote:

> rombios.bin. However, when I tried to print out more bytes, I can only 
> get 16 output. What is the problem? My code is right after copy bios to 
> 0xF0000:
> 
> mov ax, #0x10
> mov ds, ax
> mov eax, #0xF0000
> mov esi, eax
> 
> mov ecx, #0x30 ; loop counter
> mov dx, #0x3f8 ; serial port
> 
> cld
> str_loop: lodsb
> out dx, al
> loop str_loop
> 

Thats because you have forgotten that the CPU runs several orders of 
magnitude faster than the serial port.  You only get 16 bytes because 
the 16550 UART FIFO is only 16 bytes deep. After that your bytes are 
going to the bit bucket.

You have to wait until the busy flag of the 16550 is clear after you 
write each byte.  See the a data sheet on the UART.




More information about the coreboot mailing list