[PATCH] build-introduce-device-specific-named-kernel-binary.patch

Andy Green andy at openmoko.com
Thu Nov 13 10:50:49 CET 2008


This patch changes the ./build script to generate a uImage.bin file with
the build device appended, eg, uImage-GTA02.bin.

The reason for this change is that it is possible to generate rootfs images
now that can target multiple (and probably increasing numbers of) devices
with the one image.  Therefore qi or other bootloader running on the device
is going to have to pick out the right kernel from the rootfs filesystem
for the device it finds it is running on from a set provided down /boot
by the rootfs generator.

/lib/modules for the kernels doesn't get in the way of each other because the
version-specific path is also extended to have the device name as part of it.

2.6.28-GTA02_stable-tracking_c77dda03a7c11666-mokodev

For legacy U-Boot support on GTA01 or GTA02, a symlink to uImage-GTA01.bin or
uImage-GTA02.bin will be needed.

The dfu utility script is updated to take an argument, eg, GTA02

Signed-off-by: Andy Green <andy at openmoko.com>
---

 build    |   45 ++++++++++++++++++++++++++++++++-------------
 dfu-kern |   13 +++++++++----
 2 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/build b/build
index ee8d467..24a1c5d 100755
--- a/build
+++ b/build
@@ -4,35 +4,54 @@
 
 export CROSS_COMPILE=../../cross/bin/arm-angstrom-linux-gnueabi-
 make ARCH=arm silentoldconfig
-VERSION=
-if [ -d .git ] ; then
- HEAD=`git show --pretty=oneline | head -n1 | cut -d' ' -f1 | cut -b1-16`
- BRANCH=`git branch | grep ^\* | cut -d' ' -f2`
- VERSION=-$BRANCH\_$HEAD
+
+PRODUCT=
+
+if [ ! -z "`grep CONFIG_MACH_NEO1973_GTA01=y .config`" ] ; then
+	START=30008000
+	PRODUCT=GTA01
+fi
+
+if [ ! -z "`grep CONFIG_MACH_NEO1973_GTA02=y .config`" ] ; then
+	START=30008000
+	PRODUCT=GTA02
 fi
 
-if [ ! -z "`grep CONFIG_ARCH_S3C64XX=y .config`" ] ; then
-	START=50008000
-	PRODUCT=GTA03
+if [ ! -z "`grep CONFIG_MACH_OPENMOKO_GTA03=y .config`" ] ; then
+        START=50008000
+        PRODUCT=GTA03
 fi
 
-if [ ! -z "`grep CONFIG_ARCH_S3C2410=y .config`" ] ; then
+if [ ! -z "`grep CONFIG_MACH_M800=y .config`" ] ; then
 	START=30008000
-	PRODUCT=FR
+	PRODUCT=M800
 fi
 
+if [ -z "$PRODUCT" ] ; then
+	echo "Unable to figure out what we are building from the config"
+	exit 1
+fi
+
+VERSION=
+if [ -d .git ] ; then
+ HEAD=`git show --pretty=oneline | head -n1 | cut -d' ' -f1 | cut -b1-16`
+ BRANCH=`git branch | grep ^\* | cut -d' ' -f2`
+ VERSION=-$PRODUCT\_$BRANCH\_$HEAD
+fi
+
+
 echo $MKIMAGECMD
 
 if make -j5 ARCH=arm CONFIG_DEBUG_SECTION_MISMATCH=y EXTRAVERSION=$VERSION; then
 	${CROSS_COMPILE}objcopy -O binary -R .note -R .comment -S arch/arm/boot/compressed/vmlinux linux.bin
-	mkimage -A arm -O linux -T kernel -C none -a $START -e $START -n "OM $PRODUCT $BRANCH""_$HEAD" -d linux.bin uImage.bin
+	mkimage -A arm -O linux -T kernel -C none -a $START -e $START -n "OM $PRODUCT $BRANCH""_$HEAD" -d linux.bin uImage-$PRODUCT.bin
 
 	# we can see if it is an "moredrivers" build by looking for USB Eth gadget
 	# if it is then keep a stamped copy of last build
 
 	if [ ! -z "`grep CONFIG_USB_USBNET=y .config`" ] ; then
-		rm -f uImage-moredrivers*
-		cp uImage.bin uImage-moredrivers$VERSION.bin
+		rm -f uImage-moredrivers*-$PRODUCT.bin
+		cp uImage-$PRODUCT.bin uImage-moredrivers$VERSION-$PRODUCT.bin
 	fi
 	exit 0
 else
diff --git a/dfu-kern b/dfu-kern
index b7ed2c3..023d13b 100755
--- a/dfu-kern
+++ b/dfu-kern
@@ -1,9 +1,14 @@
 #!/bin/bash
-../../dfu-util/src/dfu-util -a 3 -d 0x1d50:0x5119 -D uImage.bin
-if [ $? -eq 1 ] ; then
-../../dfu-util/src/dfu-util -a 3 -d 0x1d50:0x5120 -D uImage.bin
-../../dfu-util/src/dfu-util -a 3 -d 0x1d50:0x5119 -D uImage.bin
 
+if [ -z "$1" ] ; then
+	echo "Usage: $0 <DEVICE>    eg, $0 GTA02"
+	exit 1
+fi
+
+../../dfu-util/src/dfu-util -a 3 -d 0x1d50:0x5119 -D uImage-$1.bin
+if [ $? -eq 1 ] ; then
+../../dfu-util/src/dfu-util -a 3 -d 0x1d50:0x5120 -D uImage-$1.bin
+../../dfu-util/src/dfu-util -a 3 -d 0x1d50:0x5119 -D uImage-$1.bin
 fi
 
 




More information about the openmoko-kernel mailing list