From c58729365840c2c0137c0a8f5fb0b29208eb1cda Mon Sep 17 00:00:00 2001 From: Jan Luebbe Date: Thu, 9 May 2013 11:47:08 +0200 Subject: vexpress: qemu: split generic code from run script Signed-off-by: Jan Luebbe --- qemu-common | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ run | 78 ++------------------------------------------------- 2 files changed, 94 insertions(+), 76 deletions(-) create mode 100755 qemu-common diff --git a/qemu-common b/qemu-common new file mode 100755 index 0000000..89d6630 --- /dev/null +++ b/qemu-common @@ -0,0 +1,92 @@ +#!/bin/bash +# +# This is sourced by the run scripts. + +platformconfig=selected_platformconfig +# fallback to platformconfig in the same dir as this script +if [ ! -e "$platformconfig" ]; then + platformconfig=$(dirname $0)/platformconfig +fi + +# +# we need information about the platform +# +if [ ! -e "$platformconfig" ]; then + echo "error: selected_platformconfig does not exist" + echo " please use 'ptxdist platform ...' or 'ptxdist --platformconfig=...'" + exit 1 +fi + +source $platformconfig + +if [ -n "${PTXCONF_PLATFORM}" ]; then + PTXDIST_PLATFORMDIR="./platform-${PTXCONF_PLATFORM}" +else + PTXDIST_PLATFORMDIR="." +fi + +if [ ! -e "${PTXDIST_PLATFORMDIR}/images/linuximage" ]; then + echo "error: run 'ptxdist go' first" + exit 1 +fi + +if [ ! -e "${PTXDIST_PLATFORMDIR}/images/sd.img" ]; then + echo "error: run 'ptxdist images' first" + exit 1 +fi + +if [ ! -e "${PTXDIST_PLATFORMDIR}/images/nor0.img" ]; then + echo "error: run 'ptxdist images' first" + exit 1 +fi + +# the emulator to run +QEMU_EXEC="${PTXDIST_PLATFORMDIR}/sysroot-host/bin/qemu-system-arm" + +if [ ! -e "${QEMU_EXEC}" ]; then + echo "error: enable and install 'host-qemu' first" + exit 1 +fi + +# disable this, if you want to have some graphics output +QEMU_NOGRAPHIC=-nographic + +# Machine to emulate: The default kernel is prepared to run on "versatile pb" +QEMU_MACHINE=vexpress-a9 + +# +# 'user mode' network related settings +# +PLATFORM_IP="10.0.2.7" + +# +# *_INTERNAL_PORT: the port a service would connect (in the emulated system) +# *_EXTERNAL_PORT: port QEMU opens at the host side to give access to the ${*_INTERNAL_PORT} +# +TELNET_INTERNAL_PORT=23 +TELNET_EXTERNAL_PORT=20023 + +HTTP_INTERNAL_PORT=80 +HTTP_EXTERNAL_PORT=20080 + +if [ -z "${VDE_SOCKET}" ]; then + for dir in $(ls -d /var/run/vde2/*.ctl 2>/dev/null); do + if [ -r "${dir}" ]; then + VDE_SOCKET="${dir}" + fi + done +fi +if [ -n "${VDE_SOCKET}" ]; then + if ${QEMU_EXEC} --help | grep -q -- '-net vde'; then + QEMU_NET="-net vde,vlan=1,sock=${VDE_SOCKET}" + fi +fi +if [ -z "${QEMU_NET}" ]; then + QEMU_NET="-net user,vlan=1" + PLATFORM_IP="" +fi + +QEMU_REDIR=" \ + -redir tcp:${TELNET_EXTERNAL_PORT}:${PLATFORM_IP}:${TELNET_INTERNAL_PORT} \ + -redir tcp:${HTTP_EXTERNAL_PORT}:${PLATFORM_IP}:${HTTP_INTERNAL_PORT} \ +" diff --git a/run b/run index 49199ea..1d6122e 100755 --- a/run +++ b/run @@ -3,80 +3,7 @@ # For some information about how to work with qemu for ARM, please # refer: http://fedoraproject.org/wiki/Architectures/ARM/HowToQemu - -platformconfig=selected_platformconfig -# fallback to platformconfig in the same dir as this script -if [ ! -e "$platformconfig" ]; then - platformconfig=$(dirname $0)/platformconfig -fi - -# -# we need information about the platform -# -if [ ! -e "$platformconfig" ]; then - echo "error: selected_platformconfig does not exist" - echo " please use 'ptxdist platform ...' or 'ptxdist --platformconfig=...'" - exit 1 -fi - -source $platformconfig - -if [ -n "${PTXCONF_PLATFORM}" ]; then - PTXDIST_PLATFORMDIR="./platform-${PTXCONF_PLATFORM}" -else - PTXDIST_PLATFORMDIR="." -fi - -if [ ! -e "${PTXDIST_PLATFORMDIR}/images/linuximage" ]; then - echo "error: run 'ptxdist go' first" - exit 1 -fi - -if [ ! -e "${PTXDIST_PLATFORMDIR}/images/sd.img" ]; then - echo "error: run 'ptxdist images' first" - exit 1 -fi - -# the emulator to run -QEMU_EXEC=qemu-system-${PTXCONF_ARCH_STRING} - -# disable this, if you want to have some graphics output -QEMU_NOGRAPHIC=-nographic - -# Machine to emulate: The default kernel is prepared to run on "versatile pb" -QEMU_MACHINE=vexpress-a9 - -# -# 'user mode' network related settings -# -PLATFORM_IP="10.0.2.7" - -# -# *_INTERNAL_PORT: the port a service would connect (in the emulated system) -# *_EXTERNAL_PORT: port QEMU opens at the host side to give access to the ${*_INTERNAL_PORT} -# -TELNET_INTERNAL_PORT=23 -TELNET_EXTERNAL_PORT=20023 - -HTTP_INTERNAL_PORT=80 -HTTP_EXTERNAL_PORT=20080 - -if [ -z "${VDE_SOCKET}" ]; then - for dir in $(ls -d /var/run/vde2/*.ctl 2>/dev/null); do - if [ -r "${dir}" ]; then - VDE_SOCKET="${dir}" - fi - done -fi -if [ -n "${VDE_SOCKET}" ]; then - if ${QEMU_EXEC} --help | grep -q -- '-net vde'; then - QEMU_NET="-net vde,vlan=1,sock=${VDE_SOCKET}" - fi -fi -if [ -z "${QEMU_NET}" ]; then - QEMU_NET="-net user,vlan=1" - PLATFORM_IP="" -fi +. $(dirname $0)/qemu-common # do the job ${QEMU_EXEC} ${QEMU_NOGRAPHIC} \ @@ -85,8 +12,7 @@ ${QEMU_EXEC} ${QEMU_NOGRAPHIC} \ -no-reboot \ -net nic,vlan=1 \ ${QEMU_NET} \ - -redir tcp:${TELNET_EXTERNAL_PORT}:${PLATFORM_IP}:${TELNET_INTERNAL_PORT} \ - -redir tcp:${HTTP_EXTERNAL_PORT}:${PLATFORM_IP}:${HTTP_INTERNAL_PORT} \ + ${QEMU_REDIR} \ -kernel ${PTXDIST_PLATFORMDIR}/images/linuximage \ -sd ${PTXDIST_PLATFORMDIR}/images/sd.img \ -smp 2 \ -- cgit v1.2.3