linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* BUGboot 0.2 - Boot Linux from flash on Moto boards
@ 1999-09-30 20:45 Matt Porter
  1999-10-11 22:37 ` Simone Piccardi
  1999-11-12 23:45 ` BUGboot 0.3 - Boot Linux from flash on Moto boards Matt Porter
  0 siblings, 2 replies; 7+ messages in thread
From: Matt Porter @ 1999-09-30 20:45 UTC (permalink / raw)
  To: linuxppc-dev


I've released my bugboot package at 0.2 since it doesn't look like PPCBUG
will have residual data support in the RB facility any time soon.  This
adds a horrible kludge to copy  a residual data tree included in the
flash image.

What is it?

It's a simple tool and bootloader that creates a flashable image from a
Linux kernel/initrd and a dump of a residual data tree.  This image is
flashed onto any Motorola PowerPlus board 4/8/16 MB flash bank and then
Linux is booted from the flash.  This works on 
MVME23xx/24xx/26xx/27xx/36xx/46xx, MCPx750, and MTX variants.

Available at http://members.home.net/mmporter/linux/

-- 
Matt Porter                                   Motorola Computer Group
mporter@mcg.mot.com                           CIBU Linux Support

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: BUGboot 0.2 - Boot Linux from flash on Moto boards
  1999-09-30 20:45 BUGboot 0.2 - Boot Linux from flash on Moto boards Matt Porter
