[U-Boot-Users] start / load addresses for kernel

Hello:
I received the below advice recently:
since you are building for a non openbios kernel, you will need to change the make file. The start/ load addresses and all are different
I am trying to get more detail on what needs to change, I see 2 config options:
1) CONFIG_KERNEL_START_BOOL - is set this to yes 2) CONFIG_KERNEL_START -- what should this be set to - the default is 0xc0000000 seems fine to me
Are there any other options that I am missing?
Below is a log of my attempt to boot the kernel - displayed are the command line that is getting passed in, and well as the startup parameters - do these look okay - I made sure that the kernel bd_info struct is the same as the u-boot struct
**************************************************************************** Script started on Fri Mar 21 14:43:27 2003 Welcome to minicom 1.83.1
U-Boot 0.2.0 (Mar 19 2003 - 12:09:59) CPU: IBM PowerPC 405GPr Rev. A at 266.666 MHz (PLB=133, OPB=66, EBC=26 MHz) PCI async ext clock used, internal PCI arbiter enabled 16 kB I-Cache 16 kB D-Cache
Board: ### No HW ID - assuming WALNUT405 I2C: ready DRAM: 64 MB Now running in RAM - U-Boot at: 03fcf000 FLASH: 512 kB
*** Warning - bad CRC, using default environment
PCI: Bus Dev VenId DevId Class Int PCI Autoconfig: Memory region: [20000000-27ffffff] PCI Autoconfig: I/O region: [800000-3ffffff] PCI Scan: Found Bus 0, Device 0, Function 0 PCI Scan: Found Bus 0, Device 7, Function 0 PCI Autoconfig: BAR 0, Mem, size=0x1000000, address=0x20000000 PCI Autoconfig: BAR 1, I/O, size=0xffffff04, No room in resource PCI Autoconfig: BAR 2, I/O, size=0x1000000, address=0x1000000 00 07 1394 0978 0200 1c
In: serial Out: serial Err: serial
U-Boot relocated to 03fcf000
IDE: Bus 0: port = c OK
Device 0: Model: SanDisk SDCFB-64 Firm: Vdg 8.16. Ser#: 111913G1602X4714 Type: Removable Hard Disk Capacity: 61.2 MB = 0.0 GB (125440 x 512)
=> => imi 0x200000
## Checking Image at 00200000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298601 Bytes = 291.6 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
=> bootm 0x200000
## Booting image at 00200000 ...
Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298601 Bytes = 291.6 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
## Current stack ends at 0x03F9EBD8 => set upper limit to 0x00800000
## cmdline at 0x007FFF00 ... 0x007FFF20 root=/dev/ram console=ttyS0,9600
memsize = 0x04000000 flashstart = 0xFFF80000 flashsize = 0x00080000 flashoffset = 0x00031000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x001E8480 procfreq = 266.666 MHz plb_busfreq = 133.333 MHz pci_busfreq = 33.333 MHz ethaddr = 00:00:00:00:00:00 IP addr = 0.0.0.0 baudrate = 9600 bps No initrd
## Transferring control to Linux (at address 00000000) ...
Thanks
Jerry Walden

Once again - I'm making progress on bringing up Linux on a custom 405GPr board using u-boot.
First - I got my serial console working in Linux. I did not have to use TLB's or BAT's to map the memory addresses of the UART to properly initialize it.
I simply commented out the initialization that is done in /drivers/char/serial.c for the serial console. The initialization that I did in u-boot was sufficient.
So now my printk's can be seen and logged.
At this point I am trying to get the ramdisk working. The reason I am posting to this list is that I am not sure of the command line kernel options for initrd and the ram disk.
Yes - I read the FAQ's at the DENX site, as well as initrd.txt and I still am mystified as to what is happening. Below is a log of the boot attempt - any help would be greatly appreciated:
U-Boot 0.2.0 (Mar 24 2003 - 11:49:36) CPU: IBM PowerPC 405GPr Rev. A at 266.666 MHz (PLB=133, OPB=66, EBC=26 MHz) PCI async ext clock used, internal PCI arbiter enabled 16 kB I-Cache 16 kB D-Cache Board: ### No HW ID - assuming WALNUT405 I2C: ready DRAM: 64 MB Now running in RAM - U-Boot at: 03fcf000 FLASH: 512 kB *** Warning - bad CRC, using default environment PCI: Bus Dev VenId DevId Class Int PCI Autoconfig: Memory region: [20000000-27ffffff] PCI Autoconfig: I/O region: [800000-3ffffff] PCI Scan: Found Bus 0, Device 0, Function 0 PCI Scan: Found Bus 0, Device 7, Function 0 PCI Autoconfig: BAR 0, Mem, size=0x1000000, address=0x20000000 PCI Autoconfig: BAR 1, I/O, size=0xffffff04, No room in resource PCI Autoconfig: BAR 2, I/O, size=0x1000000, address=0x1000000 00 07 1394 0978 0200 1c
In: serial Out: serial Err: serial U-Boot relocated to 03fcf000 IDE: Bus 0: port = c OK Device 0: Model: SanDisk SDCFB-64 Firm: Vdg 8.16. Ser#: 111913G1602X4714 Type: Removable Hard Disk Capacity: 61.2 MB = 0.0 GB (125440 x 512) => imi 0x100000 ## Checking Image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298692 Bytes = 291.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
=> imi 0x200000 ## Checking Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
=> bootm 0x100000 0x200000 ## Booting image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298692 Bytes = 291.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x03F9EBD8 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF2F memsize = 0x04000000 flashstart = 0xFFF80000 flashsize = 0x00080000 flashoffset = 0x00031000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x001E8480 procfreq = 266.666 MHz plb_busfreq = 133.333 MHz pci_busfreq = 33.333 MHz ethaddr = 00:00:00:00:00:00 IP addr = 0.0.0.0 baudrate = 9600 bps ## Loading RAMDisk Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
## initrd at 0x00200040 ... 0x00370827 (len=1509352=0x1707E8) Loading Ramdisk to 03e2d000, end 03f9d7e8 ... OK
## Transferring control to Linux (at address 00000000) ...
Linux version 2.4.18_mvl30-walnut (root@hhl) (gcc version 3.2.1 20020930 IBM Sycamore (IBM405GPr) Platform On node 0 totalpages: 16384 zone(0): 16384 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/ram console=ttyS0,9600n8 console=tty0 Memory: 62268k available (512k kernel code, 212k data, 32k init, 0k highmem) Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes) Mount-cache hash table entries: 1024 (order: 1, 8192 bytes) Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 OCP uart ver 1.2 init complete Starting kswapd Disabling the Out Of Memory Killer Serial driver version 5.05c (2001-07-08) with no serial options enabled ttyS00 at 0x0000 (irq = 0) is a 16550A ttyS01 at 0x0000 (irq = 1) is a 16550A block: 128 slots per queue, batch=32 RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize Tracer: Initialization complete RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)
PowerPC Linux Kernel Image (gzip compressed Jerry Walden

In message EGEGIJHKDKJGAJMGIDPNCEBNCKAA.jwalden@digitalatlantic.com you wrote:
Once again - I'm making progress on bringing up Linux on a custom 405GPr board using u-boot.
...which is not exactly the topic of this list.
First - I got my serial console working in Linux. I did not have to use TLB's or BAT's to map the memory addresses of the UART to properly initialize it.
I simply commented out the initialization that is done in /drivers/char/serial.c for the serial console. The initialization that I did in u-boot was sufficient.
I don't think that was a good idea. Basicly it means that you did not understand what's going on, which is not a good base to build embedded systems on.
At this point I am trying to get the ramdisk working. The reason I am posting to this list is that I am not sure of the command line kernel options for initrd and the ram disk.
...
Kernel command line: root=/dev/ram console=ttyS0,9600n8 console=tty0
Command line options look ok to me (at least for a first test; you might want to add "rw" later).
...
RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)
...
Where did you get this ramdisk image from? What makes you think it is working at all?
Best regards,
Wolfgang Denk

