From ae895a00ea9e279355d097e337f7d5c5129e99be Mon Sep 17 00:00:00 2001 From: Christian Taedcke Date: Wed, 5 Apr 2017 18:56:59 +0200 Subject: [PATCH] boards: arm: Add support for Silabs EFM32WG-STK3800 The EFM32 Wonder Gecko Starter Kit contains sensors and peripherals demonstarting the usage of the EFM32WG MCU family. This patch add basic support for this board. Signed-off-by: Christian Taedcke Signed-off-by: Kumar Gala --- boards/arm/efm32wg_stk3800/Kconfig | 19 ++ boards/arm/efm32wg_stk3800/Kconfig.board | 11 ++ boards/arm/efm32wg_stk3800/Kconfig.defconfig | 51 +++++ boards/arm/efm32wg_stk3800/Makefile | 10 + boards/arm/efm32wg_stk3800/board.c | 33 ++++ boards/arm/efm32wg_stk3800/board.h | 39 ++++ .../efm32wg_stk3800/doc/efm32wg_stk3800.jpg | Bin 0 -> 18157 bytes .../efm32wg_stk3800/doc/efm32wg_stk3800.rst | 174 ++++++++++++++++++ .../arm/efm32wg_stk3800/efm32wg_stk3800.yaml | 13 ++ .../efm32wg_stk3800/efm32wg_stk3800_defconfig | 11 ++ dts/arm/Makefile | 1 + dts/arm/efm32wg_stk3800.dts | 24 +++ dts/arm/efm32wg_stk3800.fixup | 12 ++ 13 files changed, 398 insertions(+) create mode 100644 boards/arm/efm32wg_stk3800/Kconfig create mode 100644 boards/arm/efm32wg_stk3800/Kconfig.board create mode 100644 boards/arm/efm32wg_stk3800/Kconfig.defconfig create mode 100644 boards/arm/efm32wg_stk3800/Makefile create mode 100644 boards/arm/efm32wg_stk3800/board.c create mode 100644 boards/arm/efm32wg_stk3800/board.h create mode 100644 boards/arm/efm32wg_stk3800/doc/efm32wg_stk3800.jpg create mode 100644 boards/arm/efm32wg_stk3800/doc/efm32wg_stk3800.rst create mode 100644 boards/arm/efm32wg_stk3800/efm32wg_stk3800.yaml create mode 100644 boards/arm/efm32wg_stk3800/efm32wg_stk3800_defconfig create mode 100644 dts/arm/efm32wg_stk3800.dts create mode 100644 dts/arm/efm32wg_stk3800.fixup diff --git a/boards/arm/efm32wg_stk3800/Kconfig b/boards/arm/efm32wg_stk3800/Kconfig new file mode 100644 index 00000000000..cf7971f5f84 --- /dev/null +++ b/boards/arm/efm32wg_stk3800/Kconfig @@ -0,0 +1,19 @@ +# Kconfig - EFM32WG STK3800 board configuration +# +# Copyright (c) 2017 Christian Taedcke +# +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_EFM32WG_STK3800 + +config BOARD_INIT_PRIORITY + int + + # omit prompt to signify a "hidden" option + default KERNEL_INIT_PRIORITY_DEFAULT + depends on GPIO + help + Board initialization priority. This must be bigger than + GPIO_GECKO_COMMON_INIT_PRIORITY. + +endif # BOARD_EFM32WG_STK3800 diff --git a/boards/arm/efm32wg_stk3800/Kconfig.board b/boards/arm/efm32wg_stk3800/Kconfig.board new file mode 100644 index 00000000000..82d8192abcd --- /dev/null +++ b/boards/arm/efm32wg_stk3800/Kconfig.board @@ -0,0 +1,11 @@ +# Kconfig - EFM32WG STK3800 board +# +# Copyright (c) 2017, Christian Taedcke +# +# SPDX-License-Identifier: Apache-2.0 +# + +config BOARD_EFM32WG_STK3800 + bool "SiLabs EFM32WG-STK3800 (Wonder Gecko)" + depends on SOC_SERIES_EFM32WG + select SOC_PART_NUMBER_EFM32WG990F256 diff --git a/boards/arm/efm32wg_stk3800/Kconfig.defconfig b/boards/arm/efm32wg_stk3800/Kconfig.defconfig new file mode 100644 index 00000000000..25a776317fa --- /dev/null +++ b/boards/arm/efm32wg_stk3800/Kconfig.defconfig @@ -0,0 +1,51 @@ +# Kconfig - EFM32WG STK3800 board +# +# Copyright (c) 2017, Christian Taedcke +# +# SPDX-License-Identifier: Apache-2.0 +# + +if BOARD_EFM32WG_STK3800 + +config BOARD + default efm32wg_stk3800 + +config CMU_HFXO_FREQ + default 48000000 + +config CMU_LFXO_FREQ + default 32768 + +if GPIO_GECKO + +config GPIO_GECKO_PORTA + def_bool y + +config GPIO_GECKO_PORTB + def_bool y + +config GPIO_GECKO_PORTC + def_bool n + +config GPIO_GECKO_PORTD + def_bool n + +config GPIO_GECKO_PORTE + def_bool y + +config GPIO_GECKO_PORTF + def_bool y + +endif # GPIO_GECKO + +if UART_GECKO + +config UART_GECKO_0 + def_bool y + +config UART_GECKO_0_GPIO_LOC + default 1 + +endif # UART_GECKO + +endif # BOARD_EFM32WG_STK3800 diff --git a/boards/arm/efm32wg_stk3800/Makefile b/boards/arm/efm32wg_stk3800/Makefile new file mode 100644 index 00000000000..6ece6a9a343 --- /dev/null +++ b/boards/arm/efm32wg_stk3800/Makefile @@ -0,0 +1,10 @@ +# Makefile - EFM32WG-STK3800 board +# +# Copyright (c) 2017, Christian Taedcke +# +# SPDX-License-Identifier: Apache-2.0 +# + +ccflags-y +=-I$(srctree)/drivers + +obj-$(CONFIG_UART_GECKO) += board.o diff --git a/boards/arm/efm32wg_stk3800/board.c b/boards/arm/efm32wg_stk3800/board.c new file mode 100644 index 00000000000..d6df9664b9e --- /dev/null +++ b/boards/arm/efm32wg_stk3800/board.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017 Christian Taedcke + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +static int efm32wg_stk3800_init(struct device *dev) +{ + struct device *bce_dev; /* Board Controller Enable Gpio Device */ + + ARG_UNUSED(dev); + + /* Enable the board controller to be able to use the serial port */ + bce_dev = device_get_binding(BC_ENABLE_GPIO_NAME); + + if (!bce_dev) { + printk("Board controller gpio port was not found!\n"); + return -ENODEV; + } + + gpio_pin_configure(bce_dev, BC_ENABLE_GPIO_PIN, GPIO_DIR_OUT); + gpio_pin_write(bce_dev, BC_ENABLE_GPIO_PIN, 1); + + return 0; +} + +/* needs to be done after GPIO driver init */ +SYS_INIT(efm32wg_stk3800_init, PRE_KERNEL_1, CONFIG_BOARD_INIT_PRIORITY); diff --git a/boards/arm/efm32wg_stk3800/board.h b/boards/arm/efm32wg_stk3800/board.h new file mode 100644 index 00000000000..4aeb835e15e --- /dev/null +++ b/boards/arm/efm32wg_stk3800/board.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2017 Christian Taedcke + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __INC_BOARD_H +#define __INC_BOARD_H + +#include + +/* Push button PB0 */ +#define PB0_GPIO_NAME CONFIG_GPIO_GECKO_PORTB_NAME +#define PB0_GPIO_PIN 9 + +/* Push button PB1 */ +#define PB1_GPIO_NAME CONFIG_GPIO_GECKO_PORTB_NAME +#define PB1_GPIO_PIN 10 + +/* LED 0 */ +#define LED0_GPIO_NAME CONFIG_GPIO_GECKO_PORTE_NAME +#define LED0_GPIO_PORT LED0_GPIO_NAME +#define LED0_GPIO_PIN 2 + +/* LED 1 */ +#define LED1_GPIO_NAME CONFIG_GPIO_GECKO_PORTE_NAME +#define LED1_GPIO_PIN 3 + +/* Push button switch 0. There is no physical switch on the board with this + * name, so create an alias to SW3 to make the basic button sample work. + */ +#define SW0_GPIO_NAME PB0_GPIO_NAME +#define SW0_GPIO_PIN PB0_GPIO_PIN + +/* This pin is used to enable the serial port using the board controller */ +#define BC_ENABLE_GPIO_NAME CONFIG_GPIO_GECKO_PORTF_NAME +#define BC_ENABLE_GPIO_PIN 7 + +#endif /* __INC_BOARD_H */ diff --git a/boards/arm/efm32wg_stk3800/doc/efm32wg_stk3800.jpg b/boards/arm/efm32wg_stk3800/doc/efm32wg_stk3800.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ec398a1e2392b242ffaa2d7662b1af1d38da321 GIT binary patch literal 18157 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 f-|U|{V-FZWrP|CL@-p~;aZ&ygL`B|R?Z? + $ . zephyr-env.sh + $ cd samples/hello_world/ + $ make BOARD=efm32wg_stk3800 + +Connect the EFM32WG-STK3800 to your host computer using the USB port and you +should see a USB connection which exposes a Mass Storage (STK3800) and a +USB Serial Port. Copy the generated zephyr.bin in the STK3800 drive. + +Open a serial terminal (minicom, putty, etc.) with the following settings: + +- Speed: 115200 +- Data: 8 bits +- Parity: None +- Stop bits: 1 + +Reset the board and you should be able to see on the corresponding Serial Port +the following message: + +.. code-block:: console + + Hello World! arm + + +.. _EFM32WG-STK3800 Website: + http://www.silabs.com/products/development-tools/mcu/32-bit/efm32-wonder-gecko-starter-kit + +.. _EFM32WG-STK3800 User Guide: + http://www.silabs.com/documents/public/user-guides/efm32wg-stk3800-ug.pdf + +.. _EFM32WG-STK3800 Schematics: + http://www.silabs.com/documents/public/schematic-files/BRD2400A_A00.pdf + +.. _EFM32WG Website: + http://www.silabs.com/products/mcu/32-bit/efm32-wonder-gecko + +.. _EFM32WG Datasheet: + http://www.silabs.com/documents/public/data-sheets/EFM32WG990.pdf + +.. _EFM32WG Reference Manual: + http://www.silabs.com/documents/public/reference-manuals/EFM32WG-RM.pdf + +.. _J-Link: + https://www.segger.com/jlink-debug-probes.html + +.. _J-Link-Downloads: + https://www.segger.com/downloads/jlink diff --git a/boards/arm/efm32wg_stk3800/efm32wg_stk3800.yaml b/boards/arm/efm32wg_stk3800/efm32wg_stk3800.yaml new file mode 100644 index 00000000000..90065fe8487 --- /dev/null +++ b/boards/arm/efm32wg_stk3800/efm32wg_stk3800.yaml @@ -0,0 +1,13 @@ +identifier: efm32wg_stk3800 +name: EFM32WG-STK3800 +type: mcu +arch: arm +ram: 32 +flash: 256 +toolchain: + - zephyr + - gccarmemb +testing: + ignore_tags: + - net + - bluetooth diff --git a/boards/arm/efm32wg_stk3800/efm32wg_stk3800_defconfig b/boards/arm/efm32wg_stk3800/efm32wg_stk3800_defconfig new file mode 100644 index 00000000000..63edd59ba8b --- /dev/null +++ b/boards/arm/efm32wg_stk3800/efm32wg_stk3800_defconfig @@ -0,0 +1,11 @@ +CONFIG_ARM=y +CONFIG_SOC_FAMILY_EXX32=y +CONFIG_SOC_SERIES_EFM32WG=y +CONFIG_BOARD_EFM32WG_STK3800=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_CORTEX_M_SYSTICK=y +CONFIG_GPIO=y +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=48000000 +CONFIG_CMU_HFCLK_HFXO=y diff --git a/dts/arm/Makefile b/dts/arm/Makefile index 4a3c13a36d2..56c17cfe9e6 100644 --- a/dts/arm/Makefile +++ b/dts/arm/Makefile @@ -49,6 +49,7 @@ dtb-$(CONFIG_BOARD_STM32_MIN_DEV) = stm32_min_dev.dts_compiled dtb-$(CONFIG_BOARD_STM32F3_DISCO) = stm32f3_disco.dts_compiled dtb-$(CONFIG_BOARD_OLIMEX_STM32_P405) = olimex_stm32_p405.dts_compiled dtb-$(CONFIG_BOARD_STM32F429I_DISC1) = stm32f429i_disc1.dts_compiled +dtb-$(CONFIG_BOARD_EFM32WG_STK3800) = efm32wg_stk3800.dts_compiled always := $(dtb-y) endif diff --git a/dts/arm/efm32wg_stk3800.dts b/dts/arm/efm32wg_stk3800.dts new file mode 100644 index 00000000000..b3c42889e2c --- /dev/null +++ b/dts/arm/efm32wg_stk3800.dts @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2017 I-SENSE group of ICCS + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include + +/ { + model = "Silicon Labs EFM32WG STK3800 board"; + compatible = "silabs,efm32wg_stk3800", "silabs,efm32wg"; + + chosen { + zephyr,console = &uart0; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; +}; + +&uart0 { + current-speed = <115200>; + status = "ok"; +}; diff --git a/dts/arm/efm32wg_stk3800.fixup b/dts/arm/efm32wg_stk3800.fixup new file mode 100644 index 00000000000..e9355a15fed --- /dev/null +++ b/dts/arm/efm32wg_stk3800.fixup @@ -0,0 +1,12 @@ +/* This file is a temporary workaround for mapping of the generated information + * to the current driver definitions. This will be removed when the drivers + * are modified to handle the generated information, or the mapping of + * generated data matches the driver definitions. + */ + + +#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS +#define CONFIG_UART_GECKO_0_NAME SILABS_EFM32_USART_4000C000_LABEL + +#define CONFIG_UART_GECKO_0_BAUD_RATE SILABS_EFM32_USART_4000C000_CURRENT_SPEED +#define CONFIG_UART_GECKO_0_IRQ_PRI SILABS_EFM32_USART_4000C000_IRQ_0_PRIORITY