nucleo-f302r8: refactor bringup logic for consistency with other boards
This commit is contained in:
parent
13816de7ac
commit
dab6140082
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
include $(TOPDIR)/Make.defs
|
include $(TOPDIR)/Make.defs
|
||||||
|
|
||||||
CSRCS = stm32_boot.c
|
CSRCS = stm32_boot.c stm32_bringup.c
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_LEDS),y)
|
ifeq ($(CONFIG_ARCH_LEDS),y)
|
||||||
CSRCS += stm32_autoleds.c
|
CSRCS += stm32_autoleds.c
|
||||||
@ -33,7 +33,7 @@ CSRCS += stm32_buttons.c
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_LIB_BOARDCTL),y)
|
ifeq ($(CONFIG_LIB_BOARDCTL),y)
|
||||||
CSRCS += stm32_appinitialize.c
|
CSRCS += stm32_appinit.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_PWM),y)
|
ifeq ($(CONFIG_PWM),y)
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* LED definitions **********************************************************/
|
/* LED definitions **********************************************************/
|
||||||
|
|
||||||
/* The Nucleo F302R8 board has three LEDs. Two of these are controlled by
|
/* The Nucleo F302R8 board has three LEDs. Two of these are controlled by
|
||||||
* logic on the board and are not available for software control:
|
* logic on the board and are not available for software control:
|
||||||
*
|
*
|
||||||
@ -72,6 +73,7 @@
|
|||||||
#define LED_DRIVER_PATH "/dev/userleds"
|
#define LED_DRIVER_PATH "/dev/userleds"
|
||||||
|
|
||||||
/* Button definitions *******************************************************/
|
/* Button definitions *******************************************************/
|
||||||
|
|
||||||
/* The Nucleo F302R8 supports two buttons; only one button is controllable
|
/* The Nucleo F302R8 supports two buttons; only one button is controllable
|
||||||
* by software:
|
* by software:
|
||||||
*
|
*
|
||||||
@ -100,6 +102,26 @@
|
|||||||
* Public Function Prototypes
|
* Public Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* 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
|
* Name: stm32_pwm_setup
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* boards/arm/stm32/nucleo-f302r8/src/stm32_appinitialize.c
|
* boards/arm/stm32/nucleo-f302r8/src/stm32_appinit.c
|
||||||
*
|
*
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
@ -24,11 +24,7 @@
|
|||||||
|
|
||||||
#include <nuttx/config.h>
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <syslog.h>
|
|
||||||
|
|
||||||
#include <nuttx/board.h>
|
#include <nuttx/board.h>
|
||||||
#include <nuttx/leds/userled.h>
|
|
||||||
|
|
||||||
#include "nucleo-f302r8.h"
|
#include "nucleo-f302r8.h"
|
||||||
|
|
||||||
@ -36,15 +32,8 @@
|
|||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#undef HAVE_LEDS
|
#ifndef OK
|
||||||
#undef HAVE_DAC
|
# define OK 0
|
||||||
|
|
||||||
#if !defined(CONFIG_ARCH_LEDS) && defined(CONFIG_USERLED_LOWER)
|
|
||||||
# define HAVE_LEDS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_DAC)
|
|
||||||
# define HAVE_DAC 1
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -78,29 +67,13 @@
|
|||||||
|
|
||||||
int board_app_initialize(uintptr_t arg)
|
int board_app_initialize(uintptr_t arg)
|
||||||
{
|
{
|
||||||
int ret;
|
#ifdef CONFIG_BOARD_LATE_INITIALIZE
|
||||||
|
/* Board initialization already performed by board_late_initialize() */
|
||||||
|
|
||||||
#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_PWM
|
|
||||||
/* Initialize PWM and register the PWM device. */
|
|
||||||
|
|
||||||
ret = stm32_pwm_setup();
|
|
||||||
if (ret < 0)
|
|
||||||
{
|
|
||||||
syslog(LOG_ERR, "ERROR: stm32_pwm_setup() failed: %d\n", ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
UNUSED(ret);
|
|
||||||
return OK;
|
return OK;
|
||||||
|
#else
|
||||||
|
/* Perform board-specific initialization */
|
||||||
|
|
||||||
|
return stm32_bringup();
|
||||||
|
#endif
|
||||||
}
|
}
|
@ -68,3 +68,26 @@ void stm32_boardinitialize(void)
|
|||||||
board_autoled_initialize();
|
board_autoled_initialize();
|
||||||
#endif
|
#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
|
||||||
|
112
boards/arm/stm32/nucleo-f302r8/src/stm32_bringup.c
Normal file
112
boards/arm/stm32/nucleo-f302r8/src/stm32_bringup.c
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* boards/arm/stm32/nucleo-f302r8/src/stm32_bringup.c
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership. The
|
||||||
|
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the
|
||||||
|
* License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Included Files
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
|
#include <nuttx/board.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_USERLED
|
||||||
|
# include <nuttx/leds/userled.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_BUTTONS
|
||||||
|
# include <nuttx/input/buttons.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "nucleo-f302r8.h"
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* 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
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: stm32_bringup
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Perform architecture-specific initialization
|
||||||
|
*
|
||||||
|
* CONFIG_BOARD_LATE_INITIALIZE=y :
|
||||||
|
* Called from board_late_initialize().
|
||||||
|
*
|
||||||
|
* CONFIG_BOARD_LATE_INITIALIZE=n && CONFIG_LIB_BOARDCTL=y :
|
||||||
|
* Called from the NSH library
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int stm32_bringup(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
#ifdef CONFIG_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 */
|
||||||
|
|
||||||
|
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_PWM
|
||||||
|
/* Initialize PWM and register the PWM device. */
|
||||||
|
|
||||||
|
ret = stm32_pwm_setup();
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
syslog(LOG_ERR, "ERROR: stm32_pwm_setup() failed: %d\n", ret);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
UNUSED(ret);
|
||||||
|
return OK;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user