You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ag...@apache.org on 2020/11/21 18:24:09 UTC

[incubator-nuttx] branch master updated: boards/arm/stm32/stm32ldiscovery: modernize board init little bit, userleds and buttons like for other boards

This is an automated email from the ASF dual-hosted git repository.

aguettouche pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new e9bd306  boards/arm/stm32/stm32ldiscovery: modernize board init little bit, userleds and buttons like for other boards
e9bd306 is described below

commit e9bd30626560d0e61d3081633c867ecaeca89a53
Author: Juha Niskanen <ju...@haltian.com>
AuthorDate: Sat Nov 21 17:20:38 2020 +0200

    boards/arm/stm32/stm32ldiscovery: modernize board init little bit, userleds and buttons like for other boards
    
    Also fix typo in Kconfig
    Update some obsolete comments
    nxstyle changes
    
    Signed-off-by: Juha Niskanen <ju...@haltian.com>
---
 boards/arm/stm32/stm32ldiscovery/Kconfig           |  2 +-
 boards/arm/stm32/stm32ldiscovery/README.txt        |  4 +-
 boards/arm/stm32/stm32ldiscovery/include/board.h   | 75 +++++++++++++---------
 .../arm/stm32/stm32ldiscovery/src/stm32_appinit.c  |  6 +-
 .../arm/stm32/stm32ldiscovery/src/stm32_autoleds.c |  3 +-
 boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c  | 38 +++++------
 .../arm/stm32/stm32ldiscovery/src/stm32_bringup.c  | 41 +++++++++++-
 .../stm32/stm32ldiscovery/src/stm32ldiscovery.h    |  6 +-
 8 files changed, 109 insertions(+), 66 deletions(-)

diff --git a/boards/arm/stm32/stm32ldiscovery/Kconfig b/boards/arm/stm32/stm32ldiscovery/Kconfig
index ea61f46..a78d6e1 100644
--- a/boards/arm/stm32/stm32ldiscovery/Kconfig
+++ b/boards/arm/stm32/stm32ldiscovery/Kconfig
@@ -3,7 +3,7 @@
 # see the file kconfig-language.txt in the NuttX tools repository.
 #
 
-if ARCH_BOARD_STM32FL_DISCOVERY
+if ARCH_BOARD_STM32L_DISCOVERY
 
 config STM32LDISCO_QETIMER
 	int "Timer to use with QE encoder"
diff --git a/boards/arm/stm32/stm32ldiscovery/README.txt b/boards/arm/stm32/stm32ldiscovery/README.txt
index 0dd15ee..7fdfdae 100644
--- a/boards/arm/stm32/stm32ldiscovery/README.txt
+++ b/boards/arm/stm32/stm32ldiscovery/README.txt
@@ -199,8 +199,8 @@ LEDs
 
   These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is
   defined.  In that case, the usage by the board port is defined in
-  include/board.h and src/up_leds.c. The LEDs are used to encode OS-related
-  events as follows:
+  include/board.h and src/stm32_autoleds.c. The LEDs are used to encode
+  OS-related events as follows:
 
     SYMBOL                Meaning                 LED state
                                                     LED3     LED4
diff --git a/boards/arm/stm32/stm32ldiscovery/include/board.h b/boards/arm/stm32/stm32ldiscovery/include/board.h
index 5f459e6..46f3b70 100644
--- a/boards/arm/stm32/stm32ldiscovery/include/board.h
+++ b/boards/arm/stm32/stm32ldiscovery/include/board.h
@@ -52,19 +52,22 @@
  * Pre-processor Definitions
  ****************************************************************************/
 
