qemu: add ARM noMMU defconfig

Useful for testing no-MMU ARM code in Qemu.

The newer Linux kernels with DT support for Qemu Versatile aren't yet
working, so use latest 4.4 kernel.

Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
Tested-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Waldemar Brodkorb 2016-09-29 12:55:20 +02:00 committed by Peter Korsgaard
parent 8e1625b8d3
commit 3adc7f521f
4 changed files with 112 additions and 0 deletions

View File

@ -0,0 +1,46 @@
# CONFIG_MMU is not set
CONFIG_ARCH_VERSATILE=y
CONFIG_SET_MEM_PARAM=y
CONFIG_DRAM_BASE=0x00000000
CONFIG_DRAM_SIZE=0x08000000
CONFIG_ARCH_VERSATILE_PB=y
CONFIG_MACH_VERSATILE_AB=y
# CONFIG_MACH_VERSATILE_DT is not set
CONFIG_BINFMT_FLAT=y
CONFIG_SYSVIPC=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_ARCH_MULTI_V7 is not set
CONFIG_AEABI=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_NETDEVICES=y
CONFIG_SMC91X=y
CONFIG_PHYLIB=y
CONFIG_INPUT_EVDEV=y
CONFIG_SERIO_AMBAKMI=y
CONFIG_LEGACY_PTY_COUNT=16
CONFIG_SERIAL_8250=m
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=m
CONFIG_FB=y
CONFIG_FB_ARMCLCD=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_SOUND=y
CONFIG_SND=m
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_ARMAACI=m
CONFIG_EXT4_FS=y
CONFIG_VFAT_FS=m
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_MAGIC_SYSRQ=y

View File

@ -0,0 +1,30 @@
From b7c1666813424d329868335c8faf8886b0f85b6c Mon Sep 17 00:00:00 2001
From: Greg Ungerer <gerg@linux-m68k.org>
Date: Thu, 11 Aug 2016 21:33:11 +1000
Subject: [PATCH] arm: fix versatile platform to work in no-MMU mode
If CONFIG_MMU is disabled then do not carry out the virtual memory address
translation for IO devices.
With this fix in place we can run the ARM Versatile board (including its
qemu emulation) as a no-MMU Linux system.
Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
diff -Nur linux-4.4.17.orig/arch/arm/mach-versatile/include/mach/hardware.h linux-4.4.17/arch/arm/mach-versatile/include/mach/hardware.h
--- linux-4.4.17.orig/arch/arm/mach-versatile/include/mach/hardware.h 2016-08-10 11:49:43.000000000 +0200
+++ linux-4.4.17/arch/arm/mach-versatile/include/mach/hardware.h 2016-08-25 23:19:03.691716292 +0200
@@ -30,8 +30,12 @@
#define VERSATILE_PCI_VIRT_BASE (void __iomem *)0xe8000000ul
#define VERSATILE_PCI_CFG_VIRT_BASE (void __iomem *)0xe9000000ul
+#ifdef CONFIG_MMU
/* macro to get at MMIO space when running virtually */
#define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000)
+#else
+#define IO_ADDRESS(x) (x)
+#endif
#define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))

View File

@ -2,6 +2,10 @@ Run the emulation with:
qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user
Or for the noMMU emulation:
qemu-system-arm -M versatilepb -kernel output/images/zImage -append "console=ttyAMA0,115200" -serial stdio -net user -net nic,model=smc91c111
The login prompt will appear in the terminal that started Qemu. The
graphical window is the framebuffer.

View File

@ -0,0 +1,32 @@
# Architecture
BR2_arm=y
BR2_arm926t=y
# Toolchain
BR2_PACKAGE_HOST_ELF2FLT=y
# BR2_USE_MMU is not set
# Patches
BR2_GLOBAL_PATCH_DIR="board/qemu/arm-versatile/patches"
# Busybox with hush
BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config"
# System
BR2_SYSTEM_DHCP="eth0"
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
# Filesystem
# BR2_TARGET_ROOTFS_EXT2 is not set
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_ROOTFS_INITRAMFS=y
# Linux headers same as kernel, a 4.4 series
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.22"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-4.4-nommu.config"