From 6b0cf1652e18e02da9e182062fca5662e3f936d3 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sun, 22 Jan 2023 11:38:49 -0500 Subject: [PATCH] WIP: nuttx common early pin init per architecture --- .../fmu-v6x/extras/ark_fmu-v6x_bootloader.bin | Bin 45716 -> 46056 bytes .../ark/fmu-v6x/nuttx-config/include/board.h | 30 +-- .../nuttx-config/scripts/bootloader_script.ld | 4 +- .../fmu-v6x/nuttx-config/scripts/script.ld | 4 +- boards/ark/fmu-v6x/src/CMakeLists.txt | 2 + boards/ark/fmu-v6x/src/board_config.h | 32 +-- boards/ark/fmu-v6x/src/bootloader_main.c | 23 --- boards/ark/fmu-v6x/src/init.c | 29 ++- boards/ark/fmu-v6x/src/led.c | 2 +- boards/ark/fmu-v6x/src/usb.c | 33 +-- boards/px4/fmu-v5/src/CMakeLists.txt | 1 + boards/px4/fmu-v5/src/board_config.h | 25 +-- boards/px4/fmu-v5/src/can.c | 11 +- boards/px4/fmu-v5/src/init.c | 22 +- boards/px4/fmu-v5/src/usb.c | 31 --- boards/px4/fmu-v5x/src/CMakeLists.txt | 1 + boards/px4/fmu-v5x/src/board_config.h | 22 +- boards/px4/fmu-v5x/src/can.c | 2 +- boards/px4/fmu-v5x/src/init.cpp | 14 +- boards/px4/fmu-v5x/src/usb.c | 33 +-- .../fmu-v6x/extras/px4_fmu-v6x_bootloader.bin | Bin 46688 -> 46700 bytes .../px4/fmu-v6x/nuttx-config/include/board.h | 30 +-- .../nuttx-config/scripts/bootloader_script.ld | 4 +- .../fmu-v6x/nuttx-config/scripts/script.ld | 4 +- boards/px4/fmu-v6x/src/CMakeLists.txt | 2 + boards/px4/fmu-v6x/src/board_config.h | 13 +- boards/px4/fmu-v6x/src/can.c | 2 +- boards/px4/fmu-v6x/src/init.c | 16 +- boards/px4/fmu-v6x/src/led.c | 4 +- boards/px4/fmu-v6x/src/spi.cpp | 2 +- boards/px4/fmu-v6x/src/usb.c | 33 +-- .../nuttx/src/px4/stm/stm32f7/CMakeLists.txt | 1 + .../px4/stm/stm32f7/board_init/CMakeLists.txt | 36 ++++ .../px4/stm/stm32f7/board_init/board_init.cpp | 188 ++++++++++++++++++ .../stm/stm32f7/include/px4_arch/board_init.h | 39 ++++ .../nuttx/src/px4/stm/stm32h7/CMakeLists.txt | 1 + .../px4/stm/stm32h7/board_init/CMakeLists.txt | 36 ++++ .../px4/stm/stm32h7/board_init/board_init.cpp | 188 ++++++++++++++++++ .../stm/stm32h7/include/px4_arch/board_init.h | 39 ++++ 39 files changed, 610 insertions(+), 349 deletions(-) create mode 100644 platforms/nuttx/src/px4/stm/stm32f7/board_init/CMakeLists.txt create mode 100644 platforms/nuttx/src/px4/stm/stm32f7/board_init/board_init.cpp create mode 100644 platforms/nuttx/src/px4/stm/stm32f7/include/px4_arch/board_init.h create mode 100644 platforms/nuttx/src/px4/stm/stm32h7/board_init/CMakeLists.txt create mode 100644 platforms/nuttx/src/px4/stm/stm32h7/board_init/board_init.cpp create mode 100644 platforms/nuttx/src/px4/stm/stm32h7/include/px4_arch/board_init.h diff --git a/boards/ark/fmu-v6x/extras/ark_fmu-v6x_bootloader.bin b/boards/ark/fmu-v6x/extras/ark_fmu-v6x_bootloader.bin index bbe99d9659f895452a18064d6a064042666ed2e6..3b9fced00f49c27b11b37562c993616772aa62dc 100755 GIT binary patch delta 10391 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 b#^6P&PGlr~cnqY;0MH-;d_nF%QT~4cu*&yq delta 10005 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 diff --git a/boards/ark/fmu-v6x/src/bootloader_main.c b/boards/ark/fmu-v6x/src/bootloader_main.c index 7a3ef5e019..a42de95c75 100644 --- a/boards/ark/fmu-v6x/src/bootloader_main.c +++ b/boards/ark/fmu-v6x/src/bootloader_main.c @@ -46,33 +46,10 @@ #include #include #include "arm_internal.h" -#include #include extern int sercon_main(int c, char **argv); -__EXPORT void board_on_reset(int status) {} - -__EXPORT void stm32_boardinitialize(void) -{ - /* configure pins */ - const uint32_t list[] = PX4_GPIO_INIT_LIST; - - for (size_t gpio = 0; gpio < arraySize(list); gpio++) { - if (list[gpio] != 0) { - px4_arch_configgpio(list[gpio]); - } - } - - /* configure USB interfaces */ - stm32_usbinitialize(); -} - -__EXPORT int board_app_initialize(uintptr_t arg) -{ - return 0; -} - void board_late_initialize(void) { sercon_main(0, NULL); diff --git a/boards/ark/fmu-v6x/src/init.c b/boards/ark/fmu-v6x/src/init.c index fddc066d1e..3d7e8309cc 100644 --- a/boards/ark/fmu-v6x/src/init.c +++ b/boards/ark/fmu-v6x/src/init.c @@ -34,7 +34,7 @@ /** * @file init.c * - * ARKFMU-specific early startup code. This file implements the + * board-specific early startup code. This file implements the * board_app_initialize() function that is called early by nsh during startup. * * Code here is run before the rcS script is invoked; it should start required @@ -69,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -165,23 +166,12 @@ __EXPORT void board_on_reset(int status) __EXPORT void stm32_boardinitialize(void) { - board_on_reset(-1); /* Reset PWM first thing */ + px4_arch_pin_initialize(); /* configure LEDs */ - board_autoled_initialize(); - /* configure pins */ - - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - - /* configure USB interfaces */ - - stm32_usbinitialize(); - VDD_3V3_ETH_POWER_EN(true); - } /**************************************************************************** @@ -211,7 +201,10 @@ stm32_boardinitialize(void) __EXPORT int board_app_initialize(uintptr_t arg) { +#if !defined(BOOTLOADER) + /* Power on Interfaces */ + VDD_3V3_SD_CARD_EN(true); VDD_5V_PERIPH_EN(true); VDD_5V_HIPOWER_EN(true); VDD_3V3_SENSORS4_EN(true); @@ -249,11 +242,11 @@ __EXPORT int board_app_initialize(uintptr_t arg) syslog(LOG_ERR, "[boot] DMA alloc FAILED\n"); } -#if defined(SERIAL_HAVE_RXDMA) +# if defined(SERIAL_HAVE_RXDMA) // set up the serial DMA polling at 1ms intervals for received bytes that have not triggered a DMA event. static struct hrt_call serial_dma_call; hrt_call_every(&serial_dma_call, 1000, 1000, (hrt_callout)stm32_serial_dma_poll, NULL); -#endif +# endif /* initial LED state */ drv_led_start(); @@ -270,7 +263,7 @@ __EXPORT int board_app_initialize(uintptr_t arg) VDD_3V3_SD_CARD_EN(true); usleep(500 * 1000); -#ifdef CONFIG_MMCSD +# ifdef CONFIG_MMCSD int ret = stm32_sdio_initialize(); if (ret != OK) { @@ -278,11 +271,13 @@ __EXPORT int board_app_initialize(uintptr_t arg) return ret; } -#endif /* CONFIG_MMCSD */ +# endif /* CONFIG_MMCSD */ /* Configure the SPIX_SYNC output */ spix_sync_servo_init(BOARD_SPIX_SYNC_FREQ); spix_sync_servo_set(0, 150); +#endif /* !defined(BOOTLOADER) */ + return OK; } diff --git a/boards/ark/fmu-v6x/src/led.c b/boards/ark/fmu-v6x/src/led.c index 7730150731..ca0e079577 100644 --- a/boards/ark/fmu-v6x/src/led.c +++ b/boards/ark/fmu-v6x/src/led.c @@ -34,7 +34,7 @@ /** * @file led.c * - * ARKFMU LED backend. + * board LED backend. */ #include diff --git a/boards/ark/fmu-v6x/src/usb.c b/boards/ark/fmu-v6x/src/usb.c index 1c64e94ba1..3b61b2f8e8 100644 --- a/boards/ark/fmu-v6x/src/usb.c +++ b/boards/ark/fmu-v6x/src/usb.c @@ -51,43 +51,12 @@ #include #include -#include "arm_internal.h" +#include #include #include #include #include "board_config.h" -/************************************************************************************ - * Definitions - ************************************************************************************/ - -/************************************************************************************ - * Private Functions - ************************************************************************************/ - -/************************************************************************************ - * Public Functions - ************************************************************************************/ - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the ARKFMU board. - * - ************************************************************************************/ - -__EXPORT void stm32_usbinitialize(void) -{ - /* The OTG FS has an internal soft pull-up */ - - /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ - -#ifdef CONFIG_STM32H7_OTGFS - stm32_configgpio(GPIO_OTGFS_VBUS); -#endif -} - /************************************************************************************ * Name: stm32_usbsuspend * diff --git a/boards/px4/fmu-v5/src/CMakeLists.txt b/boards/px4/fmu-v5/src/CMakeLists.txt index 5323380e37..502ae036a5 100644 --- a/boards/px4/fmu-v5/src/CMakeLists.txt +++ b/boards/px4/fmu-v5/src/CMakeLists.txt @@ -51,6 +51,7 @@ add_dependencies(drivers_board nuttx_context) target_link_libraries(drivers_board PRIVATE + arch_board_init arch_board_hw_info arch_io_pins arch_spi diff --git a/boards/px4/fmu-v5/src/board_config.h b/boards/px4/fmu-v5/src/board_config.h index 8246664dec..d6b50f5a38 100644 --- a/boards/px4/fmu-v5/src/board_config.h +++ b/boards/px4/fmu-v5/src/board_config.h @@ -34,7 +34,7 @@ /** * @file board_config.h * - * PX4FMU-v5 internal definitions + * board internal definitions */ #pragma once @@ -336,7 +336,7 @@ #define SPEKTRUM_POWER_CONFIG() px4_arch_configgpio(GPIO_VDD_3V3_SPEKTRUM_POWER_EN) /* - * FMUv5 has a separate RC_IN + * board has a separate RC_IN * * GPIO PPM_IN on PI5 T8CH1 * SPEKTRUM_RX (it's TX or RX in Bind) on UART6 PG9 (NOT FMUv5 test HW ONLY) @@ -417,15 +417,6 @@ PX4_ADC_GPIO, \ GPIO_HW_REV_DRIVE, \ GPIO_HW_VER_DRIVE, \ - GPIO_CAN1_TX, \ - GPIO_CAN1_RX, \ - GPIO_CAN2_TX, \ - GPIO_CAN2_RX, \ - GPIO_CAN3_TX, \ - GPIO_CAN3_RX, \ - GPIO_CAN1_SILENT_S0, \ - GPIO_CAN2_SILENT_S1, \ - GPIO_CAN3_SILENT_S2, \ GPIO_HEATER_OUTPUT, \ GPIO_nPOWER_IN_A, \ GPIO_nPOWER_IN_B, \ @@ -442,15 +433,7 @@ GPIO_RSSI_IN_INIT, \ GPIO_nSAFETY_SWITCH_LED_OUT_INIT, \ GPIO_SAFETY_SWITCH_IN, \ - GPIO_nARMED_INIT, \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SDA), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SDA), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SDA), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SDA), \ + GPIO_nARMED_INIT \ } #define BOARD_ENABLE_CONSOLE_BUFFER @@ -494,8 +477,6 @@ int stm32_sdio_initialize(void); extern void stm32_spiinitialize(void); -extern void stm32_usbinitialize(void); - extern void board_peripheral_reset(int ms); #include diff --git a/boards/px4/fmu-v5/src/can.c b/boards/px4/fmu-v5/src/can.c index fb3ecceb2d..31d366bb9c 100644 --- a/boards/px4/fmu-v5/src/can.c +++ b/boards/px4/fmu-v5/src/can.c @@ -75,19 +75,17 @@ uint16_t board_get_can_interfaces(void) #include "stm32_can.h" #include "board_config.h" -#ifdef CONFIG_CAN - /************************************************************************************ * Pre-processor Definitions ************************************************************************************/ /* Configuration ********************************************************************/ -#if defined(CONFIG_STM32_CAN1) && defined(CONFIG_STM32_CAN2) +#if defined(CONFIG_STM32F7_CAN1) && defined(CONFIG_STM32F7_CAN2) # warning "Both CAN1 and CAN2 are enabled. Assuming only CAN1." -# undef CONFIG_STM32_CAN2 +# undef CONFIG_STM32F7_CAN2 #endif -#ifdef CONFIG_STM32_CAN1 +#ifdef CONFIG_STM32F7_CAN1 # define CAN_PORT 1 #else # define CAN_PORT 2 @@ -145,7 +143,4 @@ int can_devinit(void) return OK; } - -#endif - #endif /* CONFIG_CAN */ diff --git a/boards/px4/fmu-v5/src/init.c b/boards/px4/fmu-v5/src/init.c index cfec81bae6..c6257cef40 100644 --- a/boards/px4/fmu-v5/src/init.c +++ b/boards/px4/fmu-v5/src/init.c @@ -35,10 +35,10 @@ * @file init.c * * PX4FMU-specific early startup code. This file implements the - * board_app_initializ() function that is called early by nsh during startup. + * board_app_initialize() function that is called early by nsh during startup. * * Code here is run before the rcS script is invoked; it should start required - * subsystems and perform board-specific initialisation. + * subsystems and perform board-specific initialization. */ /**************************************************************************** @@ -66,10 +66,11 @@ #include #include "arm_internal.h" -#include #include #include #include +#include +#include #include #include #include @@ -161,22 +162,10 @@ __EXPORT void board_on_reset(int status) __EXPORT void stm32_boardinitialize(void) { - board_on_reset(-1); /* Reset PWM first thing */ + px4_arch_pin_initialize(); /* configure LEDs */ - board_autoled_initialize(); - - /* configure pins */ - - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - board_control_spi_sensors_power_configgpio(); - - /* configure USB interfaces */ - - stm32_usbinitialize(); - } /**************************************************************************** @@ -204,7 +193,6 @@ stm32_boardinitialize(void) * ****************************************************************************/ - __EXPORT int board_app_initialize(uintptr_t arg) { /* Power on Interfaces */ diff --git a/boards/px4/fmu-v5/src/usb.c b/boards/px4/fmu-v5/src/usb.c index 0e28676586..3b61b2f8e8 100644 --- a/boards/px4/fmu-v5/src/usb.c +++ b/boards/px4/fmu-v5/src/usb.c @@ -57,37 +57,6 @@ #include #include "board_config.h" -/************************************************************************************ - * Definitions - ************************************************************************************/ - -/************************************************************************************ - * Private Functions - ************************************************************************************/ - -/************************************************************************************ - * Public Functions - ************************************************************************************/ - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the PX4FMU board. - * - ************************************************************************************/ - -__EXPORT void stm32_usbinitialize(void) -{ - /* The OTG FS has an internal soft pull-up */ - - /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ - -#ifdef CONFIG_STM32F7_OTGFS - stm32_configgpio(GPIO_OTGFS_VBUS); -#endif -} - /************************************************************************************ * Name: stm32_usbsuspend * diff --git a/boards/px4/fmu-v5x/src/CMakeLists.txt b/boards/px4/fmu-v5x/src/CMakeLists.txt index 684b11736e..346552cb93 100644 --- a/boards/px4/fmu-v5x/src/CMakeLists.txt +++ b/boards/px4/fmu-v5x/src/CMakeLists.txt @@ -48,6 +48,7 @@ add_dependencies(drivers_board platform_gpio_mcp23009) target_link_libraries(drivers_board PRIVATE + arch_board_init arch_io_pins arch_spi arch_board_hw_info diff --git a/boards/px4/fmu-v5x/src/board_config.h b/boards/px4/fmu-v5x/src/board_config.h index 281c769f26..10bf1d62e5 100644 --- a/boards/px4/fmu-v5x/src/board_config.h +++ b/boards/px4/fmu-v5x/src/board_config.h @@ -34,7 +34,7 @@ /** * @file board_config.h * - * PX4FMU-v5 internal definitions + * board internal definitions */ #pragma once @@ -334,7 +334,7 @@ #define SPEKTRUM_POWER(_on_true) VDD_3V3_SPEKTRUM_POWER_EN(_on_true) /* - * FMUv5X has a separate RC_IN + * board has a separate RC_IN * * GPIO PPM_IN on PI5 T8CH1 * SPEKTRUM_RX (it's TX or RX in Bind) on UART6 PC7 @@ -368,7 +368,7 @@ #define BOARD_ADC_USB_CONNECTED (px4_arch_gpioread(GPIO_OTGFS_VBUS)) #define BOARD_ADC_USB_VALID (!px4_arch_gpioread(GPIO_nVDD_USB_VALID)) -/* FMUv5X never powers off the Servo rail */ +/* board never powers off the Servo rail */ #define BOARD_ADC_SERVO_VALID (1) @@ -408,10 +408,6 @@ #define PX4_GPIO_INIT_LIST { \ PX4_ADC_GPIO, \ GPIO_HW_VER_REV_DRIVE, \ - GPIO_CAN1_TX, \ - GPIO_CAN1_RX, \ - GPIO_CAN2_TX, \ - GPIO_CAN2_RX, \ GPIO_HEATER_OUTPUT, \ GPIO_nPOWER_IN_A, \ GPIO_nPOWER_IN_B, \ @@ -432,15 +428,7 @@ GPIO_nSAFETY_SWITCH_LED_OUT_INIT, \ GPIO_SAFETY_SWITCH_IN, \ GPIO_PG6, \ - GPIO_nARMED_INIT, \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SDA), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SDA), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SDA), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SCL), \ - PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SDA), \ + GPIO_nARMED_INIT \ } #define BOARD_ENABLE_CONSOLE_BUFFER @@ -486,8 +474,6 @@ int stm32_sdio_initialize(void); extern void stm32_spiinitialize(void); -extern void stm32_usbinitialize(void); - extern void board_peripheral_reset(int ms); #include diff --git a/boards/px4/fmu-v5x/src/can.c b/boards/px4/fmu-v5x/src/can.c index bb777d8f04..9250993a2b 100644 --- a/boards/px4/fmu-v5x/src/can.c +++ b/boards/px4/fmu-v5x/src/can.c @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file px4fmu_can.c + * @file can.c * * Board-specific CAN functions. */ diff --git a/boards/px4/fmu-v5x/src/init.cpp b/boards/px4/fmu-v5x/src/init.cpp index a6606761db..beaf4f0c3c 100644 --- a/boards/px4/fmu-v5x/src/init.cpp +++ b/boards/px4/fmu-v5x/src/init.cpp @@ -68,6 +68,7 @@ #include #include #include +#include #include #include #include @@ -163,23 +164,12 @@ __EXPORT void board_on_reset(int status) extern "C" __EXPORT void stm32_boardinitialize(void) { - board_on_reset(-1); /* Reset PWM first thing */ + px4_arch_pin_initialize(); /* configure LEDs */ - board_autoled_initialize(); - /* configure pins */ - - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - - /* configure USB interfaces */ - - stm32_usbinitialize(); - VDD_3V3_ETH_POWER_EN(true); - } /**************************************************************************** diff --git a/boards/px4/fmu-v5x/src/usb.c b/boards/px4/fmu-v5x/src/usb.c index 28965c442d..3b61b2f8e8 100644 --- a/boards/px4/fmu-v5x/src/usb.c +++ b/boards/px4/fmu-v5x/src/usb.c @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file px4fmu_usb.c + * @file usb.c * * Board-specific USB functions. */ @@ -57,37 +57,6 @@ #include #include "board_config.h" -/************************************************************************************ - * Definitions - ************************************************************************************/ - -/************************************************************************************ - * Private Functions - ************************************************************************************/ - -/************************************************************************************ - * Public Functions - ************************************************************************************/ - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the PX4FMU board. - * - ************************************************************************************/ - -__EXPORT void stm32_usbinitialize(void) -{ - /* The OTG FS has an internal soft pull-up */ - - /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ - -#ifdef CONFIG_STM32F7_OTGFS - stm32_configgpio(GPIO_OTGFS_VBUS); -#endif -} - /************************************************************************************ * Name: stm32_usbsuspend * diff --git a/boards/px4/fmu-v6x/extras/px4_fmu-v6x_bootloader.bin b/boards/px4/fmu-v6x/extras/px4_fmu-v6x_bootloader.bin index 9668fdb20b107f7ce6facff73cf1c71d5655ac66..bd7a4e4082a23eaea3cac29b9bcf23924abd9c14 100755 GIT binary patch delta 3324 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 R6<8JkEEEA^DeVs#{|3eE;4c6G delta 3357 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 diff --git a/boards/px4/fmu-v6x/src/can.c b/boards/px4/fmu-v6x/src/can.c index 1f4e1f28a3..cdebe7a3ad 100644 --- a/boards/px4/fmu-v6x/src/can.c +++ b/boards/px4/fmu-v6x/src/can.c @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file px4fmu_can.c + * @file can.c * * Board-specific CAN functions. */ diff --git a/boards/px4/fmu-v6x/src/init.c b/boards/px4/fmu-v6x/src/init.c index cd6714af16..ec98efb197 100644 --- a/boards/px4/fmu-v6x/src/init.c +++ b/boards/px4/fmu-v6x/src/init.c @@ -34,7 +34,7 @@ /** * @file init.c * - * PX4FMU-specific early startup code. This file implements the + * board-specific early startup code. This file implements the * board_app_initialize() function that is called early by nsh during startup. * * Code here is run before the rcS script is invoked; it should start required @@ -68,6 +68,7 @@ #include #include #include +#include #include #include #include @@ -162,23 +163,12 @@ __EXPORT void board_on_reset(int status) __EXPORT void stm32_boardinitialize(void) { - board_on_reset(-1); /* Reset PWM first thing */ + px4_arch_pin_initialize(); /* configure LEDs */ - board_autoled_initialize(); - /* configure pins */ - - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - - /* configure USB interfaces */ - - stm32_usbinitialize(); - VDD_3V3_ETH_POWER_EN(true); - } /**************************************************************************** diff --git a/boards/px4/fmu-v6x/src/led.c b/boards/px4/fmu-v6x/src/led.c index bff4b09864..ca0e079577 100644 --- a/boards/px4/fmu-v6x/src/led.c +++ b/boards/px4/fmu-v6x/src/led.c @@ -32,9 +32,9 @@ ****************************************************************************/ /** - * @file px4fmu2_led.c + * @file led.c * - * PX4FMU LED backend. + * board LED backend. */ #include diff --git a/boards/px4/fmu-v6x/src/spi.cpp b/boards/px4/fmu-v6x/src/spi.cpp index d3bbdb9315..84f6379595 100644 --- a/boards/px4/fmu-v6x/src/spi.cpp +++ b/boards/px4/fmu-v6x/src/spi.cpp @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (C) 2020, 2022 PX4 Development Team. All rights reserved. + * Copyright (C) 2020-2022 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/boards/px4/fmu-v6x/src/usb.c b/boards/px4/fmu-v6x/src/usb.c index 6d42476b71..3b61b2f8e8 100644 --- a/boards/px4/fmu-v6x/src/usb.c +++ b/boards/px4/fmu-v6x/src/usb.c @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file px4fmu_usb.c + * @file usb.c * * Board-specific USB functions. */ @@ -57,37 +57,6 @@ #include #include "board_config.h" -/************************************************************************************ - * Definitions - ************************************************************************************/ - -/************************************************************************************ - * Private Functions - ************************************************************************************/ - -/************************************************************************************ - * Public Functions - ************************************************************************************/ - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the PX4FMU board. - * - ************************************************************************************/ - -__EXPORT void stm32_usbinitialize(void) -{ - /* The OTG FS has an internal soft pull-up */ - - /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ - -#ifdef CONFIG_STM32H7_OTGFS - stm32_configgpio(GPIO_OTGFS_VBUS); -#endif -} - /************************************************************************************ * Name: stm32_usbsuspend * diff --git a/platforms/nuttx/src/px4/stm/stm32f7/CMakeLists.txt b/platforms/nuttx/src/px4/stm/stm32f7/CMakeLists.txt index b55e895db7..fa73718f88 100644 --- a/platforms/nuttx/src/px4/stm/stm32f7/CMakeLists.txt +++ b/platforms/nuttx/src/px4/stm/stm32f7/CMakeLists.txt @@ -31,6 +31,7 @@ # ############################################################################ +add_subdirectory(board_init) add_subdirectory(../stm32_common/adc adc) add_subdirectory(../stm32_common/board_critmon board_critmon) diff --git a/platforms/nuttx/src/px4/stm/stm32f7/board_init/CMakeLists.txt b/platforms/nuttx/src/px4/stm/stm32f7/board_init/CMakeLists.txt new file mode 100644 index 0000000000..004241394d --- /dev/null +++ b/platforms/nuttx/src/px4/stm/stm32f7/board_init/CMakeLists.txt @@ -0,0 +1,36 @@ +############################################################################ +# +# Copyright (c) 2023 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +px4_add_library(arch_board_init + board_init.cpp +) diff --git a/platforms/nuttx/src/px4/stm/stm32f7/board_init/board_init.cpp b/platforms/nuttx/src/px4/stm/stm32f7/board_init/board_init.cpp new file mode 100644 index 0000000000..9060de724c --- /dev/null +++ b/platforms/nuttx/src/px4/stm/stm32f7/board_init/board_init.cpp @@ -0,0 +1,188 @@ +/**************************************************************************** + * + * Copyright (c) 2023 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +#include "chip.h" +#include "stm32_gpio.h" +#include "board_config.h" + +#include +#include + +#define SPI_PIN_OFF(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz)) +#define SDMMC_PIN_OFF(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_INPUT|GPIO_FLOAT |GPIO_SPEED_2MHz)) + +void px4_arch_pin_initialize() +{ + // Reset PWM first thing + board_on_reset(-1); + + // configure pins +#if defined(PX4_GPIO_INIT_LIST) + const uint32_t list[] = PX4_GPIO_INIT_LIST; + + for (auto &gpio : list) { + if (gpio != 0) { + px4_arch_configgpio(gpio); + } + } + +#endif // PX4_GPIO_INIT_LIST + + + + +// CAN + +#if defined(GPIO_CAN1_RX) + px4_arch_configgpio(GPIO_CAN1_RX); +#endif // GPIO_CAN1_RX +#if defined(GPIO_CAN1_TX) + px4_arch_configgpio(GPIO_CAN1_TX); +#endif // GPIO_CAN1_TX +#if defined(GPIO_CAN1_SILENT_S0) + px4_arch_configgpio(GPIO_CAN1_SILENT_S0); +#endif // GPIO_CAN1_SILENT_S0 + +#if defined(GPIO_CAN2_RX) + px4_arch_configgpio(GPIO_CAN2_RX); +#endif // GPIO_CAN2_RX +#if defined(GPIO_CAN2_TX) + px4_arch_configgpio(GPIO_CAN2_TX); +#endif // GPIO_CAN2_TX +#if defined(GPIO_CAN2_SILENT_S0) + px4_arch_configgpio(GPIO_CAN2_SILENT_S0); +#endif // GPIO_CAN2_SILENT_S0 + +#if defined(GPIO_CAN3_RX) + px4_arch_configgpio(GPIO_CAN3_RX); +#endif // GPIO_CAN3_RX +#if defined(GPIO_CAN3_TX) + px4_arch_configgpio(GPIO_CAN3_TX); +#endif // GPIO_CAN3_TX +#if defined(GPIO_CAN3_SILENT_S0) + px4_arch_configgpio(GPIO_CAN3_SILENT_S0); +#endif // GPIO_CAN3_SILENT_S0 + + + + +// I2C + +#if defined(CONFIG_STM32F7_I2C1) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SDA)); +#endif // CONFIG_STM32F7_I2C1 + +#if defined(CONFIG_STM32F7_I2C2) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SDA)); +#endif // CONFIG_STM32F7_I2C2 + +#if defined(CONFIG_STM32F7_I2C3) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SDA)); +#endif // CONFIG_STM32F7_I2C3 + +#if defined(CONFIG_STM32F7_I2C4) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SDA)); +#endif // CONFIG_STM32F7_I2C4 + + + + +// SPI + +#if defined(CONFIG_STM32F7_SPI1) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI1_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI1_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI1_MOSI)); +#endif // CONFIG_STM32_SPI1 +#if defined(CONFIG_STM32F7_SPI2) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI2_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI2_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI2_MOSI)); +#endif // CONFIG_STM32_SPI2 +#if defined(CONFIG_STM32F7_SPI3) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI3_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI3_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI3_MOSI)); +#endif // CONFIG_STM32_SPI3 +#if defined(CONFIG_STM32F7_SPI4) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI4_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI4_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI4_MOSI)); +#endif // CONFIG_STM32_SPI4 +#if defined(CONFIG_STM32F7_SPI5) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI5_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI5_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI5_MOSI)); +#endif // CONFIG_STM32_SPI5 +#if defined(CONFIG_STM32F7_SPI6) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI6_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI6_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI6_MOSI)); +#endif // CONFIG_STM32_SPI6 + + + + +// SDMMC + +#if defined(CONFIG_STM32F7_SDMMC1) + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D0)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D1)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D2)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D3)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_CMD)); +#endif // CONFIG_STM32F7_SDMMC1 +#if defined(CONFIG_STM32F7_SDMMC2) + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D0)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D1)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D2)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D3)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_CMD)); +#endif // CONFIG_STM32F7_SDMMC2 + + + + +// USB +#if defined(CONFIG_STM32F7_OTGFS) + px4_arch_configgpio(GPIO_OTGFS_VBUS); +#endif + +} + diff --git a/platforms/nuttx/src/px4/stm/stm32f7/include/px4_arch/board_init.h b/platforms/nuttx/src/px4/stm/stm32f7/include/px4_arch/board_init.h new file mode 100644 index 0000000000..87bc998907 --- /dev/null +++ b/platforms/nuttx/src/px4/stm/stm32f7/include/px4_arch/board_init.h @@ -0,0 +1,39 @@ +/**************************************************************************** + * + * Copyright (c) 2023 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ +#pragma once + +__BEGIN_DECLS + +void px4_arch_pin_initialize(void); + +__END_DECLS diff --git a/platforms/nuttx/src/px4/stm/stm32h7/CMakeLists.txt b/platforms/nuttx/src/px4/stm/stm32h7/CMakeLists.txt index 1205a6eda2..2ff02fb59a 100644 --- a/platforms/nuttx/src/px4/stm/stm32h7/CMakeLists.txt +++ b/platforms/nuttx/src/px4/stm/stm32h7/CMakeLists.txt @@ -31,6 +31,7 @@ # ############################################################################ +add_subdirectory(board_init) add_subdirectory(adc) add_subdirectory(../stm32_common/board_critmon board_critmon) diff --git a/platforms/nuttx/src/px4/stm/stm32h7/board_init/CMakeLists.txt b/platforms/nuttx/src/px4/stm/stm32h7/board_init/CMakeLists.txt new file mode 100644 index 0000000000..004241394d --- /dev/null +++ b/platforms/nuttx/src/px4/stm/stm32h7/board_init/CMakeLists.txt @@ -0,0 +1,36 @@ +############################################################################ +# +# Copyright (c) 2023 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +px4_add_library(arch_board_init + board_init.cpp +) diff --git a/platforms/nuttx/src/px4/stm/stm32h7/board_init/board_init.cpp b/platforms/nuttx/src/px4/stm/stm32h7/board_init/board_init.cpp new file mode 100644 index 0000000000..095e7f1d54 --- /dev/null +++ b/platforms/nuttx/src/px4/stm/stm32h7/board_init/board_init.cpp @@ -0,0 +1,188 @@ +/**************************************************************************** + * + * Copyright (c) 2023 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +#include "chip.h" +#include "stm32_gpio.h" +#include "board_config.h" + +#include +#include + +#define SPI_PIN_OFF(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz)) +#define SDMMC_PIN_OFF(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_INPUT|GPIO_FLOAT |GPIO_SPEED_2MHz)) + +void px4_arch_pin_initialize() +{ + // Reset PWM first thing + board_on_reset(-1); + + // configure pins +#if defined(PX4_GPIO_INIT_LIST) + const uint32_t list[] = PX4_GPIO_INIT_LIST; + + for (auto &gpio : list) { + if (gpio != 0) { + px4_arch_configgpio(gpio); + } + } + +#endif // PX4_GPIO_INIT_LIST + + + + +// CAN + +#if defined(GPIO_CAN1_RX) + px4_arch_configgpio(GPIO_CAN1_RX); +#endif // GPIO_CAN1_RX +#if defined(GPIO_CAN1_TX) + px4_arch_configgpio(GPIO_CAN1_TX); +#endif // GPIO_CAN1_TX +#if defined(GPIO_CAN1_SILENT_S0) + px4_arch_configgpio(GPIO_CAN1_SILENT_S0); +#endif // GPIO_CAN1_SILENT_S0 + +#if defined(GPIO_CAN2_RX) + px4_arch_configgpio(GPIO_CAN2_RX); +#endif // GPIO_CAN2_RX +#if defined(GPIO_CAN2_TX) + px4_arch_configgpio(GPIO_CAN2_TX); +#endif // GPIO_CAN2_TX +#if defined(GPIO_CAN2_SILENT_S0) + px4_arch_configgpio(GPIO_CAN2_SILENT_S0); +#endif // GPIO_CAN2_SILENT_S0 + +#if defined(GPIO_CAN3_RX) + px4_arch_configgpio(GPIO_CAN3_RX); +#endif // GPIO_CAN3_RX +#if defined(GPIO_CAN3_TX) + px4_arch_configgpio(GPIO_CAN3_TX); +#endif // GPIO_CAN3_TX +#if defined(GPIO_CAN3_SILENT_S0) + px4_arch_configgpio(GPIO_CAN3_SILENT_S0); +#endif // GPIO_CAN3_SILENT_S0 + + + + +// I2C + +#if defined(CONFIG_STM32H7_I2C1) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C1_SDA)); +#endif // CONFIG_STM32H7_I2C1 + +#if defined(CONFIG_STM32H7_I2C2) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C2_SDA)); +#endif // CONFIG_STM32H7_I2C2 + +#if defined(CONFIG_STM32H7_I2C3) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C3_SDA)); +#endif // CONFIG_STM32H7_I2C3 + +#if defined(CONFIG_STM32H7_I2C4) + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SCL)); + px4_arch_configgpio(PX4_MAKE_GPIO_OUTPUT_CLEAR(GPIO_I2C4_SDA)); +#endif // CONFIG_STM32H7_I2C4 + + + + +// SPI + +#if defined(CONFIG_STM32H7_SPI1) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI1_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI1_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI1_MOSI)); +#endif // CONFIG_STM32_SPI1 +#if defined(CONFIG_STM32H7_SPI2) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI2_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI2_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI2_MOSI)); +#endif // CONFIG_STM32_SPI2 +#if defined(CONFIG_STM32H7_SPI3) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI3_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI3_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI3_MOSI)); +#endif // CONFIG_STM32_SPI3 +#if defined(CONFIG_STM32H7_SPI4) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI4_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI4_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI4_MOSI)); +#endif // CONFIG_STM32_SPI4 +#if defined(CONFIG_STM32H7_SPI5) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI5_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI5_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI5_MOSI)); +#endif // CONFIG_STM32_SPI5 +#if defined(CONFIG_STM32H7_SPI6) + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI6_SCK)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI6_MISO)); + px4_arch_configgpio(SPI_PIN_OFF(GPIO_SPI6_MOSI)); +#endif // CONFIG_STM32_SPI6 + + + + +// SDMMC + +#if defined(CONFIG_STM32H7_SDMMC1) + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D0)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D1)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D2)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_D3)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC1_CMD)); +#endif // CONFIG_STM32H7_SDMMC1 +#if defined(CONFIG_STM32H7_SDMMC2) + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D0)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D1)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D2)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_D3)); + px4_arch_configgpio(PX4_GPIO_PIN_OFF(GPIO_SDMMC2_CMD)); +#endif // CONFIG_STM32H7_SDMMC2 + + + + +// USB +#if defined(CONFIG_STM32H7_OTGFS) + px4_arch_configgpio(GPIO_OTGFS_VBUS); +#endif + +} + diff --git a/platforms/nuttx/src/px4/stm/stm32h7/include/px4_arch/board_init.h b/platforms/nuttx/src/px4/stm/stm32h7/include/px4_arch/board_init.h new file mode 100644 index 0000000000..87bc998907 --- /dev/null +++ b/platforms/nuttx/src/px4/stm/stm32h7/include/px4_arch/board_init.h @@ -0,0 +1,39 @@ +/**************************************************************************** + * + * Copyright (c) 2023 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ +#pragma once + +__BEGIN_DECLS + +void px4_arch_pin_initialize(void); + +__END_DECLS