[ARMedslack] My experience with the GuruPlug

Robby Workman rw at rlworkman.net
Mon May 31 05:30:43 UTC 2010


Well, this has been a fun (and annoying) process...  :-)

Maybe there's some secret (or not so secret) info that I'm not
finding, but I've thus far been unable to get any uboot build
to successfully load kernel and initrd from a removable device.
I've tried a usb stick and an mmc card, for what it's worth.

I have a 4G minisd card in there, partitioned with sdb1 as a
100M fat32 and sdb2 as the remainder in ext4.  I guess I should
go back and try fat16 and such to see if that has better results,
but for now, I *know* this arrangement works:

I made the kernel and initrd images available via tftp and got
them flashed to nand like this:

Marvell>> tftp 0x6400000 uImage-kirkwood
Using egiga0 device
TFTP from server 192.168.13.11; our IP address is 192.168.13.50
Filename 'uImage-kirkwood'.
Load address: 0x6400000
Loading:
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################### done
Bytes transferred = 2096780 (1ffe8c hex)
Marvell>> nand erase 0x100000 0x400000

NAND erase: device 0 offset 0x100000, size 0x400000
Erasing at 0x4e0000 -- 100% complete.
OK
Marvell>> nand write.e 0x6400000 0x100000 0x400000

NAND write: device 0 offset 0x100000, size 0x400000
 4194304 bytes written: OK

Marvell>> tftp 0x6400000 uinitrd-kirkwood
Using egiga0 device
TFTP from server 192.168.13.11; our IP address is 192.168.13.50
Filename 'uinitrd-kirkwood'.
Load address: 0x6400000
Loading:
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
########### done
Bytes transferred = 7706248 (759688 hex)
Marvell>> nand erase 0x500000 0x1fb00000

NAND erase: device 0 offset 0x500000, size 0x1fb00000
Skipping bad block at
0x19ee0000 Erasing at 0x1ffe0000 -- 100% complete.
OK
Marvell>> nand write.e 0x6400000 0x500000 0x800000

NAND write: device 0 offset 0x500000, size 0x800000
 8388608 bytes written: OK


Now, let's verify that this did what I think it did:

Marvell>> nand start
Marvell>> nand read.e 0x00800000 0x100000 0x400000
Marvell>> nand read.e 0x01100000 0x500000 0x600000
Marvell>> iminfo 0x00800000

## Checking Image at 00800000 ...
   Legacy image found
   Image Name:   Linux-2.6.33.5-kirkwood
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2096716 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
Marvell>> iminfo 0x01100000

## Checking Image at 01100000 ...
   Legacy image found
   Image Name:   Slackware ARM Initial RAM disk f
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    7706184 Bytes =  7.3 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK


Okay, both images look good - yay!  Now here's the important
bits from the uboot environment:

Marvell>> printenv
bootdelay=3
baudrate=115200
ethact=egiga0
eth1addr=02:50:43:eb:75:43
ethaddr=00:50:43:01:5D:EA
arcNumber=2659
mainlineLinux=yes
filesize=759688
fileaddr=6400000
ipaddr=192.168.13.50
serverip=192.168.13.11
stdin=serial
stdout=serial
stderr=serial
bootargs_root=root=/dev/sdb2 waitforroot=10 rootfs=ext4
bootargs_console=console=ttyS0,115200
bootcmd_slack=bootm 0x00800000 0x01100000
bootcmd_usb=usb start;
bootcmd=setenv bootargs $(bootargs_console) $(bootargs_root); run
bootcmd_usb; run bootcmd_nand; run bootcmd_slack; bootcmd_nand=nand
start; nand read.e 0x00800000 0x100000 0x400000; nand read.e 0x01100000
0x500000 0x800000

Environment size: 629/131068 bytes


Note that putting the initrd into nand like this WILL kill the
jffs2 root filesystem shipped with the guruplug. 


FWIW, I'm also getting the stacktrace on halt/reboot:

