summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2020-07-24 07:23:34 +0800
committerGitHub <[email protected]>2020-07-24 07:23:34 +0800
commitc220e224145b994df0ca16da9474c0a121d681da (patch)
tree179fe465b6725972444653f9948b4276dd5a8ecf /bsp
parent1a42ca9035e661d3916c6794dc66ef93d55d421a (diff)
parent2446ee8b95eb0b937a5464b110f5e9266b772561 (diff)
Merge pull request #3761 from supperthomas/supperthomas
[bsp/nrf5x] add the config of softdevice
Diffstat (limited to 'bsp')
-rw-r--r--bsp/nrf5x/libraries/drivers/SConscript2
-rw-r--r--bsp/nrf5x/libraries/drivers/drv_gpio.c2
-rw-r--r--bsp/nrf5x/nrf52840/.config39
-rw-r--r--bsp/nrf5x/nrf52840/applications/application.c27
-rw-r--r--bsp/nrf5x/nrf52840/board/Kconfig31
-rw-r--r--bsp/nrf5x/nrf52840/board/board.c101
-rw-r--r--bsp/nrf5x/nrf52840/board/sdk_config.h2
-rw-r--r--bsp/nrf5x/nrf52840/rtconfig.h10
8 files changed, 162 insertions, 52 deletions
diff --git a/bsp/nrf5x/libraries/drivers/SConscript b/bsp/nrf5x/libraries/drivers/SConscript
index e0f2955028..6bbdffce07 100644
--- a/bsp/nrf5x/libraries/drivers/SConscript
+++ b/bsp/nrf5x/libraries/drivers/SConscript
@@ -19,6 +19,8 @@ if GetDepend(['BSP_USING_QSPI_FLASH']):
if GetDepend(['BSP_USING_SPI']):
src += ['drv_spi.c']
+if GetDepend(['BSP_USING_GPIO']):
+ src += ['drv_gpio.c']
path = [cwd]
diff --git a/bsp/nrf5x/libraries/drivers/drv_gpio.c b/bsp/nrf5x/libraries/drivers/drv_gpio.c
index f320fb81f2..001839b2b4 100644
--- a/bsp/nrf5x/libraries/drivers/drv_gpio.c
+++ b/bsp/nrf5x/libraries/drivers/drv_gpio.c
@@ -371,5 +371,5 @@ int rt_hw_pin_init(void)
}
}
-
+INIT_BOARD_EXPORT(rt_hw_pin_init);
#endif /* RT_USING_PIN */
diff --git a/bsp/nrf5x/nrf52840/.config b/bsp/nrf5x/nrf52840/.config
index 7565108653..3c4fb174f4 100644
--- a/bsp/nrf5x/nrf52840/.config
+++ b/bsp/nrf5x/nrf52840/.config
@@ -122,6 +122,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64
# CONFIG_RT_USING_I2C is not set
CONFIG_RT_USING_PIN=y
# CONFIG_RT_USING_ADC is not set
+# CONFIG_RT_USING_DAC is not set
# CONFIG_RT_USING_PWM is not set
# CONFIG_RT_USING_MTD_NOR is not set
# CONFIG_RT_USING_MTD_NAND is not set
@@ -194,7 +195,9 @@ CONFIG_RT_USING_LIBC=y
#
# IoT - internet of things
#
+# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
+# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
@@ -240,7 +243,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
-# CONFIG_PKG_USING_TENCENT_IOTHUB is not set
+# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
# CONFIG_PKG_USING_JOYLINK is not set
@@ -270,6 +273,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
+# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
@@ -315,12 +319,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
# CONFIG_PKG_USING_FAL is not set
-# CONFIG_PKG_USING_FAL_V00500 is not set
-# CONFIG_PKG_USING_FAL_V00400 is not set
-# CONFIG_PKG_USING_FAL_V00300 is not set
-# CONFIG_PKG_USING_FAL_V00200 is not set
-# CONFIG_PKG_USING_FAL_V00100 is not set
-# CONFIG_PKG_USING_FAL_LATEST_VERSION is not set
+# CONFIG_PKG_USING_FLASHDB is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
@@ -333,6 +332,8 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_SYSWATCH is not set
# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
# CONFIG_PKG_USING_PLCCORE is not set
+# CONFIG_PKG_USING_RAMDISK is not set
+# CONFIG_PKG_USING_MININI is not set
#
# peripheral libraries and drivers
@@ -352,6 +353,8 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_LITTLED is not set
# CONFIG_PKG_USING_LKDGUI is not set
# CONFIG_PKG_USING_NRF5X_SDK is not set
+# CONFIG_PKG_USING_NRF5X_SDK_V1300 is not set
+# CONFIG_PKG_USING_NRF5X_SDK_LATEST_VERSION is not set
CONFIG_PKG_USING_NRFX=y
CONFIG_PKG_NRFX_PATH="/packages/peripherals/nrfx"
CONFIG_PKG_USING_NRFX_V210=y
@@ -381,6 +384,10 @@ CONFIG_PKG_NRFX_VER="v2.1.0"
# CONFIG_PKG_USING_BEEP is not set
# CONFIG_PKG_USING_EASYBLINK is not set
# CONFIG_PKG_USING_PMS_SERIES is not set
+# CONFIG_PKG_USING_CAN_YMODEM is not set
+# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
+# CONFIG_PKG_USING_QLED is not set
+# CONFIG_PKG_USING_PAJ7620 is not set
#
# miscellaneous packages
@@ -427,12 +434,26 @@ CONFIG_SOC_NRF52840=y
# Onboard Peripheral Drivers
#
# CONFIG_BSP_USING_JLINK_TO_USART is not set
+# CONFIG_BSP_USING_QSPI_FLASH is not set
#
# On-chip Peripheral Drivers
#
-# CONFIG_BSP_USING_GPIO is not set
-# CONFIG_BSP_USING_ON_CHIP_FLASH is not set
+CONFIG_BSP_USING_GPIO=y
+# CONFIG_BSP_USING_SOFTDEVICE is not set
CONFIG_BSP_USING_UART=y
CONFIG_BSP_USING_UART0=y
+CONFIG_BSP_UART0_RX_PIN=8
+CONFIG_BSP_UART0_TX_PIN=6
# CONFIG_BSP_USING_UART1 is not set
+# CONFIG_BSP_USING_SPI is not set
+# CONFIG_BSP_USING_ON_CHIP_FLASH is not set
+
+#
+# On-chip flash config
+#
+CONFIG_MCU_FLASH_START_ADDRESS=0x00000000
+CONFIG_MCU_FLASH_SIZE_KB=1024
+CONFIG_MCU_SRAM_START_ADDRESS=0x20000000
+CONFIG_MCU_SRAM_SIZE_KB=256
+CONFIG_MCU_FLASH_PAGE_SIZE=0x1000
diff --git a/bsp/nrf5x/nrf52840/applications/application.c b/bsp/nrf5x/nrf52840/applications/application.c
index e11be12225..69def315c7 100644
--- a/bsp/nrf5x/nrf52840/applications/application.c
+++ b/bsp/nrf5x/nrf52840/applications/application.c
@@ -1,32 +1,18 @@
/*
- * File : application.c
- * This file is part of RT-Thread RTOS
- * COPYRIGHT (C) 2015, RT-Thread Development Team
+ * Copyright (c) 2006-2020, RT-Thread Development Team
*
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rt-thread.org/license/LICENSE
+ * SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
- * 2015-03-01 Yangfs the first version
- * 2015-03-27 Bernard code cleanup.
- */
-
-/**
- * @addtogroup NRF52832
+ * 2020-04-29 supperthomas first version
+ *
*/
-/*@{*/
#include <rtthread.h>
-
-#ifdef RT_USING_FINSH
-#include <finsh.h>
-#include <shell.h>
-#endif
-
-#include <drv_gpio.h>
+#include <rtdevice.h>
#define DK_BOARD_LED_1 13
+#define DK_BOARD_LED_2 14
int main(void)
{
@@ -44,4 +30,3 @@ int main(void)
return RT_EOK;
}
-/*@}*/
diff --git a/bsp/nrf5x/nrf52840/board/Kconfig b/bsp/nrf5x/nrf52840/board/Kconfig
index cc4b8ee92f..9f95a9177e 100644
--- a/bsp/nrf5x/nrf52840/board/Kconfig
+++ b/bsp/nrf5x/nrf52840/board/Kconfig
@@ -55,6 +55,37 @@ menu "On-chip Peripheral Drivers"
bool "Enable GPIO"
select RT_USING_PIN
default y
+ menuconfig BSP_USING_SOFTDEVICE
+ bool "Enable NRF SOFTDEVICE"
+ select PKG_USING_NRF5X_SDK
+ default n
+if BSP_USING_SOFTDEVICE
+ config NRFX_CLOCK_ENABLED
+ int "NRFX_CLOCK_ENABLED"
+ default 1
+ config NRFX_CLOCK_DEFAULT_CONFIG_IRQ_PRIORITY
+ int "NRFX_CLOCK_DEFAULT_CONFIG_IRQ_PRIORITY"
+ default 7
+ config NRFX_CLOCK_DEFAULT_CONFIG_IRQ_PRIORITY
+ int "NRFX_CLOCK_DEFAULT_CONFIG_IRQ_PRIORITY"
+ default 7
+ config NRFX_RTC_ENABLED
+ int "NRFX_RTC_ENABLED"
+ default 1
+ config NRF_CLOCK_ENABLED
+ int "NRF_CLOCK_ENABLED"
+ default 1
+ config NRF_SDH_BLE_ENABLED
+ int "NRF_SDH_BLE_ENABLED"
+ default 1
+ config NRF_SDH_ENABLED
+ int "NRF_SDH_ENABLED"
+ default 1
+ config NRF_SDH_SOC_ENABLED
+ int "NRF_SDH_SOC_ENABLED"
+ default 1
+
+endif
menuconfig BSP_USING_UART
bool "Enable UART"
diff --git a/bsp/nrf5x/nrf52840/board/board.c b/bsp/nrf5x/nrf52840/board/board.c
index 18723be78d..d1e55f4c49 100644
--- a/bsp/nrf5x/nrf52840/board/board.c
+++ b/bsp/nrf5x/nrf52840/board/board.c
@@ -1,23 +1,38 @@
+/*
+ * Copyright (c) 2006-2020, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2020-04-29 supperthomas first version
+ *
+ */
#include <rtthread.h>
#include <rthw.h>
#include <nrfx_systick.h>
#include "board.h"
-#include "drv_gpio.h"
#include "drv_uart.h"
+#ifdef BSP_USING_SOFTDEVICE
+#include <nrfx_rtc.h>
+#include <nrfx_clock.h>
+#include "app_error.h"
+#include "nrf_drv_clock.h"
+const nrfx_rtc_t rtc = NRFX_RTC_INSTANCE(1); /**< Declaring an instance of nrf_drv_rtc for RTC0. */
-void SysTick_Configuration(void)
+static void rtc_handler(nrfx_rtc_int_type_t int_type)
{
- /* Set interrupt priority */
- NVIC_SetPriority(SysTick_IRQn, 0xf);
-
- /* Configure SysTick to interrupt at the requested rate. */
- nrf_systick_load_set(SystemCoreClock / RT_TICK_PER_SECOND);
- nrf_systick_val_clear();
- nrf_systick_csr_set(NRF_SYSTICK_CSR_CLKSOURCE_CPU | NRF_SYSTICK_CSR_TICKINT_ENABLE
- | NRF_SYSTICK_CSR_ENABLE);
-}
+ if (int_type == NRFX_RTC_INT_TICK)
+ {
+ rt_interrupt_enter();
+ rt_tick_increase();
+
+ rt_interrupt_leave();
+ }
+}
+#else
/**
* This is the timer interrupt service routine.
*
@@ -32,27 +47,61 @@ void SysTick_Handler(void)
/* leave interrupt */
rt_interrupt_leave();
}
+#endif
+void SysTick_Configuration(void)
+{
+#ifdef BSP_USING_SOFTDEVICE
+ nrf_drv_clock_init();
+ nrf_drv_clock_lfclk_request(NULL);
+
+ uint32_t err_code;
+#define TICK_RATE_HZ RT_TICK_PER_SECOND
+#define SYSTICK_CLOCK_HZ ( 32768UL )
+#define NRF_RTC_REG NRF_RTC1
+ /* IRQn used by the selected RTC */
+#define NRF_RTC_IRQn RTC1_IRQn
+ /* Constants required to manipulate the NVIC. */
+#define NRF_RTC_PRESCALER ( (uint32_t) (NRFX_ROUNDED_DIV(SYSTICK_CLOCK_HZ, TICK_RATE_HZ) - 1) )
+ nrfx_rtc_config_t config = NRFX_RTC_DEFAULT_CONFIG;
+ config.prescaler = NRF_RTC_PRESCALER;
+
+ err_code = nrfx_rtc_init(&rtc, &config, rtc_handler);
+ // APP_ERROR_CHECK(err_code);
+ nrfx_rtc_tick_enable(&rtc, true);
+#define COMPARE_COUNTERTIME (3UL) /**< Get Compare event COMPARE_TIME seconds after the counter starts from 0. */
+ //Set compare channel to trigger interrupt after COMPARE_COUNTERTIME seconds
+ err_code = nrfx_rtc_cc_set(&rtc, 0, COMPARE_COUNTERTIME * 8, true);
+ // APP_ERROR_CHECK(err_code);
+
+ //Power on RTC instance
+ nrfx_rtc_enable(&rtc);
+#else
+ /* Set interrupt priority */
+ NVIC_SetPriority(SysTick_IRQn, 0xf);
+
+ /* Configure SysTick to interrupt at the requested rate. */
+ nrf_systick_load_set(SystemCoreClock / RT_TICK_PER_SECOND);
+ nrf_systick_val_clear();
+ nrf_systick_csr_set(NRF_SYSTICK_CSR_CLKSOURCE_CPU | NRF_SYSTICK_CSR_TICKINT_ENABLE
+ | NRF_SYSTICK_CSR_ENABLE);
+#endif
+}
void rt_hw_board_init(void)
{
+ rt_hw_interrupt_enable(0);
// sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
/* Activate deep sleep mode */
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
SysTick_Configuration();
-
+
#if defined(RT_USING_HEAP)
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
#endif
-
-/* Pin driver initialization is open by default */
-#ifdef RT_USING_PIN
- rt_hw_pin_init();
-#endif
-
+
#ifdef RT_USING_SERIAL
rt_hw_uart_init();
#endif
@@ -65,5 +114,19 @@ void rt_hw_board_init(void)
rt_components_board_init();
#endif
+#ifdef BSP_USING_SOFTDEVICE
+ extern uint32_t Image$$RW_IRAM1$$Base;
+ uint32_t const *const m_ram_start = &Image$$RW_IRAM1$$Base;
+ if ((uint32_t)m_ram_start == 0x20000000)
+ {
+ rt_kprintf("\r\n using softdevice the RAM couldn't be %p,please use the templete from package\r\n", m_ram_start);
+ while (1);
+ }
+ else
+ {
+ rt_kprintf("\r\n using softdevice the RAM at %p\r\n", m_ram_start);
+ }
+#endif
+
}
diff --git a/bsp/nrf5x/nrf52840/board/sdk_config.h b/bsp/nrf5x/nrf52840/board/sdk_config.h
index 619e06d23f..172e0ccc2c 100644
--- a/bsp/nrf5x/nrf52840/board/sdk_config.h
+++ b/bsp/nrf5x/nrf52840/board/sdk_config.h
@@ -48,6 +48,7 @@
#endif
// <h> nRF_BLE
+#include <rtconfig.h>
//==========================================================
// <q> BLE_ADVERTISING_ENABLED - ble_advertising - Advertising module
@@ -11694,7 +11695,6 @@
#endif
// </e>
-// </h>
//==========================================================
#ifndef NRFX_SYSTICK_ENABLED
#define NRFX_SYSTICK_ENABLED 1
diff --git a/bsp/nrf5x/nrf52840/rtconfig.h b/bsp/nrf5x/nrf52840/rtconfig.h
index c63c401e68..225164b8ed 100644
--- a/bsp/nrf5x/nrf52840/rtconfig.h
+++ b/bsp/nrf5x/nrf52840/rtconfig.h
@@ -155,13 +155,21 @@
/* Onboard Peripheral Drivers */
-#define BSP_USING_JLINK_TO_USART
/* On-chip Peripheral Drivers */
+#define BSP_USING_GPIO
#define BSP_USING_UART
#define BSP_USING_UART0
#define BSP_UART0_RX_PIN 8
#define BSP_UART0_TX_PIN 6
+/* On-chip flash config */
+
+#define MCU_FLASH_START_ADDRESS 0x00000000
+#define MCU_FLASH_SIZE_KB 1024
+#define MCU_SRAM_START_ADDRESS 0x20000000
+#define MCU_SRAM_SIZE_KB 256
+#define MCU_FLASH_PAGE_SIZE 0x1000
+
#endif