-/* Clocking *************************************************************************/
-/* Four different clock sources can be used to drive the system clock (SYSCLK):
+/* Clocking *****************************************************************/
+
+/* Four different clock sources can be used to drive the system clock
+ * (SYSCLK):
  *
  * - HSI high-speed internal oscillator clock
  *   Generated from an internal 16 MHz RC oscillator
  * - HSE high-speed external oscillator clock
- *   Normally driven by an external crystal (X3).  However, this crystal is not fitted
- *   on the STM32L-Discovery board.
+ *   Normally driven by an external crystal (X3).  However, this crystal is
+ *   not fitted on the STM32L-Discovery board.
  * - PLL clock
  * - MSI multispeed internal oscillator clock
- *   The MSI clock signal is generated from an internal RC oscillator. Seven frequency
- *   ranges are available: 65.536 kHz, 131.072 kHz, 262.144 kHz, 524.288 kHz, 1.048 MHz,
- *   2.097 MHz (default value) and 4.194 MHz.
+ *   The MSI clock signal is generated from an internal RC oscillator.
+ *   Seven frequency ranges are available: 65.536 kHz, 131.072 kHz,
+ *   262.144 kHz, 524.288 kHz, 1.048 MHz, 2.097 MHz (default value) and
+ *   4.194 MHz.
  *
  * The devices have the following two secondary clock sources
  * - LSI low-speed internal RC clock
@@ -95,13 +98,15 @@
  *   MHz frequency. This is required to provide a 48 MHz clock to the USB or
  *   SDIO (SDIOCLK or USBCLK = PLLVCO/2).
  * SYSCLK
- *   The system clock is derived from the PLL VCO divided by the output division factor.
+ *   The system clock is derived from the PLL VCO divided by the output
+ *   division factor.
  * Limitations:
  *   96 MHz as PLLVCO when the product is in range 1 (1.8V),
  *   48 MHz as PLLVCO when the product is in range 2 (1.5V),
  *   24 MHz when the product is in range 3 (1.2V).
  *   Output division to avoid exceeding 32 MHz as SYSCLK.
- *   The minimum input clock frequency for PLL is 2 MHz (when using HSE as PLL source).
+ *   The minimum input clock frequency for PLL is 2 MHz (when using HSE as
+ *   PLL source).
  */
 
 #define STM32_CFGR_PLLSRC        0                       /* Source is 16MHz HSI */
@@ -115,8 +120,8 @@
 #  define STM32_PLL_FREQUENCY    (4*STM32_HSI_FREQUENCY) /* PLL VCO Frequency is 64MHz */
 #endif
 
-/* Use the PLL and set the SYSCLK source to be the divided down PLL VCO output
- * frequency (STM32_PLL_FREQUENCY divided by the PLLDIV value).
+/* Use the PLL and set the SYSCLK source to be the divided down PLL VCO
+ * output frequency (STM32_PLL_FREQUENCY divided by the PLLDIV value).
  */
 
 #define STM32_SYSCLK_SW          RCC_CFGR_SW_PLL         /* Use the PLL as the SYSCLK */
@@ -159,23 +164,25 @@
 #define STM32_APB1_TIM6_CLKIN    (STM32_PCLK1_FREQUENCY)
 #define STM32_APB1_TIM7_CLKIN    (STM32_PCLK1_FREQUENCY)
 
-/* LED definitions ******************************************************************/
+/* LED definitions **********************************************************/
+
 /* The STM32L-Discovery board has four LEDs.  Two of these are controlled by
  * logic on the board and are not available for software control:
  *
- * LD1 COM:   LD2 default status is red. LD2 turns to green to indicate that
- *            communications are in progress between the PC and the ST-LINK/V2.
+ * LD1 COM:   LD2 default status is red. LD2 turns to green to indicate
+ *            that communications are in progress between the PC and the
+ *            ST-LINK/V2.
  * LD2 PWR:   Red LED indicates that the board is powered.
  *
  * And two LEDs can be controlled by software:
  *
- * User LD3:  Green LED is a user LED connected to the I/O PB7 of the STM32L152
- *            MCU.
- * User LD4:  Blue LED is a user LED connected to the I/O PB6 of the STM32L152
- *            MCU.
+ * User LD3:  Green LED is a user LED connected to the I/O PB7 of the
+ *            STM32L152 MCU.
+ * User LD4:  Blue LED is a user LED connected to the I/O PB6 of the
+ *            STM32L152 MCU.
  *
- * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any
- * way.  The following definitions are used to access individual LEDs.
+ * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in
+ * any way.  The following definitions are used to access individual LEDs.
  */
 
 /* LED index values for use with board_userled() */
@@ -189,8 +196,9 @@
 #define BOARD_LED1_BIT           (1 << BOARD_LED1)
 #define BOARD_LED2_BIT           (1 << BOARD_LED2)
 