I don't think that was a good idea. Basicly it means that you did not understand what's going on, which is not a good base to build embedded systems on.
Okay - now you got me going... (why is it that every time I have a communique with you I feel like I talking to a professor is college...)
I discovered that the UART divisor I selected for u-boot is different than the uart divisor that the function serial_console_setup in /drivers/char/serial.c.
The kernel I am working with was for the Walnut board, and my board is a custom board. The formula for the uart divisor = serial_input_clock / (16 * 9600). So my board uses the cpu clock and divides it down to come up with the serial input clock, and the Walnut board uses an external clock input.
Jerry Walden
-----Original Message----- From: u-boot-users-admin@lists.sourceforge.net [mailto:u-boot-users-admin@lists.sourceforge.net]On Behalf Of Wolfgang Denk Sent: Tuesday, March 25, 2003 1:18 PM To: jwalden@digitalatlantic.com Cc: U-Boot-Users@Lists. Sourceforge. Net Subject: Re: [U-Boot-Users] RE: start / load addresses for initrd
In message EGEGIJHKDKJGAJMGIDPNCEBNCKAA.jwalden@digitalatlantic.com you wrote:
Once again - I'm making progress on bringing up Linux on a custom 405GPr board using u-boot.
...which is not exactly the topic of this list.
First - I got my serial console working in Linux. I did not have to use TLB's or BAT's to map the memory addresses of the UART to properly initialize it.
I simply commented out the initialization that is done in /drivers/char/serial.c for the serial console. The initialization that I did in u-boot was sufficient.
I don't think that was a good idea. Basicly it means that you did not understand what's going on, which is not a good base to build embedded systems on.
At this point I am trying to get the ramdisk working. The reason I am posting to this list is that I am not sure of the command line kernel options for initrd and the ram disk.
...
Kernel command line: root=/dev/ram console=ttyS0,9600n8 console=tty0
Command line options look ok to me (at least for a first test; you might want to add "rw" later).
...
RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)
...
Where did you get this ramdisk image from? What makes you think it is working at all?
Best regards,
Wolfgang Denk
-- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de Earth -- mother of the most beautiful women in the universe. -- Apollo, "Who Mourns for Adonais?" stardate 3468.1
------------------------------------------------------- This SF.net email is sponsored by: The Definitive IT and Networking Event. Be There! NetWorld+Interop Las Vegas 2003 -- Register today! http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users

Dear Jerry,
in message EGEGIJHKDKJGAJMGIDPNIEDDCKAA.jwalden@digitalatlantic.com you wrote:
I don't think that was a good idea. Basicly it means that you did not understand what's going on, which is not a good base to build embedded systems on.
Okay - now you got me going... (why is it that every time I have a communique with you I feel like I talking to a professor is college...)
Maybe it's just because I've been through this too often myself before. I hope you did not take any offense - at least none was meant by me.
I discovered that the UART divisor I selected for u-boot is different than the uart divisor that the function serial_console_setup in /drivers/char/serial.c.
Seems you got it :-)
Best regards,
Wolfgang Denk

Jerry!
Once again - I'm making progress on bringing up Linux on a custom 405GPr board using u-boot.
...which is not exactly the topic of this list.
First - I got my serial console working in Linux. I did not have to use TLB's or BAT's to map the memory addresses of the UART to properly initialize it.
I simply commented out the initialization that is done in /drivers/char/serial.c for the serial console. The initialization that I did in u-boot was sufficient.
I don't think that was a good idea. Basicly it means that you did not understand what's going on, which is not a good base to build embedded systems on.
Please check the current implementation of the cpci405 board in the linuxppc_2_4_devel tree (arch/ppc/platforms/cpci405.c / .h). There is a new "cpci405_early_serial_map()" function (cloned from the evb405ep board), to dynamically calculate BASE_BAUD from the UDIV setting. I am pretty sure, that this is your problem!
By the way: We have all version of PPC405GP (200MHz, 266MHz) and PPC405GPr (266MHz, 333MHz and 400MHz) running with this code!
Best regards, Stefan.