@ 1999-10-11 22:37 ` Simone Piccardi
  1999-10-14 16:40   ` Matt Porter
  1999-11-12 23:45 ` BUGboot 0.3 - Boot Linux from flash on Moto boards Matt Porter
  1 sibling, 1 reply; 7+ messages in thread
From: Simone Piccardi @ 1999-10-11 22:37 UTC (permalink / raw)
  To: Matt Porter; +Cc: linuxppc-dev


Hi Matt,

I'm trying your bugboot but I have some problem. I went through your
readme, and these are the steps that I did.

PPC4-Bug>nbh 0 0 ,,, res_data
Network Booting from: DEC21143, Controller 0, Device 0 
Device Name: /pci@80000000/pci1011,19@e,0:0,0
Loading: res_data 

Client IP Address      = 192.84.146.131
Server IP Address      = 192.84.146.138
Gateway IP Address     = 0.0.0.0
Subnet IP Address Mask = 255.255.255.0 
Boot File Name         = res_data
Argument File Name     = 

Network Boot File load in progress... To abort hit <BREAK>

Bytes Received =&0, Bytes Loaded =&0
Bytes/Second   =&0, Elapsed Time =1 Second(s)

Residual-Data Located at: $01F78000
IP     =00049039 MSR    =00003040 CR     =00000000 FPSCR  =00000000
R0     =00000000 R1     =01F78000 R2     =00000000 R3     =01F78000
R4     =00005000 R5     =00000000 R6     =00000000 R7     =00000000
R8     =00000000 R9     =00000000 R10    =00000000 R11    =00000000
R12    =00000000 R13    =00000000 R14    =00000000 R15    =00000000
R16    =00000000 R17    =00000000 R18    =00000000 R19    =00000000
R20    =00000000 R21    =00000000 R22    =00000000 R23    =00000000
R24    =00000000 R25    =00000000 R26    =00000000 R27    =00000000
R28    =00000000 R29    =00000000 R30    =00000000 R31    =00000000
SPR0   =00000000 SPR1   =00000000 SPR8   =00000000 SPR9   =00000000
00049039 E000013C  WORD        $E000013C
PPC4-Bug>md 
$01F78000                                                          
01F78000  00006A0C 0001012C 20202020 20202020  ..j....,            
01F78010  20202020 20202020 20202020 20202020                      
PPC4-Bug>niop
Controller LUN =00?
Device LUN     =00?
Get/Put        =G? p
File Name      =? res_data
Memory Address =00004000? 01F78000
Length         =00000000? 00006A0C

Bytes Sent     =&27148
Bytes/Second   =&27148, Elapsed Time =1 Second(s)

After this I have:
[root@pcwiz3 /root]# ls -l /tftpboot/
total 2348
-rwxr-xr-x   1 root     root       649562 Oct 11 21:58 bugboot.bin*
-rw-rw-rw-   1 root     root        27148 Oct 11 22:30 res_data
drwxr-xr-x  15 root     root         1024 Oct 11 23:01 root/
-rwxr-xr-x   1 root     root       622156 Sep 14 19:38 zimage*
-rwxr-xr-x   1 root     root       614252 Jul  7 14:33 zimage.old*
-rw-rw-rw-   1 root     root       471244 Jun  7 14:10 zimage.old.old

Then I restart the board (my PC has some hardware problem, then I cannot
use the cross compiler). I put bugboot in a NFS directory, and I copied
the zImage that I'm using to boot to this directory (as kernel_image)
and the res_data file. The compilation seems fine:

[root@vmesez1 bugboot-0.2]# make bugboot.bin
gcc -o mkbugboot mkbugboot.c
gcc -c \
-DZIMAGE_SIZE=`wc -c <kernel_image | sed "s: ::g"` \
-DRESDATA_DEST=RESDATA_DEST \
-DRESDATA_SIZE=RESDATA_SIZE \
-o romboot.o romboot.S 
objcopy --output-target=binary romboot.o romboot.bin
./mkbugboot romboot.bin kernel_image res_data bugboot.bin
Checksum = 0x13c7

and then I copied this back to /tftpboot.

The kernel I'm using is for network booting, but with a SCSI disk root
filesystem; the distribution I'm using is an old linuxPPC pre-R5. Should
this be a problem?

In any case after the compilaton I shutdown the board and I dit the rest
of the work:

PPC4-Bug>niop
Controller LUN =00?
Device LUN     =00?
Get/Put        =G?
File Name      =? bugboot.bin
Memory Address =00004000?
Length         =00000000?
Byte Offset    =00000000?
                                                                                
Bytes Received =&649562, Bytes Loaded =&649562
Bytes/Second   =&324781, Elapsed Time =2 Second(s)
PPC4-Bug>pflash 4000:100000 ff000000 
Source Starting/Ending Addresses      =00004000/00103FFF
Destination Starting/Ending Addresses =FF000000/FF0FFFFF
Number of Effective Bytes             =00100000 (&1048576)

Program FLASH Memory (Y/N)? y
Virtual-Device-Number    =00
Manufacturer-Identifier  =10001
Device-Identifier        =22C422C4
Virtual-Device-Number    =01
Manufacturer-Identifier  =10001
Device-Identifier        =22C422C4
Address-Mask             =FF800000
Erasing sector     =$FF000000
Erasing sector     =$FF040000
Erasing sector     =$FF080000
Erasing sector     =$FF0C0000
Programming sector =$FF000000
Programming sector =$FF040000
Programming sector =$FF080000
Programming sector =$FF0C0000
FLASH Memory Programming Complete
PPC4-Bug>env
Bug or System environment [B/S] = B?
Field Service Menu Enable [Y/N] = N?
Remote Start Method Switch [G/M/B/N] = B?
Probe System for Supported I/O Controllers [Y/N] = Y?
Auto-Initialize of NVRAM Header Enable [Y/N] = Y?
Network PReP-Boot Mode Enable [Y/N] = Y?
Negate VMEbus SYSFAIL* Always [Y/N] = N?
SCSI Bus Reset on Debugger Startup [Y/N]   = Y?
Primary SCSI Bus Negotiations Type [A/S/N] = A?
Primary SCSI Data Bus Width [W/N]          = W?
Secondary SCSI Identifier                  = "07"?
NVRAM Bootlist (GEV.fw-boot-path) Boot Enable [Y/N]           = N?
NVRAM Bootlist (GEV.fw-boot-path) Boot at power-up only [Y/N] = N?
NVRAM Bootlist (GEV.fw-boot-path) Boot Abort Delay            = 5?
Auto Boot Enable [Y/N]           = N?
Auto Boot at power-up only [Y/N] = N?
Auto Boot Scan Enable [Y/N]      = Y?
Auto Boot Scan Device Type List  = FDISK/CDROM/TAPE/HDISK/?
Auto Boot Controller LUN   = 10?
Auto Boot Device LUN       = 50?
Auto Boot Partition Number = 00?
Auto Boot Abort Delay      = 7?
Auto Boot Default String [NULL for an empty string] = ?
ROM Boot Enable [Y/N]            = N?
ROM Boot at power-up only [Y/N]  = Y?
ROM Boot Enable search of VMEbus [Y/N] = N?
ROM Boot Abort Delay             = 5?
ROM Boot Direct Starting Address = FFF00000? ff000000
ROM Boot Direct Ending Address   = FFFFFFFC? ff000100
Network Auto Boot Enable [Y/N]           = N? .

Update Non-Volatile RAM (Y/N)? y

Reset Local System (CPU) (Y/N)? y

PPC4-Bug>rb ;v

ROMBoot about to Begin... Press <ESC> to Bypass, <SPC> to Continue

Direct Adr: FF000000 FF000100: Searching for ROMboot Module at: FF000000
Executing ROMboot Module "LINUXROM" at FF000000

But here everything hangs!

I looked at what i have in memory:

PPC4-Bug>md ff000000:100
FF000000  424F4F54 00000014 0009E95A 4C494E55  BOOT.......ZLINU
FF000010  58524F4D 3D20FF00 61290100 3D600009  XROM= ..a)..=`..
FF000020  616B7E4C 3D800000 618C5000 7D6903A6  ak~L=...a.P.}i..
FF000030  39A00000 85690004 956C0004 7DAD5A78  9....i...l..}.Zx
FF000040  4200FFF4 3D20FF09 61297F4C 3D600000  B...= ..a).L=`..
FF000050  616B0000 3D800000 618C0000 7D6903A6 
ak..=...a...}i..               
FF000060  39A00000 85690004 956C0004 7DAD5A78  9....i...l..}.Zx
FF000070  4200FFF4 3C600000 60630000 3DC00000  B...<`..`c..=...
FF000080  61CE5400 7DC803A6 4E800020 00000000  a.T.}...N.. ....
FF000090  00000000 00000000 00000000 00000000  ................
and then all zero for 0x400 bytes excepted:
FF0002C0  02004101 124F0000 0000C004 00000000 
..A..O..........                 
FF0002D0  00000000 00000000 00000000 00000000 
................                 
FF0002E0  00000000 00000000 00000000 00000000 
................                 
FF0002F0  00000000 00000000 00000000 000055AA 
..............U.                 
FF000300  00040000 4C7E0900 00004C69 6E757800 
....L~....Linux.                 

I hope that this could be sufficient to understand what was going on, I
tried to look at the code, but I don't know the PPC assembler at all,
and I cannot understand if this is something good or not (but it seems
quite strange to me):

PPC4-Bug>md ff000014:100;di
FF000014 3D20FF00  ADDIS       R9,R0,$FF00
FF000018 61290100  ORI         R9,R9,$100
FF00001C 3D600009  ADDIS       R11,R0,$9
FF000020 616B7E4C  ORI         R11,R11,$7E4C
FF000024 3D800000  ADDIS       R12,R0,$0
FF000028 618C5000  ORI         R12,R12,$5000
FF00002C 7D6903A6  MTSPR       9,R11
FF000030 39A00000  ADDI        R13,R0,$0
FF000034 85690004  LWZU        R11,$4(R9) ($00000004)
FF000038 956C0004  STWU        R11,$4(R12) ($00000004)
FF00003C 7DAD5A78  XOR         R13,R13,R11
FF000040 4200FFF4  BC          16,0,$FF000034
FF000044 3D20FF09  ADDIS       R9,R0,$FF09
FF000048 61297F4C  ORI         R9,R9,$7F4C
FF00004C 3D600000  ADDIS       R11,R0,$0
FF000050 616B0000  ORI         R11,R11,$0
FF000054 3D800000  ADDIS       R12,R0,$0
FF000058 618C0000  ORI         R12,R12,$0
FF00005C 7D6903A6  MTSPR       9,R11
FF000060 39A00000  ADDI        R13,R0,$0
FF000064 85690004  LWZU        R11,$4(R9) ($00000004)
FF000068 956C0004  STWU        R11,$4(R12) ($00000004)
FF00006C 7DAD5A78  XOR         R13,R13,R11
FF000070 4200FFF4  BC          16,0,$FF000064
FF000074 3C600000  ADDIS       R3,R0,$0
FF000078 60630000  ORI         R3,R3,$0
FF00007C 3DC00000  ADDIS       R14,R0,$0
FF000080 61CE5400  ORI         R14,R14,$5400
FF000084 7DC803A6  MTSPR       8,R14
FF000088 4E800020  BCLR        20,0

Thank you in advance.

Bye
-- 
Simone Piccardi
Microsoft is NOT the answer. Microsoft is the Question.
The answer is: "NO!"

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: BUGboot 0.2 - Boot Linux from flash on Moto boards
  1999-10-11 22:37 ` Simone Piccardi
