From ddb5d9774a5341b85986217939da0f8a35513024 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Tue, 12 Aug 2014 10:50:18 +0200 Subject: add support for xtensa dc233c variant. use uImage, which works with a patched Qemu. Thanks to Max Filippov for fixes and ideas. --- package/u-boot/patches/patch-common_image_c | 10 ++++++++++ package/u-boot/patches/patch-include_image_h | 10 ++++++++++ rules.mk | 1 + target/config/Config.in.qemu | 19 +++++++++++++++++++ target/config/Config.in.qemuopts | 2 ++ target/config/Config.in.tools | 14 ++++---------- target/linux/Config.in | 1 + target/linux/config/Config.in.debug | 4 ++++ target/linux/config/Config.in.xtensa | 5 +++++ target/xtensa/Makefile | 16 +++++++++------- target/xtensa/kernel/qemu-xtensa | 1 - target/xtensa/overlay/xtensa_dc233c.tar | Bin 0 -> 808960 bytes target/xtensa/systems/qemu-xtensa | 1 - toolchain/binutils/Makefile | 2 +- toolchain/gcc/Makefile | 2 +- 15 files changed, 67 insertions(+), 21 deletions(-) create mode 100644 package/u-boot/patches/patch-common_image_c create mode 100644 package/u-boot/patches/patch-include_image_h create mode 100644 target/linux/config/Config.in.xtensa create mode 100644 target/xtensa/overlay/xtensa_dc233c.tar diff --git a/package/u-boot/patches/patch-common_image_c b/package/u-boot/patches/patch-common_image_c new file mode 100644 index 000000000..6dc82212e --- /dev/null +++ b/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, "", "", }, + }; + diff --git a/package/u-boot/patches/patch-include_image_h b/package/u-boot/patches/patch-include_image_h new file mode 100644 index 000000000..76b12b1ea --- /dev/null +++ b/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 diff --git a/rules.mk b/rules.mk index 3af0be158..fda938f77 100644 --- a/rules.mk +++ b/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))) diff --git a/target/config/Config.in.qemu b/target/config/Config.in.qemu index 49dfee734..20c2814b0 100644 --- a/target/config/Config.in.qemu +++ b/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 diff --git a/target/config/Config.in.qemuopts b/target/config/Config.in.qemuopts index 0ca3ec842..a302bedab 100644 --- a/target/config/Config.in.qemuopts +++ b/target/config/Config.in.qemuopts @@ -110,4 +110,6 @@ config ADK_TARGET_QEMU_WITH_AUDIO boolean "enabled" endchoice + + endmenu diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools index 3ef48ab3e..e1f65e5d2 100644 --- a/target/config/Config.in.tools +++ b/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 diff --git a/target/linux/Config.in b/target/linux/Config.in index 9d24c537d..b4606ead8 100644 --- a/target/linux/Config.in +++ b/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 diff --git a/target/linux/config/Config.in.debug b/target/linux/config/Config.in.debug index 38b1f20f1..e3965123c 100644 --- a/target/linux/config/Config.in.debug +++ b/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. diff --git a/target/linux/config/Config.in.xtensa b/target/linux/config/Config.in.xtensa new file mode 100644 index 000000000..1dc2ed7b0 --- /dev/null +++ b/target/linux/config/Config.in.xtensa @@ -0,0 +1,5 @@ +config ADK_KERNEL_XTENSA_VARIANT_DC233C + boolean + +config ADK_KERNEL_XTENSA_VARIANT_DC232B + boolean diff --git a/target/xtensa/Makefile b/target/xtensa/Makefile index 42ab2ab9a..3760ebff4 100644 --- a/target/xtensa/Makefile +++ b/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) diff --git a/target/xtensa/kernel/qemu-xtensa b/target/xtensa/kernel/qemu-xtensa index a8a980be1..c7a401380 100644 --- a/target/xtensa/kernel/qemu-xtensa +++ b/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 diff --git a/target/xtensa/overlay/xtensa_dc233c.tar b/target/xtensa/overlay/xtensa_dc233c.tar new file mode 100644 index 000000000..56ccc5b31 Binary files /dev/null and b/target/xtensa/overlay/xtensa_dc233c.tar differ diff --git a/target/xtensa/systems/qemu-xtensa b/target/xtensa/systems/qemu-xtensa index b40750069..d7b3501d3 100644 --- a/target/xtensa/systems/qemu-xtensa +++ b/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. diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile index 9dae9defa..dbf21f3b3 100644 --- a/toolchain/binutils/Makefile +++ b/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); \ diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index 598f67b7d..25c396e1b 100644 --- a/toolchain/gcc/Makefile +++ b/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) -- cgit v1.2.3