Where did you get this ramdisk image from?
I made the ramdisk image using the following procedure:
dd if=/dev/zero of=ramdisk bs=1k count=16384 /sbin/mke2fs -q -F -m0 ramdisk mount -o loop ramdisk mountpoint cd mountpoint tar xf ../fsimage.tar sync sleep 1 sync cd .. umount mountpoint sync gzip -9 ramdisk mkimage -n 'DA Ramdisk Image' -A ppc -O linux -T ramdisk -C gzip -d ramdisk.gz initrd
What makes you think it is working at all?
I performed the following procedure to verify it.
[root@hhl initrd]# dd if=initrd of=ramdisk.gz bs=64 skip=1 23583+1 records in 23583+1 records out [root@hhl initrd]# gzip -d ramdisk.gz [root@hhl initrd]# mount -o loop ramdisk mountpoint [root@hhl initrd]# ls -al mountpoint total 26 drwxr-xr-x 10 root root 1024 Mar 20 15:34 drwxr-xr-x 3 root root 4096 Apr 1 16:31 drwxr-xr-x 2 root root 1024 Mar 20 15:34 drwxr-xr-x 2 root root 2048 Mar 20 15:34 drwxr-xr-x 6 root root 1024 Mar 20 15:34 drwxr-xr-x 2 root root 2048 Mar 20 15:34 drwxr-xr-x 2 root root 12288 Mar 20 15:34 drwxr-xr-x 2 root root 1024 Mar 20 15:34 drwxr-xr-x 5 root root 1024 Mar 20 15:34 drwxr-xr-x 4 root root 1024 Mar 20 15:34
Best regards,
Wolfgang Denk
Below is a log of my BDI session (where I load the kernel and initrd) and beneath that is a log of my u-boot session - note: the command line is shown.
I have studied the code in rd.c, and the message is coming from a routine called "flush_window" - there is something I do not understand - I do not see a call to flush_window anywhere, and the declaration has an __init in front of it. Can anyone explain to me how the routine gets called?
BDI>reset BDI>- TARGET: processing user reset request BDI>- TARGET: reseting target passed BDI>- TARGET: processing target startup .... BDI>- TARGET: processing target startup passed BDI>go - Target started with DBCR0 = 0x80000001
BDI>halt Target state : debug mode Debug entry cause : JTAG stop request Current PC : 0x03fd236c Current CR : 0x24002042 Current MSR : 0x00021000 Current LR : 0x03fd236c
BDI>load 0x100000 vmlinux.PPCBoot BIN Loading vmlinux.PPCBoot , please wait .... Loading program file passed BDI>load 0x200000 initrd BIN Loading initrd , please wait .... Loading program file passed
BDI>go 0x03fd236c
- Target started with DBCR0 = 0x80000001
U-Boot 0.2.0 (Mar 27 2003 - 09:29:40)
CPU: IBM PowerPC 405GPr Rev. A at 266.666 MHz (PLB=133, OPB=66, EBC=26 MHz) PCI async ext clock used, internal PCI arbiter enabled 16 kB I-Cache 16 kB D-Cache
Board: ### No HW ID - assuming WALNUT405 I2C: ready DRAM: 64 MB
Now running in RAM - U-Boot at: 03fcf000 FLASH: 512 kB *** Warning - bad CRC, using default environment
PCI: Bus Dev VenId DevId Class Int PCI Autoconfig: Memory region: [20000000-27ffffff] PCI Autoconfig: I/O region: [800000-3ffffff] PCI Scan: Found Bus 0, Device 0, Function 0 PCI Scan: Found Bus 0, Device 7, Function 0 PCI Autoconfig: BAR 0, Mem, size=0x1000000, address=0x20000000 PCI Autoconfig: BAR 1, I/O, size=0xffffff04, No room in resource PCI Autoconfig: BAR 2, I/O, size=0x1000000, address=0x1000000 00 07 1394 0978 0200 1c
In: serial Out: serial Err: serial
U-Boot relocated to 03fcf000 IDE: Bus 0: port = c OK
H Device 0: Model: SanDisk SDCFB-32 Firm: Vdg 1.23. Ser#: 003917A2203F2620 Type: Removable Hard Disk Capacity: 30.6 MB = 0.0 GB (62720 x 512) => => imi 0x100000
## Checking Image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298672 Bytes = 291.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
=> imi 0x200000 ## Checking Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK => printenv bootargs=root=/dev/ram rw ramdisk_size=8192 console=ttyS0,9600n8 console=tty0 bootcmd=bootm ffc0000 baudrate=9600 loads_echo=1 stdin=serial stdout=serial stderr=serial
Environment size: 169/65532 bytes => bootm 0x100000 0x200000 ## Booting image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298672 Bytes = 291.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x03F9EBE8 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF44 memstart = 0x00000000 memsize = 0x04000000 flashstart = 0xFFF80000 flashsize = 0x00080000 flashoffset = 0x00031000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x001E8480 procfreq = 266.666 MHz plb_busfreq = 133.333 MHz pci_busfreq = 33.333 MHz ethaddr = 00:00:00:00:0:00 IP addr = 0.0.0.0 baudrate = 9600 bps
## Loading RAMDisk Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
## initrd at 0x00200040 ... 0x00370827 (len=1509352=0x1707E8) Loading Ramdisk to 03e2d000, end 03f9d7e8 ... OK ## Transferring control to Linux (at address 00000000) ...
Linux version 2.4.18_mvl30-walnut (root@hhl) (gcc version 3.2.1 20020930 (MontaVista)) #33 Tue Mar 25
<6>IBM Sycamore (IBM405GPr) Platform On node 0 totalpages: 16384 zone(0): 16384 pages.
zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/ram rw ramdisk_size=8192 console=ttyS0,9600n8 console=tty0 serial_console_setup options = 9600n8 baud = 9600 state->baud_base = 691200 baud = 9600 quot = 72 info->io_type = SERIAL_IO_MEM info->iomem_base = ef600300 Calibrating delay loop... 266.24 BogoMIPS Memory: 62268k available (512k kernel code, 212k data, 32k init, 0k highmem) Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes) Mount-cache hash table entries: 1024 (order: 1, 8192 bytes) Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 OCP uart ver 1.2 init complete Starting kswapd Disabling the Out Of Memory Killer Serial driver version 5.05c (2001-07-08) with no serial options enabled ttyS00 at 0x0000 (irq = 0) is a 16550A ttyS01 at 0x0000 (irq = 1) is a 16550A block: 128 slots per queue, batch=32 RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize Tracer: Initialization complete RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)

In message EGEGIJHKDKJGAJMGIDPNGEFHCKAA.jwalden@digitalatlantic.com you wrote:
Where did you get this ramdisk image from?
I made the ramdisk image using the following procedure:
dd if=/dev/zero of=ramdisk bs=1k count=16384 /sbin/mke2fs -q -F -m0 ramdisk mount -o loop ramdisk mountpoint cd mountpoint tar xf ../fsimage.tar
Where did you get "fsimage.tar" from? What does it contain.
What makes you think it is working at all?
I performed the following procedure to verify it.
[root@hhl initrd]# dd if=initrd of=ramdisk.gz bs=64 skip=1 23583+1 records in 23583+1 records out [root@hhl initrd]# gzip -d ramdisk.gz [root@hhl initrd]# mount -o loop ramdisk mountpoint [root@hhl initrd]# ls -al mountpoint total 26 drwxr-xr-x 10 root root 1024 Mar 20 15:34 drwxr-xr-x 3 root root 4096 Apr 1 16:31 drwxr-xr-x 2 root root 1024 Mar 20 15:34 drwxr-xr-x 2 root root 2048 Mar 20 15:34 drwxr-xr-x 6 root root 1024 Mar 20 15:34 drwxr-xr-x 2 root root 2048 Mar 20 15:34 drwxr-xr-x 2 root root 12288 Mar 20 15:34 drwxr-xr-x 2 root root 1024 Mar 20 15:34 drwxr-xr-x 5 root root 1024 Mar 20 15:34 drwxr-xr-x 4 root root 1024 Mar 20 15:34
Ummm... I don't even see a filename here. I don;t see if there is an "init" binary or a shell or any library or any device.
Which sort of output do you expect when providing such input? GIGO...
Wolfgang Denk

