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