Skip to contentSkip to conversation

Simple bootloader in the kernel and PPCBoot

U-Boot-Users Petter Larsen 2 participants 6 messages Feb 25, 2003

lore
Share & tools
lore
#0 lore raw

Hello

We have managed to boot Linux on a MPC855T board using PPCBoot 2.0 and a kernel 2.4.17 patched up by MontaVista.

It is one thing that I am not sure of. Do I need to link in the arch/ppc/boot/simple files in the kernel when I am using PPCBoot?

As I understand this is a simple bootloader and should not be necessary when using PPCBoot. Am I right?

If I do a "make pImage", it is not included, but I can not boot this image.
If I do a "make zImage", a zImage.embedded is created with the arch/ppc/boot/simple bootloader files linked in. This image can I boot if I set the entry point to 10000 when i attach the header with the mkimage command.

Booting Linux with the code in arch/ppc/boot/simple linked in. The vmlinux
is compressed, but the code in arch/ppc/boot/simple is compiled later and
linked in, and this part is not compressed. We then have to say that the kernel image is uncompressed when making the header with "mkimage", and also the entry point must be set to 10000.
Booting from flash...
=>bootm 0c100000
## Booting image at 0c100000 ...

   Image Name:   Image test 1
   Image Type:   PowerPC Linux Kernel Image (uncompressed)
   Data Size:    767776 Bytes = 749.8 kB

Load Address: 00000000
Entry Point: 00010000
Verifying Checksum ... OK
OK
## Current stack ends at 0x03F0FC20 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF00

bd address  = 0x03F0FFC4
memstart    = 0x00000000
memsize     = 0x04000000
flashstart  = 0x0C000000
flashsize   = 0x00800000
flashoffset = 0x00090000
sramstart   = 0x00000000
sramsize    = 0x00000000
immr_base   = 0xFF000000
bootflags   = 0x00000001
intfreq     =     50 MHz
busfreq     =     50 MHz
ethaddr     = 00:08:74:11:11:11
IP addr     = 172.16.21.223
baudrate    = 115200 bps

No initrd
## Transferring control to Linux (at address 00010000) ...

loaded at:     00010000 000BD1F4
relocated to:  00400000 004AD1F4
board data at: 004AA124 004AA164
relocated to:  00405338 00405378
zimage at:     00405960 004A9871
avail ram:     004AE000 04000000

Linux/PPC load: console=ttyS0,115200 console=tty0 root=/dev/nfs nfsroot=172.16.21.218:/exports/rpx855/2.4.7-timesys-3.1.254

Trying to boot a pImage without the code in arch/ppc/boot/simple =>bootm 0c100000
## Booting image at 0c100000 ...

   Image Name:   Linux-2.4.17_mvl21
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    671503 Bytes = 655.8 kB

Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
## Current stack ends at 0x03F0FC20 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF00

bd address  = 0x03F0FFC4
memstart    = 0x00000000
memsize     = 0x04000000
flashstart  = 0x0C000000
flashsize   = 0x00800000
flashoffset = 0x00090000
sramstart   = 0x00000000
sramsize    = 0x00000000
immr_base   = 0xFF000000
bootflags   = 0x00000001
intfreq     =     50 MHz
busfreq     =     50 MHz
ethaddr     = 00:08:74:11:11:11
IP addr     = 172.16.21.223
baudrate    = 115200 bps

No initrd
## Transferring control to Linux (at address 00000000) ...

Best regards
Petter Larsen
moreCom as
Cand. Scient.

#1 lore raw

Hi,

Quoted 3 lines · in message <1046168602.1108.11.camel@pla> you wrote:

It is one thing that I am not sure of. Do I need to link in the arch/ppc/boot/simple files in the kernel when I am using PPCBoot?

No.

Quoted 2 lines

As I understand this is a simple bootloader and should not be necessary when using PPCBoot. Am I right?

Yes.

Quoted 2 lines

If I do a "make pImage", it is not included, but I can not boot this image.

Then you are missing something in your port. Please explain what "can not boot" means? Did you debug the start-up sequence?

Quoted 4 lines

If I do a "make zImage", a zImage.embedded is created with the arch/ppc/boot/simple bootloader files linked in. This image can I boot if I set the entry point to 10000 when i attach the header with the mkimage command.

You probably can also start this using a simple "go", and you probably cannot pass args to it, right?

Best regards,

Wolfgang Denk

Signature · 4 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
SW engineering is a race between programmers trying  to  make  better
idiot-proof programs and the universe producing greater idiots.
#2 lore raw

Hi,

Quoted 6 lines
Quoted 3 lines · in message <1046168602.1108.11.camel@pla> you wrote:

It is one thing that I am not sure of. Do I need to link in the arch/ppc/boot/simple files in the kernel when I am using PPCBoot?

No.

Fine. Then I know one more thing.

Quoted 6 lines
Quoted 2 lines

