Browse Source

add support for xtensa dc233c variant. use uImage, which works with a patched Qemu. Thanks to Max Filippov for fixes and ideas.

Waldemar Brodkorb 9 years ago
parent
commit
ddb5d9774a

+ 10 - 0
package/u-boot/patches/patch-common_image_c

@@ -0,0 +1,10 @@
+--- u-boot-2014.07.orig/common/image.c	2014-07-14 19:16:45.000000000 +0200
++++ u-boot-2014.07/common/image.c	2014-08-11 13:41:05.204369615 +0200
+@@ -85,6 +85,7 @@ static const table_entry_t uimage_arch[]
+ 	{	IH_ARCH_SANDBOX,	"sandbox",	"Sandbox",	},
+ 	{	IH_ARCH_ARM64,		"arm64",	"AArch64",	},
+ 	{	IH_ARCH_ARC,		"arc",		"ARC",		},
++	{	IH_ARCH_XTENSA,		"xtensa",	"XTENSA",	},
+ 	{	-1,			"",		"",		},
+ };
+ 

+ 10 - 0
package/u-boot/patches/patch-include_image_h

@@ -0,0 +1,10 @@
+--- u-boot-2014.07.orig/include/image.h	2014-07-14 19:16:45.000000000 +0200
++++ u-boot-2014.07/include/image.h	2014-08-11 13:46:36.186486117 +0200
+@@ -173,6 +173,7 @@ struct lmb;
+ #define IH_ARCH_OPENRISC        21	/* OpenRISC 1000  */
+ #define IH_ARCH_ARM64		22	/* ARM64	*/
+ #define IH_ARCH_ARC		23	/* Synopsys DesignWare ARC */
++#define IH_ARCH_XTENSA		24	/* Xtensa */
+ 
+ /*
+  * Image Types

+ 1 - 0
rules.mk

@@ -40,6 +40,7 @@ ADK_TARGET_CFLAGS_OPT:=			$(strip $(subst ",, $(ADK_TARGET_CFLAGS_OPT)))
 ADK_TARGET_ABI_CFLAGS:=			$(strip $(subst ",, $(ADK_TARGET_ABI_CFLAGS)))
 ADK_TARGET_ABI:=			$(strip $(subst ",, $(ADK_TARGET_ABI)))
 ADK_TARGET_MIPS_ABI:=			$(strip $(subst ",, $(ADK_TARGET_MIPS_ABI)))
+ADK_TARGET_XTENSA:=			$(strip $(subst ",, $(ADK_TARGET_XTENSA)))
 ADK_TARGET_IP:=				$(strip $(subst ",, $(ADK_TARGET_IP)))
 ADK_TARGET_SUFFIX:=			$(strip $(subst ",, $(ADK_TARGET_SUFFIX)))
 ADK_TARGET_CMDLINE:=			$(strip $(subst ",, $(ADK_TARGET_CMDLINE)))

+ 19 - 0
target/config/Config.in.qemu

@@ -28,6 +28,25 @@ config ADK_TARGET_QEMU_MICROBLAZE_MODEL_ML605
 
 endchoice
 
+choice
+prompt "Qemu XTENSA Emulation"
+depends on ADK_TARGET_SYSTEM_QEMU_XTENSA
+
+config ADK_TARGET_QEMU_XTENSA_DC232B
+	boolean "dc232b"
+	select ADK_KERNEL_XTENSA_VARIANT_DC232B
+
+config ADK_TARGET_QEMU_XTENSA_DC233C
+	boolean "dc233c"
+	select ADK_KERNEL_XTENSA_VARIANT_DC233C
+
+endchoice
+
+config ADK_TARGET_XTENSA
+	string
+	default "dc233c" if ADK_TARGET_QEMU_XTENSA_DC233C
+	default "dc232b" if ADK_TARGET_QEMU_XTENSA_DC232B
+
 choice
 prompt "Qemu ARM Emulation"
 depends on ADK_TARGET_SYSTEM_QEMU_ARM

+ 2 - 0
target/config/Config.in.qemuopts

@@ -110,4 +110,6 @@ config ADK_TARGET_QEMU_WITH_AUDIO
 	boolean "enabled"
 
 endchoice
+
+
 endmenu

+ 4 - 10
target/config/Config.in.tools

@@ -31,6 +31,10 @@ config ADK_HOST_BUILD_LIBTOOL
 	boolean
 	default y
 
+config ADK_HOST_BUILD_U_BOOT
+	boolean
+	default y
+
 # always required, but can be provided by host
 config ADK_HOST_BUILD_BASH
 	boolean
@@ -143,16 +147,6 @@ config ADK_HOST_BUILD_QEMU
 	default n
 
 # optional, must be used from OpenADK
-config ADK_HOST_NEED_MKIMAGE
-	boolean
-	default n
-
-config ADK_HOST_BUILD_MKIMAGE
-	boolean
-	select ADK_PACKAGE_U_BOOT
-	default y if ADK_HOST_NEED_MKIMAGE
-	default n
-
 config ADK_HOST_NEED_MTD_UTILS
 	boolean
 	default n

+ 1 - 0
target/linux/Config.in

@@ -16,6 +16,7 @@ source target/linux/config/Config.in.crypto
 source target/linux/config/Config.in.bluetooth
 source target/linux/config/Config.in.misc
 source target/linux/config/Config.in.mips
+source target/linux/config/Config.in.xtensa
 source target/linux/config/Config.in.pm
 source target/linux/config/Config.in.kvm
 source target/linux/config/Config.in.virtio

+ 4 - 0
target/linux/config/Config.in.debug

@@ -22,6 +22,9 @@ config ADK_KERNEL_EARLY_PRINTK
 	boolean
 	default n
 
+config ADK_KERNEL_KALLSYMS_ALL
+	boolean
+
 config ADK_KERNEL_PRINTK
 	prompt "printk support (disable to save space and quieten bootup)"
 	boolean
@@ -128,6 +131,7 @@ config ADK_KERNEL_OPROFILE
 config ADK_KERNEL_KALLSYMS
 	prompt "Support for symbol names in OOPS"
 	boolean
+	select ADK_KERNEL_KALLSYMS_ALL
 	default n
 	help
 	 Load all symbols to the kernel.

+ 5 - 0
target/linux/config/Config.in.xtensa

@@ -0,0 +1,5 @@
+config ADK_KERNEL_XTENSA_VARIANT_DC233C
+	boolean
+
+config ADK_KERNEL_XTENSA_VARIANT_DC232B
+	boolean

+ 9 - 7
target/xtensa/Makefile

@@ -9,8 +9,14 @@ include $(ADK_TOPDIR)/mk/image.mk
 
 KERNEL:=$(LINUX_DIR)/arch/xtensa/boot/uImage
 
-QEMU_ARGS:=-M lx60 -cpu dc232b -monitor null
+QEMU_ARGS:=-M lx60 -monitor null
 QEMU_ARGS+=${ADK_QEMU_ARGS}
+ifeq ($(ADK_TARGET_QEMU_XTENSA_DC233C),y)
+QEMU_ARGS+=-cpu dc233c
+endif
+ifeq ($(ADK_TARGET_QEMU_XTENSA_DC232B),y)
+QEMU_ARGS+=-cpu dc232b
+endif
 
 # target helper text
 ifeq ($(ADK_TARGET_FS),archive)
@@ -47,12 +53,8 @@ ifeq ($(ADK_TARGET_QEMU),y)
 endif
 endif
 
-# image creation and kernel install
-kernel-strip:
-	$(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
-
-kernel-install: kernel-strip
-	@cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
+kernel-install:
+	@cp $(KERNEL) $(FW_DIR)/${TARGET_KERNEL}
 
 # filesystem specific targets
 ifeq ($(ADK_TARGET_FS),archive)

+ 0 - 1
target/xtensa/kernel/qemu-xtensa

@@ -1,5 +1,4 @@
 CONFIG_XTENSA=y
-CONFIG_XTENSA_VARIANT_DC232B=y
 CONFIG_XTENSA_PLATFORM_XTFPGA=y
 CONFIG_SERIAL_CONSOLE=y
 CONFIG_SERIAL_8250=y

BIN
target/xtensa/overlay/xtensa_dc233c.tar


+ 0 - 1
target/xtensa/systems/qemu-xtensa

@@ -4,7 +4,6 @@ config ADK_TARGET_SYSTEM_QEMU_XTENSA
 	select ADK_qemu_xtensa
 	select ADK_TARGET_QEMU
 	select ADK_TARGET_KERNEL_ZIMAGE
-	select ADK_HOST_NEED_MKIMAGE
 	help
 	 Support for Qemu Emulator XTENSA architecture.
 

+ 1 - 1
toolchain/binutils/Makefile

@@ -45,7 +45,7 @@ endif
 $(WRKBUILD)/.headers:
 $(WRKBUILD)/.configured:
 ifeq ($(ADK_LINUX_XTENSA),y)
-	tar xf $(ADK_TOPDIR)/target/xtensa/overlay/xtensa_dc232b.tar \
+	tar xf $(ADK_TOPDIR)/target/xtensa/overlay/xtensa_$(ADK_TARGET_XTENSA).tar \
 		--strip-components=1 -C $(WRKSRC) binutils
 endif
 	(cd $(WRKBUILD); \

+ 1 - 1
toolchain/gcc/Makefile

@@ -165,7 +165,7 @@ GCC_BUILD_DIR_FINAL:=	$(WRKBUILD)-final
 
 $(GCC_BUILD_DIR_MINIMAL)/.configured:
 ifeq ($(ADK_LINUX_XTENSA),y)
-	tar xf $(ADK_TOPDIR)/target/xtensa/overlay/xtensa_dc232b.tar \
+	tar xf $(ADK_TOPDIR)/target/xtensa/overlay/xtensa_$(ADK_TARGET_XTENSA).tar \
 		--strip-components=1 -C $(WRKSRC) gcc
 endif
 	mkdir -p $(GCC_BUILD_DIR_MINIMAL)