@ 1999-10-14 16:40   ` Matt Porter
  1999-10-29 18:08     ` BUGboot 0.2 Patch Christian Zankel
  0 siblings, 1 reply; 7+ messages in thread
From: Matt Porter @ 1999-10-14 16:40 UTC (permalink / raw)
  To: Simone Piccardi; +Cc: linuxppc-dev


On Tue, Oct 12, 1999 at 12:37:03AM +0200, Simone Piccardi wrote:
> Hi Matt,
> 
> I'm trying your bugboot but I have some problem. I went through your
> readme, and these are the steps that I did.
> 
<snip>

Since I posted 0.2 I've been able to produce this problem with certain
board/zImage combinations.  This fell down my list of priorities a little
bit for the short term, but I will fix the problems and make a working
0.3 version available ASAP.

> I looked at what i have in memory:
> 
> PPC4-Bug>md ff000000:100
> FF000000  424F4F54 00000014 0009E95A 4C494E55  BOOT.......ZLINU
> FF000010  58524F4D 3D20FF00 61290100 3D600009  XROM= ..a)..=`..
> FF000020  616B7E4C 3D800000 618C5000 7D6903A6  ak~L=...a.P.}i..
> FF000030  39A00000 85690004 956C0004 7DAD5A78  9....i...l..}.Zx
> FF000040  4200FFF4 3D20FF09 61297F4C 3D600000  B...= ..a).L=`..
> FF000050  616B0000 3D800000 618C0000 7D6903A6 
> ak..=...a...}i..               
> FF000060  39A00000 85690004 956C0004 7DAD5A78  9....i...l..}.Zx
> FF000070  4200FFF4 3C600000 60630000 3DC00000  B...<`..`c..=...
> FF000080  61CE5400 7DC803A6 4E800020 00000000  a.T.}...N.. ....
> FF000090  00000000 00000000 00000000 00000000  ................
> and then all zero for 0x400 bytes excepted:
> FF0002C0  02004101 124F0000 0000C004 00000000 
> ..A..O..........                 
> FF0002D0  00000000 00000000 00000000 00000000 
> ................                 
> FF0002E0  00000000 00000000 00000000 00000000 
> ................                 
> FF0002F0  00000000 00000000 00000000 000055AA 
> ..............U.                 
> FF000300  00040000 4C7E0900 00004C69 6E757800 
> ....L~....Linux.                 

