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 <juha.niska...@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 <juha.niska...@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 */