Thread (1 message) 1 message, 1 author, 2000-01-17

Re: Help Sought for 403GCX-startup

From: Grant Erickson <hidden>
Date: 2000-01-17 22:02:51

On Mon, 17 Jan 2000, Niklaus Giger wrote:
I successfully managed to create vmlinux for the oak-IBM 403
Evaluation Board.
Excellent! Based on the latest 2.3.39 code or the 2.3.39 plus my patches?
As our OAK-board does not work anymore (it is over 4 years old and out
of service) I tried to load the vmlinux using my vxworks boot-rom. I
got a memory access while trying to access 0xc0000008.
The kernel shouldn't ever access 0xc0000008 during normal operation. The
entry point from the boot loader (did try to boot vmlinux.img in
arch/ppc/treeboot or vmlinux directly?) is at 0x00000000. Shortly
thereafter, the MMU is enabled and code should start executing from
0xc0002100 (or in that approximate range).
Therefore I tried to change in linux/arch/ppc/Makefile the 
KERNELLOAD =0xc0000000
to
KERNELLOAD =0x10000
as all my 4 MB RAM (known at boottime) is located at address 0.
After make clean vmlinux I was able to load vmlinux.
You don't ever want to change KERNELLOAD or KERNELBASE, otherwise the
virtual memory and MMU code will all break.
It load, but it does not start up. A hardware debugging session using
the JTAG-based SDS-debugger showed, that it crashed after very few
instruction at 0x10074

SDS-debugger deassembles:
00010000: or r31,r3,r3
00010004: or r30,r4,r4
00010008: or r29,r5,r5
0001000C: or r28,r6,r6
00010010: or r27,r7,r7
00010014: addi r24,r0,0
00010018: addis r3,r0,0xC0000000@HI
0001001C: addis r3,r3,0x00000000@HI
00010020: addis r4,r3,0x40000000@HI
00010024: mfspr r7,PID
00010028: addi r0,r0,0
0001002C: mtspr PID,r0
00010030: rlwinm r4,r4,0,0,21
00010034: ori r4,r4,0x304
00010038: rlwinm r3,r3,0,0,21
0001003C: ori r3,r3,0x3C0
00010040: illegal
00010044: illegal
00010048: isync
0001004C: mtspr PID,r7
00010050: addis r4,r0,0xC0000000@HI
00010054: addis r0,r4,0x40000000@HI
00010058: mtspr EVPR,r0
0001005C: mfmsr r0
00010060: ori r0,r0,0x30
00010064: mtspr SRR1,r0
00010068: addis r0,r0,0x00010000@HI
0001006C: ori r0,r0,0x21C8
00010070: mtspr SRR0,r0
00010074: rfi
The above code is from head_4xx.S and is the entry point from the boot
loader. It basically sets up a TLB page mapping that is used when the
kernel puts the processor into virtual mode after the 'rfi' you cited gets
executed.
After the rfi at 0x10074. PC is at 0x121C8 (000121BC  is abort:)
The lower address of 0x21C8 is the assembly tag 'start_here' found in
head_4xx.S (see above when I talked about 0xc0002100). This is where the
real work to jump to the Linux kernel starts and it all is done in virtual
mode.
It seems to me that my MMU is not yet correctly setup?
I don't suspect that's the problem. At the very least, you should be able
to successfully execute the kernel up through 'identify_machine'
in the vicinity of virtual address 0xc00f8810. After that, there's some
setup code that relies on information passed in from the Oak evaluation
board (see main.c in arch/ppc/treeboot).
Could you please be so kind to describe your patchs (against 2.3.39)
and post them on your home page?
Most of my changes are summarized in the "Recent Changes" subheading on
that web page. Recently, most changes have been focused around the
Ethernet controller.
I would also appreciate any hints how to disable the 16650-SCC (our
hardware does not have one) and how to uses the internal 403 (I have
the knowledge to program it).
There's currently no code in the 4xx-based port which uses or assumes the
16650 serial controller found on the Oak board, so you shouldn't need to
change a thing. As for the internal 403 serial port, I haven't yet coded
in support for that yet. It's on the "to-do" list.

Regards,

Grant Erickson


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help