You've followed the steps correctly according to this memory dump.
I have definitely have some build problems in 0.2.

-- 
Matt Porter                                   Motorola Computer Group
mporter@mcg.mot.com                           CIBU Linux Support

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* BUGboot 0.2 Patch
  1999-10-14 16:40   ` Matt Porter
@ 1999-10-29 18:08     ` Christian Zankel
  1999-11-02  9:24       ` Simone Piccardi
  1999-11-02  9:45       ` Simone Piccardi
  0 siblings, 2 replies; 7+ messages in thread
From: Christian Zankel @ 1999-10-29 18:08 UTC (permalink / raw)
  To: Matt Porter, Simone Piccardi; +Cc: linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 932 bytes --]

Hi Matt,
Hi Simone,

Matt Porter wrote:
> 
> On Tue, Oct 12, 1999 at 12:37:03AM +0200, Simone Piccardi wrote:
> > Hi Matt,
> >
> > I'm trying your bugboot but I have some problem. I went through your
> > readme, and these are the steps that I did.
> >
> 
> Since I posted 0.2 I've been able to produce this problem with certain
> board/zImage combinations.  This fell down my list of priorities a little
> bit for the short term, but I will fix the problems and make a working
> 0.3 version available ASAP.

Enclosed you will find a patch that made bugboot work for me. You can
also use a  little-endian machine to build it if you have the apropriate
cross-compiling tools.

Ups.. I forgot to change the README file:
RESDATA_DEST and RESDATA_SIZE are now in romboot.S and ZIMAGE_SIZE is
now called KERNEL_IMAGE (in Makefile). 

Greetings,
Christian

--
Christian Zankel			MontaVista Software, Inc.
chris@mvista.com			+1 408-328-9211