-/* If CONFIG_ARCH_LEDs is defined, then NuttX will control the 8 LEDs on board the
- * STM32L-Discovery.  The following definitions describe how NuttX controls the LEDs:
+/* If CONFIG_ARCH_LEDS is defined, then NuttX will control the 2 LEDs on
+ * board the STM32L-Discovery.  The following definitions describe how NuttX
+ * controls the LEDs:
  *
  *   SYMBOL                Meaning                 LED state
  *                                                   LED1     LED2
@@ -215,12 +223,14 @@
 #define LED_ASSERTION            2
 #define LED_PANIC                3
 
-/* Button definitions ***************************************************************/
-/* The STM32L-Discovery supports two buttons; only one button is controllable by
- * software:
+/* Button definitions *******************************************************/
+
+/* The STM32L-Discovery supports two buttons; only one button is controllable
+ * by software:
  *
- *   B1 USER: user and wake-up button connected to the I/O PA0 of the STM32L152RBT6.
- *   B2 RESET: pushbutton connected to NRST is used to RESET the STM32L152RBT6.
+ *   B1 USER:  user and wake-up button connected to the I/O PA0 of the
+ *             STM32L152.
+ *   B2 RESET: pushbutton connected to NRST is used to RESET the STM32L152.
  */
 
 #define BUTTON_USER              0
@@ -228,11 +238,12 @@
 
 #define BUTTON_USER_BIT          (1 << BUTTON_USER)
 
-/* Alternate Pin Functions **********************************************************/
-/* The STM32L-Discovery has no on-board RS-232 driver.  Further, there are no USART
- * pins that do not conflict with the on board resources, in particular, the LCD:
- * Most USART pins are available if the LCD is enabled; USART2 may be used if either
- * the LCD or the on-board LEDs are disabled.
+/* Alternate Pin Functions **************************************************/
+
+/* The STM32L-Discovery has no on-board RS-232 driver.  Further, there
+ * are no USART pins that do not conflict with the on board resources, in
+ * particular, the LCD.  Most USART pins are available if the LCD is enabled;
+ * USART2 may be used if either the LCD or the on-board LEDs are disabled.
  *
  *   PA9   USART1_TX  LCD glass COM1  P2, pin 22
  *   PA10  USART1_RX  LCD glass COM2  P2, pin 21
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c
index a20a0c4..0bd7f81 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c
@@ -39,8 +39,6 @@
 
 #include <nuttx/config.h>
 
-#include <syslog.h>
-
 #include <nuttx/board.h>
 #include <arch/board/board.h>
 
@@ -77,7 +75,11 @@
 
 int board_app_initialize(uintptr_t arg)
 {
+#ifndef CONFIG_BOARD_LATE_INITIALIZE
   /* Perform board initialization here */
 
   return stm32_bringup();
+#else
+  return OK;
+#endif
 }
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c
index db59e10..2c6157c 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c
@@ -55,7 +55,8 @@
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
-/* If CONFIG_ARCH_LEDs is defined, then NuttX will control the 2 LEDs on
+
+/* If CONFIG_ARCH_LEDS is defined, then NuttX will control the 2 LEDs on
  * board the STM32L-Discovery.  The following definitions describe how NuttX
  * controls the LEDs:
  *
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c
index 1158c0b..8aa7f0e 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c
@@ -48,14 +48,6 @@
 #include "stm32ldiscovery.h"
 
 /****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
  * Public Functions
  ****************************************************************************/
 
@@ -63,16 +55,17 @@
  * Name: stm32_boardinitialize
  *
  * Description:
