Skip to contentSkip to conversation

Linux boot on a ppc 405

DISCUSSION Ricardo Severo 4 participants 8 messages Jan 27, 2008 – Jan 28, 2008

lore
Share & tools
lore
#0 lore raw

Hi all,

I am working with a Xilinx Virtex II Pro evaluation board, wich has two PowerPC 405 and I'm trying to boot a vanilla linux kernel 2.6.23.14. Until now I've manged to make it uncompress the kernel, but it doesn't boot.
My question is how the initial execution (the one who uncompresses the kernel image) transfers the processor to the kernel itself. I've looked in the arch/ppc/boot/simple/relocate.S code and it jumps to the position 0x0 after uncompressing, is it right? The kernel is uncompressed at that position?

Thanks,

Signature · 1 line
Ricardo Ayres Severo <[email protected]>
#1 lore raw
Quoted 11 lines · Ricardo Severo

Hi all,

I am working with a Xilinx Virtex II Pro evaluation board, wich has two PowerPC 405 and I'm trying to boot a vanilla linux kernel 2.6.23.14. Until now I've manged to make it uncompress the kernel, but it doesn't boot. My question is how the initial execution (the one who uncompresses the kernel image) transfers the processor to the kernel itself. I've looked in the arch/ppc/boot/simple/relocate.S code and it jumps to the position 0x0 after uncompressing, is it right? The kernel is uncompressed at that position?

Quoted 1 line

Thanks,

It should branch to the beginning of arch/ppc/kernel/head_4xx.S, which I think was 0x0.

Some things to check are:

- Comment/remove the weak embed_config in arch/ppc/boot/simple/misc-embedded.c
- Did you use ttyUL0 or ttyS0 as your console?

If that fails, you can use XMD to set a breakpoint at 0x0 and then read the memory to see if it matches up with an objdump of vmlinux.

#2 lore raw
In reply to Ricardo Severo
Quoted 10 lines · Ricardo Severo

Hi all,

I am working with a Xilinx Virtex II Pro evaluation board, wich has two PowerPC 405 and I'm trying to boot a vanilla linux kernel 2.6.23.14. Until now I've manged to make it uncompress the kernel, but it doesn't boot. My question is how the initial execution (the one who uncompresses the kernel image) transfers the processor to the kernel itself. I've looked in the arch/ppc/boot/simple/relocate.S code and it jumps to the position 0x0 after uncompressing, is it right? The kernel is uncompressed at that position?

Post your output log please.

If your getting a message that the kernel is uncompressing, but you don't have any output beyond that then most likely your console is not setup correctly. If you've got a debugger, look at memory at the __log_buf location to see if there are any boot logs there.

Cheers,
g.

Signature · 2 lines
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
#3 lore raw

Grant,

my output is the following:

loaded at: 00400000 004E919C

board data at: 00000000 0000007C

relocated to: 00404040 004040BC

zimage at: 00404E2C 004E620A

avail ram: 004EA000 8DA05119

Linux/PPC load: console=ttyUL0,9600

Uncompressing Linux...done.

Now booting the kernel

nothing shows up next.
I tried to look at __log_buf but the debugger doesn't recognize it. The debugger only knows the code of the part that boots the kernel. I also tried setting ttyUL0 and ttyS0 for the linux console. Any ideas of how I can get the real position of __log_buf?

Thanks,

Quoted 27 lines · Grant Likely
Quoted 10 lines · Ricardo Severo

Hi all,

I am working with a Xilinx Virtex II Pro evaluation board, wich has two PowerPC 405 and I'm trying to boot a vanilla linux kernel 2.6.23.14. Until now I've manged to make it uncompress the kernel, but it doesn't boot. My question is how the initial execution (the one who uncompresses the kernel image) transfers the processor to the kernel itself. I've looked in the arch/ppc/boot/simple/relocate.S code and it jumps to the position 0x0 after uncompressing, is it right? The kernel is uncompressed at that position?

Post your output log please.

If your getting a message that the kernel is uncompressing, but you don't have any output beyond that then most likely your console is not setup correctly. If you've got a debugger, look at memory at the __log_buf location to see if there are any boot logs there.

Cheers,
g.

--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

Signature · 1 line
Ricardo Ayres Severo <[email protected]>
#4 lore raw

You have to look at the System.map file, find the __log_buf symbol, and then look at the address manually.

Steve

Quoted 2 lines

-----Original Message-----
From: [email protected]

[mailto:linuxppc-embedded-

Quoted 1 line

[email protected]] On Behalf Of Ricardo

Ayres Severo

Quoted 36 lines

Sent: Monday, January 28, 2008 2:53 PM
Cc: [email protected]
Subject: Re: Linux boot on a ppc 405
=20
Grant,
=20
my output is the following:
=20
loaded at: 00400000 004E919C
=20
board data at: 00000000 0000007C
=20
relocated to: 00404040 004040BC
=20
zimage at: 00404E2C 004E620A
=20
avail ram: 004EA000 8DA05119
=20
=20
Linux/PPC load: console=3DttyUL0,9600
=20
Uncompressing Linux...done.
=20
Now booting the kernel
=20
=20
=20
nothing shows up next.
I tried to look at __log_buf but the debugger doesn't recognize it. The debugger only knows the code of the part that boots the kernel. I also tried setting ttyUL0 and ttyS0 for the linux console. Any ideas of how I can get the real position of __log_buf? =20
Thanks,
=20
On Jan 27, 2008 7:15 PM, Grant Likely <[email protected]>

