diff --git a/boards/airfy-beacon/Makefile b/boards/airfy-beacon/Makefile index f8fcbb53a06595771dae356338a7bf2c0673734d..83d059dc34f4a9bff2e7e47049ec6444888db3e9 100644 --- a/boards/airfy-beacon/Makefile +++ b/boards/airfy-beacon/Makefile @@ -1,3 +1,4 @@ MODULE = board +DIRS = $(RIOTBOARD)/common/nrf51 include $(RIOTBASE)/Makefile.base diff --git a/boards/airfy-beacon/Makefile.dep b/boards/airfy-beacon/Makefile.dep index 7de44689f60a6321fa4caa283ad5cd87a40cc13b..babcd96228acee17fb447c6b9fee69a677afcdee 100644 --- a/boards/airfy-beacon/Makefile.dep +++ b/boards/airfy-beacon/Makefile.dep @@ -1,3 +1 @@ -ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) - USEMODULE += nrfmin -endif +include $(RIOTBOARD)/common/nrf51/Makefile.dep diff --git a/boards/airfy-beacon/Makefile.features b/boards/airfy-beacon/Makefile.features index 32008a8330aacd939dd6ef4156a0b7955c9bdc78..e5a49575464c3b48b57ab5aa3de3285b194f521f 100644 --- a/boards/airfy-beacon/Makefile.features +++ b/boards/airfy-beacon/Makefile.features @@ -1,15 +1,8 @@ # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc -FEATURES_PROVIDED += periph_gpio periph_gpio_irq FEATURES_PROVIDED += periph_i2c -FEATURES_PROVIDED += periph_rtt FEATURES_PROVIDED += periph_spi -FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart -# Various other features (if any) - -# The board MPU family (used for grouping by the CI system) -FEATURES_MCU_GROUP = cortex_m0_2 - -include $(RIOTCPU)/nrf51/Makefile.features +# include common nrf51 based boards features +include $(RIOTBOARD)/common/nrf51/Makefile.features diff --git a/boards/airfy-beacon/Makefile.include b/boards/airfy-beacon/Makefile.include index e4c6cac363b199bcea767008152953e13d4d39d9..e73b42a69b9e70b0a1ab4b59b4f8c426677fe52b 100644 --- a/boards/airfy-beacon/Makefile.include +++ b/boards/airfy-beacon/Makefile.include @@ -1,16 +1,18 @@ -# define the used CPU -export CPU = nrf51 +# define the used CPU model export CPU_MODEL = nrf51x22xxaa +# include common nrf51 boards module into the build +USEMODULE += boards_common_nrf51 + # define the default port depending on the host OS PORT_LINUX ?= /dev/ttyUSB0 PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*))) -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk +# this board uses an ST-Link v2 debug adapter +DEBUG_ADAPTER ?= stlink +STLINK_VERSION ?= 2 -export DEBUG_ADAPTER ?= stlink -export STLINK_VERSION ?= 2 +PROGRAMMER = openocd -# this board uses openocd -include $(RIOTMAKE)/tools/openocd.inc.mk +# include nrf51 boards common configuration +include $(RIOTBOARD)/common/nrf51/Makefile.include diff --git a/boards/airfy-beacon/board.c b/boards/airfy-beacon/board.c deleted file mode 100644 index ef39f2bac02c3635a22eed91eb6e24f9b5bd52e7..0000000000000000000000000000000000000000 --- a/boards/airfy-beacon/board.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2014 Christian Mehlis <mehlis@inf.fu-berlin.de> - * - * This file is subject to the terms and conditions of the GNU Lesser General - * Public License v2.1. See the file LICENSE in the top level directory for more - * details. - */ - -/** - * @ingroup boards_airfy-beacon - * @{ - * - * @file - * @brief Board specific implementations for the Airfy Beacon board - * - * @author Christian Mehlis <mehlis@inf.fu-berlin.de> - * - * @} - */ - -#include "board.h" -#include "cpu.h" - -void board_init(void) -{ - /* initialize the CPU */ - cpu_init(); -} diff --git a/boards/airfy-beacon/include/board.h b/boards/airfy-beacon/include/board.h index c83bd8d0eefc8adaaa50f8a528a0e9acde29c639..d5c83e217a473f9bee7a21df3e1592d9903e146d 100644 --- a/boards/airfy-beacon/include/board.h +++ b/boards/airfy-beacon/include/board.h @@ -19,27 +19,10 @@ #ifndef BOARD_H #define BOARD_H -#include "cpu.h" +#include "board_common.h" #ifdef __cplusplus - extern "C" { -#endif - -/** - * @name Xtimer configuration - * @{ - */ -#define XTIMER_WIDTH (24) -#define XTIMER_BACKOFF (40) -/** @} */ - -/** - * @brief Initialize board specific hardware, including clock, LEDs and std-IO - */ -void board_init(void); - -#ifdef __cplusplus -} /* end extern "C" */ + extern "C" {} #endif #endif /* BOARD_H */ diff --git a/boards/airfy-beacon/include/periph_conf.h b/boards/airfy-beacon/include/periph_conf.h index 69d3f16bd6c4e1dd4b61b5adfcab1dcc096fd864..916f3e5494831bfb78b8a5fc08a232e8675c7a10 100644 --- a/boards/airfy-beacon/include/periph_conf.h +++ b/boards/airfy-beacon/include/periph_conf.h @@ -21,6 +21,7 @@ #define PERIPH_CONF_H #include "periph_cpu.h" +#include "periph_conf_common.h" #ifdef __cplusplus extern "C" { @@ -41,20 +42,6 @@ * 2: derived from HFCLK */ /** @} */ -/** - * @name Timer configuration - * @{ - */ -static const timer_conf_t timer_config[] = { - /* dev, channels, width */ - { NRF_TIMER0, 3, TIMER_BITMODE_BITMODE_24Bit, TIMER0_IRQn } -}; - -#define TIMER_0_ISR isr_timer0 - -#define TIMER_NUMOF (sizeof(timer_config) / sizeof(timer_config[0])) -/** @} */ - /** * @name UART configuration * @@ -66,16 +53,6 @@ static const timer_conf_t timer_config[] = { #define UART_PIN_TX 18 /** @} */ -/** - * @name Real time counter configuration - * @{ - */ -#define RTT_NUMOF (1U) -#define RTT_DEV (1) /* NRF_RTC1 */ -#define RTT_MAX_VALUE (0x00ffffff) -#define RTT_FREQUENCY (1024) -/** @} */ - /** * @name SPI configuration * @{ diff --git a/boards/calliope-mini/Makefile.features b/boards/calliope-mini/Makefile.features index 937a64258777c6cfa5edeefa7e02ba750f17b7c5..18eeae03c8e00518f108076ee2bd88b0c4a090c7 100644 --- a/boards/calliope-mini/Makefile.features +++ b/boards/calliope-mini/Makefile.features @@ -1,14 +1,7 @@ # Put defined MCU peripherals here (in alphabetical order) -FEATURES_PROVIDED += periph_gpio periph_gpio_irq FEATURES_PROVIDED += periph_i2c -FEATURES_PROVIDED += periph_rtt -FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart FEATURES_PROVIDED += periph_pwm -# Various other features (if any) - -# The board MPU family (used for grouping by the CI system) -FEATURES_MCU_GROUP = cortex_m0_1 - -include $(RIOTCPU)/nrf51/Makefile.features +# include common nrf51 based boards features +include $(RIOTBOARD)/common/nrf51/Makefile.features diff --git a/boards/calliope-mini/Makefile.include b/boards/calliope-mini/Makefile.include index 7fe765e3a7129b3efa27613c32ae9a683cc22ffd..6f969e2c20a8ac05f35f4b9daed40606efa07c7b 100644 --- a/boards/calliope-mini/Makefile.include +++ b/boards/calliope-mini/Makefile.include @@ -1,16 +1,14 @@ # define the used CPU -export CPU = nrf51 export CPU_MODEL = nrf51x22xxab # define the default port depending on the host OS PORT_LINUX ?= /dev/ttyACM0 PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*))) -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk - -# we support flashing through plain fscopy or using JLink +# this board supports flashing through plain fscopy, using JLink or using +# openocd PROGRAMMER ?= fscopy + ifeq (fscopy,$(PROGRAMMER)) export FFLAGS = export DEBUGGER_FLAGS = @@ -18,9 +16,9 @@ ifeq (fscopy,$(PROGRAMMER)) export FLASHER = $(RIOTBOARD)/$(BOARD)/dist/flash.sh export DEBUGGER = export DEBUGSERVER = -else ifeq (jlink,$(PROGRAMMER)) - export JLINK_DEVICE := nrf51822 - include $(RIOTMAKE)/tools/jlink.inc.mk -else - $(info ERROR: invalid flash tool specified) +else ifeq (openocd,$(PROGRAMMER)) + DEBUG_ADAPTER = jlink endif + +# include nrf51 boards common configuration +include $(RIOTBOARD)/common/nrf51/Makefile.include diff --git a/boards/calliope-mini/include/board.h b/boards/calliope-mini/include/board.h index 553b3a4815d37260c9408dccdc88e139a54c9647..099284158dff7564a15b7a075b680d355a3c0066 100644 --- a/boards/calliope-mini/include/board.h +++ b/boards/calliope-mini/include/board.h @@ -22,21 +22,12 @@ #ifndef BOARD_H #define BOARD_H -#include "cpu.h" -#include "periph_conf.h" +#include "board_common.h" #ifdef __cplusplus extern "C" { #endif -/** - * @name Xtimer configuration - * @{ - */ -#define XTIMER_WIDTH (24) -#define XTIMER_BACKOFF (40) -/** @} */ - /** * @name LED matrix pin configuration * @{ @@ -65,11 +56,6 @@ extern "C" { #define BTN1_MODE GPIO_IN /** @} */ -/** - * @brief Initialize the board, also triggers the CPU initialization - */ -void board_init(void); - #ifdef __cplusplus } #endif diff --git a/boards/common/nrf51/Makefile b/boards/common/nrf51/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..3a930db95c1831d15896d2540e40f3b63fb5a4c3 --- /dev/null +++ b/boards/common/nrf51/Makefile @@ -0,0 +1,3 @@ +MODULE = boards_common_nrf51 + +include $(RIOTBASE)/Makefile.base diff --git a/boards/common/nrf51/Makefile.dep b/boards/common/nrf51/Makefile.dep new file mode 100644 index 0000000000000000000000000000000000000000..7de44689f60a6321fa4caa283ad5cd87a40cc13b --- /dev/null +++ b/boards/common/nrf51/Makefile.dep @@ -0,0 +1,3 @@ +ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) + USEMODULE += nrfmin +endif diff --git a/boards/common/nrf51/Makefile.features b/boards/common/nrf51/Makefile.features new file mode 100644 index 0000000000000000000000000000000000000000..e1e4f8a58125e857923b9d4d612e10d1dc6b3483 --- /dev/null +++ b/boards/common/nrf51/Makefile.features @@ -0,0 +1,5 @@ +# Put defined MCU peripherals here (in alphabetical order) +FEATURES_PROVIDED += periph_rtt +FEATURES_PROVIDED += periph_timer + +-include $(RIOTCPU)/nrf51/Makefile.features diff --git a/boards/common/nrf51/Makefile.include b/boards/common/nrf51/Makefile.include new file mode 100644 index 0000000000000000000000000000000000000000..ac436a8ae721edb3ee274dde58a4c95cf62af1ff --- /dev/null +++ b/boards/common/nrf51/Makefile.include @@ -0,0 +1,18 @@ +# define the used CPU +export CPU = nrf51 + +# setup serial terminal +include $(RIOTMAKE)/tools/serial.inc.mk + +# include common nrf51 headers +INCLUDES += -I$(RIOTBOARD)/common/nrf51/include + +ifeq ($(PROGRAMMER),openocd) + # use common openocd configuration for nrf51 + export OPENOCD_CONFIG = $(RIOTBOARD)/common/nrf51/dist/openocd.cfg + include $(RIOTMAKE)/tools/openocd.inc.mk +else ifeq ($(PROGRAMMER),jlink) + # setup JLink for flashing + export JLINK_DEVICE := nrf51822 + include $(RIOTMAKE)/tools/jlink.inc.mk +endif diff --git a/boards/yunjia-nrf51822/board.c b/boards/common/nrf51/board.c similarity index 79% rename from boards/yunjia-nrf51822/board.c rename to boards/common/nrf51/board.c index 43c50241cb73b01fec2c4ed4b56ca8447c4ed00b..e0be8266138efc3d8e414ae5abb9a1a2f53a337b 100644 --- a/boards/yunjia-nrf51822/board.c +++ b/boards/common/nrf51/board.c @@ -7,11 +7,11 @@ */ /** - * @ingroup boards_yunjia-nrf51822 + * @ingroup boards_common_nrf51 * @{ * * @file - * @brief Board specific implementations for the Yunjia NRF51822 board + * @brief Board initialization for the nRF51 based boards * * @author Hauke Petersen <hauke.petersen@fu-berlin.de> * diff --git a/boards/airfy-beacon/dist/openocd.cfg b/boards/common/nrf51/dist/openocd.cfg similarity index 100% rename from boards/airfy-beacon/dist/openocd.cfg rename to boards/common/nrf51/dist/openocd.cfg diff --git a/boards/common/nrf51/include/board_common.h b/boards/common/nrf51/include/board_common.h new file mode 100644 index 0000000000000000000000000000000000000000..f7bb9d3deea433cca7d5bddf500e44a51e294ca0 --- /dev/null +++ b/boards/common/nrf51/include/board_common.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2017 Freie Universität Berlin + * 2018 Inria + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @defgroup boards_common_nrf51 NRF51 common + * @ingroup boards_common + * @brief Shared files and configuration for some nRF51 boards. + * @{ + * + * @file + * @brief Shared configuration for some nRF51-based boards + * + * @author Hauke Petersen <hauke.petersen@fu-berlin.de> + * @author Alexandre Abadie <alexandre.abadie@inria.fr> + */ + +#ifndef BOARD_COMMON_H +#define BOARD_COMMON_H + +#include "cpu.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Xtimer configuration + * @{ + */ +#define XTIMER_WIDTH (24) +#define XTIMER_BACKOFF (40) +/** @} */ + +/** + * @brief Initialize the platform + */ +void board_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* BOARD_COMMON_H */ +/** @} */ diff --git a/boards/common/nrf51/include/periph_conf_common.h b/boards/common/nrf51/include/periph_conf_common.h new file mode 100644 index 0000000000000000000000000000000000000000..e4c296d3058e4f08623c50b811a8d345f7ece929 --- /dev/null +++ b/boards/common/nrf51/include/periph_conf_common.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2018 Inria + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @ingroup boards_common_nrf51 + * @{ + * + * @file + * @brief Common peripheral MCU configuration for some nrf51 based boards + * + * @author Alexandre Abadie <alexandre.abadie@inria.fr> + */ + +#ifndef PERIPH_CONF_COMMON_H +#define PERIPH_CONF_COMMON_H + +#include "periph_cpu.h" + +#ifdef __cplusplus + extern "C" { +#endif + +/** + * @name Timer configuration + * @{ + */ +static const timer_conf_t timer_config[] = { + /* dev, channels, width */ + { NRF_TIMER0, 3, TIMER_BITMODE_BITMODE_24Bit, TIMER0_IRQn } +}; + +#define TIMER_0_ISR isr_timer0 + +#define TIMER_NUMOF (sizeof(timer_config) / sizeof(timer_config[0])) +/** @} */ + +/** + * @name Real time counter configuration + * @{ + */ +#define RTT_NUMOF (1U) +#define RTT_DEV (1) /* NRF_RTC1 */ +#define RTT_MAX_VALUE (0x00ffffff) +#define RTT_FREQUENCY (1024) +/** @} */ + +#ifdef __cplusplus +} /* end extern "C" */ +#endif + +#endif /* PERIPH_CONF_COMMON_H */ diff --git a/boards/microbit/Makefile.dep b/boards/microbit/Makefile.dep index cb0306f5bf4e7139283aff33c993a9adbe282ead..46de60ee326fd5beef1d2fa828e7ce9b49a4d5d6 100644 --- a/boards/microbit/Makefile.dep +++ b/boards/microbit/Makefile.dep @@ -8,6 +8,4 @@ ifneq (,$(filter saul_default,$(USEMODULE))) USEMODULE += mma8x5x endif -ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) - USEMODULE += nrfmin -endif +include $(RIOTBOARD)/common/nrf51/Makefile.dep diff --git a/boards/microbit/Makefile.features b/boards/microbit/Makefile.features index 2c53068f05f3486548ea4baeb17da24d425173e4..e8d2c5b39d16a4e922373f0b7e308f0546e8e1af 100644 --- a/boards/microbit/Makefile.features +++ b/boards/microbit/Makefile.features @@ -1,13 +1,6 @@ # Put defined MCU peripherals here (in alphabetical order) -FEATURES_PROVIDED += periph_gpio periph_gpio_irq FEATURES_PROVIDED += periph_i2c -FEATURES_PROVIDED += periph_rtt -FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart -# Various other features (if any) - -# The board MPU family (used for grouping by the CI system) -FEATURES_MCU_GROUP = cortex_m0_1 - -include $(RIOTCPU)/nrf51/Makefile.features +# include common nrf51 based boards features +include $(RIOTBOARD)/common/nrf51/Makefile.features diff --git a/boards/microbit/Makefile.include b/boards/microbit/Makefile.include index 6349546dbdc45eb6d3fad57e828b1d7fe31aaf00..8eb617dd3b7dcc83a8ecf8ab054345aaa275ada4 100644 --- a/boards/microbit/Makefile.include +++ b/boards/microbit/Makefile.include @@ -1,16 +1,14 @@ # define the used CPU -export CPU = nrf51 export CPU_MODEL = nrf51x22xxab # define the default port depending on the host OS PORT_LINUX ?= /dev/ttyACM0 PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*))) -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk - -# we support flashing through plain fscopy or using JLink +# this board supports flashing through plain fscopy, using JLink or using +# openocd. Default programmer is fscopy PROGRAMMER ?= fscopy + ifeq (fscopy,$(PROGRAMMER)) export FFLAGS = export DEBUGGER_FLAGS = @@ -18,9 +16,10 @@ ifeq (fscopy,$(PROGRAMMER)) export FLASHER = $(RIOTBOARD)/$(BOARD)/dist/flash.sh export DEBUGGER = export DEBUGSERVER = -else ifeq (jlink,$(PROGRAMMER)) - export JLINK_DEVICE := nrf51822 - include $(RIOTMAKE)/tools/jlink.inc.mk -else - $(info ERROR: invalid flash tool specified) +else ifeq (openocd,$(PROGRAMMER)) + # this board uses a daplink adapter by default + DEBUG_ADAPTER = dap endif + +# include nrf51 boards common configuration +include $(RIOTBOARD)/common/nrf51/Makefile.include diff --git a/boards/microbit/include/board.h b/boards/microbit/include/board.h index 653428601393e53d365d83003a3230094d0b4616..b7927d85becca8b62705305a2c60e5ad6cc4341d 100644 --- a/boards/microbit/include/board.h +++ b/boards/microbit/include/board.h @@ -20,21 +20,12 @@ #ifndef BOARD_H #define BOARD_H -#include "cpu.h" -#include "periph_conf.h" +#include "board_common.h" #ifdef __cplusplus extern "C" { #endif -/** - * @name Xtimer configuration - * @{ - */ -#define XTIMER_WIDTH (24) -#define XTIMER_BACKOFF (40) -/** @} */ - /** * @name LED matrix pin configuration * @{ @@ -79,11 +70,6 @@ extern "C" { #define MAG3110_PARAM_ADDR 0x0e /** @} */ -/** - * @brief Initialize the board, also triggers the CPU initialization - */ -void board_init(void); - #ifdef __cplusplus } #endif diff --git a/boards/nrf51dongle/Makefile.dep b/boards/nrf51dongle/Makefile.dep index 7de44689f60a6321fa4caa283ad5cd87a40cc13b..babcd96228acee17fb447c6b9fee69a677afcdee 100644 --- a/boards/nrf51dongle/Makefile.dep +++ b/boards/nrf51dongle/Makefile.dep @@ -1,3 +1 @@ -ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) - USEMODULE += nrfmin -endif +include $(RIOTBOARD)/common/nrf51/Makefile.dep diff --git a/boards/nrf51dongle/Makefile.features b/boards/nrf51dongle/Makefile.features index 0b44820578129e5ce353c4842ea76ad44ea4631b..93dbc67187e954e75683965a70387f837013979a 100644 --- a/boards/nrf51dongle/Makefile.features +++ b/boards/nrf51dongle/Makefile.features @@ -1,12 +1,5 @@ # Put defined MCU peripherals here (in alphabetical order) -FEATURES_PROVIDED += periph_gpio periph_gpio_irq -FEATURES_PROVIDED += periph_rtt -FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart -# Various other features (if any) - -# The board MPU family (used for grouping by the CI system) -FEATURES_MCU_GROUP = cortex_m0_1 - -include $(RIOTCPU)/nrf51/Makefile.features +# include common nrf51 based boards features +include $(RIOTBOARD)/common/nrf51/Makefile.features diff --git a/boards/nrf51dongle/Makefile.include b/boards/nrf51dongle/Makefile.include index 089340c484e10f670bd8b2a361afbac7efda51ea..26796a89501e4bac4b5590f27d15669aff72b977 100644 --- a/boards/nrf51dongle/Makefile.include +++ b/boards/nrf51dongle/Makefile.include @@ -1,14 +1,17 @@ # define the used CPU -export CPU = nrf51 export CPU_MODEL = nrf51x22xxab # define the default port depending on the host OS PORT_LINUX ?= /dev/ttyACM0 PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*))) -# setup JLink for flashing -export JLINK_DEVICE := nrf51822 -include $(RIOTMAKE)/tools/jlink.inc.mk +# use jlink to program this board +PROGRAMMER ?= jlink -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk +# set required jlink debug adapter for openocd if it's used +ifeq (openocd,$(PROGRAMMER)) + DEBUG_ADAPTER = jlink +endif + +# include nrf51 boards common configuration +include $(RIOTBOARD)/common/nrf51/Makefile.include diff --git a/boards/nrf51dongle/include/board.h b/boards/nrf51dongle/include/board.h index 5298a776b5c024ce3d4d3fe2d494ba39d100f507..b6392359f54d669b5e63ed5683345ab7d85076d2 100644 --- a/boards/nrf51dongle/include/board.h +++ b/boards/nrf51dongle/include/board.h @@ -19,21 +19,12 @@ #ifndef BOARD_H #define BOARD_H -#include "cpu.h" -#include "periph_conf.h" +#include "board_common.h" #ifdef __cplusplus extern "C" { #endif -/** - * @name Xtimer configuration - * @{ - */ -#define XTIMER_WIDTH (24) -#define XTIMER_BACKOFF (40) -/** @} */ - /** * @name LED pin definitions and handlers * @{ @@ -59,11 +50,6 @@ extern "C" { #define LED2_TOGGLE (NRF_GPIO->OUT ^= LED2_MASK) /** @} */ -/** - * @brief Initialize the board, also triggers the CPU initialization - */ -void board_init(void); - #ifdef __cplusplus } #endif diff --git a/boards/nrf51dongle/include/periph_conf.h b/boards/nrf51dongle/include/periph_conf.h index 3fda308cff902174ad9ca35da80a04ab971ae190..9831276b608bcb8ce7fce7658a28e1fcf79f3f8a 100644 --- a/boards/nrf51dongle/include/periph_conf.h +++ b/boards/nrf51dongle/include/periph_conf.h @@ -20,6 +20,7 @@ #define PERIPH_CONF_H #include "periph_cpu.h" +#include "periph_conf_common.h" #ifdef __cplusplus extern "C" { @@ -40,30 +41,6 @@ extern "C" { * 2: derived from HFCLK */ /** @} */ -/** - * @name Timer configuration - * @{ - */ -static const timer_conf_t timer_config[] = { - /* dev, channels, width */ - { NRF_TIMER0, 3, TIMER_BITMODE_BITMODE_24Bit, TIMER0_IRQn } -}; - -#define TIMER_0_ISR isr_timer0 - -#define TIMER_NUMOF (sizeof(timer_config) / sizeof(timer_config[0])) -/** @} */ - -/** - * @name Real time counter configuration - * @{ - */ -#define RTT_NUMOF (1U) -#define RTT_DEV (1) /* NRF_RTC1 */ -#define RTT_MAX_VALUE (0x00ffffff) -#define RTT_FREQUENCY (1024) -/** @} */ - /** * @name UART configuration * @{ diff --git a/boards/nrf6310/Makefile.dep b/boards/nrf6310/Makefile.dep index 7de44689f60a6321fa4caa283ad5cd87a40cc13b..babcd96228acee17fb447c6b9fee69a677afcdee 100644 --- a/boards/nrf6310/Makefile.dep +++ b/boards/nrf6310/Makefile.dep @@ -1,3 +1 @@ -ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) - USEMODULE += nrfmin -endif +include $(RIOTBOARD)/common/nrf51/Makefile.dep diff --git a/boards/nrf6310/Makefile.features b/boards/nrf6310/Makefile.features index 6cec355f5fcd3a7ef2d92ba8c460b48e1047f4af..d2712cafabcd222ed3d34c850cb860be98621893 100644 --- a/boards/nrf6310/Makefile.features +++ b/boards/nrf6310/Makefile.features @@ -1,13 +1,8 @@ # Put defined MCU peripherals here (in alphabetical order) -FEATURES_PROVIDED += periph_gpio periph_gpio_irq -FEATURES_PROVIDED += periph_rtt FEATURES_PROVIDED += periph_spi -FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart -# Various other features (if any) - -# The board MPU family (used for grouping by the CI system) -FEATURES_MCU_GROUP = cortex_m0_2 +# include common nrf51 based boards features +include $(RIOTBOARD)/common/nrf51/Makefile.features include $(RIOTCPU)/nrf51/Makefile.features diff --git a/boards/nrf6310/Makefile.include b/boards/nrf6310/Makefile.include index 7cb45a324fc73c797a4aa338a7f7351d6a03c3a3..a70b6acf73fe644132b2a9d781b94b4a4ab3bc30 100644 --- a/boards/nrf6310/Makefile.include +++ b/boards/nrf6310/Makefile.include @@ -1,21 +1,17 @@ # define the used CPU -export CPU = nrf51 export CPU_MODEL = nrf51x22xxaa # set default port depending on operating system PORT_LINUX ?= /dev/ttyUSB0 PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*))) -# define flash and debugging environment -export FLASHER = $(RIOTBOARD)/$(BOARD)/dist/flash.sh -export DEBUGGER = $(RIOTBOARD)/$(BOARD)/dist/debug.sh -export DEBUGSERVER = JLinkGDBServer -device nrf51822 -if SWD -export RESET = $(RIOTBOARD)/$(BOARD)/dist/reset.sh +# use jlink to program this board +PROGRAMMER ?= jlink -HEXFILE = $(BINFILE) -export FFLAGS = $(BINDIR) $(HEXFILE) -export DEBUGGER_FLAGS = $(BINDIR) $(ELFFILE) -export RESET_FLAGS = $(BINDIR) +# set required debug adapter for openocd if it's used +ifeq (openocd,$(PROGRAMMER)) + DEBUG_ADAPTER = jlink +endif -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk +# include nrf51 boards common configuration +include $(RIOTBOARD)/common/nrf51/Makefile.include diff --git a/boards/nrf6310/dist/debug.sh b/boards/nrf6310/dist/debug.sh deleted file mode 100755 index 24bdbae0f64f06cfd0aec7ab536f4e8d6a901a0a..0000000000000000000000000000000000000000 --- a/boards/nrf6310/dist/debug.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -# Start in-circuit debugging on this board: this script starts up the GDB -# client and connects to a GDB server. -# -# Start the GDB server first using the 'make debugserver' target - -# @author Hauke Petersen <hauke.petersen@fu-berlin.de> - -BINDIR=$1 -ELFFILE=$2 - -# write GDB config file -echo "target extended-remote 127.0.0.1:2331" > $BINDIR/gdb.cfg - -# run GDB -arm-none-eabi-gdb -tui -command=$BINDIR/gdb.cfg $ELFFILE diff --git a/boards/nrf6310/dist/flash.sh b/boards/nrf6310/dist/flash.sh deleted file mode 100755 index 0f4bbb33c7d77f6e738c07b3e817b2f7c37e3177..0000000000000000000000000000000000000000 --- a/boards/nrf6310/dist/flash.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -# This flash script dynamically generates a file with a set of commands which -# have to be handed to the flashing script of SEGGER (JLinkExe >4.84). -# After that, JLinkExe will be executed with that set of commands to flash the -# latest .bin file to the board. - -# @author Timo Ziegler <timo.ziegler@fu-berlin.de> -# @author Hauke Petersen <hauke.petersen@fu-berlin.de> - -BINDIR=$1 -HEXFILE=$2 - -# setup JLink command file -echo "device nrf51822" > $BINDIR/burn.seg -echo "speed 1000" >> $BINDIR/burn.seg -echo "w4 4001e504 1" >> $BINDIR/burn.seg -echo "loadbin $HEXFILE 0" >> $BINDIR/burn.seg -echo "r" >> $BINDIR/burn.seg -echo "g" >> $BINDIR/burn.seg -echo "exit" >> $BINDIR/burn.seg -echo "" >> $BINDIR/burn.seg - -# flash new binary to the board -JLinkExe < $BINDIR/burn.seg diff --git a/boards/nrf6310/dist/reset.sh b/boards/nrf6310/dist/reset.sh deleted file mode 100755 index 509f127ea42beeaaf2e4316ab5e76e7be5e408a7..0000000000000000000000000000000000000000 --- a/boards/nrf6310/dist/reset.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -# This script resets a nrf51822 target using JLink called -# with a pre-defined reset sequence. - -# @author Hauke Petersen <hauke.petersen@fu-berlin.de> - -BINDIR=$1 - -# create JLink command file for resetting the board -echo "device nrf51822" > $BINDIR/reset.seg -echo "r" >> $BINDIR/reset.seg -echo "g" >> $BINDIR/reset.seg -echo "exit" >> $BINDIR/reset.seg -echo " " >> $BINDIR/reset.seg - -# reset the board -JLinkExe < $BINDIR/reset.seg diff --git a/boards/nrf6310/include/periph_conf.h b/boards/nrf6310/include/periph_conf.h index d1afa91ae3d33d267966a5d635e524f7707e4c0a..7f00dffbb4eac20edc484c341d8cf29d686ac459 100644 --- a/boards/nrf6310/include/periph_conf.h +++ b/boards/nrf6310/include/periph_conf.h @@ -23,6 +23,7 @@ #define PERIPH_CONF_H #include "periph_cpu.h" +#include "periph_conf_common.h" #ifdef __cplusplus extern "C" { @@ -43,30 +44,6 @@ extern "C" { * 2: derived from HFCLK */ /** @} */ -/** - * @name Timer configuration - * @{ - */ -static const timer_conf_t timer_config[] = { - /* dev, channels, width */ - { NRF_TIMER0, 3, TIMER_BITMODE_BITMODE_24Bit, TIMER0_IRQn } -}; - -#define TIMER_0_ISR isr_timer0 - -#define TIMER_NUMOF (sizeof(timer_config) / sizeof(timer_config[0])) -/** @} */ - -/** - * @name Real time counter configuration - * @{ - */ -#define RTT_NUMOF (1U) -#define RTT_DEV (1) /* NRF_RTC1 */ -#define RTT_MAX_VALUE (0x00ffffff) -#define RTT_FREQUENCY (1024) -/** @} */ - /** * @name UART configuration * @{ diff --git a/boards/yunjia-nrf51822/Makefile b/boards/yunjia-nrf51822/Makefile index f8fcbb53a06595771dae356338a7bf2c0673734d..83d059dc34f4a9bff2e7e47049ec6444888db3e9 100644 --- a/boards/yunjia-nrf51822/Makefile +++ b/boards/yunjia-nrf51822/Makefile @@ -1,3 +1,4 @@ MODULE = board +DIRS = $(RIOTBOARD)/common/nrf51 include $(RIOTBASE)/Makefile.base diff --git a/boards/yunjia-nrf51822/Makefile.dep b/boards/yunjia-nrf51822/Makefile.dep index 7de44689f60a6321fa4caa283ad5cd87a40cc13b..babcd96228acee17fb447c6b9fee69a677afcdee 100644 --- a/boards/yunjia-nrf51822/Makefile.dep +++ b/boards/yunjia-nrf51822/Makefile.dep @@ -1,3 +1 @@ -ifneq (,$(filter gnrc_netdev_default netdev_default,$(USEMODULE))) - USEMODULE += nrfmin -endif +include $(RIOTBOARD)/common/nrf51/Makefile.dep diff --git a/boards/yunjia-nrf51822/Makefile.features b/boards/yunjia-nrf51822/Makefile.features index 32008a8330aacd939dd6ef4156a0b7955c9bdc78..e5a49575464c3b48b57ab5aa3de3285b194f521f 100644 --- a/boards/yunjia-nrf51822/Makefile.features +++ b/boards/yunjia-nrf51822/Makefile.features @@ -1,15 +1,8 @@ # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED += periph_adc -FEATURES_PROVIDED += periph_gpio periph_gpio_irq FEATURES_PROVIDED += periph_i2c -FEATURES_PROVIDED += periph_rtt FEATURES_PROVIDED += periph_spi -FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart -# Various other features (if any) - -# The board MPU family (used for grouping by the CI system) -FEATURES_MCU_GROUP = cortex_m0_2 - -include $(RIOTCPU)/nrf51/Makefile.features +# include common nrf51 based boards features +include $(RIOTBOARD)/common/nrf51/Makefile.features diff --git a/boards/yunjia-nrf51822/Makefile.include b/boards/yunjia-nrf51822/Makefile.include index e4c6cac363b199bcea767008152953e13d4d39d9..637067fab0d53e020cc0d9ff43146d7e0363ca7d 100644 --- a/boards/yunjia-nrf51822/Makefile.include +++ b/boards/yunjia-nrf51822/Makefile.include @@ -1,16 +1,19 @@ -# define the used CPU -export CPU = nrf51 +# define the used CPU model export CPU_MODEL = nrf51x22xxaa +# include common nrf51 boards module into the build +USEMODULE += boards_common_nrf51 + # define the default port depending on the host OS PORT_LINUX ?= /dev/ttyUSB0 PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*))) -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk - +# This board uses an ST-Link v2 debug adapter export DEBUG_ADAPTER ?= stlink export STLINK_VERSION ?= 2 -# this board uses openocd -include $(RIOTMAKE)/tools/openocd.inc.mk +# use openocd to program this board +PROGRAMMER = openocd + +# import nrf51 boards common configuration +include $(RIOTBOARD)/common/nrf51/Makefile.include diff --git a/boards/yunjia-nrf51822/dist/openocd.cfg b/boards/yunjia-nrf51822/dist/openocd.cfg deleted file mode 100644 index d16a15a3ecc0857d53de8e4dca34c3177e0693d4..0000000000000000000000000000000000000000 --- a/boards/yunjia-nrf51822/dist/openocd.cfg +++ /dev/null @@ -1,3 +0,0 @@ -set WORKAREASIZE 0x4000 -source [find target/nrf51.cfg] -$_TARGETNAME configure -rtos auto diff --git a/boards/yunjia-nrf51822/include/board.h b/boards/yunjia-nrf51822/include/board.h index 0e3d004b38a582d8b6f136d711bd83c007a4ec41..5d4a51e42002b4c8e0ea20a7b0d3b8d379642c13 100644 --- a/boards/yunjia-nrf51822/include/board.h +++ b/boards/yunjia-nrf51822/include/board.h @@ -19,27 +19,10 @@ #ifndef BOARD_H #define BOARD_H -#include "cpu.h" +#include "board_common.h" #ifdef __cplusplus -extern "C" { -#endif - -/** - * @name Xtimer configuration - * @{ - */ -#define XTIMER_WIDTH (24) -#define XTIMER_BACKOFF (40) -/** @} */ - -/** - * @brief Initialize board specific hardware, including clock, LEDs and std-IO - */ -void board_init(void); - -#ifdef __cplusplus -} +extern "C" {} #endif #endif /* BOARD_H */ diff --git a/boards/yunjia-nrf51822/include/periph_conf.h b/boards/yunjia-nrf51822/include/periph_conf.h index a74e361f88c4ee0c721223adf432b62b2bd861ae..57538297d019e0f816e14e7c4a7a33c51f20055c 100644 --- a/boards/yunjia-nrf51822/include/periph_conf.h +++ b/boards/yunjia-nrf51822/include/periph_conf.h @@ -20,6 +20,7 @@ #define PERIPH_CONF_H #include "periph_cpu.h" +#include "periph_conf_common.h" #ifdef __cplusplus extern "C" { @@ -40,20 +41,6 @@ extern "C" { * 2: derived from HFCLK */ /** @} */ -/** - * @name Timer configuration - * @{ - */ -static const timer_conf_t timer_config[] = { - /* dev, channels, width */ - { NRF_TIMER0, 3, TIMER_BITMODE_BITMODE_24Bit, TIMER0_IRQn } -}; - -#define TIMER_0_ISR isr_timer0 - -#define TIMER_NUMOF (sizeof(timer_config) / sizeof(timer_config[0])) -/** @} */ - /** * @name UART configuration * @{ @@ -64,16 +51,6 @@ static const timer_conf_t timer_config[] = { #define UART_PIN_TX 2 /** @} */ -/** - * @name Real time counter configuration - * @{ - */ -#define RTT_NUMOF (1U) -#define RTT_DEV (1) /* NRF_RTC1 */ -#define RTT_MAX_VALUE (0x00ffffff) -#define RTT_FREQUENCY (1024) -/** @} */ - /** * @name SPI configuration * @{ diff --git a/cpu/nrf51/Makefile.features b/cpu/nrf51/Makefile.features index 7d12728b90a68dc1f4ce134b53fd28fe4cb22e6b..1a47295f0667b93a611c00617b7b94d2904c5101 100644 --- a/cpu/nrf51/Makefile.features +++ b/cpu/nrf51/Makefile.features @@ -1 +1,3 @@ +FEATURES_PROVIDED += periph_gpio periph_gpio_irq + -include $(RIOTCPU)/nrf5x_common/Makefile.features