The system is going down for reboot NOW!
INIT: Sending processes the TERM signal
INIT: SendingRunning shutdown script /etc/rc.d/rc.6:
Saving system time to the hardware clock (UTC).
Stopping system message bus...
Unmounting remote filesystems.
[  112.344583] default_device_exit: failed to move eth0 to init_net: -22
[  112.356199] kernel BUG at net/core/dev.c:5805!
[  112.360745] Unable to handle kernel NULL pointer dereference at
virtual address 00000000 [  112.368881] pgd = c0004000
[  112.371676] [00000000] *pgd=00000000
[  112.375283] Internal error: Oops: 817 [#1] PREEMPT
[  112.380094] last sysfs
file: /sys/devices/platform/orion-ehci.0/usb1/1-1/1-1.1/1-1.1:1.0/host1/target1:0:0/1:0:0:1/block/sdb/size
[  112.391794] Modules linked in: ipv6 nls_utf8 nls_cp437 fuse uap8xxx
libertas_sdio btmrvl_sdio libertas btmrvl bluetooth cfg80211 rfkill
lib80211 mv_cesa aes_generic mvsdio nfs lockd nfs_acl auth_rpcgss
sunrpc mv643xx_eth fscache xfs jfs reiserfs ext4 ext3 ext2 mbcache
dm_mod md_mod exportfs jbd2 jbd vfat fat ums_onetouch ums_jumpshot
ums_alauda ums_sddr55 ums_sddr09 ums_isd200 ums_freecom ums_usbat
ums_cypress usb_storage usb_libusual ohci_hcd usbhid hid uhci_hcd
ehci_hcd usbcore nls_base sata_mv libata mmc_block mmc_core scsi_tgt
sr_mod cdrom sd_mod crc_t10dif sg scsi_mod [  112.443316] CPU: 0    Not
tainted  (2.6.33.5-kirkwood #2) [  112.448744] PC is at __bug+0x18/0x24
[  112.452340] LR is at __bug+0x14/0x24 [  112.455935] pc :
[<c002b33c>]    lr : [<c002b338>]    psr: 60000013 [  112.455940] sp :
df851f28  ip : 00000000  fp : df801f28 [  112.467477] r10: 00000000
r9 : c0267860  r8 : c040cc68 [  112.472727] r7 : df851f30  r6 :
c04736c8  r5 : dfd3e000  r4 : dfeb6000 [  112.479284] r3 : 00000000
r2 : df851f1c  r1 : c0381b51  r0 : 00000038 [  112.485843] Flags: nZCv
IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel [  112.493184]
Control: 0005397f  Table: 1e014000  DAC: 00000017 [  112.498957]
Process netns (pid: 9, stack limit = 0xdf850270) [  112.504642] Stack:
(0xdf851f28 to 0xdf852000) [  112.509024] 1f20:
dfeb6000 c026dc68 32766564 bf5a1a00 c0473690 df851f68 [  112.517248]
1f40: c040cc6c c040ced8 c0473690 df851f68 c040cc6c c0267028 c040ced8
c040cc4c [  112.525471] 1f60: c0412d60 c0267970 c04736a4 c04736a4
c047369c c047369c df850000 df801f20 [  112.533693] 1f80: c0412d60
c005bc90 00000000 00000000 00000e88 00000000 df838b00 c005fcb4
[  112.541917] 1fa0: df851fa0 df851fa0 df801f20 df823f00 df851fd4
c005ba88 df801f20 00000000 [  112.550139] 1fc0: 00000000 00000000
00000000 c005f848 00000000 00000000 df851fd8 df851fd8 [  112.558362]
1fe0: 00000000 00000000 00000000 00000000 00000000 c0028a74 0000ffff
0000ffff [  112.566593] [<c002b33c>] (__bug+0x18/0x24) from
[<c026dc68>] (default_device_exit+0x84/0xc0) [  112.575084]
[<c026dc68>] (default_device_exit+0x84/0xc0) from [<c0267028>]
(ops_exit_list+0x2c/0x60) [  112.584263] [<c0267028>]
(ops_exit_list+0x2c/0x60) from [<c0267970>] (cleanup_net+0x110/0x1b8)
[  112.592927] [<c0267970>] (cleanup_net+0x110/0x1b8) from [<c005bc90>]
(worker_thread+0x208/0x2cc) [  112.601765] [<c005bc90>]
(worker_thread+0x208/0x2cc) from [<c005f848>] (kthread+0x78/0x80)
[  112.610072] [<c005f848>] (kthread+0x78/0x80) from [<c0028a74>]
(kernel_thread_exit+0x0/0x8) [  112.618469] Code: e1a01000 e59f000c
eb0b13a2 e3a03000 (e5833000) [  112.624677] ---[ end trace
5962ca148b8ec255 ]--- Saving random seed from /dev/urandom
in /etc/random-seed. Turning off swap. Unmounting local file systems.
tmpfs umounted tmpfs umounted /dev/sdb1 umounted usbfs
umounted /dev/sdb2 umounted Remounting root filesystem
read-only. /dev/sdb2 on / type ext4 (ro) Rebooting.


Anyway, it's up and running now, even though I guess I'll have to use
the JTAG console on any kernel upgrades :/

root at guruplug:~# uname -a
Linux guruplug 2.6.33.5-kirkwood #2 PREEMPT Thu May 27 14:47:11 BST
2010 armv5tel Feroceon 88FR131 rev 1 (v5l) Marvell GuruPlug Reference
Board GNU/Linux 
root at guruplug:~# mount 
/dev/sdb2 on / type ext4(rw,relatime,barrier=1,data=ordered) 
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sdb1 on /boot type vfat (rw)
tmpfs on /dev/shm type tmpfs (rw)
tmpfs on /tmp type tmpfs (rw)

 -RW
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.armedslack.org/pipermail/armedslack/attachments/20100531/3c24c109/attachment.asc>


More information about the ARMedslack mailing list