If I do a "make pImage", it is not included, but I can not boot this image.

Then you are missing something in your port. Please explain what "can not boot" means? Did you debug the start-up sequence?

I will debug it, but have not done it. I have an BDM degugger under windows. I am thinking of purchase one of the debuggers on your site. What does this cost, and does it include the GDB patched and ready for use?

Quoted 8 lines
Quoted 4 lines

If I do a "make zImage", a zImage.embedded is created with the arch/ppc/boot/simple bootloader files linked in. This image can I boot if I set the entry point to 10000 when i attach the header with the mkimage command.

You probably can also start this using a simple "go", and you probably cannot pass args to it, right?

That's right. If I load it into RAM on location 100000 and say "go 110000" it boots...
But it does only work if I say "go" from RAM, not from flash. But if I encapsulate the image with an header with "mkimage" I can boot it from flash using the "bootm <addr>" command.

Best regards
Petter Larsen

#3 lore raw
Quoted 5 lines · In message <1046186745.1130.50.camel@pla> you wrote:

I will debug it, but have not done it. I have an BDM degugger under windows. I am thinking of purchase one of the debuggers on your site. What does this cost, and does it include the GDB patched and ready for use?

The BDM4GDB parallel port adapter is 49.95 Euro, which includes cables (BDM, parallel port) and software on CDROM.

The list price for the bundle BDI2000 plus interface software "bdiGDB" for GDB debugger is 2430 Euro.

Quoted 3 lines

That's right. If I load it into RAM on location 100000 and say "go 110000" it boots...
But it does only work if I say "go" from RAM, not from flash. But if I

This means that the "simple" bootstrap loader is not even capable of doing this right :-(

Quoted 2 lines

encapsulate the image with an header with "mkimage" I can boot it from flash using the "bootm <addr>" command.

Because then bootm will copy the code to the load address first. But the "simple" bootstrap loader is really overkill then: everything it does is already included with U-Boot, just better.

Best regards,

Wolfgang Denk

Signature · 3 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
The light at the end of the tunnel is usually a "No Exit" sign.
#4 lore raw

Hi

Quoted 6 lines

The BDM4GDB parallel port adapter is 49.95 Euro, which includes cables (BDM, parallel port) and software on CDROM.

The list price for the bundle BDI2000 plus interface software "bdiGDB" for GDB debugger is 2430 Euro.

I think that I shall buy one of these. If a am going to debug the Linux kernel and modules on a 8xx processor, is it good enough with the BDM4GDB? What is the difference on these two?
With the BDM4GDB, can I use frontends for the gdb sw, like ddd or the debugger embedded inside the kdevelop ide?

Quoted 7 lines
Quoted 3 lines

That's right. If I load it into RAM on location 100000 and say "go 110000" it boots...
But it does only work if I say "go" from RAM, not from flash. But if I

This means that the "simple" bootstrap loader is not even capable of doing this right :-(

Quoted 6 lines
Quoted 2 lines

encapsulate the image with an header with "mkimage" I can boot it from flash using the "bootm <addr>" command.

Because then bootm will copy the code to the load address first. But the "simple" bootstrap loader is really overkill then: everything it does is already included with U-Boot, just better.

You said earlier that i must have missed something in my port. Did you mean the port of PPCBoot or the Linux kernel?

After PPCBoot sends the control over to Linux, which file in the source tree is first executed? Is it the assembler file arch/ppc/kernel/head_8xx.S?

Best regards
Petter Larsen

#5 lore raw

Hello,

Quoted 4 lines · in message <1046203198.1168.21.camel@pla> you wrote:

I think that I shall buy one of these. If a am going to debug the Linux kernel and modules on a 8xx processor, is it good enough with the BDM4GDB? What is the difference on these two?

Well, it depends. A lot of work can be done with the BDM4GDB adapters, as long as you restrict yourself to MPC8xx based systems. But even then there wil be situations where you will be remembered that it's a Do-It-Yourself solution, not a professional grade device.

The BDM4GDB is OK for the fatal case when you erased the flash by accident, or for occasional debugging a problem. For professional work I prefer to use a BDI2000 though. It's faster, it works more reliably, and most of all it supports a lot of other CPUs as well (CPU32/32+, MPC5xx/8xx, 6xx/7xx/74xx/82xx, 4xx, ARM7/9TDMI, ColdFire, MIPS32, MIPS64, XScale, M-Core ...

Quoted 2 lines

With the BDM4GDB, can I use frontends for the gdb sw, like ddd or the debugger embedded inside the kdevelop ide?

I never used kdevelop and thus I don't know about it, but you can use _any_ debugger frontend that communicates with GDB. DDD works just fine - with the BDM4GDB adapter, and with the BDI2000.

Best regards,

Wolfgang Denk

Signature · 4 lines
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
Do not follow where the path may lead....go instead where there is no
path and leave a trail.