[pkg-fso-maint] Bug#535339: Openmoko Neo Freerunner (GTA02) support

Martin Michlmayr tbm at cyrius.com
Fri Sep 11 12:07:41 UTC 2009


* x at muc.ccc.de <x at muc.ccc.de> [2009-07-01 19:30]:
> Package: flash-kernel Version: 2.19 Severity: wishlist
> 
> I checked the flash-kernel script and it seems the Openmoko Neo
> Freerunner (GTA02) isn't among the supported machines.  After taking
> a look i came to the conclusion that it's probably a better idea to
> provide someone having the full-scope with the platform specific
> stuff instead of trying hard but probably still breaking something
> or at least 'not doing it properly' myself.

Sorry for the delay but I didn't see your bug report when you file it.
Gaudenz Steinlin has been working on d-i support for the Freerunner,
so I assume that he has patches for flash-kernel.

Gaudenz, can you comment?

> so:
> 
>   grep "^Hardware" /proc/cpuinfo | sed 's/Hardware\s*:\s*//'
> 
> returns
> 
>   GTA02
> 
> the mkimage calls i'm currently using manually are:
> 
>   mkimage -A arm -O linux -T ramdisk -C none -a 0x32800000 -n
>   "Ramdisk Image" -d "/boot/initrd-$version.cpio.gz"
>   "/boot/initrd-$version.cpio.gz.ub" mkimage -A arm -O linux -T
>   kernel -C none -a 0x32000000 -n "Kernel Image" -d
>   "/boot/kernel-$version.cpio.gz" "/boot/initrd-$version.cpio.gz.ub"
> 
> It might be best not to do anything else after creating the
> uboot-images in /boot, but let the user do the rest, as there are
> plenty of different possibilities regarding the bootloader used, the
> media and partition where the images are located, and the general
> setup. E.g. i'm using a uboot bootloader that supports sdhc and
> ext2, with a cryptroot setup with the boot-partition being the first
> partition on the sdhc-card, so to set the default boot entry the
> correct command would be (just in case you might have an idea on how
> to implement this in a sane and safe way):
> 
>   uboot-envedit -i /dev/mtd2 -o /dev/mtd2 bootcmd="setenv bootargs
>   \${bootargs_base} rootfstype=ext2 root=/dev/mapper/modi
>   rootdelay=5 \${mtdparts} ro quiet; mmcinit; sleep 1; ext2load mmc
>   1 0x32000000 /kernel.ub; ext2load mmc 1 0x32800000 /initrd.ub;
>   bootm 0x32000000 0x32800000"
> 
> (these are the (factory default) variables set in the uboot
> environment:
> 
>   bootargs_base=rootfstype=jffs2 root=/dev/mtdblock6
>   console=ttySAC2,115200 console=tty0 loglevel=8 regular_boot
>   mtdparts=mtdparts=physmap-flash:-(nor);neo1973-nand:0x00040000(u-boot),0x00040000(u-boot_env),0x00800000(kernel),0x000a0000(splash),0x00040000(factory),0x0f6a0000(rootfs)
> 
> just to provide all info so you can be sure there's no pitfall
> hidden somewhere)
> 
> "bootcmd" is the variable in the uboot environment used by uboot for
> the default boot procedure.  "mmcinit" is necessary to initialize
> sdhc. the "sleep 1" is necessary as there seems to be a bug
> somewhere (probably mmcinit) that makes the loading from sdhc break
> if it's done immediately after mmcinit returns. "ext2load" is used
> to load the image from an ext2 partition. for fat partitions, the
> command is called "fatload". for both, the first argument "mmc"
> tells them that the image to load is located on the sdhc card. the
> next argument is the partition number (starting at 1), followed by
> the memory address to load the image to, followed by the path (on
> the partition, hence /... and not /boot/...) of the image to load.
> "bootm" is the command to start the kernel (at the first address
> given) with the initrd (at the second address given).
> 
> oh and i just checked:
> 
>   for i in /dev/mtd?; do if uboot-envedit -p -i $i >/dev/null 2>&1;
>   then echo $i; break; fi; done
> 
> works to find the uboot environment device (uboot-envedit checks the
> environment crc).  i guess if it can be found, it might be
> reasonably safe to write the "bootcmd" to it... dunno...  finding
> the correct "root=" parameter should be solveable with
> 
>   mount|grep ' on / type'|awk '{ print $1 }'
> 
> or something like that... finding out whether /boot is ext2/ext3 or
> fat, could be done by something like
> 
>   mount|grep ' on /boot type'|awk '{ print $5 }'
> 
> but that might not work for / (in cases where mount thinks the type
> is 'auto')...
> 
> and in case you wonder: there are flash-partitions named 'kernel'
> and 'rootfs'. why ignore them as install targets? i think that's
> reasonable because: - the NAND-flash is 256MB alltogether. so
> 'kernel' and 'rootfs' might probably be enough for kernel+initrd.
> but a debian installation is probably not at all possible, or if it
> is, it will hardly be useful... i.e. it's more or less necessary to
> install debian on the sdhc card anyway.  - leaving the default
> openmoko-os on the NAND-flash, at least for emergency-boot purposes,
> is certainly a very good idea. using the 'kernel' and/or 'rootfs'
> NAND-flash partitions for an os installed on a sdhc card would break
> this, without any need or real advantage. so i doubt there's anyone
> out there who did such a thing. :)
> 
> kind regards,
> 
> 	Chris

-- 
Martin Michlmayr
http://www.cyrius.com/



More information about the pkg-fso-maint mailing list