summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2019-10-09 17:13:05 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2019-10-09 17:13:31 +0200
commit8afcd1092f3dc822aa255685b98c815eb3642819 (patch)
tree410423cf73a0e254e024e9624859ba4b9eb80365
parent23650e556bd8eb37a0094ab7973603a1499ac8de (diff)
lm32: try to build kernel for qemu
-rw-r--r--mk/kernel-build.mk4
-rw-r--r--target/config/Config.in.compiler5
-rw-r--r--target/config/Config.in.kernelfmt3
-rw-r--r--target/linux/Config.in.kernelversion2
-rw-r--r--target/linux/config/Config.in.serial12
-rw-r--r--target/lm32/Makefile45
-rw-r--r--target/lm32/systems/qemu-lm321
-rw-r--r--toolchain/binutils/patches/2.32/lm32.patch25
-rw-r--r--toolchain/elf2flt/Makefile.inc6
-rw-r--r--toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch34
-rw-r--r--toolchain/elf2flt/patches/7e33f28df198c46764021ed14408bd262751e148/0001-lm32.patch (renamed from toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0001-lm32.patch)0
-rw-r--r--toolchain/elf2flt/patches/7e33f28df198c46764021ed14408bd262751e148/0002-sh2.patch (renamed from toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0002-sh2.patch)0
-rw-r--r--toolchain/gcc/Makefile.inc8
13 files changed, 104 insertions, 41 deletions
diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk
index bd6d511a1..e63802371 100644
--- a/mk/kernel-build.mk
+++ b/mk/kernel-build.mk
@@ -39,6 +39,10 @@ ifeq ($(ADK_TARGET_KERNEL_IMAGE),y)
KERNEL_FILE:=vmlinux
KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
endif
+ifeq ($(ADK_TARGET_KERNEL_SIMPLEIMAGE),y)
+KERNEL_FILE:=vmlinux.bin
+KERNEL_TARGET:=simpleImage.milkymist_one
+endif
ifneq ($(KERNEL_MODULES_USED),)
KERNEL_TARGET+=modules
diff --git a/target/config/Config.in.compiler b/target/config/Config.in.compiler
index bfd6138e1..0020e6b92 100644
--- a/target/config/Config.in.compiler
+++ b/target/config/Config.in.compiler
@@ -31,6 +31,7 @@ prompt "GCC version"
depends on ADK_BUILD_COMPILER_GCC
default ADK_TOOLCHAIN_GCC_ARC if ADK_TARGET_ARCH_ARC
default ADK_TOOLCHAIN_GCC_AVR32 if ADK_TARGET_ARCH_AVR32
+default ADK_TOOLCHAIN_GCC_LM32 if ADK_TARGET_ARCH_LM32
default ADK_TOOLCHAIN_GCC_METAG if ADK_TARGET_ARCH_METAG
default ADK_TOOLCHAIN_GCC_NDS32 if ADK_TARGET_ARCH_NDS32
default ADK_TOOLCHAIN_GCC_7 if ADK_TARGET_CPU_ARM_ARM11MPCORE
@@ -84,6 +85,10 @@ config ADK_TOOLCHAIN_GCC_METAG
bool "4.2.4-metag"
depends on ADK_TARGET_ARCH_METAG
+config ADK_TOOLCHAIN_GCC_LM32
+ bool "4.5.2"
+ depends on ADK_TARGET_ARCH_LM32
+
config ADK_TOOLCHAIN_GCC_NDS32
bool "nds32-6.3.0-open"
depends on ADK_TARGET_ARCH_NDS32
diff --git a/target/config/Config.in.kernelfmt b/target/config/Config.in.kernelfmt
index e2fc675c3..f1d503e23 100644
--- a/target/config/Config.in.kernelfmt
+++ b/target/config/Config.in.kernelfmt
@@ -40,6 +40,9 @@ config ADK_TARGET_KERNEL_VMLINUX_SREC
config ADK_TARGET_KERNEL_XIPIMAGE
bool
+config ADK_TARGET_KERNEL_SIMPLEIMAGE
+ bool
+
config ADK_TARGET_KERNEL
string
default "uImage" if ADK_TARGET_KERNEL_UIMAGE
diff --git a/target/linux/Config.in.kernelversion b/target/linux/Config.in.kernelversion
index 50805862f..6bb812b40 100644
--- a/target/linux/Config.in.kernelversion
+++ b/target/linux/Config.in.kernelversion
@@ -27,7 +27,6 @@ default ADK_TARGET_LINUX_KERNEL_VERSION_4_19
config ADK_TARGET_LINUX_KERNEL_VERSION_GIT
bool "git"
- select ADK_TARGET_LINUX_KERNEL_NEW
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_BFIN
depends on !ADK_TARGET_ARCH_FRV
@@ -256,6 +255,7 @@ config ADK_TARGET_LINUX_KERNEL_GIT_VER
default "4.4.52" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
default "2.6.33" if ADK_TARGET_SYSTEM_KINETIS_K70
default "3.14.79" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
+ default "3.1.0" if ADK_TARGET_SYSTEM_QEMU_LM32
config ADK_TARGET_LINUX_KERNEL_GIT_TYPE
string
diff --git a/target/linux/config/Config.in.serial b/target/linux/config/Config.in.serial
index d4273607f..c6fa0c6e1 100644
--- a/target/linux/config/Config.in.serial
+++ b/target/linux/config/Config.in.serial
@@ -76,6 +76,9 @@ config ADK_LINUX_KERNEL_SERIAL_BFIN_UART1
config ADK_LINUX_KERNEL_SERIAL_8250_INGENIC
bool
+config ADK_LINUX_KERNEL_SERIAL_MILKYMIST_CONSOLE
+ bool
+
config ADK_LINUX_KERNEL_SERIAL_BFIN
bool "BFIN serial driver"
select ADK_LINUX_KERNEL_SERIAL_BFIN_CONSOLE
@@ -328,4 +331,13 @@ config ADK_LINUX_KERNEL_BOARD_GRASSHOPPER_USART0
help
Enable second USART on Grasshoper boards
+config ADK_LINUX_KERNEL_SERIAL_MILKYMIST
+ bool "Enable UART0 on Milkymist"
+ select ADK_LINUX_KERNEL_SERIAL_MILKYMIST_CONSOLE
+ depends on ADK_TARGET_SYSTEM_QEMU_LM32
+ default y if ADK_TARGET_SYSTEM_QEMU_LM32
+ default n
+ help
+ Enable second USART on Grasshoper boards
+
endmenu
diff --git a/target/lm32/Makefile b/target/lm32/Makefile
index ba872b7d7..d79009445 100644
--- a/target/lm32/Makefile
+++ b/target/lm32/Makefile
@@ -5,6 +5,51 @@ include $(ADK_TOPDIR)/rules.mk
include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
+KERNEL:=$(LINUX_DIR)/arch/lm32/boot/simpleImage.milkymist_one
+
+QEMU_ARGS:=-M milkymist
+QEMU_ARGS+=-nographic -nodefaults -monitor pty -serial stdio -append "console=ttyS0"
+#
+# target helper text
+ifeq ($(ADK_TARGET_FS),archive)
+targethelp:
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "Use following command to create a QEMU Image:"
+ @echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+ @echo "Start qemu with following options:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfs)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) -initrd ${FW_DIR}/${INITRAMFS}'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfsarchive)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+endif
+ifeq ($(ADK_TARGET_FS),initramfspiggyback)
+targethelp:
+ @echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
+endif
+endif
+
+kernel-strip:
+
+kernel-install: kernel-strip
+ @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
+
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),initramfs)
imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
diff --git a/target/lm32/systems/qemu-lm32 b/target/lm32/systems/qemu-lm32
index f729902d8..901e1665f 100644
--- a/target/lm32/systems/qemu-lm32
+++ b/target/lm32/systems/qemu-lm32
@@ -3,6 +3,7 @@ config ADK_TARGET_SYSTEM_QEMU_LM32
select ADK_TARGET_QEMU
select ADK_TARGET_CPU_LM32
select ADK_TARGET_UCLINUX
+ select ADK_TARGET_KERNEL_SIMPLEIMAGE
help
Support for Qemu Emulator LM32 architecture.
diff --git a/toolchain/binutils/patches/2.32/lm32.patch b/toolchain/binutils/patches/2.32/lm32.patch
new file mode 100644
index 000000000..176f09982
--- /dev/null
+++ b/toolchain/binutils/patches/2.32/lm32.patch
@@ -0,0 +1,25 @@
+diff -Nur binutils-2.32.orig/bfd/config.bfd binutils-2.32/bfd/config.bfd
+--- binutils-2.32.orig/bfd/config.bfd 2019-01-19 17:01:32.000000000 +0100
++++ binutils-2.32/bfd/config.bfd 2019-10-08 18:05:48.695171206 +0200
+@@ -787,7 +787,7 @@
+ ;;
+
+ lm32-*-*linux*)
+- targ_defvec=lm32_elf32_fdpic_vec
++ targ_defvec=lm32_elf32_vec
+ targ_selvecs=lm32_elf32_vec
+ ;;
+
+diff -Nur binutils-2.32.orig/ld/configure.tgt binutils-2.32/ld/configure.tgt
+--- binutils-2.32.orig/ld/configure.tgt 2019-01-19 17:01:33.000000000 +0100
++++ binutils-2.32/ld/configure.tgt 2019-10-08 18:04:50.170788572 +0200
+@@ -388,7 +388,8 @@
+ ;;
+ iq2000-*-elf) targ_emul=elf32iq2000 ; targ_extra_emuls="elf32iq10"
+ ;;
+-lm32-*-*linux*) targ_emul=elf32lm32fd ;;
++lm32-*-*linux*) targ_emul=elf32lm32
++ ;;
+ lm32-*-*) targ_emul=elf32lm32 ; targ_extra_emuls="elf32lm32fd"
+ ;;
+ m32c-*-elf | m32c-*-rtems*)
diff --git a/toolchain/elf2flt/Makefile.inc b/toolchain/elf2flt/Makefile.inc
index ca12e5ff7..30a3cebfe 100644
--- a/toolchain/elf2flt/Makefile.inc
+++ b/toolchain/elf2flt/Makefile.inc
@@ -12,9 +12,3 @@ PKG_GIT:= branch
PKG_RELEASE:= 1
PKG_SITES:= git://git.osdn.net/gitroot/uclinux-h8/elf2flt.git
endif
-ifeq ($(ADK_TARGET_ARCH_LM32),y)
-PKG_VERSION:= 3051fec89bbd30de6f952dc3100712feff3ca076
-PKG_GIT:= hash
-PKG_RELEASE:= 1
-PKG_SITES:= https://github.com/m-labs/elf2flt-lm32.git
-endif
diff --git a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch b/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch
deleted file mode 100644
index 825582550..000000000
--- a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From faf1a1646093fbc5ed279bae1c7250c7dfea56f8 Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@smile.fr>
-Date: Tue, 17 Jul 2018 16:36:16 +0200
-Subject: [PATCH] Makefile: fix build with Binutils 2.31
-
-Binutils added diagnostics.h to bfd.h [1], so elf2flt must create a symlink
-for this header.
-
-Fixes:
-https://gitlab.com/free-electrons/toolchains-builder/-/jobs/82284139
-
-[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=95da9854466ada2572b42f5528711a06a2d42db1
-
-Signed-off-by: Romain Naour <romain.naour@smile.fr>
----
- Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index cfad06c..164e306 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -127,7 +127,7 @@ bfd-headers/.stamp:
- rm -rf bfd-headers
- mkdir bfd-headers
- ln -sf $(BFD_INCLUDE_DIR)/bfd.h bfd-headers/bfd.h
-- for f in ansidecl filenames hashtab libiberty symcat; do \
-+ for f in ansidecl diagnostics filenames hashtab libiberty symcat; do \
- ln -sf $(BINUTILS_INCLUDE_DIR)/$$f.h bfd-headers/$$f.h || exit 1; \
- done
- ln -sf $(BINUTILS_INCLUDE_DIR)/elf bfd-headers/elf
---
-2.7.4
-
diff --git a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0001-lm32.patch b/toolchain/elf2flt/patches/7e33f28df198c46764021ed14408bd262751e148/0001-lm32.patch
index 44757171b..44757171b 100644
--- a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0001-lm32.patch
+++ b/toolchain/elf2flt/patches/7e33f28df198c46764021ed14408bd262751e148/0001-lm32.patch
diff --git a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0002-sh2.patch b/toolchain/elf2flt/patches/7e33f28df198c46764021ed14408bd262751e148/0002-sh2.patch
index 59e263bc0..59e263bc0 100644
--- a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0002-sh2.patch
+++ b/toolchain/elf2flt/patches/7e33f28df198c46764021ed14408bd262751e148/0002-sh2.patch
diff --git a/toolchain/gcc/Makefile.inc b/toolchain/gcc/Makefile.inc
index 409fd2daa..6b626715f 100644
--- a/toolchain/gcc/Makefile.inc
+++ b/toolchain/gcc/Makefile.inc
@@ -49,6 +49,14 @@ PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 19
endif
+ifeq ($(ADK_TOOLCHAIN_GCC_LM32),y)
+PKG_VERSION:= 4.5.2
+PKG_HASH:= 07b880faf29f3f9d9c0953717002ac29f5d061427797d2487a7c9c169e6395b3
+PKG_SITES:= https://ftp.gnu.org/gnu/gcc/gcc-$(PKG_VERSION)/
+PKG_RELEASE:= 1
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+LIBSTDCXXVER:= 19
+endif
ifeq ($(ADK_TOOLCHAIN_GCC_NDS32),y)
PKG_VERSION:= nds32-6.3.0-open
PKG_HASH:= b23ce96df25dfdd5526496a3c2cd7ee1da4ed4094971a2e0c47c73ad7e1ad30a