summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Lane <john@lane.uk.net>2013-01-20 22:30:27 +0000
committerJohn Lane <john@lane.uk.net>2013-01-20 22:30:27 +0000
commit98692703eac635b983f5b9c634acd2abf2bc558c (patch)
treecf029c02f805b1c689dd452bf77ed12ac08c9ebb
parentdff2da45f2bc1507bb182c42b7705c2d750e6e7d (diff)
downloadrpi-utils-master.zip
rpi-utils-master.tar.gz
rpi-utils-master.tar.bz2
Update build-kernel-qemu for hard-floatHEADorigin/masterorigin/HEADmaster
-rw-r--r--kernel/.gitignore1
-rw-r--r--kernel/README46
-rw-r--r--kernel/README.md31
-rwxr-xr-x[-rw-r--r--]kernel/build-kernel-qemu33
4 files changed, 62 insertions, 49 deletions
diff --git a/kernel/.gitignore b/kernel/.gitignore
new file mode 100644
index 0000000..9ef77dd
--- /dev/null
+++ b/kernel/.gitignore
@@ -0,0 +1 @@
+kernel-qemu/
diff --git a/kernel/README b/kernel/README
deleted file mode 100644
index abbb1ad..0000000
--- a/kernel/README
+++ /dev/null
@@ -1,46 +0,0 @@
-Kernel Build Notes
-==================
-
-QEMU ARM Emulator
------------------
-
-The following sequence of commands can be used to build a kernel
-image that can be used to boot QEMU. They are also present in
-the script 'build-kernel-qemu'.
-
-$ mkdir kernel-qemu
-$ cd kernel-qemu
-$ git clone --depth 1 git://github.com/raspberrypi/linux.git
-$ wget http://xecdesign.com/downloads/linux-qemu/linux-arm.patch
-$ patch -p1 -d linux/ < linux-arm.patch
-$ cd linux
-$ make ARCH=arm versatile_defconfig
-$ cat >> .config << EOF
-CONFIG_CROSS_COMPILE="$(which arm-linux-gnueabi-gcc | sed "s/-gcc/-/")"
-CONFIG_CPU_V6=y
-CONFIG_ARM_ERRATA_411920=y
-CONFIG_ARM_ERRATA_364296=y
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-CONFIG_PCI=y
-CONFIG_SCSI=y
-CONFIG_SCSI_SYM53C8XX_2=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_TMPFS=y
-CONFIG_INPUT_EVDEV=y
-CONFIG_EXT4_FS=y
-CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-EOF
-$ make -j 8 -k ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
-$ make -j 8 -k ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
-$ cd ..
-$ cp linux/arch/arm/boot/zImage kernel-qemu
-
-References
-==========
-http://xecdesign.com/compiling-a-kernel/
-http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/
diff --git a/kernel/README.md b/kernel/README.md
new file mode 100644
index 0000000..6808b2b
--- /dev/null
+++ b/kernel/README.md
@@ -0,0 +1,31 @@
+Kernel Build Notes
+==================
+
+QEMU ARM Emulator
+-----------------
+
+Use the script 'build-kernel-qemu' to build a kernel image that
+can be used to boot QEMU. The script can build a soft or hard
+float kernel. (for soft-float, comment out "HARDFLOAT=yes" near
+the top of the script).
+
+Assumptions
+-----------
+
+An appropriate cross compiler toolchain is available at:
+
+* for soft float : /usr/bin/arm-linux-gnueabi-*
+* for hard float : /usr/bin/arm-linux-gnueabihf-*
+
+Tests
+-----
+
+Tested by booting Raspberry-Pi Arch Linux system images in QEMU:
+
+* for soft float : archlinuxarm-13-06-2012.img
+* for hard float : archlinux-hf-2012-09-18.img
+
+References
+----------
+http://xecdesign.com/compiling-a-kernel/
+http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/
diff --git a/kernel/build-kernel-qemu b/kernel/build-kernel-qemu
index 2a445ac..a6a8c23 100644..100755
--- a/kernel/build-kernel-qemu
+++ b/kernel/build-kernel-qemu
@@ -1,5 +1,25 @@
#!/bin/bash
+#
+# Build ARM kernel for QEMU Raspberry Pi Emulation
+#
+# John Lane https://github.com/johnlane/rpi-utils
+#
+# Thanks to http://xecdesign.com/compiling-a-kernel/
+#
+#######################################################
+# Compile for hard-float ?
+HARDFLOAT=yes
+
+if [[ ${HARDFLOAT} == yes ]]; then
+ TOOLCHAIN=arm-linux-gnueabihf
+ CONFIG_VFP=y
+else
+ TOOLCHAIN=arm-linux-gnueabi
+ CONFIG_VFP=n
+fi
+
+rm -rf kernel-qemu
mkdir kernel-qemu
cd kernel-qemu
git clone --depth 1 git://github.com/raspberrypi/linux.git
@@ -8,7 +28,7 @@ patch -p1 -d linux/ < linux-arm.patch
cd linux
make ARCH=arm versatile_defconfig
cat >> .config << EOF
-CONFIG_CROSS_COMPILE="$(which arm-linux-gnueabi-gcc | sed "s/-gcc/-/")"
+CONFIG_CROSS_COMPILE="$(which ${TOOLCHAIN}-gcc | sed "s/-gcc/-/")"
CONFIG_CPU_V6=y
CONFIG_ARM_ERRATA_411920=y
CONFIG_ARM_ERRATA_364296=y
@@ -23,11 +43,18 @@ CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_TMPFS=y
CONFIG_INPUT_EVDEV=y
+CONFIG_EXT3_FS=y
CONFIG_EXT4_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ISO8859_1=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
+CONFIG_VFP=${CONFIG_VFP}
+CONFIG_CGROUPS=y
EOF
-make -j 8 -k ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
-make -j 8 -k ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
+
+make -j 8 -k ARCH=arm CROSS_COMPILE=${TOOLCHAIN}- menuconfig
+make -j 8 -k ARCH=arm CROSS_COMPILE=${TOOLCHAIN}-
cd ..
cp linux/arch/arm/boot/zImage kernel-qemu