summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2017-01-19 06:57:39 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2017-01-19 06:57:39 +0100
commit7d058c4a562635ab8ffa2d79d2795fe225912c38 (patch)
tree9d68ff263ce1f1288da8ca50ffb35cfddfb1f5d4
parent7571ebeb894381a3f2e95b505aeec66929e89088 (diff)
Add experimental support for STM32F769
Add single/double precision support for Cortex-M7. Mostly from Alex, some minor cleanup and kernel mini config from me. Signed-off-by: Alex Brand <tecnologic86@gmail.com>
-rw-r--r--package/afboot-stm32/Makefile9
-rw-r--r--package/afboot-stm32/patches/patch-Makefile6
-rw-r--r--target/arm/kernel/st-stm32f76911
-rw-r--r--target/arm/systems/st-stm32f76914
-rw-r--r--target/config/Config.in.cpu1
-rw-r--r--target/config/Config.in.float12
-rw-r--r--target/config/Config.in.fpu3
-rw-r--r--toolchain/uclibc-ng/Makefile12
8 files changed, 60 insertions, 8 deletions
diff --git a/package/afboot-stm32/Makefile b/package/afboot-stm32/Makefile
index 3cd774eb0..127b9c21a 100644
--- a/package/afboot-stm32/Makefile
+++ b/package/afboot-stm32/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= afboot-stm32
-PKG_VERSION:= f7f109f0c6f65534ae50f9243a7356c5002a9b87
+PKG_VERSION:= 8e9e03159ce47629d40dbed4c50c1879b69bb197
PKG_RELEASE:= 1
PKG_DESCR:= bootloader for stm32 devices
PKG_SECTION:= base/boot
PKG_SITES:= https://github.com/mcoquelin-stm32/afboot-stm32.git
-PKG_SYSTEM_DEPENDS:= st-stm32f429
+PKG_SYSTEM_DEPENDS:= st-stm32f429 st-stm32f769
include $(ADK_TOPDIR)/mk/package.mk
@@ -20,6 +20,11 @@ CONFIG_STYLE:= manual
INSTALL_STYLE:= manual
afboot-stm32-install:
+ifeq ($(ADK_TARGET_SYSTEM_ST_STM32F429),y)
$(CP) $(WRKBUILD)/stm32f429i-disco.bin $(FW_DIR)
+endif
+ifeq ($(ADK_TARGET_SYSTEM_ST_STM32F769),y)
+ $(CP) $(WRKBUILD)/stm32746g-eval.bin $(FW_DIR)
+endif
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/afboot-stm32/patches/patch-Makefile b/package/afboot-stm32/patches/patch-Makefile
index 98ea48693..4fbb034c6 100644
--- a/package/afboot-stm32/patches/patch-Makefile
+++ b/package/afboot-stm32/patches/patch-Makefile
@@ -1,5 +1,5 @@
---- afboot-stm32-f7f109f0c6f65534ae50f9243a7356c5002a9b87.orig/Makefile 2016-04-24 20:35:00.000000000 +0200
-+++ afboot-stm32-f7f109f0c6f65534ae50f9243a7356c5002a9b87/Makefile 2016-04-24 20:36:36.000000000 +0200
+--- afboot-stm32-8e9e03159ce47629d40dbed4c50c1879b69bb197.orig/Makefile 2017-01-19 06:54:21.000000000 +0100
++++ afboot-stm32-8e9e03159ce47629d40dbed4c50c1879b69bb197/Makefile 2017-01-19 06:55:03.370200767 +0100
@@ -1,14 +1,15 @@
CROSS_COMPILE ?= arm-none-eabi-
@@ -17,7 +17,7 @@
-CFLAGS := -mthumb -mcpu=cortex-m4
+CFLAGS ?=
-+CFLAGS += -mthumb -mcpu=cortex-m4
++CFLAGS += -mthumb
CFLAGS += -ffunction-sections -fdata-sections
CFLAGS += -Os -std=gnu99 -Wall
LINKERFLAGS := -nostartfiles --gc-sections
diff --git a/target/arm/kernel/st-stm32f769 b/target/arm/kernel/st-stm32f769
new file mode 100644
index 000000000..c56087a1b
--- /dev/null
+++ b/target/arm/kernel/st-stm32f769
@@ -0,0 +1,11 @@
+CONFIG_ARM_SINGLE_ARMV7M=y
+CONFIG_ARCH_STM32=y
+CONFIG_SET_MEM_PARAM=y
+CONFIG_DRAM_BASE=0x90000000
+CONFIG_FLASH_MEM_BASE=0x08000000
+CONFIG_FLASH_SIZE=0x00200000
+CONFIG_XIP_KERNEL=y
+CONFIG_XIP_PHYS_ADDR=0x08008000
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_SERIAL_STM32=y
+CONFIG_SERIAL_STM32_CONSOLE=y
diff --git a/target/arm/systems/st-stm32f769 b/target/arm/systems/st-stm32f769
new file mode 100644
index 000000000..2227e16db
--- /dev/null
+++ b/target/arm/systems/st-stm32f769
@@ -0,0 +1,14 @@
+config ADK_TARGET_SYSTEM_ST_STM32F769
+ bool "STMicroelectronics STM32F769"
+ depends on ADK_EXPERIMENTAL
+ depends on ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_ARM_CORTEX_M7
+ select ADK_TARGET_HARD_FLOAT_DP
+ select ADK_TARGET_ARCH_ARM_WITH_THUMB
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_UCLINUX
+ select ADK_TARGET_KERNEL_XIPIMAGE
+ select ADK_PACKAGE_AFBOOT_STM32
+ help
+ STMicroelectronics STM32F769
+
diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu
index b270ebebc..7d24b3d79 100644
--- a/target/config/Config.in.cpu
+++ b/target/config/Config.in.cpu
@@ -1959,6 +1959,7 @@ config ADK_TARGET_CPU_TYPE
default "cortex_a17" if ADK_TARGET_CPU_ARM_CORTEX_A17
default "cortex_m3" if ADK_TARGET_CPU_ARM_CORTEX_M3
default "cortex_m4" if ADK_TARGET_CPU_ARM_CORTEX_M4
+ default "cortex_m7" if ADK_TARGET_CPU_ARM_CORTEX_M7
default "arm1176jzf_s" if ADK_TARGET_CPU_ARM_ARM1176JZF_S
default "arm926ej_s" if ADK_TARGET_CPU_ARM_ARM926EJ_S
default "mpcore" if ADK_TARGET_CPU_ARM_ARM11MPCORE
diff --git a/target/config/Config.in.float b/target/config/Config.in.float
index 693010633..8a17873c4 100644
--- a/target/config/Config.in.float
+++ b/target/config/Config.in.float
@@ -11,7 +11,15 @@ depends on ADK_TARGET_ARCH_ARM || \
config ADK_TARGET_HARD_FLOAT
bool "hard-float"
- depends on ADK_TARGET_CPU_WITH_FPU
+ depends on ADK_TARGET_CPU_WITH_FPU && !ADK_TARGET_CPU_WITH_FPU_FPV5
+
+config ADK_TARGET_HARD_FLOAT_SP
+ bool "hard-float-single-precision"
+ depends on ADK_TARGET_CPU_WITH_FPU && ADK_TARGET_CPU_WITH_FPU_FPV5
+
+config ADK_TARGET_HARD_FLOAT_DP
+ bool "hard-float-double-precision"
+ depends on ADK_TARGET_CPU_WITH_FPU && ADK_TARGET_CPU_WITH_FPU_FPV5
config ADK_TARGET_SOFT_FLOAT
bool "soft-float"
@@ -26,6 +34,6 @@ config ADK_TARGET_FLOAT
string
depends on !ADK_TARGET_ARCH_M68K \
&& !ADK_TARGET_ARCH_NIOS2
- default "hard" if ADK_TARGET_HARD_FLOAT
+ default "hard" if ADK_TARGET_HARD_FLOAT || ADK_TARGET_HARD_FLOAT_SP || ADK_TARGET_HARD_FLOAT_DP
default "soft" if ADK_TARGET_SOFT_FLOAT
default "softfp" if ADK_TARGET_SOFTFP_FLOAT
diff --git a/target/config/Config.in.fpu b/target/config/Config.in.fpu
index 9b6c396f7..1ea04be3e 100644
--- a/target/config/Config.in.fpu
+++ b/target/config/Config.in.fpu
@@ -18,7 +18,8 @@ config ADK_TARGET_FPU
default "vfpv3-fp16" if ADK_TARGET_CPU_ARM_CORTEX_A9 && !ADK_TARGET_ARCH_ARM_WITH_NEON
default "vfpv4" if ADK_TARGET_CPU_ARM_CORTEX_A15 && !ADK_TARGET_ARCH_ARM_WITH_NEON
default "fpv4-sp-d16" if ADK_TARGET_CPU_ARM_CORTEX_M4
- default "fpv5-sp-d16" if ADK_TARGET_CPU_ARM_CORTEX_M7
+ default "fpv5-sp-d16" if ADK_TARGET_CPU_ARM_CORTEX_M7 && ADK_TARGET_HARD_FLOAT_SP
+ default "fpv5-d16" if ADK_TARGET_CPU_ARM_CORTEX_M7 && ADK_TARGET_HARD_FLOAT_DP
default "neon-fp16" if ADK_TARGET_CPU_ARM_CORTEX_A5 && ADK_TARGET_ARCH_ARM_WITH_NEON
default "neon-vfpv4" if ADK_TARGET_CPU_ARM_CORTEX_A7 && ADK_TARGET_ARCH_ARM_WITH_NEON
default "neon" if ADK_TARGET_CPU_ARM_CORTEX_A8 && ADK_TARGET_ARCH_ARM_WITH_NEON
diff --git a/toolchain/uclibc-ng/Makefile b/toolchain/uclibc-ng/Makefile
index f21e8802f..9c8f3c736 100644
--- a/toolchain/uclibc-ng/Makefile
+++ b/toolchain/uclibc-ng/Makefile
@@ -18,9 +18,13 @@ TARGET_CFLAGS:= $(filter-out -ffast-math,$(TARGET_CFLAGS))
ifeq ($(ADK_BUILD_COMPILER_GCC),y)
ifeq ($(ADK_TARGET_HARD_FLOAT),y)
+ifeq ($(ADK_TARGET_HARD_FLOAT_SP),y)
+ifeq ($(ADK_TARGET_HARD_FLOAT_DP),y)
ifeq ($(ADK_TARGET_ARCH_ARM),y)
TARGET_CFLAGS+= -Wa,-mfloat-abi=hard
endif
+endif
+endif
ifeq ($(ADK_TARGET_ARCH_MIPS),y)
TARGET_CFLAGS+= -Wa,-mhard-float
endif
@@ -63,6 +67,14 @@ ifeq ($(ADK_TARGET_HARD_FLOAT),y)
$(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config
endif
+ifeq ($(ADK_TARGET_HARD_FLOAT_SP),y)
+ $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
+ifeq ($(ADK_TARGET_HARD_FLOAT_DP),y)
+ $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/\1=y/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config