Hallo Konstantin
I tryd the patch, but the situation hasn't changed.
I hope I did it right, because I'm not yet so familar with changing kernel
source:
I changed the source file as described, defined UNUSUAL_A20 at the top of the
file.
Then I made a -make zImage- and copied the new kernel to the flash disk. I
saw that a new setup.o
and a new zImage were generated!
After this i called lilo and put the flash disk to my embedded system.
For a test I changed the line 446 .msg1 in the file
arch/i386/boot/bootsect.S.
I thought that a new message "Loading"( changed to Hellock) would come up,
but nothing changed too.
Although the object and the kernel have been generated new!
I'm sure that I have copied the right kernel to the disk and lilo.conf has
only one section.
map file is generated new...
Shane Anderson suggeseted to debug setup.S with the serial line. Can I try it
with code from
bootsect.S ( I think to something like print_nl witch writes a cr and lf with
int 10 call ).
Konstantin Boldyshev wrote:
> > LILO boot:
> > kernel
> > Loading kernel.......
> >
> > nothing more happens.
> > I can make an input with the terminal emulation for example i can press
> > TAB to see the available kernels. But after the message Loading
> > kernel....... nothing more happens. What should be the next step in
> > loading the kernel ? I am waiting for a message 'uncompressing linux',
>
> You will not see them anyway, because they are written
> directly to video memory, and your system doesnot have it.
>
> > what happens between 'loading kernel' ang 'uncompressing linux'?
> > I don't know if it is a problem with the bios or something else.
>
> It seems that there's a problem with A20 (though I am not
> sure) -- on your system it can be enabled not as usual.
> And also it may happen because of keyboard check on boot time.
>
> Try the following code in setup.S
>
> --------------------------------------------------------
>
> #ifdef UNUSUAL_A20
>
> in al,#0x92
> or al,#0x2
> out #0x92,al
>
> #else
>
> ! that was painless, now we enable A20
>
> call empty_8042
> mov al,#0xD1 ! command write
> out #0x64,al
> call empty_8042
> mov al,#0xDF ! A20 on
> out #0x60,al
> call empty_8042
>
> ! wait until a20 really *is* enabled; it can take a fair amount of
> ! time on certain systems; Toshiba Tecras are known to have this
> ! problem. The memory location used here is the int 0x1f vector,
> ! which should be safe to use; any *unused* memory location < 0xfff0
> ! should work here.
>
> #define TEST_ADDR 0x7c
>
> push ds
> xor ax,ax ! segment 0x0000
> mov ds,ax
> dec ax ! segment 0xffff (HMA)
> mov gs,ax
> mov bx,[TEST_ADDR] ! we want to restore the value later
> a20_wait:
> inc ax
> mov [TEST_ADDR],ax
> seg gs
> cmp ax,[TEST_ADDR+0x10]
> je a20_wait ! loop until no longer aliased
> mov [TEST_ADDR],bx ! restore original value
> pop ds
>
> ! make sure any possible coprocessor is properly reset..
>
> xor ax,ax
> out #0xf0,al
> call delay
> out #0xf1,al
> call delay
>
> #endif ! /* UNUSUAL_A20 */
>
> --------------------------------------------------------
>
> insert code #ifdef'ed by UNUSUAL_A20,
> #define UNUSUAL_A20,
> and recompile kernel.
>
> PS: tell me if this helps :)
>
> Regards,
> Konstantin
--
To unsubscribe from this list, send a message to [EMAIL PROTECTED]
with the command "unsubscribe linux-embedded" in the message body.
For more information, see <http://waste.org/mail/linux-embedded>.