[-- Attachment #2: bugboot-0.2.diff --]
[-- Type: text/plain, Size: 6273 bytes --]

diff -c bugboot-0.2/Makefile bugboot-0.2.1/Makefile
*** bugboot-0.2/Makefile	Thu Sep 30 13:15:17 1999
--- bugboot-0.2.1/Makefile	Fri Oct 29 10:44:49 1999
***************
*** 10,18 ****
  CFLAGS=-c
  OBJCOPY=$(CROSS_COMPILE)objcopy
  
! ZIMAGE_SIZE=602426
! RESDATA_DEST=0x1f78000
! RESDATA_SIZE=0x6a0c
  
  all: bugboot.bin
  
--- 10,16 ----
  CFLAGS=-c
  OBJCOPY=$(CROSS_COMPILE)objcopy
  
! ZIMAGE_SIZE=587399
  
  all: bugboot.bin
  
***************
*** 24,32 ****
  
  romboot.o: romboot.S
  	$(CC) $(CFLAGS) \
! 	-DZIMAGE_SIZE=`wc -c <kernel_image | sed "s: ::g"` \
! 	-DRESDATA_DEST=RESDATA_DEST \
! 	-DRESDATA_SIZE=RESDATA_SIZE \
  	-o romboot.o romboot.S
  
  mkbugboot: mkbugboot.c
--- 22,28 ----
  
  romboot.o: romboot.S
  	$(CC) $(CFLAGS) \
! 	-DKERNEL_IMAGE=`wc -c <kernel_image | sed "s: ::g"` \
  	-o romboot.o romboot.S
  
  mkbugboot: mkbugboot.c
Only in bugboot-0.2.1: kernel_image
diff -c bugboot-0.2/mkbugboot.c bugboot-0.2.1/mkbugboot.c
*** bugboot-0.2/mkbugboot.c	Thu Sep 30 11:44:09 1999
--- bugboot-0.2.1/mkbugboot.c	Fri Oct 29 10:47:48 1999
***************
*** 17,22 ****
--- 17,30 ----
  #include <errno.h>
  #include <fcntl.h>
  
+ // ON LITTLE ENDIAN MACHINES:
+ 
+ #ifdef LITTLE_ENDIAN
+ #define cpu_to_be32(x) le32_to_cpu(x)
+ #else
+ #define cpu_to_be32(x) (x)
+ #endif
+ 
  #define cpu_to_le32(x) le32_to_cpu((x))
  unsigned long le32_to_cpu(unsigned long x)
  {
***************
*** 162,169 ****
  
    /* Fill in the PPCBUG ROM boot header */
    strncpy(bbh->magic_word, "BOOT", 4);			/* PPCBUG magic word */
!   bbh->entry_offset	= header_size;			/* Entry address */
!   bbh->routine_length	= MAX_BOOT_SIZE+boot_size+2;	/* Routine length */
    strncpy(bbh->routine_name, "LINUXROM", 8);		/* Routine name   */
  
    /* Output the header and bootloader to the file */
--- 170,177 ----
  
    /* Fill in the PPCBUG ROM boot header */
    strncpy(bbh->magic_word, "BOOT", 4);			/* PPCBUG magic word */
!   bbh->entry_offset	= cpu_to_be32(header_size);			/* Entry address */
!   bbh->routine_length	= cpu_to_be32(MAX_BOOT_SIZE+boot_size+2);	/* Routine length */
    strncpy(bbh->routine_name, "LINUXROM", 8);		/* Routine name   */
  
    /* Output the header and bootloader to the file */
***************
*** 185,191 ****
      }
  
    /* BUG romboot requires that our size is divisible by 2 */
!   if (image_size % 2)
      {
      image_size++;
      write(out_fd, &zero, 1);
--- 193,200 ----
      }
  
    /* BUG romboot requires that our size is divisible by 2 */
!   /* align image to 4 byte boundary */
!   if (image_size % 4)
      {
      image_size++;
      write(out_fd, &zero, 1);
Only in bugboot-0.2.1: mkbugboot.c.orig
Only in bugboot-0.2.1: res_data
diff -c bugboot-0.2/romboot.S bugboot-0.2.1/romboot.S
*** bugboot-0.2/romboot.S	Thu Sep 30 12:05:14 1999
--- bugboot-0.2.1/romboot.S	Fri Oct 29 10:48:17 1999
***************
*** 5,51 ****
   */
  #include "ppc_asm.tmpl"
  
  #define ZIMAGE_START	0xff000100
  #define ZIMAGE_DEST	0x00005000
- #define BOOT_VECTOR	ZIMAGE_DEST + 0x400
- #define RESDATA_START	ZIMAGE_START + ZIMAGE_SIZE
  
  .text
  
  /*	.globl	main */
  
  kernel:
! 	lis	r9,ZIMAGE_START@h	/* Get pointer to top of zImage */
! 	ori	r9,r9,ZIMAGE_START@l	/* Bootloader starts immediately */
  	
! 	lis	r11,ZIMAGE_SIZE@h	/* Set zImage size */
! 	ori	r11,r11,ZIMAGE_SIZE@l
  
! 	lis	r12,ZIMAGE_DEST@h	/* Setup destination address for */
! 	ori	r12,r12,ZIMAGE_DEST@l	/* zImage in RAM		 */
  
  	mtctr	r11			/* Setup the counter */
- 	li	r13,0
  copy1:	lwzu	r11,4(r9)		/* Load a word in and increment */
  	stwu	r11,4(r12)		/* Store a word out and increment */
- 	xor	r13,r13,r11		/* Decrement and repeat until counter */
  	bdnz	copy1			/* is 0 */
  
  resdata:
!         lis     r9,RESDATA_START@h      /* Set top of resdata */
!         ori     r9,r9,RESDATA_START@l 
   
!         lis     r11,RESDATA_SIZE@h      /* Set resdata size */
!         ori     r11,r11,RESDATA_SIZE@l
   
!         lis     r12,RESDATA_DEST@h      /* Set destination address for */
!         ori     r12,r12,RESDATA_DEST@l  /* resdata in RAM                 */
   
          mtctr   r11                     /* Setup the counter */
-         li      r13,0
  copy2:  lwzu    r11,4(r9)               /* Load a word in and increment */
          stwu    r11,4(r12)              /* Store a word out and increment */
-         xor     r13,r13,r11             /* Decrement and repeat until counter */
          bdnz    copy2                   /* is 0 */
  
          lis     r3,RESDATA_DEST@h       /* Set pointer to resdata in R3 */
--- 5,52 ----
   */
  #include "ppc_asm.tmpl"
  
+ #define RESDATA_DEST    0x7f88000
+ #define RESDATA_SIZE    0x6a0c
+  
  #define ZIMAGE_START	0xff000100
  #define ZIMAGE_DEST	0x00005000
  
+ #define ZIMAGE_SIZE	(KERNEL_IMAGE + 3) & (~3)
+ #define BOOT_VECTOR	ZIMAGE_DEST + 0x400 
+ #define RESDATA_START	ZIMAGE_START + ZIMAGE_SIZE
+  
  .text
  
  /*	.globl	main */
  
  kernel:
! 	lis	r9,(ZIMAGE_START-4)@h	/* Get pointer to top of zImage */
! 	ori	r9,r9,(ZIMAGE_START-4)@l/* Bootloader starts immediately */
  	
! 	lis	r11,(ZIMAGE_SIZE+3)/4@h	/* Set zImage size (number of words) */
! 	ori	r11,r11,(ZIMAGE_SIZE+3)/4@l
  
! 	lis	r12,(ZIMAGE_DEST-4)@h	/* Setup destination address for */
! 	ori	r12,r12,(ZIMAGE_DEST-4)@l	/* zImage in RAM		 */
  
  	mtctr	r11			/* Setup the counter */
  copy1:	lwzu	r11,4(r9)		/* Load a word in and increment */
  	stwu	r11,4(r12)		/* Store a word out and increment */
  	bdnz	copy1			/* is 0 */
  
  resdata:
!         lis     r9,(RESDATA_START-4)@h      /* Set top of resdata */
!         ori     r9,r9,(RESDATA_START-4)@l 
   
!         lis     r11,(RESDATA_SIZE+3)/4@h      /* Set resdata size */
!         ori     r11,r11,(RESDATA_SIZE+3)/4@l
   
!         lis     r12,(RESDATA_DEST-4)@h      /* Set destination address for */
!         ori     r12,r12,(RESDATA_DEST-4)@l  /* resdata in RAM                 */
   
          mtctr   r11                     /* Setup the counter */
  copy2:  lwzu    r11,4(r9)               /* Load a word in and increment */
          stwu    r11,4(r12)              /* Store a word out and increment */
          bdnz    copy2                   /* is 0 */
  
          lis     r3,RESDATA_DEST@h       /* Set pointer to resdata in R3 */

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: BUGboot 0.2 Patch
  1999-10-29 18:08     ` BUGboot 0.2 Patch Christian Zankel
@ 1999-11-02  9:24       ` Simone Piccardi
  1999-11-02  9:45       ` Simone Piccardi
  1 sibling, 0 replies; 7+ messages in thread
From: Simone Piccardi @ 1999-11-02  9:24 UTC (permalink / raw)
  To: Christian Zankel; +Cc: Matt Porter, linuxppc-dev


Hi Christian,
I just tried your patch, it did not worked, but at least something more
seems to happen when I tried the boot.

I repeated all the steps that I already did the previous time. 
PPC4-Bug>nbh 0 0 ,,, res_data
Network Booting from: DEC21143, Controller 0, Device 0
[snip]
Residual-Data Located at: $01F78000
[snip]
PPC4-Bug>md $01F78000
01F78000  00006A0C 0001012C 20202020 20202020  ..j....,

So I have RESDATA_DEST = 01F78000 and RESDATA_SIZE = 6A0C; I put
everything in res_data with:
PPC4-Bug>niop
Controller LUN =00?
Device LUN     =00?
Get/Put        =G? P
File Name      =? res_data
Memory Address =00004000? 01F78000
Length         =00000000? 00006A0C

Bytes Sent     =&27148
Bytes/Second   =&27148, Elapsed Time =1 Second(s)

And thenI put all in bugboot-2.0/:
[root@pcwiz3 bugboot-0.2]# ls -l
-rw-r--r--   1 1000     1000        17992 Aug 31 18:10 COPYING
-rw-r--r--   1 1000     1000          537 Sep 30 22:29 ChangeLog
-rw-r--r--   1 root     1000          794 Nov  2 09:08 Makefile
-rw-r--r--   1 1000     1000         5136 Sep 30 22:42 README
-rwxr-xr-x   1 root     1000       622156 Nov  2 09:06 kernel_image*
-rw-r--r--   1 root     1000         5614 Nov  2 08:13 mkbugboot.c
-rw-r--r--   1 1000     1000          918 Aug 31 18:35 mkchksum.c
-rw-r--r--   1 1000     1000          974 Aug 31 19:04 ppc_asm.tmpl
-rw-r--r--   1 root     1000        27148 Nov  2 09:06 res_data
-rw-r--r--   1 root     1000         1885 Nov  2 09:09 romboot.S
-rw-r--r--   1 root     1000          104 Nov  2 09:11 romboot.bin
-rw-r--r--   1 root     1000          707 Nov  2 09:11 romboot.o

I used the board itself to compile putting the size on Makefile:
ZIMAGE_SIZE=622156
and the RESDATA_DEST and RESDATA_SIZE in bugboot.S:
#define RESDATA_DEST    0x1f78000
#define RESDATA_SIZE    0x6a0c
and then:
[root@vmesez1 bugboot-0.2]# make
bugboot.bin                                    
gcc -o mkbugboot
mkbugboot.c                                                    
gcc -c
\                                                                        
-DKERNEL_IMAGE=`wc -c <kernel_image | sed "s: ::g"`
\                           
-o romboot.o
romboot.S                                                          
objcopy --output-target=binary romboot.o
romboot.bin                            
./mkbugboot romboot.bin kernel_image res_data
bugboot.bin                       
Checksum =
0xa98                                                                

Then I restarted, get the file and put it in flash:
PPC4-Bug>niop                                                                   
Controller LUN
=00?                                                             
Device LUN    
=00?                                                             
Get/Put       
=G?                                                              
File Name     
=bugboot.bin?                                                    
Memory Address
=00004000?                                                       
Length        
=00000000?                                                       
Byte Offset   
=00000000?                                                       
                                                                                
Bytes Received =&649562, Bytes Loaded
=&649562                                  
Bytes/Second   =&324781, Elapsed Time =2
Second(s)                              

PPC4-Bug>pflash 4000:100000
ff000000                                            
Source Starting/Ending Addresses     
=00004000/00103FFF                        
Destination Starting/Ending Addresses
=FF000000/FF0FFFFF                        
Number of Effective Bytes             =00100000
(&1048576)                      
                                                                                
Program FLASH Memory (Y/N)?
y                                                   
Virtual-Device-Number   
=00                                                    
Manufacturer-Identifier 
=10001                                                 
Device-Identifier       
=22C422C4                                              
Virtual-Device-Number   
=01                                                    
Manufacturer-Identifier 
=10001                                                 
Device-Identifier       
=22C422C4                                              
Address-Mask            
=FF800000                                              
Erasing sector    
=$FF000000                                                   
Erasing sector    
=$FF040000                                                   
Erasing sector    
=$FF080000                                                   
Erasing sector    
=$FF0C0000                                                   
Programming sector
=$FF000000                                                   
Programming sector
=$FF040000                                                   
Programming sector
=$FF080000                                                   
Programming sector
=$FF0C0000                                                   
FLASH Memory Programming
Complete                                               
PPC4-Bug>env                                                                    
[snip]
ROM Boot Direct Starting Address =
FF000000?                                    
ROM Boot Direct Ending Address   =
FF000100?                                    
Network Auto Boot Enable [Y/N]           = N?
.                                 

But when I give the bot command what I get is:
PPC4-Bug>rb
;v                                                                  
                                                                                
ROMBoot about to Begin... Press <ESC> to Bypass, <SPC> to
Continue              
                                                                                
Direct Adr: FF000000 FF000100: Searching for ROMboot Module at:
FF000100        
ROM       : FF000104 FF7FFFFC: Searching for ROMboot Module at:
FF7FFFFC        
Local RAM : 00000000 01FFFFFC: Searching for ROMboot Module at: 00004000

it seems to look up to the end of the flash memory then hangs.
As in the previuos time I have in memory:
PPC4-Bug>md
ff000000:100                                                        
FF000000  424F4F54 14000000 5AE90900 4C494E55  BOOT....Z...LINU  
                   ^^^^     ^^^^
		this seems an endianess problem!!           
FF000010  58524F4D 3D20FF00 612900FC 3D600002  XROM=
..a)..=`..                 
FF000020  616B5F93 3D800000 618C4FFC 7D6903A6 
ak_.=...a.O.}i..                 
FF000030  85690004 956C0004 4200FFF8 3D20FF09  .i...l..B...=
..                 
FF000040  61297F48 3D600000 616B1A83 3D8001F7 
a).H=`..ak..=...                 
FF000050  618C7FFC 7D6903A6 85690004 956C0004 
a...}i...i...l..                 
FF000060  4200FFF8 3C6001F7 60638000 3DC00000 
B...<`..`c..=...                 
FF000070  61CE5400 7DC803A6 4E800020 00000000  a.T.}...N..
....                 
[all 00]
FF000100  48000400 00000000 00000000 00000000 
H...............                 
[all 00]
FF0002C0  02004101 124F0000 0000C004 00000000 
..A..O..........                 
FF0002D0  00000000 00000000 00000000 00000000 
................                 
FF0002E0  00000000 00000000 00000000 00000000 
................                 
FF0002F0  00000000 00000000 00000000 000055AA 
..............U.                 
FF000300  00040000 4C7E0900 00004C69 6E757800 
....L~....Linux.                 
FF000310  00000000 00000000 00000000 00000000 
................                 
[all 00]
FF000500  48000005 7C2802A6 38000000 9401FD8C 
H...|(..8.......                 
FF000510  BF410008 48000005 7FC802A6 801E0358 
.A..H..........X                 
[...]

Hi, and thanks for the help.
-- 
Simone Piccardi
Microsoft is NOT the answer. Microsoft is the Question.
The answer is: "NO!"

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: BUGboot 0.2 Patch
  1999-10-29 18:08     ` BUGboot 0.2 Patch Christian Zankel
  1999-11-02  9:24       ` Simone Piccardi
@ 1999-11-02  9:45       ` Simone Piccardi
  1 sibling, 0 replies; 7+ messages in thread