Quoted 4 lines · wrote:
Quoted 4 lines · Ricardo Severo
Quoted 3 lines

Hi all,

I am working with a Xilinx Virtex II Pro evaluation board, wich

has two

Quoted 1 line
Quoted 1 line
Quoted 1 line

PowerPC 405 and I'm trying to boot a vanilla linux kernel

2.6.23.14.

Quoted 1 line
Quoted 1 line
Quoted 1 line

Until now I've manged to make it uncompress the kernel, but it

doesn't boot.

Quoted 1 line
Quoted 1 line
Quoted 1 line

My question is how the initial execution (the one who uncompresses

the

Quoted 1 line
Quoted 1 line
Quoted 1 line

kernel image) transfers the processor to the kernel itself. I've

looked

Quoted 1 line
Quoted 1 line
Quoted 1 line

in the arch/ppc/boot/simple/relocate.S code and it jumps to the

position

Quoted 1 line
Quoted 1 line
Quoted 1 line

0x0 after uncompressing, is it right? The kernel is uncompressed

at that

Quoted 6 lines
Quoted 6 lines
Quoted 1 line

position?

Post your output log please.

If your getting a message that the kernel is uncompressing, but you don't have any output beyond that then most likely your console is

not

Quoted 20 lines
Quoted 11 lines

setup correctly. If you've got a debugger, look at memory at the __log_buf location to see if there are any boot logs there.

Cheers,
g.

--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

=20
=20
=20
--
Ricardo Ayres Severo <[email protected]>
_______________________________________________
Linuxppc-embedded mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

#5 lore raw

Steve,

I tried that, but the System.map is not the real memory address, it's processed by the mmu isn't it?

This is my System.map: c01e0cc4 b __log_buf
when I try to look at the position 0xc01e0cc4 the debugger returns:
Error: Cannot access memory at address 0xc01e0cc4

Am I doing something wrong?

Thanks,

Quoted 97 lines · Stephen Neuendorffer

You have to look at the System.map file, find the __log_buf symbol, and then look at the address manually.

Steve

Quoted 2 lines

-----Original Message-----
From: [email protected]

[mailto:linuxppc-embedded-

Quoted 1 line

[email protected]] On Behalf Of Ricardo

Ayres Severo

Quoted 36 lines

Sent: Monday, January 28, 2008 2:53 PM
Cc: [email protected]
Subject: Re: Linux boot on a ppc 405

Grant,

my output is the following:

loaded at: 00400000 004E919C

board data at: 00000000 0000007C

relocated to: 00404040 004040BC

zimage at: 00404E2C 004E620A

avail ram: 004EA000 8DA05119

Linux/PPC load: console=ttyUL0,9600

Uncompressing Linux...done.

Now booting the kernel

nothing shows up next.
I tried to look at __log_buf but the debugger doesn't recognize it. The debugger only knows the code of the part that boots the kernel. I also tried setting ttyUL0 and ttyS0 for the linux console. Any ideas of how I can get the real position of __log_buf?

Thanks,

On Jan 27, 2008 7:15 PM, Grant Likely <[email protected]>

Quoted 4 lines · wrote:
Quoted 4 lines · Ricardo Severo
Quoted 3 lines

Hi all,

I am working with a Xilinx Virtex II Pro evaluation board, wich

has two

Quoted 1 line
Quoted 1 line
Quoted 1 line

PowerPC 405 and I'm trying to boot a vanilla linux kernel

2.6.23.14.

Quoted 1 line
Quoted 1 line
Quoted 1 line

Until now I've manged to make it uncompress the kernel, but it

doesn't boot.

Quoted 1 line
Quoted 1 line
Quoted 1 line

My question is how the initial execution (the one who uncompresses

the

Quoted 1 line
Quoted 1 line
Quoted 1 line

kernel image) transfers the processor to the kernel itself. I've

looked

Quoted 1 line
Quoted 1 line
Quoted 1 line

in the arch/ppc/boot/simple/relocate.S code and it jumps to the

position

Quoted 1 line
Quoted 1 line
Quoted 1 line

0x0 after uncompressing, is it right? The kernel is uncompressed

at that

Quoted 6 lines
Quoted 6 lines
Quoted 1 line

position?

Post your output log please.

If your getting a message that the kernel is uncompressing, but you don't have any output beyond that then most likely your console is

not

Quoted 21 lines
Quoted 11 lines

setup correctly. If you've got a debugger, look at memory at the __log_buf location to see if there are any boot logs there.

Cheers,
g.

--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

--
Ricardo Ayres Severo <[email protected]>

_______________________________________________
Linuxppc-embedded mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Signature · 1 line
Ricardo Ayres Severo <[email protected]>
#6 lore raw