- *   All STM32 architectures must provide the following entry point.  This entry point
- *   is called early in the initialization -- after all memory has been configured
- *   and mapped but before any devices have been initialized.
+ *   All STM32 architectures must provide the following entry point.
+ *   This entry point is called early in the initialization -- after all
+ *   memory has been configured and mapped but before any devices have been
+ *   initialized.
  *
  ****************************************************************************/
 
 void stm32_boardinitialize(void)
 {
-  /* Configure SPI chip selects if 1) SPI is not disabled, and 2) the weak function
-   * stm32_spidev_initialize() has been brought into the link.
+  /* Configure SPI chip selects if 1) SPI is not disabled, and 2) the weak
+   * function stm32_spidev_initialize() has been brought into the link.
    */
 
 #if defined(CONFIG_STM32_SPI1) || defined(CONFIG_STM32_SPI2) || defined(CONFIG_STM32_SPI3)
@@ -93,22 +86,23 @@ void stm32_boardinitialize(void)
  * 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.
+ *   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)
 {
-#ifndef CONFIG_LIB_BOARDCTL
-  /* Perform board initialization here instead of from the board_app_initialize(). */
+  /* Perform board initialization here instead of from the
+   * board_app_initialize().
+   */
 
   stm32_bringup();
-#endif
 }
 #endif
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c
index ad6d370..13ce8c9 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c
@@ -39,17 +39,20 @@
 
 #include <nuttx/config.h>
 
+#include <sys/types.h>
+#include <sys/mount.h>
 #include <syslog.h>
 
-#include <nuttx/board.h>
 #include <nuttx/input/buttons.h>
+#include <nuttx/leds/userled.h>
+#include <nuttx/board.h>
 
 #include <arch/board/board.h>
 
 #include "stm32ldiscovery.h"
 
 #ifdef CONFIG_SENSORS_QENCODER
-#include "board_qencoder.h"
+#  include "board_qencoder.h"
 #endif
 
 /****************************************************************************
@@ -74,7 +77,34 @@ int stm32_bringup(void)
 {
   int ret = OK;
 
+#ifdef CONFIG_FS_PROCFS
+  /* Mount the procfs file system */
+
+  ret = mount(NULL, "/proc", "procfs", 0, NULL);
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", ret);
+    }
+#endif
+
+#if defined(CONFIG_USERLED) && !defined(CONFIG_ARCH_LEDS)
+#ifdef CONFIG_USERLED_LOWER
+  /* Register the LED driver */
+
+  ret = userled_lower_initialize("/dev/userleds");
+  if (ret != OK)
+    {
+      syslog(LOG_ERR, "ERROR: userled_lower_initialize() failed: %d\n", ret);
+    }
+#else
+  /* Enable USER LED support for some other purpose */
+
+  board_userled_initialize();
+#endif /* CONFIG_USERLED_LOWER */
+#endif /* CONFIG_USERLED && !CONFIG_ARCH_LEDS */
+
 #ifdef CONFIG_BUTTONS
+#ifdef CONFIG_BUTTONS_LOWER
   /* Register the BUTTON driver */
 
   ret = btn_lower_initialize("/dev/buttons");
@@ -82,7 +112,12 @@ int stm32_bringup(void)
     {
       syslog(LOG_ERR, "ERROR: btn_lower_initialize() failed: %d\n", ret);
     }
-#endif
+#else
+  /* Enable BUTTON support for some other purpose */
+
+  board_button_initialize();
+#endif /* CONFIG_BUTTONS_LOWER */
+#endif /* CONFIG_BUTTONS */
 
 #ifdef CONFIG_STM32_LCD
   /* Initialize the SLCD and register the SLCD device as /dev/slcd0 */
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h b/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h
index 8e98af0..fbc68e2 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h
@@ -34,8 +34,8 @@
  *
  ****************************************************************************/
 
-#ifndef __BOARDS_ARM_STM32_STM32F3DISCOVERY_SRC_STM32F3DISCOVERY_H
-#define __BOARDS_ARM_STM32_STM32F3DISCOVERY_SRC_STM32F3DISCOVERY_H
+#ifndef __BOARDS_ARM_STM32_STM32LDISCOVERY_SRC_STM32LDISCOVERY_H
+#define __BOARDS_ARM_STM32_STM32LDISCOVERY_SRC_STM32LDISCOVERY_H
 
 /****************************************************************************
  * Included Files
@@ -289,4 +289,4 @@ int stm32_pwm_setup(void);
 #endif
 
 #endif /* __ASSEMBLY__ */
-#endif /* __BOARDS_ARM_STM32_STM32F3DISCOVERY_SRC_STM32F3DISCOVERY_H */
+#endif /* __BOARDS_ARM_STM32_STM32LDISCOVERY_SRC_STM32LDISCOVERY_H */