You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/04/11 08:52:33 UTC
[incubator-nuttx] 01/05: nucleo-f103rb: refactor bringup logic for
consistency with other boards
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit ad6c4ff0cdd142efaf603e2e9c5cb5d288ab4387
Author: raiden00pl <ra...@railab.me>
AuthorDate: Sat Apr 10 19:17:58 2021 +0200
nucleo-f103rb: refactor bringup logic for consistency with other boards
---
boards/arm/stm32/nucleo-f103rb/src/Make.defs | 4 +-
boards/arm/stm32/nucleo-f103rb/src/nucleo-f103rb.h | 20 +++++++
.../src/{stm32_appinitialize.c => stm32_appinit.c} | 55 +++---------------
boards/arm/stm32/nucleo-f103rb/src/stm32_boot.c | 23 ++++++++
.../src/{stm32_appinitialize.c => stm32_bringup.c} | 67 +++++++++++-----------
5 files changed, 88 insertions(+), 81 deletions(-)
diff --git a/boards/arm/stm32/nucleo-f103rb/src/Make.defs b/boards/arm/stm32/nucleo-f103rb/src/Make.defs
index 9794dec..e7848ca 100644
--- a/boards/arm/stm32/nucleo-f103rb/src/Make.defs
+++ b/boards/arm/stm32/nucleo-f103rb/src/Make.defs
@@ -20,7 +20,7 @@
include $(TOPDIR)/Make.defs
-CSRCS = stm32_boot.c
+CSRCS = stm32_boot.c stm32_bringup.c
ifeq ($(CONFIG_ARCH_LEDS),y)
CSRCS += stm32_autoleds.c
@@ -33,7 +33,7 @@ CSRCS += stm32_buttons.c
endif
ifeq ($(CONFIG_LIB_BOARDCTL),y)
-CSRCS += stm32_appinitialize.c
+CSRCS += stm32_appinit.c
endif
ifeq ($(CONFIG_ADC),y)
diff --git a/boards/arm/stm32/nucleo-f103rb/src/nucleo-f103rb.h b/boards/arm/stm32/nucleo-f103rb/src/nucleo-f103rb.h
index 93d2421..1a50242 100644
--- a/boards/arm/stm32/nucleo-f103rb/src/nucleo-f103rb.h
+++ b/boards/arm/stm32/nucleo-f103rb/src/nucleo-f103rb.h
@@ -82,6 +82,26 @@
****************************************************************************/
/****************************************************************************
+ * Name: stm32_bringup
+ *
+ * Description:
+ * Perform architecture specific initialization
+ *
+ * CONFIG_LIB_BOARDCTL=y:
+ * If CONFIG_NSH_ARCHINITIALIZE=y:
+ * Called from the NSH library (or other application)
+ * Otherwise, assumed to be called from some other application.
+ *
+ * Otherwise CONFIG_BOARD_LATE_INITIALIZE=y:
+ * Called from board_late_initialize().
+ *
+ * Otherwise, bad news: Never called
+ *
+ ****************************************************************************/
+
+int stm32_bringup(void);
+
+/****************************************************************************
* Name: stm32_pwm_setup
*
* Description:
diff --git a/boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c b/boards/arm/stm32/nucleo-f103rb/src/stm32_appinit.c
similarity index 75%
copy from boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c
copy to boards/arm/stm32/nucleo-f103rb/src/stm32_appinit.c
index 4b185bc..90f8952 100644
--- a/boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c
+++ b/boards/arm/stm32/nucleo-f103rb/src/stm32_appinit.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c
+ * boards/arm/stm32/nucleo-f103rb/src/stm32_appinit.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -24,11 +24,7 @@
#include <nuttx/config.h>
-#include <sys/types.h>
-#include <syslog.h>
-
#include <nuttx/board.h>
-#include <nuttx/leds/userled.h>
#include "nucleo-f103rb.h"
@@ -36,15 +32,8 @@
* Pre-processor Definitions
****************************************************************************/
-#undef HAVE_LEDS
-#undef HAVE_DAC
-
-#if !defined(CONFIG_ARCH_LEDS) && defined(CONFIG_USERLED_LOWER)
-# define HAVE_LEDS 1
-#endif
-
-#if defined(CONFIG_DAC)
-# define HAVE_DAC 1
+#ifndef OK
+# define OK 0
#endif
/****************************************************************************
@@ -78,39 +67,13 @@
int board_app_initialize(uintptr_t arg)
{
- int ret;
-
-#ifdef HAVE_LEDS
- /* Register the LED driver */
-
- ret = userled_lower_initialize(LED_DRIVER_PATH);
- if (ret < 0)
- {
- syslog(LOG_ERR, "ERROR: userled_lower_initialize() failed: %d\n", ret);
- return ret;
- }
-#endif
+#ifdef CONFIG_BOARD_LATE_INITIALIZE
+ /* Board initialization already performed by board_late_initialize() */
-#ifdef CONFIG_ADC
- /* Initialize ADC and register the ADC driver. */
-
- ret = stm32_adc_setup();
- if (ret < 0)
- {
- syslog(LOG_ERR, "ERROR: stm32_adc_setup failed: %d\n", ret);
- }
-#endif
-
-#ifdef CONFIG_PWM
- /* Initialize PWM and register the PWM driver. */
+ return OK;
+#else
+ /* Perform board-specific initialization */
- ret = stm32_pwm_setup();
- if (ret < 0)
- {
- syslog(LOG_ERR, "ERROR: stm32_pwm_setup failed: %d\n", ret);
- }
+ return stm32_bringup();
#endif
-
- UNUSED(ret);
- return OK;
}
diff --git a/boards/arm/stm32/nucleo-f103rb/src/stm32_boot.c b/boards/arm/stm32/nucleo-f103rb/src/stm32_boot.c
index d15d1d3..66fdf06 100644
--- a/boards/arm/stm32/nucleo-f103rb/src/stm32_boot.c
+++ b/boards/arm/stm32/nucleo-f103rb/src/stm32_boot.c
@@ -68,3 +68,26 @@ void stm32_boardinitialize(void)
board_autoled_initialize();
#endif
}
+
+/****************************************************************************
+ * Name: board_late_initialize
+ *
+ * Description:
+ * If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
+ * initialization call will be performed in the boot-up sequence to a
+ * function called board_late_initialize(). board_late_initialize() will
+ * be called immediately after up_initialize() is called and just before
+ * the initial application is started. This additional initialization
+ * phase may be used, for example, to initialize board-specific device
+ * drivers.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_BOARD_LATE_INITIALIZE
+void board_late_initialize(void)
+{
+ /* Perform board-specific initialization */
+
+ stm32_bringup();
+}
+#endif
diff --git a/boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c b/boards/arm/stm32/nucleo-f103rb/src/stm32_bringup.c
similarity index 64%
rename from boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c
rename to boards/arm/stm32/nucleo-f103rb/src/stm32_bringup.c
index 4b185bc..0376007 100644
--- a/boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c
+++ b/boards/arm/stm32/nucleo-f103rb/src/stm32_bringup.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * boards/arm/stm32/nucleo-f103rb/src/stm32_appinitialize.c
+ * boards/arm/stm32/nucleo-f103rb/src/stm32_bringup.c
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -28,7 +28,14 @@
#include <syslog.h>
#include <nuttx/board.h>
-#include <nuttx/leds/userled.h>
+
+#ifdef CONFIG_USERLED
+# include <nuttx/leds/userled.h>
+#endif
+
+#ifdef CONFIG_INPUT_BUTTONS
+# include <nuttx/input/buttons.h>
+#endif
#include "nucleo-f103rb.h"
@@ -37,49 +44,43 @@
****************************************************************************/
#undef HAVE_LEDS
-#undef HAVE_DAC
#if !defined(CONFIG_ARCH_LEDS) && defined(CONFIG_USERLED_LOWER)
# define HAVE_LEDS 1
#endif
-#if defined(CONFIG_DAC)
-# define HAVE_DAC 1
-#endif
-
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
- * Name: board_app_initialize
+ * Name: stm32_bringup
*
* Description:
- * Perform application specific initialization. This function is never
- * called directly from application code, but only indirectly via the
- * (non-standard) boardctl() interface using the command BOARDIOC_INIT.
+ * Perform architecture-specific initialization
*
- * Input Parameters:
- * arg - The boardctl() argument is passed to the board_app_initialize()
- * implementation without modification. The argument has no
- * meaning to NuttX; the meaning of the argument is a contract
- * between the board-specific initialization logic and the
- * matching application logic. The value could be such things as a
- * mode enumeration value, a set of DIP switch switch settings, a
- * pointer to configuration data read from a file or serial FLASH,
- * or whatever you would like to do with it. Every implementation
- * should accept zero/NULL as a default configuration.
+ * CONFIG_BOARD_LATE_INITIALIZE=y :
+ * Called from board_late_initialize().
*
- * Returned Value:
- * Zero (OK) is returned on success; a negated errno value is returned on
- * any failure to indicate the nature of the failure.
+ * CONFIG_BOARD_LATE_INITIALIZE=n && CONFIG_LIB_BOARDCTL=y :
+ * Called from the NSH library
*
****************************************************************************/
-int board_app_initialize(uintptr_t arg)
+int stm32_bringup(void)
{
int ret;
+#ifdef CONFIG_INPUT_BUTTONS
+ /* Register the BUTTON driver */
+
+ ret = btn_lower_initialize("/dev/buttons");
+ if (ret < 0)
+ {
+ syslog(LOG_ERR, "ERROR: btn_lower_initialize() failed: %d\n", ret);
+ }
+#endif
+
#ifdef HAVE_LEDS
/* Register the LED driver */
@@ -91,23 +92,23 @@ int board_app_initialize(uintptr_t arg)
}
#endif
-#ifdef CONFIG_ADC
- /* Initialize ADC and register the ADC driver. */
+#ifdef CONFIG_PWM
+ /* Initialize PWM and register the PWM device. */
- ret = stm32_adc_setup();
+ ret = stm32_pwm_setup();
if (ret < 0)
{
- syslog(LOG_ERR, "ERROR: stm32_adc_setup failed: %d\n", ret);
+ syslog(LOG_ERR, "ERROR: stm32_pwm_setup() failed: %d\n", ret);
}
#endif
-#ifdef CONFIG_PWM
- /* Initialize PWM and register the PWM driver. */
+#ifdef CONFIG_ADC
+ /* Initialize ADC and register the ADC driver. */
- ret = stm32_pwm_setup();
+ ret = stm32_adc_setup();
if (ret < 0)
{
- syslog(LOG_ERR, "ERROR: stm32_pwm_setup failed: %d\n", ret);
+ syslog(LOG_ERR, "ERROR: stm32_adc_setup failed: %d\n", ret);
}
#endif