I've you've reset the processor, then the MMU has been reset too, in which case your
log_buf will most likely be at 1e0cc4. The 'trick' is that resetting the processor
leaves the memory intact.

Steve

Quoted 14 lines

-----Original Message-----
From: Ricardo Ayres Severo [mailto:[email protected]]
Sent: Monday, January 28, 2008 3:00 PM
To: Stephen Neuendorffer
Cc: [email protected]
Subject: Re: Linux boot on a ppc 405
=20
Steve,
=20
I tried that, but the System.map is not the real memory address, it's processed by the mmu isn't it?
=20
This is my System.map: c01e0cc4 b __log_buf
when I try to look at the position 0xc01e0cc4 the debugger returns:

Quoted 10 lines

Error: Cannot access memory at address 0xc01e0cc4
=20
Am I doing something wrong?
=20
Thanks,
=20

Quoted 2 lines · Stephen Neuendorffer

You have to look at the System.map file, find the __log_buf symbol,

and

Quoted 7 lines
Quoted 7 lines

then look at the address manually.

Steve

Quoted 2 lines

-----Original Message-----
From:

[email protected]

Quoted 2 lines
Quoted 2 lines

[mailto:linuxppc-embedded-

Quoted 1 line

[email protected]] On Behalf Of =

Ricardo

Quoted 22 lines
Quoted 22 lines

Ayres Severo

Quoted 21 lines

Sent: Monday, January 28, 2008 2:53 PM
Cc: [email protected]
Subject: Re: Linux boot on a ppc 405

Grant,

my output is the following:

loaded at: 00400000 004E919C

board data at: 00000000 0000007C

relocated to: 00404040 004040BC

zimage at: 00404E2C 004E620A

avail ram: 004EA000 8DA05119

Linux/PPC load: console=3DttyUL0,9600

Quoted 8 lines
Quoted 8 lines
Quoted 8 lines

Uncompressing Linux...done.

Now booting the kernel

nothing shows up next.
I tried to look at __log_buf but the debugger doesn't recognize

it.

Quoted 1 line
Quoted 1 line
Quoted 1 line

The debugger only knows the code of the part that boots the

kernel.

Quoted 11 lines
Quoted 11 lines
Quoted 6 lines

I also tried setting ttyUL0 and ttyS0 for the linux console. Any ideas of how I can get the real position of __log_buf?

Thanks,

On Jan 27, 2008 7:15 PM, Grant Likely <[email protected]>

Quoted 4 lines · wrote:
Quoted 4 lines · Ricardo Severo
Quoted 3 lines

Hi all,

I am working with a Xilinx Virtex II Pro evaluation board,

wich

Quoted 6 lines
Quoted 6 lines

has two

Quoted 1 line
Quoted 1 line
Quoted 1 line

PowerPC 405 and I'm trying to boot a vanilla linux kernel

2.6.23.14.

Quoted 1 line
Quoted 1 line
Quoted 1 line

Until now I've manged to make it uncompress the kernel, but it

doesn't boot.

Quoted 1 line
Quoted 1 line
Quoted 1 line

My question is how the initial execution (the one who

uncompresses

Quoted 2 lines
Quoted 2 lines

the

Quoted 1 line
Quoted 1 line
Quoted 1 line

kernel image) transfers the processor to the kernel itself.

I've

Quoted 2 lines
Quoted 2 lines

looked

Quoted 1 line
Quoted 1 line
Quoted 1 line

in the arch/ppc/boot/simple/relocate.S code and it jumps to

the

Quoted 2 lines
Quoted 2 lines

position

Quoted 1 line
Quoted 1 line
Quoted 1 line

0x0 after uncompressing, is it right? The kernel is

uncompressed

Quoted 6 lines
Quoted 6 lines

at that

Quoted 5 lines
Quoted 5 lines
Quoted 1 line

position?

Post your output log please.

If your getting a message that the kernel is uncompressing, but

you

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

don't have any output beyond that then most likely your console

is

Quoted 2 lines
Quoted 2 lines

not

Quoted 1 line
Quoted 1 line

setup correctly. If you've got a debugger, look at memory at

the

Quoted 28 lines
Quoted 13 lines
Quoted 13 lines
Quoted 10 lines

__log_buf location to see if there are any boot logs there.

Cheers,
g.

--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

Quoted 10 lines
Quoted 7 lines

--
Ricardo Ayres Severo <[email protected]>

_______________________________________________
Linuxppc-embedded mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

=20
=20
=20
--
Ricardo Ayres Severo <[email protected]>

#7 lore raw
In reply to Ricardo Ayres Severo
Quoted 8 lines · Ricardo Ayres Severo

Steve,

I tried that, but the System.map is not the real memory address, it's processed by the mmu isn't it?

This is my System.map: c01e0cc4 b __log_buf
when I try to look at the position 0xc01e0cc4 the debugger returns:
Error: Cannot access memory at address 0xc01e0cc4

Drop the kernel offset of 0xc0000000

So; 0xc01e0cc4 becomes 0x001e0cc4 after reset.

g.

Signature · 2 lines
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.