Where did you get "fsimage.tar" from?
I made it using info obtained from MontaVista Support. Essentially I used thier Target Configuration Tool - the script is pasted below. An excerpt from the tech support follows:
We recommend using TCT to build a root filesystem image. The program you use is /opt/hardhat/host/bin/targetconf.
If you need a non-GUI tool to build an initrd, we have one that is used with our Compaq iPAQ LSP. This is not supported for general use in creating ramdisk images, but it should work for you, and I've provided it here.
Instructions:
1. If you've relocated your MontaVista Linux installation to somewhere other than the default location (/opt/hardhat/...), then you need to edit the script and change the line
basedir = "/opt/hardhat"
to point to the correct base directory for your installation.
2. ctargetconf can only be used to build a filesystem. It will not build a kernel as is done in targetconf.
3. Create a project in TCT but do not include a "Custom kernel". Basically, you are creating a TCT project that will only build a filesystem, i.e.,
New Project -> (Fill in proper fields in "TCT: New Project" window, select LSP, ***BUT*** make sure to unselect "Use Custom Kernel"). Then create a config file and choose all desired packages. Save the config.
4. From your TCT project directory, copy the .project and *.cfg file to your working directory where ctargetconf is located.
5. Build a filesystem image.
./ctargetconf -c test1.cfg -o fsimage.tar
To see command options, just do,
./ctargetconf
6. Making the initrd image:
The above builds a tarball of the files in the root filesystem. To make an actual initrd image, you have to make a file of the correct size, make an ext2 filesystem on this file, mount the new filesystem, copy (preserving symbolic links) the files from your tarball into the new filesystem, then unmount the filesystem, sync, and compress the filesystem. The following makes a 16 MB ramdisk image from fsimage.tar:
mkdir mountpoint dd if=/dev/zero of=ramdisk bs=1k count=16384 /sbin/mke2fs -q -F -m0 ramdisk mount -o loop ramdisk mountpoint cd mount tar xf fsimage.tar sync sleep 1 sync cd .. umount mountpoint sync gzip -9 ramdisk
What does it contain.
tar -xvf fsimage.tar ls -al total 36 drwxr-xr-x 9 root root 4096 Apr 1 18:27 . drwxr-xr-x 4 root root 4096 Apr 1 18:11 .. drwxr-xr-x 2 root root 4096 Apr 1 18:11 bin drwxr-xr-x 2 root root 4096 Apr 1 18:11 dev drwxr-xr-x 6 root root 4096 Apr 1 18:11 etc drwxr-xr-x 2 root root 4096 Apr 1 18:11 lib drwxr-xr-x 2 root root 4096 Apr 1 18:11 sbin drwxr-xr-x 5 root root 4096 Apr 1 18:11 usr drwxr-xr-x 4 root root 4096 Apr 1 18:11 var
Ummm... I don't even see a filename here. I don;t see if there is an "init" binary or a shell or any library or any device.
Sorry about that - I need to learn how to cut and paste properly ;-)
Which sort of output do you expect when providing such input? GIGO...
I expect none - it was a mistake.
The mounted volume contains:
ls -al mountpoint total 26 drwxr-xr-x 10 root root 1024 Mar 20 15:34 . drwxr-xr-x 4 root root 4096 Apr 1 18:28 .. drwxr-xr-x 2 root root 1024 Mar 20 15:34 bin drwxr-xr-x 2 root root 2048 Mar 20 15:34 dev drwxr-xr-x 6 root root 1024 Mar 20 15:34 etc drwxr-xr-x 2 root root 2048 Mar 20 15:34 lib drwxr-xr-x 2 root root 12288 Mar 20 15:34 lost+found drwxr-xr-x 2 root root 1024 Mar 20 15:34 sbin drwxr-xr-x 5 root root 1024 Mar 20 15:34 usr drwxr-xr-x 4 root root 1024 Mar 20 15:34 var
Wolfgang Denk
#!/usr/bin/env python
# # FILE: ctargetconf # # DESCRIPTION: # ctargetconf is a scalled back, commandline version of targetconf. # # AUTHOR: MontaVista Software, Inc. source@mvista.com # # Copyright 2000-2001 MontaVista Software Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 675 Mass Ave, Cambridge, MA 02139, USA. #
import string import sys import os import os.path import getopt
# # Find module library and add to search path #
# The following assumes this script is installed under: # ${basedir}/devkit/lsp/${lsp_name}/sub_dir/ thisdir = os.path.dirname(os.path.abspath(sys.argv[0])) #basedir = os.path.normpath(os.path.join(thisdir, '../../../../')) basedir = "/opt/hardhat" libpath = os.path.join(basedir, 'host', 'lib', 'python') if os.path.isdir(libpath): sys.path.insert(1, libpath)
# # Set relocatable base path #
from MontaVista.Configurator.PEBackend import SetHHLBase
SetHHLBase(basedir)
from MontaVista.Configurator.PEBackend import Project, ProjectConfig, LspDatum from MontaVista.Configurator.PECfgComponents import PackageSelectorConfig, TargetOptions
def _outcmd ( strdata ): if (SuppressOutput == "FALSE"): sys.stdout.write(strdata) def _errcmd ( strdata ): sys.stderr.write(strdata) def _donecmd ( ): sys.stderr.write("Done.\n")
WorkingDir=None UseProjectFile="FALSE" ProjectFile=None LSPname=None Config=None StripFiles=None OutputFile=None SuppressOutput="FALSE" DBVerify=None ToolPrefix="FALSE"
def usage (): sys.stderr.write("uTCT The command line adventure\n\n") sys.stderr.write("\t-d <Working Directory> or --working-direcotry <Work dir> : If ommited the Current is chosen\n") sys.stderr.write("\t-p or --project-file : Load Project file - optional project file\n") sys.stderr.write("\t-c <config file> or --package-configuration <config file> : Package Configuation (Default)\n") sys.stderr.write("\nThese options will override the project file if provided:\n\n") sys.stderr.write("\t-s or --strip-files : Strip files\n") sys.stderr.write("\t-u or --no-strip-files : Don't Strip files (Default)\n") sys.stderr.write("\t-l <lsp name> or --lsp-name <lsp name> : Set Lsp Name\n") sys.stderr.write("\t-n <project name> or --project-name <project name> : Set Project Name\n") sys.stderr.write("\t-o <output file> or --output-file <output file> : Output Filesystem file\n") sys.stderr.write("\t-q or --quiet : Suppress Most Filesystem generation\n") sys.stderr.write("\t--db-verify : Compare Configfile against Database\n") sys.stderr.write("\t--get-tool-prefix : Output Tool prefix\n\n") sys.exit(1) try: opts, args = getopt.getopt(sys.argv[1:], "d:pc:sul:n:o:q", ["working-directory=","project-file", "package-configuration=","strip-files", \
"no-strip-files","lsp-name=","project-name=","output-file=","quiet","db-veri fy", "get-tool-prefix" ]) except: usage()
for o, a in opts: if ( o == "-d" or o == "--working-directory"): WorkingDir=a if ( o == "-p" or o == "--project-file"): UseProjectFile="TRUE" if ( o == "-c" or o == "--package-configuration"): Config = a if ( o == "-l" or o == "--lsp-name"): LSPname = a if ( o == "-n" or o == "--project-name"): print o + " " + a if ( o == "-s" or o == "--strip-files"): StripFiles="TRUE" if ( o == "-u" or o == "--no-strip-files" ): StripFiles="FALSE" if ( o == "-o" or o == "--output-file" ): OutputFile = a if ( o == "-q" or o == "--quiet"): SuppressOutput = "TRUE" if ( o == "--db-verify"): DBVerify="TRUE" if ( o == "--get-tool-prefix"): ToolPrefix="TRUE"
if ( Config == None and ToolPrefix != "TRUE" ): sys.stderr.write("You must supply a Package Config file\n\n") usage()
if (WorkingDir == None): WorkingDir=os.getcwd()
if (Config != None): PackConfig = os.path.split(Config)
myProject = Project()
if ( UseProjectFile == "TRUE" ): myProject.Load(WorkingDir)
elif (LSPname != None): myProject.path=WorkingDir
if ( LSPname != None): LSP=LspDatum(LSPname) if(ToolPrefix == "TRUE"): print LSP.GetArchBin() + "/" + LSP.GetArchPrefix() sys.exit(1) myProject.SetLSP(LSP) myProject.lspname = LSP.GetName()
if ( UseProjectFile == "FALSE" and LSPname == None): myProject.Load(WorkingDir)
myProject.SetKernelType("Prebuilt")
myProjectConfig = ProjectConfig(myProject.GetWorkDir(), myProject)
if ( PackConfig[0] != ""): temp = myProjectConfig.GetWorkDir() myProjectConfig.workdir = PackConfig[0] + "/" if ( not myProjectConfig.LoadConfig(PackConfig[1])): sys.stderr.write("Could not read " + Config + "\n") sys.exit(1) myProjectConfig.workdir = temp
elif ( os.path.isfile(myProjectConfig.GetWorkDir() + "/" + PackConfig[1])): myProjectConfig.LoadConfig(PackConfig[1])
elif ( os.path.isfile(PackConfig[1])): temp = myProjectConfig.workdir myProjectConfig.workdir = os.getcwd() + "/" if ( not myProjectConfig.LoadConfig(PackConfig[1])): sys.stderr.write("Could not read " + Config + "\n") sys.exit(1) myProjectConfig.workdir = temp
else: sys.stderr.write("Could not find " + Config + "\n") sys.exit(1)
MyLSP=myProject.GetLSP()
pinfodirlist = MyLSP.GetPackageInfoDBDirList()
packageSelCfg = PackageSelectorConfig(myProject, pinfodirlist) packageSelCfg.SetConfig(myProjectConfig)
sys.stderr.write("Building Package Database...") packageSelCfg.collectprocess.Wait() sys.stderr.write("Done.\n")
MissingRequiredPackages = packageSelCfg.GetMissingRequiredPackages()
ConflictingPackages = packageSelCfg.GetConflicts()
MissingPackages = packageSelCfg.GetMissingPackages()
if ( MissingRequiredPackages != [] or MissingPackages != [] or ConflictingPackages != [] ): if ( MissingRequiredPackages != [] ): print ("Missing Required Package(s):") for MisReqPack in MissingRequiredPackages: print MisReqPack if ( MissingPackages != [] ): print "Missing Package(s):" for MisPack in MissingPackages: print MisPack if ( ConflictingPackages != [] ): print "Conflicting Package(s):" for ConPack in ConflictingPackages: print MisReqPack sys.stderr.write("Could not reconcile database and package configuration file\n") sys.exit(1)
if ( DBVerify == "TRUE" ): print "Database Verified" sys.exit(1)
Options = TargetOptions(myProject)
Options.SetConfig(myProjectConfig)
if ( StripFiles == "TRUE"): Options.SetOption('strip',1) elif ( StripFiles == "FALSE"): Options.SetOption('strip',0)
if ( OutputFile != None ): Options.SetOption('fsimage', OutputFile)
BuildTarfile = myProjectConfig.GetConfigBuilder( outcmd = _outcmd, errcmd = _errcmd, donecmd = _donecmd)
sys.stderr.write("Building Target Filesystem...")
if (SuppressOutput == "FALSE"): sys.stderr.write("\n")
BuildTarfile.Start()
sys.exit(0)

