Using BDI-2000 to debug kernel

Wolfgang Denk wd at denx.de
Fri Mar 14 08:17:45 EST 2003


In message <EGEGIJHKDKJGAJMGIDPNKEEBCJAA.jwalden at digitalatlantic.com> you wrote:
>
> I am having a strange problem trying to single step through the kernel.

Maybe this is because you are doing strange things? ;-)

> BDI>md 0x00210000
> 00210000 : 7c7f1b78 7c9e2378 7cbd2b78 7cdc3378  |..x|.#x|.+x|.3x
> 00210010 : 7cfb3b78 3b000000 48002359 38001032  |.;x;...H.#Y8..2
...


Why did you load the kernel at this address? You are aware  that  the
Linux kernel expects to be loaded to asnd started at 0x0 ?

> I disassembled head_4xx.o and so far this looks fine:
> head_4xx.o:     file format elf32-powerpc
>
> Disassembly of section .text:
>
> 00000000 <_start>:
>        0:	7c 7f 1b 78 	mr	r31,r3
>        4:	7c 9e 23 78 	mr	r30,r4
>        8:	7c bd 2b 78 	mr	r29,r5
>        c:	7c dc 33 78 	mr	r28,r6
>       10:	7c fb 3b 78 	mr	r27,r7
>       14:	3b 00 00 00 	li	r24,0
>       18:	48 00 23 59 	bl	2370 <initial_mmu>

You disassembled this code. Pleasy try to understand what it does! It
start's saving some registers  (r3...r7).  Guess  why?  Because  they
contain  parameters  that  must  be passed to the Linux kernel. For a
description of the parameters see "arch/ppc/kernel/head_4xx.S".

> BDI>go

What makes you think you can start a Linux kernel by just jumping  to
it at a random address, without passing correct arguments to it?

> I get an exception indicating that an invalid opcode was fetched.
> I can't figure out what to try next - Any ideas?

Use a boot loader to start the Linux kernel - this  way  you  can  be
sure  that  the  kernel  gets loaded to the correct address, that the
registers contain the correct arguments, etc.

Best regards,

Wolfgang Denk

--
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
The use of anthropomorphic terminology when  dealing  with  computing
systems is a symptom of professional immaturity.   -- Edsger Dijkstra

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list