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:
parent
8e1625b8d3
commit
3adc7f521f
46
board/qemu/arm-versatile/linux-4.4-nommu.config
Normal file
46
board/qemu/arm-versatile/linux-4.4-nommu.config
Normal 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
|
30
board/qemu/arm-versatile/patches/linux/versatile-nommu.patch
Normal file
30
board/qemu/arm-versatile/patches/linux/versatile-nommu.patch
Normal 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))
|
||||
|
@ -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.
|
||||
|
||||
|
32
configs/qemu_arm_versatile_nommu_defconfig
Normal file
32
configs/qemu_arm_versatile_nommu_defconfig
Normal 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"
|
Loading…
Reference in New Issue
Block a user