In message EGEGIJHKDKJGAJMGIDPNKEFKCKAA.jwalden@digitalatlantic.com you wrote:
Where did you get "fsimage.tar" from?
I made it using info obtained from MontaVista Support. Essentially I used thier Target Configuration Tool -
Sorry, but I guess you should ask MV support about the problems with their tools.
Wolfgang Denk

Okay - I don't want to use thier tools - can you see anything obvious that is missing from the initrd (fsimage.tar) file.
Since I do not want to use thier tools where can I find info on making a proper initrd (I already read Documentation/initrd.txt).
Sorry - this thread should be moved over to the embedded Linux forum - It started out as a u-boot question 'cause I thought that my env variables were wrong.
Thanks
Jerry
-----Original Message----- From: u-boot-users-admin@lists.sourceforge.net [mailto:u-boot-users-admin@lists.sourceforge.net]On Behalf Of Wolfgang Denk Sent: Tuesday, April 01, 2003 6:52 PM To: jwalden@digitalatlantic.com Cc: U-Boot-Users@Lists. Sourceforge. Net Subject: Re: [U-Boot-Users] RE: start / load addresses for initrd
In message EGEGIJHKDKJGAJMGIDPNKEFKCKAA.jwalden@digitalatlantic.com you wrote:
Where did you get "fsimage.tar" from?
I made it using info obtained from MontaVista Support. Essentially I used thier Target Configuration Tool -
Sorry, but I guess you should ask MV support about the problems with their tools.
Wolfgang Denk
-- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de Our business is run on trust. We trust you will pay in advance.
------------------------------------------------------- This SF.net email is sponsored by: ValueWeb: Dedicated Hosting for just $79/mo with 500 GB of bandwidth! No other company gives more support or power for your dedicated server http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users

In message MMEKKOMGOBGEIENHLGDLEEGMCHAA.jwalden123@adelphia.net you wrote:
Okay - I don't want to use thier tools - can you see anything obvious that is missing from the initrd (fsimage.tar) file.
You cannot see anything from just the listing of the tp level directories. There are many things to check: the existence of the correct entries to /dev, is there a "init" process, are all requires (shared?) libs installed, ...
Since I do not want to use thier tools where can I find info on making a proper initrd (I already read Documentation/initrd.txt).
Have a look at the build script we use for the SELF RPM in our ELDK; or unpack the pRamdisk image that comes with the ELDK (see /opt/eldk/<cpu>/images on your installed system).
Best regards,
Wolfgang Denk

Hello:
I was getting the error: (RAMDISK: incomplete write (ramdisk too small?) (-28!= 32768) and then I discovered the my command line option ramdisk_size=8192 needs to be changed to ramdisk_size=16384.
Now I am past the ramdisk too small error, and I am getting the following error (see complete trace below):
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize Tracer: Initialization complete RAMDISK: Couldn't find valid RAM disk image starting at 0. Freeing initrd memory: 1473k freed Kernel panic: VFS: Unable to mount root fs on 01:00
In the below trace I see the two following lines: Loading RAMDisk Image at 00200000 ... Loading Ramdisk to 03e2d000, end 03f9d7e8 ... OK
The "error" above seems to suggest that the loader is looking for a ramdisk at 0 - however the two above lines (which appear to be conflicting) suggest that the image is at 0x200000 or 0x03e2d00.
Any suggestions?
Thanks
Jerry Walden
bootm 0x100000 0x200000 ## Booting image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298672 Bytes = 291.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x03F9EBE8 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF45 memstart = 0x00000000 memsize = 0x04000000 flashstart = 0xFFF80000 flashsize = 0x00080000 flashoffset = 0x00031000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x001E8480 procfreq = 266.666 MHz b_busfreq = 133.333 MHz pci_busfreq = 33.333 MHz ethaddr = 00:00:00:00:00:00 IP addr = 0.0.0.0 baudrate = 9600 bps ## Loading RAMDisk Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK ## initrd at 0x00200040 ... 0x00370827 (len=1509352=0x1707E8) Loading Ramdisk to 03e2d000, end 03f9d7e8 ... OK ## Transferring control to Linux (at address 00000000) ... Linux version 2.4.18_mvl30-walnut (root@hhl) (gcc version 3.2.1 20020930 (MontaVista)) #33 Tue Mar 25 15:30:00 <6>IBM Sycamore (IBM405GPr) Platform On node 0 totalpages: 16384 zone(0): 16384 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/ram rw ramdisk_size=16384 console=ttyS0,9600n8 console=tty0 Calibrating delay loop... 266.24 BogoMIPS[1;29r[29;1H Memory: 62268k available (512k kernel code, 212k data, 32k init, 0k
highmem)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes) Mount-cache hash table entries: 1024 (order: 1, 8192 bytes) Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 OCP uart ver 1.2 init complete Starting kswapd Disabling the Out Of Memory Killer Serial driver version 5.05c (2001-07-08) with no serial options enabled ttyS00 at 0x0000 (irq = 0) is a 16550A ttyS01 at 0x0000 (irq = 1) is a 16550A block: 128 slots per queue, batch=32 RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize Tracer: Initialization complete RAMDISK: Couldn't find valid RAM disk image starting at 0. Freeing initrd memory: 1473k freed Kernel panic: VFS: Unable to mount root fs on 01:00
Jerry Walden
-----Original Message----- From: wd@denx.de [mailto:wd@denx.de] Sent: Tuesday, April 01, 2003 6:11 PM To: jwalden@digitalatlantic.com Cc: U-Boot-Users@Lists. Sourceforge. Net Subject: Re: [U-Boot-Users] RE: start / load addresses for initrd
In message EGEGIJHKDKJGAJMGIDPNGEFHCKAA.jwalden@digitalatlantic.com you wrote:
Where did you get this ramdisk image from?
I made the ramdisk image using the following procedure:
dd if=/dev/zero of=ramdisk bs=1k count=16384 /sbin/mke2fs -q -F -m0 ramdisk mount -o loop ramdisk mountpoint cd mountpoint tar xf ../fsimage.tar
Where did you get "fsimage.tar" from? What does it contain.
What makes you think it is working at all?
I performed the following procedure to verify it.
[root@hhl initrd]# dd if=initrd of=ramdisk.gz bs=64 skip=1 23583+1 records in 23583+1 records out [root@hhl initrd]# gzip -d ramdisk.gz [root@hhl initrd]# mount -o loop ramdisk mountpoint [root@hhl initrd]# ls -al mountpoint total 26 drwxr-xr-x 10 root root 1024 Mar 20 15:34 drwxr-xr-x 3 root root 4096 Apr 1 16:31 drwxr-xr-x 2 root root 1024 Mar 20 15:34 drwxr-xr-x 2 root root 2048 Mar 20 15:34 drwxr-xr-x 6 root root 1024 Mar 20 15:34 drwxr-xr-x 2 root root 2048 Mar 20 15:34 drwxr-xr-x 2 root root 12288 Mar 20 15:34 drwxr-xr-x 2 root root 1024 Mar 20 15:34 drwxr-xr-x 5 root root 1024 Mar 20 15:34 drwxr-xr-x 4 root root 1024 Mar 20 15:34
Ummm... I don't even see a filename here. I don;t see if there is an "init" binary or a shell or any library or any device.
Which sort of output do you expect when providing such input? GIGO...
Wolfgang Denk
-- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de This is an unauthorized cybernetic announcement.