From: Simone Piccardi @ 1999-11-02  9:45 UTC (permalink / raw)
  To: Christian Zankel; +Cc: Matt Porter, linuxppc-dev


Hi again,
now it works!! I can boot from flash!

It was just the problem of endianess; for some reason when I compiled
mkbugboot.c on the board it take it as little-endian; it was sufficient
to force the code putting:

  bbh->entry_offset =header_size;
  bbh->routine_length= MAX_BOOT_SIZE+boot_size+2;

instead of:

  bbh->entry_offset	= cpu_to_be32(header_size);	/* Entry address */
  bbh->routine_length	= cpu_to_be32(MAX_BOOT_SIZE+boot_size+2); 

and everything went fine. I'll look to understand why it take it as
LITTLE_ENDIAN on a big endian computer, but now I'm very happy!

Thank you again for the good work.
-- 
Simone Piccardi
Microsoft is NOT the answer. Microsoft is the Question.
The answer is: "NO!"

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* BUGboot 0.3 - Boot Linux from flash on Moto boards
  1999-09-30 20:45 BUGboot 0.2 - Boot Linux from flash on Moto boards Matt Porter
  1999-10-11 22:37 ` Simone Piccardi
@ 1999-11-12 23:45 ` Matt Porter
  1 sibling, 0 replies; 7+ messages in thread
