[OE-core] [PATCH 3/3] scripts/runqemu: add qemuarma9 support

Dmitry Eremin-Solenikov dmitry_eremin at mentor.com
Wed Apr 22 11:12:29 UTC 2015


Support new qemuarma9 machine type. It mostly reuses existing qemuarm
setup, but the virtio-based network and disk devices.

Signed-off-by: Dmitry Eremin-Solenikov <dmitry_eremin at mentor.com>
---
 scripts/runqemu          |  9 ++++++---
 scripts/runqemu-internal | 35 +++++++++++++++++++++++++++++++----
 2 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/scripts/runqemu b/scripts/runqemu
index 84ece4d..87834f9 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -108,7 +108,7 @@ process_filename() {
 while true; do
     arg=${1}
     case "$arg" in
-        "qemux86" | "qemux86-64" | "qemuarm" | "qemuarm64" | "qemumips" | "qemumipsel" | \
+        "qemux86" | "qemux86-64" | "qemuarm" | "qemuarma9" | "qemuarm64" | "qemumips" | "qemumipsel" | \
         "qemumips64" | "qemush4"  | "qemuppc" | "qemumicroblaze" | "qemuzynq")
             [ -z "$MACHINE" ] && MACHINE=$arg || \
                 error "conflicting MACHINE types [$MACHINE] and [$arg]"
@@ -232,13 +232,13 @@ fi
 
 if [ -z "$MACHINE" ]; then
     if [ "x$FSTYPE" = "xvmdk" ]; then
-        MACHINE=`basename $VM | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
+        MACHINE=`basename $VM | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarma9\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
         if [ -z "$MACHINE" ]; then
             error "Unable to set MACHINE from vmdk filename [$VM]"
         fi
         echo "Set MACHINE to [$MACHINE] based on vmdk [$VM]"
     else
-        MACHINE=`basename $KERNEL | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
+        MACHINE=`basename $KERNEL | sed -n 's/.*\(qemux86-64\|qemux86\|qemuarma9\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/p'`
         if [ -z "$MACHINE" ]; then
             error "Unable to set MACHINE from kernel filename [$KERNEL]"
         fi
@@ -304,6 +304,9 @@ QEMUX86_64_DEFAULT_FSTYPE=ext4
 QEMUARM_DEFAULT_KERNEL=zImage-qemuarm.bin
 QEMUARM_DEFAULT_FSTYPE=ext4
 
+QEMUARMA9_DEFAULT_KERNEL=zImage-qemuarma9.bin
+QEMUARMA9_DEFAULT_FSTYPE=ext4
+
 QEMUARM64_DEFAULT_KERNEL=Image-qemuarm64.bin
 QEMUARM64_DEFAULT_FSTYPE=ext4
 
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 65dbf21..570c28e 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -50,6 +50,9 @@ else
         "qemuarm")
             mem_size=128
             ;;
+        "qemuarma9")
+            mem_size=512
+            ;;
         "qemuarm64")
             mem_size=512
             ;;
@@ -128,6 +131,11 @@ if [ "$SLIRP_ENABLED" = "yes" ]; then
         QEMU_NETWORK_CMD=""
         DROOT="/dev/sda"
         ROOTFS_OPTIONS="-hda $ROOTFS"
+    elif [ "$MACHINE" = "qemuarma9" ]; then
+        QEMU_UI_OPTIONS="-nographic"
+        QEMU_NETWORK_CMD=""
+        DROOT="/dev/vda"
+        ROOTFS_OPTIONS="-drive id=disk0,file=$ROOTFS -device virtio-blk-device,drive=disk0"
     else
         QEMU_NETWORK_CMD=""
         DROOT="/dev/hda"
@@ -276,6 +284,11 @@ else
             DROOT="/dev/sda"
             ROOTFS_OPTIONS="-hda $ROOTFS"
         fi
+        if [ "$MACHINE" = "qemuarma9" ]; then
+            QEMU_NETWORK_CMD="-netdev tap,id=net0,ifname=$TAP,script=no,downscript=no -device virtio-net-device,netdev=net0 "
+            DROOT="/dev/vda"
+            ROOTFS_OPTIONS="-drive id=disk0,file=$ROOTFS -device virtio-blk-device,drive=disk0"
+        fi
         if [ "$MACHINE" = "qemuarm64" ]; then
             QEMU_NETWORK_CMD="-netdev tap,id=net0,ifname=$TAP,script=no,downscript=no -device virtio-net-device,netdev=net0 "
             DROOT="/dev/vda"
@@ -284,7 +297,7 @@ else
 
         KERNCMDLINE="mem=$QEMU_MEMORY"
         QEMU_UI_OPTIONS="-show-cursor -usb -usbdevice wacom-tablet"
-        if [ $MACHINE = 'qemuarm64' ]; then
+        if [ $MACHINE = 'qemuarm64' -o $MACHINE = 'qemuarma9' ]; then
             QEMU_UI_OPTIONS="-nographic"
         fi
 
@@ -308,6 +321,7 @@ case "$MACHINE" in
     "qemuppc") ;;
     "qemuarmv6") ;;
     "qemuarmv7") ;;
+    "qemuarma9") ;;
     "qemux86") ;;
     "qemux86-64") ;;
     "qemuzynq") ;;
@@ -361,14 +375,23 @@ if [ "$FSTYPE" = "nfs" ]; then
     NFSRUNNING="true"
 fi
 
-if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarmv7" ]; then
+if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarmv7" -o "$MACHINE" = "qemuarma9" ]; then
     QEMU=qemu-system-arm
-    MACHINE_SUBTYPE=versatilepb
+    if [ "$MACHINE" = "qemuarma9" ]; then
+        MACHINE_SUBTYPE="vexpress-a9"
+    else
+        MACHINE_SUBTYPE="versatilepb"
+    fi
     export QEMU_AUDIO_DRV="none"
     QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS"
     # QEMU_UI_OPTIONS="$QEMU_UI_OPTIONS -force-pointer"
+    if [ "$MACHINE" = "qemuarma9" ]; then
+        TTYCONSOLE=""
+    else
+        TTYCONSOLE="console=tty"
+    fi
     if [ "${FSTYPE:0:3}" = "ext" -o "$FSTYPE" = "btrfs" ]; then
-        KERNCMDLINE="root=$DROOT rw console=ttyAMA0,115200 console=tty $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY highres=off"
+        KERNCMDLINE="root=$DROOT rw console=ttyAMA0,115200 $TTYCONSOLE $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY highres=off"
         QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} $ROOTFS_OPTIONS -no-reboot $QEMU_UI_OPTIONS"
     fi
     if [ "$FSTYPE" = "nfs" ]; then
@@ -386,6 +409,10 @@ if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarm
     if [ "$MACHINE" = "qemuarmv7" ]; then
         QEMUOPTIONS="$QEMUOPTIONS -cpu cortex-a8"
     fi
+    if [ "$MACHINE" = "qemuarma9" ]; then
+        DTB="`dirname $KERNEL`/`basename $KERNEL -$MACHINE.bin`-vexpress-v2p-ca9.dtb"
+        QEMUOPTIONS="-dtb $DTB $QEMUOPTIONS -cpu cortex-a9"
+    fi
 fi
 
 if [ "$MACHINE" = "qemuarm64" ]; then
-- 
2.1.4




More information about the Openembedded-core mailing list