Jerry,
in message EGEGIJHKDKJGAJMGIDPNEEGNCKAA.jwalden@digitalatlantic.com you wrote:
I was getting the error: (RAMDISK: incomplete write (ramdisk too small?) (-28!= 32768) and then I discovered the my command line option ramdisk_size=8192 needs to be changed to ramdisk_size=16384.
What makes you think so? I think you are wrong.
## Loading RAMDisk Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB
Given a compressed size of 1.4 MB, the contents of the ramdisk will be probably in the range of 3...4 MB. Did you really create a ramdisk 16 MB big?
RAMDISK: Couldn't find valid RAM disk image starting at 0. Freeing initrd memory: 1473k freed Kernel panic: VFS: Unable to mount root fs on 01:00
Again, I see no indication that you really have a good, working ramdisk image. I think you should ask MV support for help.
Alternmatively, you could try using a known-to-work ramdisk image for a start, for example one from here: ftp://ftp.denx.de/pub/LinuxPPC/usr/src/SELF/images/
Wolfgang Denk

I was getting the error: (RAMDISK: incomplete write (ramdisk too small?) (-28!= 32768) and then I discovered the my command line option ramdisk_size=8192 needs
to
be changed to ramdisk_size=16384.
What makes you think so? I think you are wrong.
Yes - I was wrong - I misinterpreted the definition of the command line option
## Loading RAMDisk Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB
Given a compressed size of 1.4 MB, the contents of the ramdisk will be probably in the range of 3...4 MB. Did you really create a ramdisk 16 MB big?
Yes - stupid mistake
RAMDISK: Couldn't find valid RAM disk image starting at 0. Freeing initrd memory: 1473k freed Kernel panic: VFS: Unable to mount root fs on 01:00
Again, I see no indication that you really have a good, working ramdisk image. I think you should ask MV support for help.
Alternmatively, you could try using a known-to-work ramdisk image for a start, for example one from here: ftp://ftp.denx.de/pub/LinuxPPC/usr/src/SELF/images/
Okay - I downloaded pRamdisk and I now have the following error:
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize Tracer: Initialization complete RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)
So now it has found a valid ramdisk image - and it was not before, however I still get the other error.
Kindest Regards,
Jerry Walden
Entire Boot Log is Below:
U-Boot 0.2.0 (Apr 2 2003 - 11:42:33)
CPU: IBM PowerPC 405GPr Rev. A at 266.666 MHz (PLB=133, OPB=66, EBC=26 MHz) PCI async ext clock used, internal PCI arbiter enabled 16 kB I-Cache 16 kB D-Cache
Board: ### No HW ID - assuming WALNUT405 I2C: ready DRAM: 64 MB Now running in RAM - U-Boot at: 03fcf000 FLASH: 512 kB *** Warning - bad CRC, using default environment
PCI: Bus Dev VenId DevId Class In PCI Autoconfig: Memory region: [20000000-27ffffff] PCI Autoconfig: I/O region: [800000-3ffffff] PCI Scan: Found Bus 0, Device 0, Function 0 PCI Scan: Found Bus 0, Device 7, Function 0 PCI Autoconfig: BAR 0, Mem, size=0x1000000, address=0x20000000 PCI Autoconfig: BAR 1, I/O, size=0xffffff04, No room in resource PCI Autoconfig: BAR 2, I/O, size=0x1000000, address=0x1000000 00 07 1394 0978 0200 1c
In: serial Out: serial Err: serial
U-Boot relocated to 03fcf000 Bus 0: port = c OK Device 0: Model: SanDisk SDCFB-32 Firm: Vdg 1.23. Ser#: 003917A2203F2620 Type: Removable Hard Disk Capacity: 30.6 MB = 0.0 GB (62720 x 512) => => imi 0x100000
## Checking Image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 300107 Bytes = 293.1 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
=> imi 0x200000
## Checking Image at 00200000 ... Image Name: Simple Embedded Linux Framework Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1476478 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK => bootm 0x100000 0x200000
## Booting image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 300107 Bytes = 293.1 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x03F9EBE8 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF45 memstart = 0x00000000 memsize = 0x04000000 flashstart = 0xFFF80000 flashsize = 0x00080000 flashoffset = 0x0003100 ramstart = 0x00000000 ramsize = 0x00000000 bootflags = 0x001E8480 procfreq = 266.666 MHz lb_busfreq = 133.333 MHz pci_busfreq = 33.333 MHz ethaddr = 00:00:00:00:00:00 IP addr = 0.0.0.0 baudrate = 9600 bps
## Loading RAMDisk Image at 00200000 ...
Image Name: Simple Embedded Linux Framework Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1476478 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
## initrd at 0x00200040 ... 0x003687BD (len=1476478=0x16877E)
Loading Ramdisk to 03e35000, end 03f9d77e ... OK
## Transferring control to Linux (at address 00000000) ... Linux version 2.4.18_mvl30-walnut (root@hhl) (gcc version 3.2.1 20020930 (MontaVista)) #34 IBM Sycamore (IBM405GPr) Platform
On node 0 totalpages: 16384 zone(0): 16384 pages. zone(1): 0 pages. zone(2): 0 pages.
Kernel command line: root=/dev/ram rw ramdisk_size=16384 console=ttyS0,9600n8 console=tty0 serial_out UART_LCR 176 Calibrating delay loop... 266.24 BogoMIPS Memory: 62296k available (516k kernel code, 212k data, 32k init, 0k highmem) Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes) Mount-cache hash table entries: 1024 (order: 1, 8192 bytes) Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 OCP uart ver 1.2 init complete Starting kswapd Disabling the Out Of Memory Killer Serial driver version 5.05c (2001-07-08) with no serial options enabled ttyS00 at 0x0000 (irq = 0) is a 16550A ttyS01 at 0x0000 (irq = 1) is a 16550A block: 128 slots per queue, batch=32 RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize Tracer: Initialization complete RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)
Jerry Walden Program Manager Digital Atlantic Inc http://www.digitalatlantic.com jwalden@digitalatlantic.com 1-877-494-6073 x407 cell - 703-431-2413
-----Original Message----- From: u-boot-users-admin@lists.sourceforge.net [mailto:u-boot-users-admin@lists.sourceforge.net]On Behalf Of Wolfgang Denk Sent: Wednesday, April 02, 2003 3:13 PM To: jwalden@digitalatlantic.com Cc: U-Boot-Users@Lists. Sourceforge. Net Subject: Re: [U-Boot-Users] RE: start / load addresses for initrd
Jerry,
in message EGEGIJHKDKJGAJMGIDPNEEGNCKAA.jwalden@digitalatlantic.com you wrote:
I was getting the error: (RAMDISK: incomplete write (ramdisk too small?) (-28!= 32768) and then I discovered the my command line option ramdisk_size=8192 needs
to
be changed to ramdisk_size=16384.
What makes you think so? I think you are wrong.
## Loading RAMDisk Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB
Given a compressed size of 1.4 MB, the contents of the ramdisk will be probably in the range of 3...4 MB. Did you really create a ramdisk 16 MB big?
RAMDISK: Couldn't find valid RAM disk image starting at 0. Freeing initrd memory: 1473k freed Kernel panic: VFS: Unable to mount root fs on 01:00
Again, I see no indication that you really have a good, working ramdisk image. I think you should ask MV support for help.
Alternmatively, you could try using a known-to-work ramdisk image for a start, for example one from here: ftp://ftp.denx.de/pub/LinuxPPC/usr/src/SELF/images/
Wolfgang Denk
-- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de I don't know if it's what you want, but it's what you get. :-) - Larry Wall in 10502@jpl-devvax.JPL.NASA.GOV
------------------------------------------------------- This SF.net email is sponsored by: ValueWeb: Dedicated Hosting for just $79/mo with 500 GB of bandwidth! No other company gives more support or power for your dedicated server http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users

In message EGEGIJHKDKJGAJMGIDPNKEHBCKAA.jwalden@digitalatlantic.com you wrote:
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize Tracer: Initialization complete RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)
So now it has found a valid ramdisk image - and it was not before, however I still get the other error.
You can try some of the usual things: load the images at higher addresses, for example the kernel at 0x200000 and the ramdisk at 0x600000.
=> imi 0x100000
## Checking Image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 300107 Bytes = 293.1 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
The kernel size is really small. Please check again your kernel configuration if it contains everything you need.
Wolfgang Denk

