Hi all,

Currently, I am doing development on Assabet/Neponset platform running 
Arm Linux.  Getting a combination of angelboot + kernel + ramdisk is not 
a problem now.  When I moved on to bootldr, a lot of problems arised. 
Actually, I cannot get the system up at all.  I have read through all 
the artcles in this maillist, still I cannot find a clue.  So I would 
like write down my understandings of bootldr booting here and hope gurus 
of this maillist can give some hints/corrections.

According to a FAQ in handhelds.org, there can be four ways of booting:
1) bootldr + ramdisk.  The ramdisk will be unpacked into DRAM at boot 
time. Such method wastes a lot of DRAM and makes writing back to flash 
diffcult.

2) bootldr + standard filesystem on flash block device (e.g. M-System 
FTL).  So far, nobody had discussed this method in this list.  So I 
guess it is not applicable or not feasible.

3) bootldr + MTD + cramfs.  No DRAM wasted, but making changes to the 
filesystem is not allowed. (cramfs is read-only).  Am I correct that 
cramfs must make use of the MTD driver?

4) bootldr + MTD + JFFS.  This is the best combination.  No DRAM is 
wasted and the filesystem can be updated on-the-fly.

Now, let's come to the practical part.  I think these four methods are 
listed in increasing order of difficulty.  However, I am stupid enough 
to not even get the first method working :(  The latest CVS version of 
bootldr is used.  $CONFIG_ARCH=neponset and CONFIG_BIG_KERNEL=y.  After 
I Jflash-linux in the bootldr, then I load in a kernel (around 660k) and 
a ramdisk (3072k) via boot promot.  This pair works for me under 
angelboot.  I just changed two kernel options: disable the angelboot 
support and replace the kernel command from "keepinitrd" to "noinitrd". 
  The following messages are what I got from the minicom when I boot 
this combination:

%*
@000002A0
F02000000

*MTST
00000001
00000002
00000004
00000008
00000010
00000020
00000040
00000080
00000100
00000200
00000400
00000800
00001000
00002000
00004000
00008000
00010000
00020000
00040000
00080000
00100000
00200000
00400000
00800000
01000000
02000000
04000000
08000000
10000000
20000000
40000000
80000000
ENDM
STKP
C19F3FFC
MMU table start=C19F4000
Boot data start=C19F8000
Boot data size=00008000
Stack data base=C19F0000
Stack data size=00004000
FLASH_BASE=00000000
  Evacuating 1MB of Flash to DRAM at: C1E00000
done
Map Flash virtual section to DRAM at: C1E00000
btflash_init: mfrid=00890089
   devid=00180018
walking flash descriptors
btflash_init: found flash 28F128J3A
   flashDescriptor=0000CFF8
   flashSectors=0000CDD8
   nsectors=00000080
   flash_size=02000000
   flash_address_mask=01FFFFFF
get_param: could not find parameter system_rev
dram_size: 00000358

 >> Compaq OHH BootLoader, Rev 02.0B.02
 >> 01-03-05_16:37
 >>  ARM Processor Rev=6901B118
 >> (c) 2000 Compaq Cambridge Research Laboratory
Press Return to start the OS now, any other key for monitor menu
eval param blk
booting flash...
boot_magic=5A5ABEEF
kernel_image_first_word=E1A00000
Linux ELF flash_imgstart=5008000C size=000A5400 dest=C0000000 
offset=00008000
MMU Control=C19F4071
copying Linux kernel ... done
linuxEntryPoint: C0008000
kernel_image_dest:    C0000000
kernel_image_offset:    00008000
C0008000: E1A00000
C0008004: E1A00000
C0008008: E1A00000
C000800C: E1A00000
C0008010: E1A00000
C0008014: E1A00000
C0008018: E1A00000
C000801C: E1A00000
C0008020: EA000002
C0008024: 016F2818
root_filesystem_name=ramdisk
argc=00000002
args= noinitrd root=/dev/mtdblock4 init=/linuxrc console=ttySA0
setting boot parameters
get_param: could not find parameter system_rev
first_word_of_ramdisk=00300100
Setting up Linux parameters at address=C0000100
using_ramdisk=00000001
initrd_start=D0100004
dram_size=02000000
nr_pages=00002000
command line is:  noinitrd root=/dev/mtdblock4 init=/linuxrc console=ttySA0
linuxEntryPoint=C0008000
Booting Linux image


The whole system just hangs there.  One thing I suspect is the 
"/dev/mtdblock4" in the command line.  According to my understanding, 
method (1) doesn't need MTD driver.  So I didn't enable MTD driver in 
kernel compilation.  Am I correct here?

I am also wondering which version of bootldr I should use. John Dorsey 
has a patch against Nov-26-2000 CVS bootldr.  However, someone in this 
list claimed that it only works with NetBSD.  Then Robert released a 
patch about two weeks to make bootldr working with Linux.  This patch 
has been merged into the CVS tree.  Now, John Dorsey released a newest 
patch for BIG_KERNEL support (isn't it supported already?) and solving 
static memory configuration problem.  So what kind of combination should 
I use now?  Really confused.

I have another question reguarding the initrd used in angelboot.  I am 
wondering why we need initrd in the first place.  Initrd is used for two 
phases boot up.  Since we are not going to change our root filesystem, 
why we need initrd.  Also, if we do use initrd, where is the script 
/linuxrc in all the ramdisks working with angelboot I found so far?  It 
must be a stupid question, but I just don't know why. :(

Ok, stop here. Too many questions.  anyone had completed method 3 or 4 
on assabet/neponset so far?

Regards,
Leonard Ye


_______________________________________________
http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
Please visit the above address for information on this list.

Reply via email to