From: Matt Porter @ 1999-11-12 23:45 UTC (permalink / raw)
  To: linuxppc-dev, linuxppc-embedded


I've released a new 0.3 version of BUGboot to address some bugs where it
just didn't work with certain sized kernel and residual data images. Also,
the new version can build cross build flashable images as well now from
both big and little endian machines.  Thanks to Christian Zankel for a
patch that helped me locate some of the problems with 0.2.

I've tested builds on ppc and i386 and tested so far on MVME2300SC,
MVME2400, and MTX+ targets.

Available at http://members.home.net/mmporter/linux/

If you are wondering what it is:

  It's a simple tool and bootloader that creates a flashable image from a
  Linux kernel/initrd and a dump of a residual data tree.  This image is
  flashed onto any Motorola PowerPlus board 4/8/16 MB flash bank and then
  Linux is booted from the flash.  This works on 
  MVME23xx/24xx/26xx/27xx/36xx/46xx, MCPx750, and MTX variants.

--
Matt Porter
mmporter@home.com
This is Linux Country. On a quiet night, you can hear Windows reboot.

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~1999-11-12 23:45 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
1999-09-30 20:45 BUGboot 0.2 - Boot Linux from flash on Moto boards Matt Porter
1999-10-11 22:37 ` Simone Piccardi
1999-10-14 16:40   ` Matt Porter
1999-10-29 18:08     ` BUGboot 0.2 Patch Christian Zankel
1999-11-02  9:24       ` Simone Piccardi
1999-11-02  9:45       ` Simone Piccardi
1999-11-12 23:45 ` BUGboot 0.3 - Boot Linux from flash on Moto boards Matt Porter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).