Excuse me, does that mean there are SIXTEEN RAM disks of 16 MEGABYTES each?
----- Original Message -----
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize

I feel like I'm setting myself up for another "Wolfgang RTFM" response - however here it goes.
It appears now that everything works with u-boot! I can even do a tftpboot etc.
What I'd like to do is to write a script (I read the section on scripts), that will:
tftpboot 0x100000 mykernel.PPCBoot tftpboot 0x300000 myinitrd.PPCBoot bootm 0x100000 0x300000
What is the best way to do this? I cannot figure it out from the docs.
Thanks!
Jerry Walden

Setup your bootcommand variable -- here's my default:
#define CONFIG_BOOTCOMMAND \ "setenv bootargs console=ttyS0,38400 root=/dev/ram ramdisk=24576 init=/linuxrc && " \ "setenv verify n && " \ "bootm 0xff800000 0xffa50000"
...And I have another that I use, which uses tftpboot & bootm:
#define CONFIG_BOOTCOMMAND_ETH_RAMDISK \ "setenv ipaddr 192.168.1.54 && " \ "setenv serverip 192.168.1.7 && " \ "setenv bootargs console=ttyS0,38400 root=/dev/ram ramdisk=24576 init=/linuxrc && " \ "tftpboot 200000 vmlinux.SMP && " \ "tftpboot 1000000 initrd.ppcboot && " \ "bootm 200000 1000000"
Jerry Walden wrote:
I feel like I'm setting myself up for another "Wolfgang RTFM" response - however here it goes.
It appears now that everything works with u-boot! I can even do a tftpboot etc.
What I'd like to do is to write a script (I read the section on scripts), that will:
tftpboot 0x100000 mykernel.PPCBoot tftpboot 0x300000 myinitrd.PPCBoot bootm 0x100000 0x300000
What is the best way to do this? I cannot figure it out from the docs.
Thanks!
Jerry Walden
This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users
-- Sincerely,
Jim Potter 45th Parallel Processing, Inc.
Volunteer Firefighting: Bustin' ours, Savin' yours.

Thanks very much!
Jerry Walden
-----Original Message----- From: u-boot-users-admin@lists.sourceforge.net [mailto:u-boot-users-admin@lists.sourceforge.net]On Behalf Of Jim Potter Sent: Monday, April 21, 2003 2:14 PM To: U-Boot-Users@Lists. Sourceforge. Net Subject: Re: [U-Boot-Users] u-boot boot options
Setup your bootcommand variable -- here's my default:
#define CONFIG_BOOTCOMMAND \ "setenv bootargs console=ttyS0,38400 root=/dev/ram ramdisk=24576 init=/linuxrc && " \ "setenv verify n && " \ "bootm 0xff800000 0xffa50000"
...And I have another that I use, which uses tftpboot & bootm:
#define CONFIG_BOOTCOMMAND_ETH_RAMDISK \ "setenv ipaddr 192.168.1.54 && " \ "setenv serverip 192.168.1.7 && " \ "setenv bootargs console=ttyS0,38400 root=/dev/ram ramdisk=24576 init=/linuxrc && " \ "tftpboot 200000 vmlinux.SMP && " \ "tftpboot 1000000 initrd.ppcboot && " \ "bootm 200000 1000000"
Jerry Walden wrote:
I feel like I'm setting myself up for another "Wolfgang RTFM" response - however here it goes.
It appears now that everything works with u-boot! I can even do a
tftpboot
etc.
What I'd like to do is to write a script (I read the section on scripts), that will:
tftpboot 0x100000 mykernel.PPCBoot tftpboot 0x300000 myinitrd.PPCBoot bootm 0x100000 0x300000
What is the best way to do this? I cannot figure it out from the docs.
Thanks!
Jerry Walden
This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users
-- Sincerely,
Jim Potter 45th Parallel Processing, Inc.
Volunteer Firefighting: Bustin' ours, Savin' yours.
------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users

In message 3EA434ED.1F1F515D@dualg4.com you wrote:
Setup your bootcommand variable -- here's my default:
#define CONFIG_BOOTCOMMAND \
...
This is ok for pre-defined commands (i. e. good for a production version), but I think I should point out that you can do exactly the same thing using "setenv" + "saveenv" from the command line.
Best regards,
Wolfgang Denk

In message EGEGIJHKDKJGAJMGIDPNIEBJCLAA.jwalden@digitalatlantic.com you wrote:
I feel like I'm setting myself up for another "Wolfgang RTFM" response - however here it goes.
;-)
It appears now that everything works with u-boot! I can even do a tftpboot etc.
Great.
What I'd like to do is to write a script (I read the section on scripts), that will:
tftpboot 0x100000 mykernel.PPCBoot tftpboot 0x300000 myinitrd.PPCBoot bootm 0x100000 0x300000
What is the best way to do this? I cannot figure it out from the docs.
There is no "best" way, as TIMTOWTDI.
1) Enter:
=> setenv myboot 'tftp 100000 mykernel.PPCBoot;tftp 300000 myinitrd.PPCBoot;bootm 100000 300000' => run myboot
2) Create a multifile image which can be loaded / booted in one step.
3) Put your 3 lines above in atext file, use "mkimage ... -T script" to create a script image which you can store somewhere in RAM or flash, and use "autoscr <addr>" to exeecute the script.
Best regards,
Wolfgang Denk

You can check your RAMDISK as follows, assuming your development workstation supports loop device (not all distro's do out of the box):
dd if=ppcboot_ramdisk_image of=/tmp/ramdisk.gz bs=64 skip=1 gzip -d /tmp/ramdisk.gz mount -o loop /tmp/ramdisk /mnt/remote (or your favorite mount point, which must exist)
If you can mount your image this way, it's likely OK, and you have to look elsewhere.
The error being reported is -ENOSPC, (.../asm/errno.h), which presumes your ramdisk is too small. Try increasing the size of the ramdisk to 8192 on the kernel command line like this: ramdisk_size=8192
That should do it.
-Chris
-----Original Message----- From: u-boot-users-admin@lists.sourceforge.net [mailto:u-boot-users-admin@lists.sourceforge.net]On Behalf Of Jerry Walden Sent: Tuesday, March 25, 2003 12:46 PM To: U-Boot-Users@Lists. Sourceforge. Net Subject: [U-Boot-Users] RE: start / load addresses for initrd
Once again - I'm making progress on bringing up Linux on a custom 405GPr board using u-boot.
First - I got my serial console working in Linux. I did not have to use TLB's or BAT's to map the memory addresses of the UART to properly initialize it.
I simply commented out the initialization that is done in /drivers/char/serial.c for the serial console. The initialization that I did in u-boot was sufficient.
So now my printk's can be seen and logged.
At this point I am trying to get the ramdisk working. The reason I am posting to this list is that I am not sure of the command line kernel options for initrd and the ram disk.
Yes - I read the FAQ's at the DENX site, as well as initrd.txt and I still am mystified as to what is happening. Below is a log of the boot attempt - any help would be greatly appreciated:
U-Boot 0.2.0 (Mar 24 2003 - 11:49:36) CPU: IBM PowerPC 405GPr Rev. A at 266.666 MHz (PLB=133, OPB=66, EBC=26 MHz) PCI async ext clock used, internal PCI arbiter enabled 16 kB I-Cache 16 kB D-Cache Board: ### No HW ID - assuming WALNUT405 I2C: ready DRAM: 64 MB Now running in RAM - U-Boot at: 03fcf000 FLASH: 512 kB *** Warning - bad CRC, using default environment PCI: Bus Dev VenId DevId Class Int PCI Autoconfig: Memory region: [20000000-27ffffff] PCI Autoconfig: I/O region: [800000-3ffffff] PCI Scan: Found Bus 0, Device 0, Function 0 PCI Scan: Found Bus 0, Device 7, Function 0 PCI Autoconfig: BAR 0, Mem, size=0x1000000, address=0x20000000 PCI Autoconfig: BAR 1, I/O, size=0xffffff04, No room in resource PCI Autoconfig: BAR 2, I/O, size=0x1000000, address=0x1000000 00 07 1394 0978 0200 1c
In: serial Out: serial Err: serial U-Boot relocated to 03fcf000 IDE: Bus 0: port = c OK Device 0: Model: SanDisk SDCFB-64 Firm: Vdg 8.16. Ser#: 111913G1602X4714 Type: Removable Hard Disk Capacity: 61.2 MB = 0.0 GB (125440 x 512) => imi 0x100000 ## Checking Image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298692 Bytes = 291.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
=> imi 0x200000 ## Checking Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
=> bootm 0x100000 0x200000 ## Booting image at 00100000 ... Image Name: Linux-2.4.18_mvl30-walnut Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 298692 Bytes = 291.7 kB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Current stack ends at 0x03F9EBD8 => set upper limit to 0x00800000 ## cmdline at 0x007FFF00 ... 0x007FFF2F memsize = 0x04000000 flashstart = 0xFFF80000 flashsize = 0x00080000 flashoffset = 0x00031000 sramstart = 0x00000000 sramsize = 0x00000000 bootflags = 0x001E8480 procfreq = 266.666 MHz plb_busfreq = 133.333 MHz pci_busfreq = 33.333 MHz ethaddr = 00:00:00:00:00:00 IP addr = 0.0.0.0 baudrate = 9600 bps ## Loading RAMDisk Image at 00200000 ... Image Name: DA Ramdisk Image Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 1509352 Bytes = 1.4 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK
## initrd at 0x00200040 ... 0x00370827 (len=1509352=0x1707E8) Loading Ramdisk to 03e2d000, end 03f9d7e8 ... OK
## Transferring control to Linux (at address 00000000) ...
Linux version 2.4.18_mvl30-walnut (root@hhl) (gcc version 3.2.1 20020930 IBM Sycamore (IBM405GPr) Platform On node 0 totalpages: 16384 zone(0): 16384 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/ram console=ttyS0,9600n8 console=tty0 Memory: 62268k available (512k kernel code, 212k data, 32k init, 0k highmem) Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes) Mount-cache hash table entries: 1024 (order: 1, 8192 bytes) Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 OCP uart ver 1.2 init complete Starting kswapd Disabling the Out Of Memory Killer Serial driver version 5.05c (2001-07-08) with no serial options enabled ttyS00 at 0x0000 (irq = 0) is a 16550A ttyS01 at 0x0000 (irq = 1) is a 16550A block: 128 slots per queue, batch=32 RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize Tracer: Initialization complete RAMDISK: Compressed image found at block 0 RAMDISK: incomplete write (ramdisk too small?) (-28 != 32768)

Anyone have and estimate as to how many lines of code are in u-boot, or about how many person-years it would take to do it from scratch?
Thanks
Jerry

On Wed, Mar 26, 2003 at 06:11:03PM -0500, Jerry Walden wrote:
Anyone have and estimate as to how many lines of code are in u-boot, or about how many person-years it would take to do it from scratch?
You don't have to estimate:
robert@metis:~/embedded/cvs/u-boot> find . -type f | xargs cat | wc -l 541895
For person years you better ask the Wolfg-Gang...
Robert

In message EGEGIJHKDKJGAJMGIDPNEEDHCKAA.jwalden@digitalatlantic.com you wrote:
Anyone have and estimate as to how many lines of code are in u-boot, or about how many person-years it would take to do it from scratch?
The first part of the question is simple:
If you count all *.S, *.c and *.h files you get: 474537 LOC.
The second part of the question is more difficult. What exactly do you mean? How much manpower went into the PPCBoot / U-Boot projects? How much it would take to do it again, with today's knowledge and experience, but without looking at the code? To get exact the same state, i. e. support for all the 100+ boards?
The project is about 2.5 years old now. I guess (and this is a wild guess) that about 25 man years went into the U-Boot / PPCBoot until now; to redo it from scratch, I guess you'd need 2...5 man-years if you could select at your liking from all the developers who worked on it; if you cannot do this, I think it would take 5...10 man-years.
A wild guess, as I said.
Best regards,
Wolfgang Denk
participants (8)
-
Chris Hallinan
-
Jerry Walden
-
Jerry Walden
-
Jim Potter
-
Reinhard Meyer
-
Robert Schwebel
-
Stefan Roese
-
Wolfgang Denk