From 4cd22ec589dad7894d7645c739a0827c33635960 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 5 Dec 2022 11:09:49 -0500 Subject: [PATCH] WIP --- .ci/Jenkinsfile-compile | 2 - .github/workflows/compile_nuttx.yml | 2 - .vscode/cmake-variants.yaml | 6 +- Makefile | 2 +- boards/matek/h743-mini/bootloader.px4board | 3 - boards/matek/h743-mini/default.px4board | 89 ---- .../extras/matek_h743-mini_bootloader.bin | Bin 42640 -> 0 bytes .../extras/matek_h743-slim_bootloader.bin | Bin 42684 -> 0 bytes boards/matek/h743-mini/firmware.prototype | 13 - boards/matek/h743-mini/init/rc.board_extras | 16 - boards/matek/h743-mini/init/rc.board_sensors | 22 - boards/matek/h743-mini/nuttx-config/Kconfig | 17 - .../nuttx-config/bootloader/defconfig | 113 ---- .../h743-mini/nuttx-config/include/board.h | 493 ------------------ .../nuttx-config/include/board_dma_map.h | 43 -- .../h743-mini/nuttx-config/nsh/defconfig | 247 --------- .../nuttx-config/scripts/bootloader_script.ld | 213 -------- .../h743-mini/nuttx-config/scripts/script.ld | 228 -------- boards/matek/h743-mini/src/CMakeLists.txt | 68 --- boards/matek/h743-mini/src/board_config.h | 237 --------- boards/matek/h743-mini/src/bootloader_main.c | 75 --- boards/matek/h743-mini/src/hw_config.h | 135 ----- boards/matek/h743-mini/src/i2c.cpp | 39 -- boards/matek/h743-mini/src/init.c | 182 ------- boards/matek/h743-mini/src/led.c | 112 ---- boards/matek/h743-mini/src/sdio.c | 177 ------- boards/matek/h743-mini/src/spi.cpp | 56 -- boards/matek/h743-mini/src/timer_config.cpp | 82 --- boards/matek/h743-mini/src/usb.c | 78 --- boards/matek/h743-slim/bootloader.px4board | 3 - boards/matek/h743-slim/default.px4board | 88 ---- .../extras/matek_h743-slim_bootloader.bin | Bin 43224 -> 0 bytes boards/matek/h743-slim/firmware.prototype | 13 - boards/matek/h743-slim/init/rc.board_extras | 16 - boards/matek/h743-slim/init/rc.board_sensors | 22 - boards/matek/h743-slim/nuttx-config/Kconfig | 17 - .../nuttx-config/bootloader/defconfig | 115 ---- .../h743-slim/nuttx-config/include/board.h | 493 ------------------ .../nuttx-config/include/board_dma_map.h | 43 -- .../h743-slim/nuttx-config/nsh/defconfig | 251 --------- .../nuttx-config/scripts/bootloader_script.ld | 213 -------- .../h743-slim/nuttx-config/scripts/script.ld | 228 -------- boards/matek/h743-slim/src/CMakeLists.txt | 68 --- boards/matek/h743-slim/src/board_config.h | 230 -------- boards/matek/h743-slim/src/bootloader_main.c | 75 --- boards/matek/h743-slim/src/hw_config.h | 135 ----- boards/matek/h743-slim/src/i2c.cpp | 39 -- boards/matek/h743-slim/src/init.c | 204 -------- boards/matek/h743-slim/src/led.c | 112 ---- boards/matek/h743-slim/src/sdio.c | 177 ------- boards/matek/h743-slim/src/spi.cpp | 56 -- boards/matek/h743-slim/src/timer_config.cpp | 82 --- boards/matek/h743-slim/src/usb.c | 78 --- boards/matek/h743/default.px4board | 22 +- .../h743/extras/matek_h743_bootloader.bin | Bin 42640 -> 43224 bytes boards/matek/h743/firmware.prototype | 2 +- .../init/rc.board_defaults | 0 boards/matek/h743/nuttx-config/Kconfig | 17 - .../h743/nuttx-config/bootloader/defconfig | 40 +- .../matek/h743/nuttx-config/include/board.h | 113 +--- boards/matek/h743/nuttx-config/nsh/defconfig | 56 +- boards/matek/h743/src/board_config.h | 17 +- boards/matek/h743/src/hw_config.h | 2 +- boards/matek/h743/src/init.c | 23 + 64 files changed, 74 insertions(+), 5726 deletions(-) delete mode 100644 boards/matek/h743-mini/bootloader.px4board delete mode 100644 boards/matek/h743-mini/default.px4board delete mode 100755 boards/matek/h743-mini/extras/matek_h743-mini_bootloader.bin delete mode 100644 boards/matek/h743-mini/extras/matek_h743-slim_bootloader.bin delete mode 100644 boards/matek/h743-mini/firmware.prototype delete mode 100644 boards/matek/h743-mini/init/rc.board_extras delete mode 100644 boards/matek/h743-mini/init/rc.board_sensors delete mode 100644 boards/matek/h743-mini/nuttx-config/Kconfig delete mode 100644 boards/matek/h743-mini/nuttx-config/bootloader/defconfig delete mode 100644 boards/matek/h743-mini/nuttx-config/include/board.h delete mode 100644 boards/matek/h743-mini/nuttx-config/include/board_dma_map.h delete mode 100644 boards/matek/h743-mini/nuttx-config/nsh/defconfig delete mode 100644 boards/matek/h743-mini/nuttx-config/scripts/bootloader_script.ld delete mode 100644 boards/matek/h743-mini/nuttx-config/scripts/script.ld delete mode 100644 boards/matek/h743-mini/src/CMakeLists.txt delete mode 100644 boards/matek/h743-mini/src/board_config.h delete mode 100644 boards/matek/h743-mini/src/bootloader_main.c delete mode 100644 boards/matek/h743-mini/src/hw_config.h delete mode 100644 boards/matek/h743-mini/src/i2c.cpp delete mode 100644 boards/matek/h743-mini/src/init.c delete mode 100644 boards/matek/h743-mini/src/led.c delete mode 100644 boards/matek/h743-mini/src/sdio.c delete mode 100644 boards/matek/h743-mini/src/spi.cpp delete mode 100644 boards/matek/h743-mini/src/timer_config.cpp delete mode 100644 boards/matek/h743-mini/src/usb.c delete mode 100644 boards/matek/h743-slim/bootloader.px4board delete mode 100644 boards/matek/h743-slim/default.px4board delete mode 100755 boards/matek/h743-slim/extras/matek_h743-slim_bootloader.bin delete mode 100644 boards/matek/h743-slim/firmware.prototype delete mode 100644 boards/matek/h743-slim/init/rc.board_extras delete mode 100644 boards/matek/h743-slim/init/rc.board_sensors delete mode 100644 boards/matek/h743-slim/nuttx-config/Kconfig delete mode 100644 boards/matek/h743-slim/nuttx-config/bootloader/defconfig delete mode 100644 boards/matek/h743-slim/nuttx-config/include/board.h delete mode 100644 boards/matek/h743-slim/nuttx-config/include/board_dma_map.h delete mode 100644 boards/matek/h743-slim/nuttx-config/nsh/defconfig delete mode 100644 boards/matek/h743-slim/nuttx-config/scripts/bootloader_script.ld delete mode 100644 boards/matek/h743-slim/nuttx-config/scripts/script.ld delete mode 100644 boards/matek/h743-slim/src/CMakeLists.txt delete mode 100644 boards/matek/h743-slim/src/board_config.h delete mode 100644 boards/matek/h743-slim/src/bootloader_main.c delete mode 100644 boards/matek/h743-slim/src/hw_config.h delete mode 100644 boards/matek/h743-slim/src/i2c.cpp delete mode 100644 boards/matek/h743-slim/src/init.c delete mode 100644 boards/matek/h743-slim/src/led.c delete mode 100644 boards/matek/h743-slim/src/sdio.c delete mode 100644 boards/matek/h743-slim/src/spi.cpp delete mode 100644 boards/matek/h743-slim/src/timer_config.cpp delete mode 100644 boards/matek/h743-slim/src/usb.c rename boards/matek/{h743-slim => h743}/init/rc.board_defaults (100%) delete mode 100644 boards/matek/h743/nuttx-config/Kconfig diff --git a/.ci/Jenkinsfile-compile b/.ci/Jenkinsfile-compile index ba9b8a1523..2ce027f0ff 100644 --- a/.ci/Jenkinsfile-compile +++ b/.ci/Jenkinsfile-compile @@ -65,8 +65,6 @@ pipeline { "holybro_pix32v5_default", "matek_gnss-m9n-f4_canbootloader", "matek_gnss-m9n-f4_default", - "matek_h743-mini_default", - "matek_h743-slim_default", "matek_h743_default", "modalai_fc-v1_default", "modalai_fc-v2_default", diff --git a/.github/workflows/compile_nuttx.yml b/.github/workflows/compile_nuttx.yml index 2b7828cc5d..2cd9a9ec4a 100644 --- a/.github/workflows/compile_nuttx.yml +++ b/.github/workflows/compile_nuttx.yml @@ -40,8 +40,6 @@ jobs: holybro_pix32v5, matek_gnss-m9n-f4, matek_h743, - matek_h743-mini, - matek_h743-slim, modalai_fc-v1, modalai_fc-v2, mro_ctrl-zero-f7, diff --git a/.vscode/cmake-variants.yaml b/.vscode/cmake-variants.yaml index 1f93a5ce3e..56ece27065 100644 --- a/.vscode/cmake-variants.yaml +++ b/.vscode/cmake-variants.yaml @@ -211,11 +211,11 @@ CONFIG: buildType: MinSizeRel settings: CONFIG: holybro_durandal-v1_default - matek_h743-slim_default: - short: matek_h743-slim + matek_h743_default: + short: matek_h743 buildType: MinSizeRel settings: - CONFIG: matek_h743-slim_default + CONFIG: matek_h743_default matek_gnss-m9n-f4_canbootloader: short: matek_gnss-m9n-f4_canbootloader buildType: MiniSizeRel diff --git a/Makefile b/Makefile index 287fffcb14..96d47569ad 100644 --- a/Makefile +++ b/Makefile @@ -328,7 +328,7 @@ jlink-nuttx: $(CC) -shared -fPIC platforms/nuttx/NuttX/nuttx/tools/jlink-nuttx.c -o Tools/jlink-nuttx.so -bootloaders_update: ark_fmu-v6x_bootloader cuav_nora_bootloader cuav_x7pro_bootloader cubepilot_cubeorange_bootloader holybro_durandal-v1_bootloader holybro_kakuteh7_bootloader matek_h743_bootloader matek_h743-mini_bootloader matek_h743-slim_bootloader modalai_fc-v2_bootloader mro_ctrl-zero-classic_bootloader mro_ctrl-zero-h7_bootloader mro_ctrl-zero-h7-oem_bootloader mro_pixracerpro_bootloader px4_fmu-v6c_bootloader px4_fmu-v6u_bootloader px4_fmu-v6x_bootloader +bootloaders_update: ark_fmu-v6x_bootloader cuav_nora_bootloader cuav_x7pro_bootloader cubepilot_cubeorange_bootloader holybro_durandal-v1_bootloader holybro_kakuteh7_bootloader matek_h743_bootloader modalai_fc-v2_bootloader mro_ctrl-zero-classic_bootloader mro_ctrl-zero-h7_bootloader mro_ctrl-zero-h7-oem_bootloader mro_pixracerpro_bootloader px4_fmu-v6c_bootloader px4_fmu-v6u_bootloader px4_fmu-v6x_bootloader git status .PHONY: coverity_scan diff --git a/boards/matek/h743-mini/bootloader.px4board b/boards/matek/h743-mini/bootloader.px4board deleted file mode 100644 index 19b6e662be..0000000000 --- a/boards/matek/h743-mini/bootloader.px4board +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_ROMFSROOT="" diff --git a/boards/matek/h743-mini/default.px4board b/boards/matek/h743-mini/default.px4board deleted file mode 100644 index e654a21f97..0000000000 --- a/boards/matek/h743-mini/default.px4board +++ /dev/null @@ -1,89 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS1" -CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS2" -CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3" -CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5" -CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS6" -CONFIG_DRIVERS_ADC_BOARD_ADC=y -CONFIG_DRIVERS_BAROMETER_DPS310=y -CONFIG_DRIVERS_CAMERA_CAPTURE=n -CONFIG_DRIVERS_CAMERA_TRIGGER=n -CONFIG_DRIVERS_DSHOT=y -CONFIG_DRIVERS_GPS=y -CONFIG_DRIVERS_IMU_INVENSENSE_MPU6000=y -CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y -CONFIG_DRIVERS_IMU_INVENSENSE_ICM42605=y -CONFIG_DRIVERS_MAGNETOMETER_QMC5883L=y -CONFIG_COMMON_DISTANCE_SENSOR=n -CONFIG_COMMON_LIGHT=n -CONFIG_COMMON_MAGNETOMETER=n -CONFIG_COMMON_OPTICAL_FLOW=y -CONFIG_DRIVERS_OSD=y -CONFIG_DRIVERS_PWM_OUT=y -CONFIG_DRIVERS_PWM_OUT_SIM=n -CONFIG_DRIVERS_RC_INPUT=y -CONFIG_DRIVERS_RPM=n -CONFIG_COMMON_TELEMETRY=y -CONFIG_DRIVERS_TONE_ALARM=y -CONFIG_DRIVERS_UAVCAN=y -CONFIG_BOARD_UAVCAN_INTERFACES=1 -CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q=y -CONFIG_MODULES_BATTERY_STATUS=y -CONFIG_MODULES_COMMANDER=y -CONFIG_MODULES_CONTROL_ALLOCATOR=y -CONFIG_MODULES_DATAMAN=y -CONFIG_MODULES_EKF2=y -CONFIG_MODULES_EVENTS=y -CONFIG_MODULES_FLIGHT_MODE_MANAGER=y -CONFIG_MODULES_FW_ATT_CONTROL=y -CONFIG_MODULES_FW_POS_CONTROL_L1=y -CONFIG_MODULES_GYRO_CALIBRATION=y -CONFIG_MODULES_GYRO_FFT=y -CONFIG_MODULES_LAND_DETECTOR=y -CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y -CONFIG_MODULES_LOAD_MON=y -CONFIG_MODULES_LOCAL_POSITION_ESTIMATOR=y -CONFIG_MODULES_LOGGER=y -CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y -CONFIG_MODULES_MANUAL_CONTROL=y -CONFIG_MODULES_MAVLINK=y -CONFIG_MODULES_MC_ATT_CONTROL=y -CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n -CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y -CONFIG_MODULES_MC_POS_CONTROL=y -CONFIG_MODULES_MC_RATE_CONTROL=y -CONFIG_MODULES_MICRODDS_CLIENT=y -CONFIG_MODULES_NAVIGATOR=y -CONFIG_MODULES_RC_UPDATE=y -CONFIG_MODULES_SENSORS=y -CONFIG_MODULES_TEMPERATURE_COMPENSATION=n -CONFIG_MODULES_VTOL_ATT_CONTROL=y -CONFIG_MODULES_GIMBAL=n -CONFIG_SYSTEMCMDS_BL_UPDATE=n -CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y -CONFIG_SYSTEMCMDS_DMESG=y -CONFIG_SYSTEMCMDS_DUMPFILE=n -CONFIG_SYSTEMCMDS_GPIO=y -CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y -CONFIG_SYSTEMCMDS_I2CDETECT=y -CONFIG_SYSTEMCMDS_LED_CONTROL=n -CONFIG_SYSTEMCMDS_MFT=n -CONFIG_SYSTEMCMDS_MOTOR_TEST=n -CONFIG_SYSTEMCMDS_MTD=n -CONFIG_SYSTEMCMDS_NSHTERM=y -CONFIG_SYSTEMCMDS_PARAM=y -CONFIG_SYSTEMCMDS_PERF=y -CONFIG_SYSTEMCMDS_REBOOT=y -CONFIG_SYSTEMCMDS_SD_BENCH=n -CONFIG_SYSTEMCMDS_SD_STRESS=n -CONFIG_SYSTEMCMDS_SERIAL_TEST=n -CONFIG_SYSTEMCMDS_SYSTEM_TIME=y -CONFIG_SYSTEMCMDS_TOP=y -CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y -CONFIG_SYSTEMCMDS_TUNE_CONTROL=n -CONFIG_SYSTEMCMDS_UORB=y -CONFIG_SYSTEMCMDS_USB_CONNECTED=y -CONFIG_SYSTEMCMDS_VER=y -CONFIG_SYSTEMCMDS_WORK_QUEUE=y -CONFIG_EXAMPLES_FAKE_GPS=n diff --git a/boards/matek/h743-mini/extras/matek_h743-mini_bootloader.bin b/boards/matek/h743-mini/extras/matek_h743-mini_bootloader.bin deleted file mode 100755 index 358bb6cc38c8435fe07ced9187dcf10a094f45a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42640 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 diff --git a/boards/matek/h743-mini/extras/matek_h743-slim_bootloader.bin b/boards/matek/h743-mini/extras/matek_h743-slim_bootloader.bin deleted file mode 100644 index 9a03d6bfa45a72833640a48bc26eafb524d3c1be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42684 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 a&*-Il^RN_W=B;S@H#2@Sar#F$!2bt__V5t^ diff --git a/boards/matek/h743-mini/firmware.prototype b/boards/matek/h743-mini/firmware.prototype deleted file mode 100644 index d715678889..0000000000 --- a/boards/matek/h743-mini/firmware.prototype +++ /dev/null @@ -1,13 +0,0 @@ -{ - "board_id": 1013, - "magic": "PX4FWv1", - "description": "Firmware for the MatekH743-slim board", - "image": "", - "build_time": 0, - "summary": "MatekH743-mini", - "version": "0.1", - "image_size": 0, - "image_maxsize": 1966080, - "git_identity": "", - "board_revision": 0 -} diff --git a/boards/matek/h743-mini/init/rc.board_extras b/boards/matek/h743-mini/init/rc.board_extras deleted file mode 100644 index a39b81bdc2..0000000000 --- a/boards/matek/h743-mini/init/rc.board_extras +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# board specific extras init -#------------------------------------------------------------------------------ - -# if ! param compare OSD_ATXXXX_CFG 0 -# then -# atxxxx start -s -# fi - -atxxxx start -s - - -# DShot telemetry is always on UART7 -# dshot telemetry /dev/ttyS5 - diff --git a/boards/matek/h743-mini/init/rc.board_sensors b/boards/matek/h743-mini/init/rc.board_sensors deleted file mode 100644 index c37c3b3b58..0000000000 --- a/boards/matek/h743-mini/init/rc.board_sensors +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# -# board specific sensors init -#------------------------------------------------------------------------------ - -board_adc start - -# Internal SPI bus ICM-42605 -if ! icm42605 -R 14 -s start -then - # internal SPI bus ICM-20602 - icm20602 -R 12 -s start -fi - -# Internal SPI bus MPU-6000 -mpu6000 -R 12 -s start - -# Internal baro -dps310 -I start -a 118 - -# External mag -qmc5883l -X start -a 13 diff --git a/boards/matek/h743-mini/nuttx-config/Kconfig b/boards/matek/h743-mini/nuttx-config/Kconfig deleted file mode 100644 index bb33d3cfda..0000000000 --- a/boards/matek/h743-mini/nuttx-config/Kconfig +++ /dev/null @@ -1,17 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see misc/tools/kconfig-language.txt. -# -config BOARD_HAS_PROBES - bool "Board provides GPIO or other Hardware for signaling to timing analyze." - default y - ---help--- - This board provides GPIO FMU-CH1-5, CAP1-6 as PROBE_1-11 to provide timing signals from selected drivers. - -config BOARD_USE_PROBES - bool "Enable the use the board provided FMU-CH1-5, CAP1-6 as PROBE_1-11" - default n - depends on BOARD_HAS_PROBES - - ---help--- - Select to use GPIO FMU-CH1-5, CAP1-6 to provide timing signals from selected drivers. diff --git a/boards/matek/h743-mini/nuttx-config/bootloader/defconfig b/boards/matek/h743-mini/nuttx-config/bootloader/defconfig deleted file mode 100644 index 29444c1579..0000000000 --- a/boards/matek/h743-mini/nuttx-config/bootloader/defconfig +++ /dev/null @@ -1,113 +0,0 @@ -# -# This file is autogenerated: PLEASE DO NOT EDIT IT. -# -# You can use "make menuconfig" to make any modifications to the installed .config file. -# You can then do "make savedefconfig" to generate a new defconfig file that includes your -# modifications. -# -# CONFIG_DEV_CONSOLE is not set -# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_DISABLE_PTHREAD is not set -# CONFIG_SPI_EXCHANGE is not set -# CONFIG_STM32H7_SYSCFG is not set -CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD_CUSTOM=y -CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/matek/h743-mini/nuttx-config" -CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y -CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" -CONFIG_ARCH_CHIP="stm32h7" -CONFIG_ARCH_CHIP_STM32H743VI=y -CONFIG_ARCH_CHIP_STM32H7=y -CONFIG_ARCH_INTERRUPTSTACK=512 -CONFIG_ARMV7M_BASEPRI_WAR=y -CONFIG_ARMV7M_ICACHE=y -CONFIG_ARMV7M_MEMCPY=y -CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_BOARDCTL_RESET=y -CONFIG_BOARDCTL=y -CONFIG_BOARD_INITTHREAD_PRIORITY=254 -CONFIG_BOARD_LATE_INITIALIZE=y -CONFIG_BOARD_LOOPSPERMSEC=22114 -CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_C99_BOOL8=y -CONFIG_CDCACM=y -CONFIG_CDCACM_PRODUCTID=0x004b -CONFIG_CDCACM_PRODUCTSTR="Matek H743-mini" -CONFIG_CDCACM_RXBUFSIZE=600 -CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x3162 -CONFIG_CDCACM_VENDORSTR="Matek" -CONFIG_CLOCK_MONOTONIC=y -CONFIG_DEBUG_FULLOPT=y -CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEFAULT_SMALL=y -# CONFIG_NSH_DISABLE_ECHO is not set -# CONFIG_NSH_DISABLE_ENV is not set -# CONFIG_NSH_DISABLE_FREE is not set -# CONFIG_NSH_DISABLE_HELP is not set -# CONFIG_NSH_DISABLE_KILL is not set -# CONFIG_NSH_DISABLE_LS is not set -# CONFIG_NSH_DISABLE_MKDIR is not set -# CONFIG_NSH_DISABLE_MODCMDS is not set -# CONFIG_NSH_DISABLE_MOUNT is not set -# CONFIG_NSH_DISABLE_MV is not set -# CONFIG_NSH_DISABLE_PRINTF is not set -# CONFIG_NSH_DISABLE_PSSTACKUSAGE -# CONFIG_NSH_DISABLE_PWD is not set -# CONFIG_NSH_DISABLE_SOURCE is not set -# CONFIG_NSH_DISABLE_SLEEP is not set -# CONFIG_NSH_DISABLE_TEST is not set -# CONFIG_NSH_DISABLE_UMOUNT is not set -# CONFIG_NSH_DISABLE_UNSET is not set -# CONFIG_NSH_DISABLE_USLEEP is not set -CONFIG_DISABLE_MQUEUE=y -CONFIG_DISABLE_PTHREAD=y -CONFIG_EXPERIMENTAL=y -CONFIG_FDCLONE_DISABLE=y -CONFIG_FDCLONE_STDIO=y -CONFIG_HAVE_CXX=y -CONFIG_HAVE_CXXINITIALIZE=y -CONFIG_IDLETHREAD_STACKSIZE=750 -CONFIG_LIBC_FLOATINGPOINT=y -CONFIG_LIBC_LONG_LONG=y -CONFIG_LIBC_STRERROR=y -CONFIG_MEMSET_64BIT=y -CONFIG_MEMSET_OPTSPEED=y -CONFIG_PREALLOC_TIMERS=50 -CONFIG_PTHREAD_STACK_MIN=512 -CONFIG_RAM_SIZE=245760 -CONFIG_RAM_START=0x20010000 -CONFIG_RAW_BINARY=y -CONFIG_SDCLONE_DISABLE=y -CONFIG_SERIAL_TERMIOS=y -CONFIG_SIG_DEFAULT=y -CONFIG_SIG_SIGALRM_ACTION=y -CONFIG_SIG_SIGUSR1_ACTION=y -CONFIG_SIG_SIGUSR2_ACTION=y -CONFIG_SPI=y -CONFIG_STACK_COLORATION=y -CONFIG_START_DAY=30 -CONFIG_START_MONTH=11 -CONFIG_STDIO_BUFFER_SIZE=32 -CONFIG_STM32H7_BKPSRAM=y -CONFIG_STM32H7_DMA1=y -CONFIG_STM32H7_OTGFS=y -CONFIG_STM32H7_PROGMEM=y -CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y -CONFIG_STM32H7_TIM1=y -CONFIG_STM32H7_USART1=y -CONFIG_SYSTEMTICK_HOOK=y -CONFIG_SYSTEM_CDCACM=y -CONFIG_TASK_NAME_SIZE=24 -CONFIG_TTY_SIGINT=y -CONFIG_TTY_SIGINT_CHAR=0x03 -CONFIG_TTY_SIGTSTP=y -CONFIG_USART1_RXBUFSIZE=600 -CONFIG_USART1_TXBUFSIZE=300 -CONFIG_USBDEV=y -CONFIG_USBDEV_BUSPOWERED=y -CONFIG_USBDEV_MAXPOWER=500 -CONFIG_USEC_PER_TICK=1000 -CONFIG_INIT_STACKSIZE=2944 -CONFIG_INIT_ENTRYPOINT="bootloader_main" diff --git a/boards/matek/h743-mini/nuttx-config/include/board.h b/boards/matek/h743-mini/nuttx-config/include/board.h deleted file mode 100644 index 4bf2b6e45e..0000000000 --- a/boards/matek/h743-mini/nuttx-config/include/board.h +++ /dev/null @@ -1,493 +0,0 @@ -/************************************************************************************ - * nuttx-configs/px4_fmu-v6u/include/board.h - * - * Copyright (C) 2016-2019 Gregory Nutt. All rights reserved. - * Authors: David Sidrane - * - * 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 NuttX 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. - * - ************************************************************************************/ -#ifndef __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H -#define __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H - -/************************************************************************************ - * Included Files - ************************************************************************************/ - -#include "board_dma_map.h" - -#include - -#ifndef __ASSEMBLY__ -# include -#endif - -#include "stm32_rcc.h" -#include "stm32_sdmmc.h" - -/************************************************************************************ - * Pre-processor Definitions - ************************************************************************************/ - -/* Clocking *************************************************************************/ -/* The MatekH743-Slim board provides the following clock sources: - * - * X1: 8 MHz crystal for HSE - * - * So we have these clock source available within the STM32 - * - * HSI: 64 MHz RC factory-trimmed - * HSE: 8 MHz crystal for HSE - */ - -#define STM32_BOARD_XTAL 8000000ul - -#define STM32_HSI_FREQUENCY 16000000ul -#define STM32_LSI_FREQUENCY 32000 -#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL -#define STM32_LSE_FREQUENCY 32768 - -/* Main PLL Configuration. - * - * PLL source is HSE = 8,000,000 - * - * PLL_VCOx = (STM32_HSE_FREQUENCY / PLLM) * PLLN - * Subject to: - * - * 1 <= PLLM <= 63 - * 4 <= PLLN <= 512 - * 150 MHz <= PLL_VCOL <= 420MHz - * 192 MHz <= PLL_VCOH <= 836MHz - * - * SYSCLK = PLL_VCO / PLLP - * CPUCLK = SYSCLK / D1CPRE - * Subject to - * - * PLLP1 = {2, 4, 6, 8, ..., 128} - * PLLP2,3 = {2, 3, 4, ..., 128} - * CPUCLK <= 480 MHz - */ - -#define STM32_BOARD_USEHSE - -#define STM32_PLLCFG_PLLSRC RCC_PLLCKSELR_PLLSRC_HSE - -/* PLL1, wide 4 - 8 MHz input, enable DIVP, DIVQ, DIVR - * - * PLL1_VCO = (8,000,000 / 1) * 120 = 960 MHz - * - * PLL1P = PLL1_VCO/2 = 960 MHz / 2 = 480 MHz - * PLL1Q = PLL1_VCO/4 = 960 MHz / 4 = 240 MHz - * PLL1R = PLL1_VCO/8 = 960 MHz / 8 = 120 MHz - */ - -#define STM32_PLLCFG_PLL1CFG (RCC_PLLCFGR_PLL1VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL1RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP1EN | \ - RCC_PLLCFGR_DIVQ1EN | \ - RCC_PLLCFGR_DIVR1EN) -#define STM32_PLLCFG_PLL1M RCC_PLLCKSELR_DIVM1(1) -#define STM32_PLLCFG_PLL1N RCC_PLL1DIVR_N1(120) -#define STM32_PLLCFG_PLL1P RCC_PLL1DIVR_P1(2) -#define STM32_PLLCFG_PLL1Q RCC_PLL1DIVR_Q1(4) -#define STM32_PLLCFG_PLL1R RCC_PLL1DIVR_R1(8) - -#define STM32_VCO1_FREQUENCY ((STM32_HSE_FREQUENCY / 1) * 120) -#define STM32_PLL1P_FREQUENCY (STM32_VCO1_FREQUENCY / 2) -#define STM32_PLL1Q_FREQUENCY (STM32_VCO1_FREQUENCY / 4) -#define STM32_PLL1R_FREQUENCY (STM32_VCO1_FREQUENCY / 8) - -/* PLL2 */ - -#define STM32_PLLCFG_PLL2CFG (RCC_PLLCFGR_PLL2VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL2RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP2EN | \ - RCC_PLLCFGR_DIVQ2EN | \ - RCC_PLLCFGR_DIVR2EN) -#define STM32_PLLCFG_PLL2M RCC_PLLCKSELR_DIVM2(2) -#define STM32_PLLCFG_PLL2N RCC_PLL2DIVR_N2(48) -#define STM32_PLLCFG_PLL2P RCC_PLL2DIVR_P2(2) -#define STM32_PLLCFG_PLL2Q RCC_PLL2DIVR_Q2(2) -#define STM32_PLLCFG_PLL2R RCC_PLL2DIVR_R2(2) - -#define STM32_VCO2_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL2P_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2Q_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2R_FREQUENCY (STM32_VCO2_FREQUENCY / 2) - -/* PLL3 */ - -#define STM32_PLLCFG_PLL3CFG (RCC_PLLCFGR_PLL3VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL3RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVQ3EN) -#define STM32_PLLCFG_PLL3M RCC_PLLCKSELR_DIVM3(2) -#define STM32_PLLCFG_PLL3N RCC_PLL3DIVR_N3(48) -#define STM32_PLLCFG_PLL3P RCC_PLL3DIVR_P3(2) -#define STM32_PLLCFG_PLL3Q RCC_PLL3DIVR_Q3(4) -#define STM32_PLLCFG_PLL3R RCC_PLL3DIVR_R3(2) - -#define STM32_VCO3_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL3P_FREQUENCY (STM32_VCO3_FREQUENCY / 2) -#define STM32_PLL3Q_FREQUENCY (STM32_VCO3_FREQUENCY / 4) -#define STM32_PLL3R_FREQUENCY (STM32_VCO3_FREQUENCY / 2) - -/* SYSCLK = PLL1P = 480MHz - * CPUCLK = SYSCLK / 1 = 480 MHz - */ - -#define STM32_RCC_D1CFGR_D1CPRE (RCC_D1CFGR_D1CPRE_SYSCLK) -#define STM32_SYSCLK_FREQUENCY (STM32_PLL1P_FREQUENCY) -#define STM32_CPUCLK_FREQUENCY (STM32_SYSCLK_FREQUENCY / 1) - -/* Configure Clock Assignments */ - -/* AHB clock (HCLK) is SYSCLK/2 (240 MHz max) - * HCLK1 = HCLK2 = HCLK3 = HCLK4 = 240 - */ - -#define STM32_RCC_D1CFGR_HPRE RCC_D1CFGR_HPRE_SYSCLKd2 /* HCLK = SYSCLK / 2 */ -#define STM32_ACLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* ACLK in D1, HCLK3 in D1 */ -#define STM32_HCLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* HCLK in D2, HCLK4 in D3 */ -#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */ - -/* APB1 clock (PCLK1) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE1 RCC_D2CFGR_D2PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */ -#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB2 clock (PCLK2) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE2 RCC_D2CFGR_D2PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */ -#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB3 clock (PCLK3) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D1CFGR_D1PPRE RCC_D1CFGR_D1PPRE_HCLKd2 /* PCLK3 = HCLK / 2 */ -#define STM32_PCLK3_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB4 clock (PCLK4) is HCLK/4 (120 MHz) */ - -#define STM32_RCC_D3CFGR_D3PPRE RCC_D3CFGR_D3PPRE_HCLKd2 /* PCLK4 = HCLK / 2 */ -#define STM32_PCLK4_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* Timer clock frequencies */ - -/* Timers driven from APB1 will be twice PCLK1 */ - -#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) - -/* Timers driven from APB2 will be twice PCLK2 */ - -#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM15_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM16_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM17_CLKIN (2*STM32_PCLK2_FREQUENCY) - -/* Kernel Clock Configuration - * - * Note: look at Table 54 in ST Manual - */ - -/* I2C123 clock source */ - -#define STM32_RCC_D2CCIP2R_I2C123SRC RCC_D2CCIP2R_I2C123SEL_HSI - -/* I2C4 clock source */ - -#define STM32_RCC_D3CCIPR_I2C4SRC RCC_D3CCIPR_I2C4SEL_HSI - -/* SPI123 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI123SRC RCC_D2CCIP1R_SPI123SEL_PLL2 - -/* SPI45 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI45SRC RCC_D2CCIP1R_SPI45SEL_PLL2 - -/* SPI6 clock source */ - -#define STM32_RCC_D3CCIPR_SPI6SRC RCC_D3CCIPR_SPI6SEL_PLL2 - -/* USB 1 and 2 clock source */ - -#define STM32_RCC_D2CCIP2R_USBSRC RCC_D2CCIP2R_USBSEL_PLL3 - -/* ADC 1 2 3 clock source */ - -#define STM32_RCC_D3CCIPR_ADCSEL RCC_D3CCIPR_ADCSEL_PLL2 - -/* FDCAN 1 clock source */ - -#define STM32_RCC_D2CCIP1R_FDCANSEL RCC_D2CCIP1R_FDCANSEL_HSE /* FDCAN 1 2 clock source */ - -#define STM32_FDCANCLK STM32_HSE_FREQUENCY - -/* FLASH wait states - * - * ------------ ---------- ----------- - * Vcore MAX ACLK WAIT STATES - * ------------ ---------- ----------- - * 1.15-1.26 V 70 MHz 0 - * (VOS1 level) 140 MHz 1 - * 210 MHz 2 - * 1.05-1.15 V 55 MHz 0 - * (VOS2 level) 110 MHz 1 - * 165 MHz 2 - * 220 MHz 3 - * 0.95-1.05 V 45 MHz 0 - * (VOS3 level) 90 MHz 1 - * 135 MHz 2 - * 180 MHz 3 - * 225 MHz 4 - * ------------ ---------- ----------- - */ - -#define BOARD_FLASH_WAITSTATES 2 - -/* SDMMC definitions ********************************************************/ - -/* Init 480kHz, freq = PLL1Q/(2*div) div = PLL1Q/(2*freq) */ - -#define STM32_SDMMC_INIT_CLKDIV (300 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) - -/* 20 MHz Max for now - more reliable on some boards than 25 MHz - * 20 MHz = PLL1Q/(2*div), div = PLL1Q/(2*freq), div = 6 = 240 / 40 - */ - -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_MMCXFR_CLKDIV (6 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_MMCXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_SDXFR_CLKDIV (6 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_SDXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif - -#define STM32_SDMMC_CLKCR_EDGE STM32_SDMMC_CLKCR_NEGEDGE - -/* LED definitions ******************************************************************/ -/* The board has two, LED_GREEN a Green LED and LED_BLUE a Blue LED, - * that can be controlled by software. - * - * 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() */ - -#define BOARD_LED1 0 -#define BOARD_LED2 1 -#define BOARD_NLEDS 2 - -#define BOARD_LED_BLUE BOARD_LED1 -#define BOARD_LED_GREEN BOARD_LED2 - -/* LED bits for use with board_userled_all() */ - -#define BOARD_LED1_BIT (1 << BOARD_LED1) -#define BOARD_LED2_BIT (1 << BOARD_LED2) - -/* If CONFIG_ARCH_LEDS is defined, the usage by the board port is defined in - * include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related - * events as follows: - * - * - * SYMBOL Meaning LED state - * Red Green Blue - * ---------------------- -------------------------- ------ ------ ----*/ - -#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */ -#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF OFF ON */ -#define LED_IRQSENABLED 2 /* Interrupts enabled OFF ON OFF */ -#define LED_STACKCREATED 3 /* Idle stack created OFF ON ON */ -#define LED_INIRQ 4 /* In an interrupt N/C N/C GLOW */ -#define LED_SIGNAL 5 /* In a signal handler N/C GLOW N/C */ -#define LED_ASSERTION 6 /* An assertion failed GLOW N/C GLOW */ -#define LED_PANIC 7 /* The system has crashed Blink OFF N/C */ -#define LED_IDLE 8 /* MCU is is sleep mode ON OFF OFF */ - -/* Thus if the Green LED is statically on, NuttX has successfully booted and - * is, apparently, running normally. If the Red LED is flashing at - * approximately 2Hz, then a fatal error has been detected and the system - * has halted. - */ - -/* Alternate function pin selections ************************************************/ - -#define GPIO_USART1_RX GPIO_USART1_RX_2 /* PA10 */ -#define GPIO_USART1_TX GPIO_USART1_TX_2 /* PA9 */ - -#define GPIO_USART2_RX GPIO_USART2_RX_2 /* PD6 */ -#define GPIO_USART2_TX GPIO_USART2_TX_2 /* PD5 */ - -#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ -#define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */ - -#define GPIO_UART4_RX GPIO_UART4_RX_3 /* PB8 */ -#define GPIO_UART4_TX GPIO_UART4_TX_3 /* PB9 */ - -#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */ -#define GPIO_USART6_TX GPIO_USART6_TX_1 /* PC6 */ - -#define GPIO_UART7_RX GPIO_UART7_RX_3 /* PE7 */ -#define GPIO_UART7_TX GPIO_UART7_TX_3 /* PE8 */ -#define GPIO_UART7_RTS GPIO_UART7_RTS_1 /* PE9 */ -#define GPIO_UART7_CTS GPIO_UART7_CTS_1 /* PE10 */ - -#define GPIO_UART8_RX GPIO_UART8_RX_1 /* PE0 */ -#define GPIO_UART8_TX GPIO_UART8_TX_1 /* PE1 */ - - -/* CAN - * - * CAN1 is routed to transceiver. - */ - -#define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */ -#define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */ - -/* SPI - * - * SPI1 is MPU6000 - * SPI2 is MAX7456 - * SPI3 is extern with PD4 and PE2 as CS - * SPI4 is ICM20602 - */ - -#define ADJ_SLEW_RATE(p) (((p) & ~GPIO_SPEED_MASK) | (GPIO_SPEED_2MHz)) - -#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */ -#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_3 /* PD7 */ -#define GPIO_SPI1_SCK ADJ_SLEW_RATE(GPIO_SPI1_SCK_1) /* PA5 */ - -#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1 /* PB14 */ -#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_1 /* PB15 */ -#define GPIO_SPI2_SCK ADJ_SLEW_RATE(GPIO_SPI2_SCK_4) /* PB13 */ - -#define GPIO_SPI3_MISO GPIO_SPI3_MISO_1 /* PB4 */ -#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_4 /* PB5 */ -#define GPIO_SPI3_SCK ADJ_SLEW_RATE(GPIO_SPI3_SCK_1) /* PB3 */ - -#define GPIO_SPI4_MISO GPIO_SPI4_MISO_1 /* PE13 */ -#define GPIO_SPI4_MOSI GPIO_SPI4_MOSI_1 /* PE14 */ -#define GPIO_SPI4_SCK ADJ_SLEW_RATE(GPIO_SPI4_SCK_1) /* PE12 */ - -/* I2C - * - * The optional _GPIO configurations allow the I2C driver to manually - * reset the bus to clear stuck slaves. They match the pin configuration, - * but are normally-high GPIOs. - * - */ - -#define GPIO_I2C1_SCL GPIO_I2C1_SCL_1 /* PB6 */ -#define GPIO_I2C1_SDA GPIO_I2C1_SDA_1 /* PB7 */ - -#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6) -#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7) - -#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1 /* PB10 */ -#define GPIO_I2C2_SDA GPIO_I2C2_SDA_1 /* PB11 */ - -#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN10) -#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN11) - -/* SDMMC1 - * - * SDMMC1_D0 PC8 - * SDMMC1_D1 PC9 - * SDMMC1_D2 PC10 - * SDMMC1_D3 PC11 - * SDMMC1_CK PC12 - * SDMMC1_CMD PD2 - */ - -// #define GPIO_SDMMC1_D0 GPIO_SDMMC1_D0 /* PC8 */ -// #define GPIO_SDMMC1_D1 GPIO_SDMMC1_D1 /* PC9 */ -// #define GPIO_SDMMC1_D2 GPIO_SDMMC1_D2 /* PC10 */ -// #define GPIO_SDMMC1_D3 GPIO_SDMMC1_D3 /* PC11 */ -// #define GPIO_SDMMC1_CK GPIO_SDMMC1_CK /* PC12 */ -// #define GPIO_SDMMC1_CMD GPIO_SDMMC1_CMD /* PD2 */ - - -/* USB - * - * OTG_FS_DM PA11 - * OTG_FS_DP PA12 - * VBUS PA9 - */ - - -/* Board provides GPIO or other Hardware for signaling to timing analyzer */ - -#if defined(CONFIG_BOARD_USE_PROBES) -# include "stm32_gpio.h" -# define PROBE_N(n) (1<<((n)-1)) -# define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTI|GPIO_PIN0) /* PI0 AUX1 */ -# define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN12) /* PH12 AUX2 */ -# define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN11) /* PH11 AUX3 */ -# define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN10) /* PH10 AUX4 */ -# define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN13) /* PD13 AUX5 */ -# define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) /* PD14 AUX6 */ -# define PROBE_7 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN6) /* PH6 AUX7 */ -# define PROBE_8 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN9) /* PH9 AUX8 */ -# define PROBE_9 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11) /* PE11 CAP1 */ - -# define PROBE_INIT(mask) \ - do { \ - if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \ - if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \ - if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \ - if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \ - if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \ - if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \ - if ((mask)& PROBE_N(7)) { stm32_configgpio(PROBE_7); } \ - if ((mask)& PROBE_N(8)) { stm32_configgpio(PROBE_8); } \ - if ((mask)& PROBE_N(9)) { stm32_configgpio(PROBE_9); } \ - } while(0) - -# define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0) -# define PROBE_MARK(n) PROBE(n,false);PROBE(n,true) -#else -# define PROBE_INIT(mask) -# define PROBE(n,s) -# define PROBE_MARK(n) -#endif - -#endif /*__NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H */ diff --git a/boards/matek/h743-mini/nuttx-config/include/board_dma_map.h b/boards/matek/h743-mini/nuttx-config/include/board_dma_map.h deleted file mode 100644 index 693132c389..0000000000 --- a/boards/matek/h743-mini/nuttx-config/include/board_dma_map.h +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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 - -// DMAMUX1 -#define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 /* DMA1:37 */ -#define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 /* DMA1:38 */ - - -// DMAMUX2 -#define DMAMAP_SPI4_RX DMAMAP_DMA12_SPI4RX_1 /* DMA2:83 */ -#define DMAMAP_SPI4_TX DMAMAP_DMA12_SPI4TX_1 /* DMA2:84 */ diff --git a/boards/matek/h743-mini/nuttx-config/nsh/defconfig b/boards/matek/h743-mini/nuttx-config/nsh/defconfig deleted file mode 100644 index dfa6b12fc7..0000000000 --- a/boards/matek/h743-mini/nuttx-config/nsh/defconfig +++ /dev/null @@ -1,247 +0,0 @@ -# -# This file is autogenerated: PLEASE DO NOT EDIT IT. -# -# You can use "make menuconfig" to make any modifications to the installed .config file. -# You can then do "make savedefconfig" to generate a new defconfig file that includes your -# modifications. -# -# CONFIG_DISABLE_ENVIRON is not set -# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_DISABLE_PTHREAD is not set -# CONFIG_MMCSD_HAVE_CARDDETECT is not set -# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set -# CONFIG_MMCSD_MMCSUPPORT is not set -# CONFIG_MMCSD_SPI is not set -# CONFIG_NSH_DISABLEBG is not set -# CONFIG_NSH_DISABLESCRIPT is not set -# CONFIG_NSH_DISABLE_DF is not set -# CONFIG_NSH_DISABLE_EXEC is not set -# CONFIG_NSH_DISABLE_EXIT is not set -# CONFIG_NSH_DISABLE_GET is not set -# CONFIG_NSH_DISABLE_ITEF is not set -# CONFIG_NSH_DISABLE_LOOPS is not set -# CONFIG_NSH_DISABLE_SEMICOLON is not set -# CONFIG_NSH_DISABLE_TIME is not set -CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD_CUSTOM=y -CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/matek/h743-mini/nuttx-config" -CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y -CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" -CONFIG_ARCH_CHIP="stm32h7" -CONFIG_ARCH_CHIP_STM32H743VI=y -CONFIG_ARCH_CHIP_STM32H7=y -CONFIG_ARCH_INTERRUPTSTACK=512 -CONFIG_ARCH_STACKDUMP=y -CONFIG_ARMV7M_BASEPRI_WAR=y -CONFIG_ARMV7M_DCACHE=y -CONFIG_ARMV7M_DTCM=y -CONFIG_ARMV7M_ICACHE=y -CONFIG_ARMV7M_MEMCPY=y -CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_BOARDCTL_RESET=y -CONFIG_BOARDCTL=y -CONFIG_BOARD_CRASHDUMP=y -CONFIG_BOARD_LOOPSPERMSEC=95150 -CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_BUILTIN=y -CONFIG_C99_BOOL8=y -CONFIG_CDCACM=y -CONFIG_CDCACM_PRODUCTID=0x0036 -CONFIG_CDCACM_PRODUCTSTR="MatekH743-mini" -CONFIG_CDCACM_RXBUFSIZE=600 -CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x1B8C -CONFIG_CDCACM_VENDORSTR="Matek" -CONFIG_CLOCK_MONOTONIC=y -CONFIG_DEBUG_FULLOPT=y -CONFIG_DEBUG_HARDFAULT_ALERT=y -CONFIG_DEBUG_MEMFAULT=y -CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEFAULT_SMALL=y -# CONFIG_NSH_DISABLE_ECHO is not set -# CONFIG_NSH_DISABLE_ENV is not set -# CONFIG_NSH_DISABLE_FREE is not set -# CONFIG_NSH_DISABLE_HELP is not set -# CONFIG_NSH_DISABLE_KILL is not set -# CONFIG_NSH_DISABLE_LS is not set -# CONFIG_NSH_DISABLE_MKDIR is not set -# CONFIG_NSH_DISABLE_MODCMDS is not set -# CONFIG_NSH_DISABLE_MOUNT is not set -# CONFIG_NSH_DISABLE_MV is not set -# CONFIG_NSH_DISABLE_PRINTF is not set -# CONFIG_NSH_DISABLE_PSSTACKUSAGE -# CONFIG_NSH_DISABLE_PWD is not set -# CONFIG_NSH_DISABLE_SOURCE is not set -# CONFIG_NSH_DISABLE_SLEEP is not set -# CONFIG_NSH_DISABLE_TEST is not set -# CONFIG_NSH_DISABLE_UMOUNT is not set -# CONFIG_NSH_DISABLE_UNSET is not set -# CONFIG_NSH_DISABLE_USLEEP is not set -CONFIG_DEV_FIFO_SIZE=0 -CONFIG_DEV_PIPE_MAXSIZE=1024 -CONFIG_DEV_PIPE_SIZE=70 -CONFIG_EXPERIMENTAL=y -CONFIG_FAT_DMAMEMORY=y -CONFIG_FAT_LCNAMES=y -CONFIG_FAT_LFN=y -CONFIG_FAT_LFN_ALIAS_HASH=y -CONFIG_FDCLONE_STDIO=y -CONFIG_FS_BINFS=y -CONFIG_FS_CROMFS=y -CONFIG_FS_FAT=y -CONFIG_FS_FATTIME=y -CONFIG_FS_PROCFS=y -CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y -CONFIG_FS_PROCFS_MAX_TASKS=64 -CONFIG_FS_PROCFS_REGISTER=y -CONFIG_FS_ROMFS=y -CONFIG_GRAN=y -CONFIG_GRAN_INTR=y -CONFIG_HAVE_CXX=y -CONFIG_HAVE_CXXINITIALIZE=y -CONFIG_I2C=y -CONFIG_I2C_RESET=y -CONFIG_IDLETHREAD_STACKSIZE=750 -CONFIG_LIBC_FLOATINGPOINT=y -CONFIG_LIBC_LONG_LONG=y -CONFIG_LIBC_STRERROR=y -CONFIG_MEMSET_64BIT=y -CONFIG_MEMSET_OPTSPEED=y -CONFIG_MMCSD=y -CONFIG_MMCSD_SDIO=y -CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y -CONFIG_MM_REGIONS=4 -CONFIG_NAME_MAX=40 -CONFIG_NSH_ARCHINIT=y -CONFIG_NSH_ARGCAT=y -CONFIG_NSH_BUILTIN_APPS=y -CONFIG_NSH_CMDPARMS=y -CONFIG_NSH_CROMFSETC=y -CONFIG_NSH_LINELEN=128 -CONFIG_NSH_MAXARGUMENTS=15 -CONFIG_NSH_NESTDEPTH=8 -CONFIG_NSH_QUOTE=y -CONFIG_NSH_ROMFSETC=y -CONFIG_NSH_ROMFSSECTSIZE=128 -CONFIG_NSH_STRERROR=y -CONFIG_NSH_VARS=y -CONFIG_OTG_ID_GPIO_DISABLE=y -CONFIG_PIPES=y -CONFIG_PREALLOC_TIMERS=50 -CONFIG_PRIORITY_INHERITANCE=y -CONFIG_PTHREAD_MUTEX_ROBUST=y -CONFIG_PTHREAD_STACK_MIN=512 -CONFIG_RAM_SIZE=245760 -CONFIG_RAM_START=0x20010000 -CONFIG_RAW_BINARY=y -CONFIG_RTC_DATETIME=y -CONFIG_LIBC_MAX_EXITFUNS=1 -CONFIG_SCHED_HPWORK=y -CONFIG_SCHED_HPWORKPRIORITY=249 -CONFIG_SCHED_HPWORKSTACKSIZE=1280 -CONFIG_SCHED_INSTRUMENTATION=y -CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y -CONFIG_SCHED_INSTRUMENTATION_SWITCH=y -CONFIG_SCHED_LPWORK=y -CONFIG_SCHED_LPWORKPRIORITY=50 -CONFIG_SCHED_LPWORKSTACKSIZE=1632 -CONFIG_SCHED_WAITPID=y -CONFIG_SDCLONE_DISABLE=y -CONFIG_SDMMC1_SDIO_PULLUP=y -CONFIG_SEM_PREALLOCHOLDERS=32 -CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y -CONFIG_SERIAL_TERMIOS=y -CONFIG_SIG_DEFAULT=y -CONFIG_SIG_SIGALRM_ACTION=y -CONFIG_SIG_SIGUSR1_ACTION=y -CONFIG_SIG_SIGUSR2_ACTION=y -CONFIG_SIG_SIGWORK=4 -CONFIG_STACK_COLORATION=y -CONFIG_START_DAY=30 -CONFIG_START_MONTH=11 -CONFIG_STDIO_BUFFER_SIZE=256 -CONFIG_STM32H7_ADC1=y -CONFIG_STM32H7_ADC3=y -CONFIG_STM32H7_BBSRAM=y -CONFIG_STM32H7_BBSRAM_FILES=5 -CONFIG_STM32H7_BDMA=y -CONFIG_STM32H7_BKPSRAM=y -CONFIG_STM32H7_DMA1=y -CONFIG_STM32H7_DMA2=y -CONFIG_STM32H7_DMACAPABLE=y -CONFIG_STM32H7_FLOWCONTROL_BROKEN=y -CONFIG_STM32H7_I2C1=y -CONFIG_STM32H7_I2C2=y -CONFIG_STM32H7_I2C_DYNTIMEO=y -CONFIG_STM32H7_I2C_DYNTIMEO_STARTSTOP=10 -CONFIG_STM32H7_OTGFS=y -CONFIG_STM32H7_PROGMEM=y -CONFIG_STM32H7_RTC=y -CONFIG_STM32H7_RTC_HSECLOCK=y -CONFIG_STM32H7_RTC_MAGIC_REG=1 -CONFIG_STM32H7_SAVE_CRASHDUMP=y -CONFIG_STM32H7_SDMMC1=y -CONFIG_STM32H7_SERIALBRK_BSDCOMPAT=y -CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y -CONFIG_STM32H7_SPI1=y -CONFIG_STM32H7_SPI1_DMA=y -CONFIG_STM32H7_SPI1_DMA_BUFFER=2048 -CONFIG_STM32H7_SPI2=y -CONFIG_STM32H7_SPI3=y -CONFIG_STM32H7_SPI4=y -CONFIG_STM32H7_SPI4_DMA=y -CONFIG_STM32H7_SPI4_DMA_BUFFER=2048 -CONFIG_STM32H7_SPI_DMA=y -CONFIG_STM32H7_SPI_DMATHRESHOLD=8 -CONFIG_STM32H7_TIM15=y -CONFIG_STM32H7_TIM1=y -CONFIG_STM32H7_TIM2=y -CONFIG_STM32H7_TIM4=y -CONFIG_STM32H7_TIM5=y -CONFIG_STM32H7_TIM8=y -CONFIG_STM32H7_UART4=y -CONFIG_STM32H7_UART7=y -CONFIG_STM32H7_UART8=y -CONFIG_STM32H7_USART1=y -CONFIG_STM32H7_USART2=y -CONFIG_STM32H7_USART3=y -CONFIG_STM32H7_USART6=y -CONFIG_STM32H7_USART_BREAKS=y -CONFIG_STM32H7_USART_INVERT=y -CONFIG_STM32H7_USART_SINGLEWIRE=y -CONFIG_STM32H7_USART_SWAP=y -CONFIG_SYSTEM_CDCACM=y -CONFIG_SYSTEM_NSH=y -CONFIG_TASK_NAME_SIZE=24 -CONFIG_UART4_BAUD=57600 -CONFIG_UART4_RXBUFSIZE=600 -CONFIG_UART4_TXBUFSIZE=1500 -CONFIG_UART7_BAUD=57600 -CONFIG_UART7_IFLOWCONTROL=y -CONFIG_UART7_OFLOWCONTROL=y -CONFIG_UART7_RXBUFSIZE=600 -CONFIG_UART7_TXBUFSIZE=1500 -CONFIG_UART8_BAUD=57600 -CONFIG_UART8_RXBUFSIZE=600 -CONFIG_UART8_TXBUFSIZE=1500 -CONFIG_USART1_BAUD=57600 -CONFIG_USART1_RXBUFSIZE=600 -CONFIG_USART1_SERIAL_CONSOLE=y -CONFIG_USART1_TXBUFSIZE=1500 -CONFIG_USART2_BAUD=57600 -CONFIG_USART2_RXBUFSIZE=600 -CONFIG_USART2_TXBUFSIZE=1500 -CONFIG_USART3_BAUD=57600 -CONFIG_USART3_RXBUFSIZE=600 -CONFIG_USART3_TXBUFSIZE=1500 -CONFIG_USART6_BAUD=57600 -CONFIG_USART6_RXBUFSIZE=600 -CONFIG_USART6_TXBUFSIZE=1500 -CONFIG_USBDEV=y -CONFIG_USBDEV_BUSPOWERED=y -CONFIG_USBDEV_MAXPOWER=500 -CONFIG_USEC_PER_TICK=1000 -CONFIG_INIT_STACKSIZE=2944 -CONFIG_INIT_ENTRYPOINT="nsh_main" -CONFIG_WATCHDOG=y diff --git a/boards/matek/h743-mini/nuttx-config/scripts/bootloader_script.ld b/boards/matek/h743-mini/nuttx-config/scripts/bootloader_script.ld deleted file mode 100644 index 511ef26242..0000000000 --- a/boards/matek/h743-mini/nuttx-config/scripts/bootloader_script.ld +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The Durandal-v1 uses an STM32H743II has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * The Durandal has a Swtich on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the swiutch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - flash (rx) : ORIGIN = 0x08000000, LENGTH = 2048K - dtcm1 (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - dtcm2 (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - sram (rwx) : ORIGIN = 0x24000000, LENGTH = 512K - sram1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K - sram2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K - sram3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K - sram4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K - bbram (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > flash - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > flash - - - .ARM.extab : { - *(.ARM.extab*) - } > flash - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > flash - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - } > sram AT > flash - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > sram - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/matek/h743-mini/nuttx-config/scripts/script.ld b/boards/matek/h743-mini/nuttx-config/scripts/script.ld deleted file mode 100644 index 85f4990724..0000000000 --- a/boards/matek/h743-mini/nuttx-config/scripts/script.ld +++ /dev/null @@ -1,228 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2020 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The board uses an STM32H743II and has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * There's a switch on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the switch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1920K - - DTCM1_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - DTCM2_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - AXI_SRAM (rwx) : ORIGIN = 0x24000000, LENGTH = 512K /* D1 domain AXI bus */ - SRAM1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K /* D2 domain AHB bus */ - SRAM4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K /* D3 domain */ - BKPRAM (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > FLASH - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > FLASH - - - .ARM.extab : { - *(.ARM.extab*) - } > FLASH - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > FLASH - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - - /* Pad out last section as the STM32H7 Flash write size is 256 bits. 32 bytes */ - . = ALIGN(16); - FILL(0xffff) - . += 16; - } > AXI_SRAM AT > FLASH = 0xffff - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > AXI_SRAM - - /* Emit the the D3 power domain section for locating BDMA data */ - - .sram4_reserve (NOLOAD) : - { - *(.sram4) - . = ALIGN(4); - _sram4_heap_start = ABSOLUTE(.); - } > SRAM4 - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/matek/h743-mini/src/CMakeLists.txt b/boards/matek/h743-mini/src/CMakeLists.txt deleted file mode 100644 index c47215375d..0000000000 --- a/boards/matek/h743-mini/src/CMakeLists.txt +++ /dev/null @@ -1,68 +0,0 @@ -############################################################################ -# -# Copyright (c) 2021 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. -# -############################################################################ -if("${PX4_BOARD_LABEL}" STREQUAL "bootloader") - add_library(drivers_board - bootloader_main.c - usb.c - ) - target_link_libraries(drivers_board - PRIVATE - nuttx_arch - nuttx_drivers - bootloader - ) - target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common) - -else() - add_library(drivers_board - i2c.cpp - init.c - led.c - sdio.c - spi.cpp - timer_config.cpp - usb.c - ) - add_dependencies(drivers_board arch_board_hw_info) - - target_link_libraries(drivers_board - PRIVATE - arch_io_pins - arch_spi - arch_board_hw_info - drivers__led - nuttx_arch - nuttx_drivers - px4_layer - ) -endif() diff --git a/boards/matek/h743-mini/src/board_config.h b/boards/matek/h743-mini/src/board_config.h deleted file mode 100644 index 151d6b59c5..0000000000 --- a/boards/matek/h743-mini/src/board_config.h +++ /dev/null @@ -1,237 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file board_config.h - * - * Board internal definitions - */ - -#pragma once - -/**************************************************************************************************** - * Included Files - ****************************************************************************************************/ - -#include -#include -#include - -#include - -/**************************************************************************************************** - * Definitions - ****************************************************************************************************/ - -// #define FLASH_BASED_PARAMS - - -/* LEDs are driven with push open drain to support Anode to 5V or 3.3V */ - -#define GPIO_nLED_BLUE /* PE3 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN3) -#define GPIO_nLED_GREEN /* PE4 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN4) - -#define BOARD_HAS_CONTROL_STATUS_LEDS 1 -#define BOARD_ARMED_STATE_LED 1 // Green LED -#define BOARD_OVERLOAD_LED 0 // Blue LED - - -/* - * ADC channels - * - * These are the channel numbers of the ADCs of the microcontroller that - * can be used by the Px4 Firmware in the adc driver - */ - -/* ADC defines to be used in sensors.cpp to read from a particular channel */ -#define ADC1_CH(n) (n) - -/* Define GPIO pins used as ADC N.B. Channel numbers must match below */ -#define PX4_ADC_GPIO \ - /* PC0 */ GPIO_ADC123_INP10, \ - /* PC1 */ GPIO_ADC123_INP11, \ - /* PA4 */ GPIO_ADC12_INP18, \ - /* PA7 */ GPIO_ADC12_INP7, \ - /* PC4 */ GPIO_ADC12_INP4, \ - /* PC5 */ GPIO_ADC12_INP8 - -/* Define Channel numbers must match above GPIO pin IN(n)*/ -#define ADC_BATTERY_VOLTAGE_CHANNEL /* PC0 */ ADC1_CH(10) -#define ADC_BATTERY_CURRENT_CHANNEL /* PC1 */ ADC1_CH(11) -#define ADC_BATTERY2_VOLTAGE_CHANNEL /* PA4 */ ADC1_CH(18) -#define ADC_BATTERY2_CURRENT_CHANNEL /* PA7 */ ADC1_CH(7) -#define ADC_AIRSPEED_IN_CHANNEL /* PC4 */ ADC1_CH(4) -#define ADC_RSSI_IN_CHANNEL /* PC5 */ ADC1_CH(8) - -#define ADC_CHANNELS \ - ((1 << ADC_BATTERY_VOLTAGE_CHANNEL) | \ - (1 << ADC_BATTERY_CURRENT_CHANNEL) | \ - (1 << ADC_BATTERY2_VOLTAGE_CHANNEL) | \ - (1 << ADC_BATTERY2_CURRENT_CHANNEL) | \ - (1 << ADC_AIRSPEED_IN_CHANNEL) | \ - (1 << ADC_RSSI_IN_CHANNEL)) - - -/* Define Battery 1 Voltage Divider and A per V - */ - -#define BOARD_BATTERY1_V_DIV (11.0f) /* measured with the provided PM board */ -#define BOARD_BATTERY1_A_PER_V (40.0f) -#define BOARD_BATTERY2_V_DIV (11.0f) /* measured with the provided PM board */ - - -/* CAN Silence - * - * Silent mode control \ ESC Mux select - */ - -#define GPIO_CAN1_SILENT_S0 /* PD3 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN3) - - -/* PWM - */ -#define DIRECT_PWM_OUTPUT_CHANNELS 12 -#define DIRECT_INPUT_TIMER_CHANNELS 12 - -#define BOARD_HAS_PWM DIRECT_PWM_OUTPUT_CHANNELS - - -/* Spare GPIO */ - -// #define GPIO_PG6 /* PG6 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN6) -// #define GPIO_PD15 /* PD15 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTD|GPIO_PIN15) -// #define GPIO_PG15 /* PG15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN15) - - -/* Tone alarm output */ - -#define GPIO_TONE_ALARM_IDLE /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) -#define GPIO_TONE_ALARM_GPIO /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) - -// #define TONE_ALARM_TIMER 2 /* Timer 2 */ -// #define TONE_ALARM_CHANNEL 1 /* PA15 GPIO_TIM2_CH1OUT_2 */ -// #define GPIO_TONE_ALARM_IDLE /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) -// #define GPIO_TONE_ALARM GPIO_TIM2_CH1OUT_2 - - -/* USB OTG FS - * - * PE2 OTG_FS_VBUS VBUS sensing - */ - -#define GPIO_OTGFS_VBUS /* PE2 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTE|GPIO_PIN2) - - -/* High-resolution timer */ -#define HRT_TIMER 2 /* use timer8 for the HRT */ -#define HRT_TIMER_CHANNEL 1 /* use capture/compare channel 3 */ - - -/* RC Serial port */ -#define RC_SERIAL_PORT "/dev/ttyS4" -#define BOARD_SUPPORTS_RC_SERIAL_PORT_OUTPUT - -// #define GPIO_RSSI_IN /* PC5 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN5) - - -/* SD Card */ -#define SDIO_SLOTNO 0 /* Only one slot */ -#define SDIO_MINOR 0 - -/* This board provides a DMA pool and APIs */ -#define BOARD_DMA_ALLOC_POOL_SIZE 5120 - -/* This board provides the board_on_reset interface */ -#define BOARD_HAS_ON_RESET 1 - - -#define PX4_GPIO_INIT_LIST { \ - PX4_ADC_GPIO, \ - GPIO_CAN1_TX, \ - GPIO_CAN1_RX, \ - GPIO_CAN1_SILENT_S0, \ - GPIO_nLED_BLUE, \ - GPIO_nLED_GREEN, \ - GPIO_TONE_ALARM_IDLE, \ - } - -#define BOARD_ENABLE_CONSOLE_BUFFER - -#define BOARD_NUM_IO_TIMERS 4 - - -__BEGIN_DECLS - -/**************************************************************************************************** - * Public Types - ****************************************************************************************************/ - -/**************************************************************************************************** - * Public data - ****************************************************************************************************/ - -#ifndef __ASSEMBLY__ - -/**************************************************************************************************** - * Public Functions - ****************************************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void); - -/**************************************************************************************************** - * Name: stm32_spiinitialize - * - * Description: - * Called to configure SPI chip select GPIO pins for the board. - * - ****************************************************************************************************/ - -extern void stm32_spiinitialize(void); - -extern void stm32_usbinitialize(void); - -extern void board_peripheral_reset(int ms); - -#include - -#endif /* __ASSEMBLY__ */ - -__END_DECLS diff --git a/boards/matek/h743-mini/src/bootloader_main.c b/boards/matek/h743-mini/src/bootloader_main.c deleted file mode 100644 index 5670308a29..0000000000 --- a/boards/matek/h743-mini/src/bootloader_main.c +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file bootloader_main.c - * - * FMU-specific early startup code for bootloader -*/ - -#include "board_config.h" -#include "bl.h" - -#include -#include -#include -#include -#include -#include "arm_internal.h" -#include - -extern int sercon_main(int c, char **argv); - -__EXPORT void board_on_reset(int status) {} - -__EXPORT void stm32_boardinitialize(void) -{ - /* configure USB interfaces */ - stm32_usbinitialize(); -} - -__EXPORT int board_app_initialize(uintptr_t arg) -{ - return 0; -} - -void board_late_initialize(void) -{ - sercon_main(0, NULL); -} - -extern void sys_tick_handler(void); -void board_timerhook(void) -{ - sys_tick_handler(); -} diff --git a/boards/matek/h743-mini/src/hw_config.h b/boards/matek/h743-mini/src/hw_config.h deleted file mode 100644 index f289dc960d..0000000000 --- a/boards/matek/h743-mini/src/hw_config.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -/**************************************************************************** - * 10-8--2016: - * To simplify the ripple effect on the tools, we will be using - * /dev/serial/by-id/PX4 to locate PX4 devices. Therefore - * moving forward all Bootloaders must contain the prefix "PX4 BL " - * in the USBDEVICESTRING - * This Change will be made in an upcoming BL release - ****************************************************************************/ -/* - * Define usage to configure a bootloader - * - * - * Constant example Usage - * APP_LOAD_ADDRESS 0x08004000 - The address in Linker Script, where the app fw is org-ed - * BOOTLOADER_DELAY 5000 - Ms to wait while under USB pwr or bootloader request - * BOARD_FMUV2 - * INTERFACE_USB 1 - (Optional) Scan and use the USB interface for bootloading - * INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading - * USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string - * USBPRODUCTID 0x0011 - PID Should match defconfig - * BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom - * delay provided by an APP FW - * BOARD_TYPE 9 - Must match .prototype boad_id - * _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection - * BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector - * BOARD_FLASH_SECTORS 11 - Hard coded zero based last sector - * BOARD_FLASH_SIZE (_FLASH_KBYTES*1024)- Total Flash size of device, determined at run time. - * (1024 * 1024) - Hard coded Total Flash of device - The bootloader and app reserved will be deducted - * programmatically - * - * BOARD_FIRST_FLASH_SECTOR_TO_ERASE 2 - Optional sectors index in the flash_sectors table (F4 only), to begin erasing. - * This is to allow sectors to be reserved for app fw usage. That will NOT be erased - * during a FW upgrade. - * The default is 0, and selects the first sector to be erased, as the 0th entry in the - * flash_sectors table. Which is the second physical sector of FLASH in the device. - * The first physical sector of FLASH is used by the bootloader, and is not defined - * in the table. - * - * APP_RESERVATION_SIZE (BOARD_FIRST_FLASH_SECTOR_TO_ERASE * 16 * 1024) - Number of bytes reserved by the APP FW. This number plus - * BOOTLOADER_RESERVATION_SIZE will be deducted from - * BOARD_FLASH_SIZE to determine the size of the App FW - * and hence the address space of FLASH to erase and program. - * USBMFGSTRING "PX4 AP" - Optional USB MFG string (default is '3D Robotics' if not defined.) - * SERIAL_BREAK_DETECT_DISABLED - Optional prevent break selection on Serial port from entering or staying in BL - * - * * Other defines are somewhat self explanatory. - */ - -/* Boot device selection list*/ -#define USB0_DEV 0x01 -#define SERIAL0_DEV 0x02 -#define SERIAL1_DEV 0x04 - -#define APP_LOAD_ADDRESS 0x08020000 -#define BOOTLOADER_DELAY 5000 -#define INTERFACE_USB 1 -#define INTERFACE_USB_CONFIG "/dev/ttyACM0" -#define BOARD_VBUS MK_GPIO_INPUT(GPIO_OTGFS_VBUS) - -//#define USE_VBUS_PULL_DOWN -#define INTERFACE_USART 1 -#define INTERFACE_USART_CONFIG "/dev/ttyS0,57600" -#define BOOT_DELAY_ADDRESS 0x000001a0 -#define BOARD_TYPE 139 -#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880) -#define BOARD_FLASH_SECTORS (15) -#define BOARD_FLASH_SIZE (_FLASH_KBYTES * 1024) - -#define OSC_FREQ 8 - -#define BOARD_PIN_LED_ACTIVITY GPIO_nLED_BLUE // BLUE -#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_GREEN // GREEN -#define BOARD_LED_ON 0 -#define BOARD_LED_OFF 1 - -#define SERIAL_BREAK_DETECT_DISABLED 1 - -#if !defined(ARCH_SN_MAX_LENGTH) -# define ARCH_SN_MAX_LENGTH 12 -#endif - -#if !defined(APP_RESERVATION_SIZE) -# define APP_RESERVATION_SIZE 0 -#endif - -#if !defined(BOARD_FIRST_FLASH_SECTOR_TO_ERASE) -# define BOARD_FIRST_FLASH_SECTOR_TO_ERASE 1 -#endif - -#if !defined(USB_DATA_ALIGN) -# define USB_DATA_ALIGN -#endif - -#ifndef BOOT_DEVICES_SELECTION -# define BOOT_DEVICES_SELECTION USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif - -#ifndef BOOT_DEVICES_FILTER_ONUSB -# define BOOT_DEVICES_FILTER_ONUSB USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif diff --git a/boards/matek/h743-mini/src/i2c.cpp b/boards/matek/h743-mini/src/i2c.cpp deleted file mode 100644 index 1444ea1172..0000000000 --- a/boards/matek/h743-mini/src/i2c.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = { - initI2CBusExternal(1), - initI2CBusInternal(2), -}; diff --git a/boards/matek/h743-mini/src/init.c b/boards/matek/h743-mini/src/init.c deleted file mode 100644 index bb1c6f975c..0000000000 --- a/boards/matek/h743-mini/src/init.c +++ /dev/null @@ -1,182 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file init.c - * - * FMU-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 - * subsystems and perform board-specific initialisation. - */ - -#include "board_config.h" - -#include - -#include -#include -#include -#include -#include -#include "arm_internal.h" - -#include -#include -#include -#include -#include -#include -#include - -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -__END_DECLS - -/************************************************************************************ - * Name: board_peripheral_reset - * - * Description: - * - ************************************************************************************/ -__EXPORT void board_peripheral_reset(int ms) -{ - UNUSED(ms); -} - -/************************************************************************************ - * Name: board_on_reset - * - * Description: - * Optionally provided function called on entry to board_system_reset - * It should perform any house keeping prior to the rest. - * - * status - 1 if resetting to boot loader - * 0 if just resetting - * - ************************************************************************************/ -__EXPORT void board_on_reset(int status) -{ - for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) { - px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i))); - } - - if (status >= 0) { - up_mdelay(6); - } -} - -/************************************************************************************ - * 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. - * - ************************************************************************************/ -__EXPORT void stm32_boardinitialize(void) -{ - /* Reset PWM first thing */ - board_on_reset(-1); - - /* configure LEDs */ - board_autoled_initialize(); - - /* configure pins */ - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - - /* configure SPI interfaces */ - stm32_spiinitialize(); - - /* configure USB interfaces */ - stm32_usbinitialize(); - -} - -/**************************************************************************** - * Name: board_app_initialize - * - * Description: - * Perform application specific initialization. This function is never - * called directly from application code, but only indirectly via the - * (non-standard) boardctl() interface using the command BOARDIOC_INIT. - * - * Input Parameters: - * arg - The boardctl() argument is passed to the board_app_initialize() - * implementation without modification. The argument has no - * meaning to NuttX; - * - * Returned Value: - * Zero (OK) is returned on success; a negated errno value is returned on - * any failure to indicate the nature of the failure. - * - ****************************************************************************/ -__EXPORT int board_app_initialize(uintptr_t arg) -{ - /* Need hrt running before using the ADC */ - px4_platform_init(); - - /* configure the DMA allocator */ - if (board_dma_alloc_init() < 0) { - syslog(LOG_ERR, "[boot] DMA alloc FAILED\n"); - } - - /* initial LED state */ - drv_led_start(); - led_off(LED_RED); - led_off(LED_BLUE); - - if (board_hardfault_init(2, true) != 0) { - led_on(LED_BLUE); - } - -#ifdef CONFIG_MMCSD - int ret = stm32_sdio_initialize(); - - if (ret != OK) { - led_on(LED_BLUE); - return ret; - } - -#endif - - /* Configure the HW based on the manifest */ - px4_platform_configure(); - - return OK; -} diff --git a/boards/matek/h743-mini/src/led.c b/boards/matek/h743-mini/src/led.c deleted file mode 100644 index 2d60d89be9..0000000000 --- a/boards/matek/h743-mini/src/led.c +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file led.c - * - * LED backend. - */ - -#include - -#include - -#include "chip.h" -#include "stm32_gpio.h" -#include "board_config.h" - -#include -#include - -/* - * Ideally we'd be able to get these from arm_internal.h, - * but since we want to be able to disable the NuttX use - * of leds for system indication at will and there is no - * separate switch, we need to build independent of the - * CONFIG_ARCH_LEDS configuration switch. - */ -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -extern void led_toggle(int led); -__END_DECLS - -# define xlat(p) (p) -static uint32_t g_ledmap[] = { - GPIO_nLED_BLUE, // Indexed by LED_BLUE (defaulted to an output) - GPIO_nLED_GREEN -}; - -__EXPORT void led_init(void) -{ - /* Configure LED GPIOs for output */ - for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { - if (g_ledmap[l] != 0) { - stm32_configgpio(g_ledmap[l]); - } - } -} - -static void phy_set_led(int led, bool state) -{ - /* Drive Low to switch on */ - if (g_ledmap[led] != 0) { - stm32_gpiowrite(g_ledmap[led], !state); - } -} - -static bool phy_get_led(int led) -{ - /* If Low it is on */ - if (g_ledmap[led] != 0) { - return !stm32_gpioread(g_ledmap[led]); - } - - return false; -} - -__EXPORT void led_on(int led) -{ - phy_set_led(xlat(led), true); -} - -__EXPORT void led_off(int led) -{ - phy_set_led(xlat(led), false); -} - -__EXPORT void led_toggle(int led) -{ - phy_set_led(xlat(led), !phy_get_led(xlat(led))); -} diff --git a/boards/matek/h743-mini/src/sdio.c b/boards/matek/h743-mini/src/sdio.c deleted file mode 100644 index 869d757756..0000000000 --- a/boards/matek/h743-mini/src/sdio.c +++ /dev/null @@ -1,177 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include "chip.h" -#include "board_config.h" -#include "stm32_gpio.h" -#include "stm32_sdmmc.h" - -#ifdef CONFIG_MMCSD - - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* Card detections requires card support and a card detection GPIO */ - -#define HAVE_NCD 1 -#if !defined(GPIO_SDMMC1_NCD) -# undef HAVE_NCD -#endif - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -static FAR struct sdio_dev_s *sdio_dev; -#ifdef HAVE_NCD -static bool g_sd_inserted = 0xff; /* Impossible value */ -#endif - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_ncd_interrupt - * - * Description: - * Card detect interrupt handler. - * - ****************************************************************************/ - -#ifdef HAVE_NCD -static int stm32_ncd_interrupt(int irq, FAR void *context) -{ - bool present; - - present = !stm32_gpioread(GPIO_SDMMC1_NCD); - - if (sdio_dev && present != g_sd_inserted) { - sdio_mediachange(sdio_dev, present); - g_sd_inserted = present; - } - - return OK; -} -#endif - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void) -{ - int ret; - -#ifdef HAVE_NCD - /* Card detect */ - - bool cd_status; - - /* Configure the card detect GPIO */ - - stm32_configgpio(GPIO_SDMMC1_NCD); - - /* Register an interrupt handler for the card detect pin */ - - stm32_gpiosetevent(GPIO_SDMMC1_NCD, true, true, true, stm32_ncd_interrupt); -#endif - - /* Mount the SDIO-based MMC/SD block driver */ - /* First, get an instance of the SDIO interface */ - - finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO); - - sdio_dev = sdio_initialize(SDIO_SLOTNO); - - if (!sdio_dev) { - syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n", SDIO_SLOTNO); - return -ENODEV; - } - - /* Now bind the SDIO interface to the MMC/SD driver */ - - finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR); - - ret = mmcsd_slotinitialize(SDIO_MINOR, sdio_dev); - - if (ret != OK) { - syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret); - return ret; - } - - finfo("Successfully bound SDIO to the MMC/SD driver\n"); - -#ifdef HAVE_NCD - /* Use SD card detect pin to check if a card is g_sd_inserted */ - - cd_status = !stm32_gpioread(GPIO_SDMMC1_NCD); - finfo("Card detect : %d\n", cd_status); - - sdio_mediachange(sdio_dev, cd_status); -#else - /* Assume that the SD card is inserted. What choice do we have? */ - - sdio_mediachange(sdio_dev, true); -#endif - - return OK; -} - -#endif /* CONFIG_MMCSD */ diff --git a/boards/matek/h743-mini/src/spi.cpp b/boards/matek/h743-mini/src/spi.cpp deleted file mode 100644 index db673bedf0..0000000000 --- a/boards/matek/h743-mini/src/spi.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 -#include - - -constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { - initSPIBus(SPI::Bus::SPI1, { - initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortC, GPIO::Pin15}, SPI::DRDY{GPIO::PortB, GPIO::Pin2}), - }), - initSPIBus(SPI::Bus::SPI2, { - initSPIDevice(DRV_OSD_DEVTYPE_ATXXXX, SPI::CS{GPIO::PortB, GPIO::Pin12}), - }), - initSPIBusExternal(SPI::Bus::SPI3, { - initSPIConfigExternal(SPI::CS{GPIO::PortD, GPIO::Pin4}), - initSPIConfigExternal(SPI::CS{GPIO::PortE, GPIO::Pin2}), - }), - initSPIBus(SPI::Bus::SPI4, { - initSPIDevice(DRV_IMU_DEVTYPE_ICM42605, SPI::CS{GPIO::PortC, GPIO::Pin13}), - initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortE, GPIO::Pin11}), - }), -}; - -static constexpr bool unused = validateSPIConfig(px4_spi_buses); diff --git a/boards/matek/h743-mini/src/timer_config.cpp b/boards/matek/h743-mini/src/timer_config.cpp deleted file mode 100644 index e862bf2a7a..0000000000 --- a/boards/matek/h743-mini/src/timer_config.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { - initIOTimer(Timer::Timer3, DMA{DMA::Index1, DMA::Stream2, DMA::Channel5}), - initIOTimer(Timer::Timer5, DMA{DMA::Index1, DMA::Stream0, DMA::Channel6}), - initIOTimer(Timer::Timer4, DMA{DMA::Index1, DMA::Stream6, DMA::Channel2}), - initIOTimer(Timer::Timer15), -}; - -constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel3}, {GPIO::PortB, GPIO::Pin0}), - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel4}, {GPIO::PortB, GPIO::Pin1}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, {GPIO::PortA, GPIO::Pin0}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel2}, {GPIO::PortA, GPIO::Pin1}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel3}, {GPIO::PortA, GPIO::Pin2}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel4}, {GPIO::PortA, GPIO::Pin3}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel1}, {GPIO::PortD, GPIO::Pin12}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel2}, {GPIO::PortD, GPIO::Pin13}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel3}, {GPIO::PortD, GPIO::Pin14}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel4}, {GPIO::PortD, GPIO::Pin15}), - initIOTimerChannel(io_timers, {Timer::Timer15, Timer::Channel1}, {GPIO::PortE, GPIO::Pin5}), - initIOTimerChannel(io_timers, {Timer::Timer15, Timer::Channel2}, {GPIO::PortE, GPIO::Pin6}), -}; - -constexpr io_timers_channel_mapping_t io_timers_channel_mapping = - initIOTimerChannelMapping(io_timers, timer_io_channels); - - - -constexpr io_timers_t led_pwm_timers[MAX_LED_TIMERS] = { - initIOTimer(Timer::Timer1), -}; - -// #define CCER_C1_NUM_BITS 4 -// #define POLARITY(c) (GTIM_CCER_CC1P << (((c)-1) * CCER_C1_NUM_BITS)) -// #define DRIVE_TYPE(p) ((p)|GPIO_OPENDRAIN|GPIO_PULLUP) - -// static inline constexpr timer_io_channels_t initIOTimerChannelLED(const io_timers_t io_timers_conf[MAX_LED_TIMERS], -// Timer::TimerChannel timer, GPIO::GPIOPin pin, int ui_polarity) -// { -// timer_io_channels_t ret = initIOTimerChannel(io_timers_conf, timer, pin); -// ret.gpio_out = DRIVE_TYPE(ret.gpio_out); -// ret.masks = POLARITY(ui_polarity); -// return ret; -// } - -// constexpr timer_io_channels_t led_pwm_channels[MAX_TIMER_LED_CHANNELS] = { -// initIOTimerChannelLED(led_pwm_timers, {Timer::Timer1, Timer::Channel1}, {GPIO::PortA, GPIO::Pin8}, 1), -// }; diff --git a/boards/matek/h743-mini/src/usb.c b/boards/matek/h743-mini/src/usb.c deleted file mode 100644 index 4fdfafd250..0000000000 --- a/boards/matek/h743-mini/src/usb.c +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -/** - * @file usb.c - * - * Board-specific USB functions. - */ - -#include "board_config.h" -#include -#include -#include -#include - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the 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 - * - * Description: - * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is - * used. This function is called whenever the USB enters or leaves suspend mode. - * This is an opportunity for the board logic to shutdown clocks, power, etc. - * while the USB is suspended. - * - ************************************************************************************/ -__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) -{ - uinfo("resume: %d\n", resume); -} diff --git a/boards/matek/h743-slim/bootloader.px4board b/boards/matek/h743-slim/bootloader.px4board deleted file mode 100644 index 19b6e662be..0000000000 --- a/boards/matek/h743-slim/bootloader.px4board +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_ROMFSROOT="" diff --git a/boards/matek/h743-slim/default.px4board b/boards/matek/h743-slim/default.px4board deleted file mode 100644 index 06c0cd20c3..0000000000 --- a/boards/matek/h743-slim/default.px4board +++ /dev/null @@ -1,88 +0,0 @@ -CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" -CONFIG_BOARD_ARCHITECTURE="cortex-m7" -CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS1" -CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS2" -CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3" -CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5" -CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS6" -CONFIG_DRIVERS_ADC_BOARD_ADC=y -CONFIG_DRIVERS_BAROMETER_DPS310=y -CONFIG_DRIVERS_CAMERA_CAPTURE=n -CONFIG_DRIVERS_CAMERA_TRIGGER=n -CONFIG_COMMON_DISTANCE_SENSOR=y -CONFIG_DRIVERS_DSHOT=y -CONFIG_DRIVERS_GPS=y -CONFIG_DRIVERS_IMU_INVENSENSE_MPU6000=y -CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y -CONFIG_DRIVERS_IMU_INVENSENSE_ICM42605=y -CONFIG_COMMON_LIGHT=n -CONFIG_COMMON_MAGNETOMETER=y -CONFIG_COMMON_OPTICAL_FLOW=y -CONFIG_DRIVERS_OSD=y -CONFIG_DRIVERS_PWM_OUT=y -CONFIG_DRIVERS_PWM_OUT_SIM=n -CONFIG_DRIVERS_RC_INPUT=y -CONFIG_DRIVERS_RPM=n -CONFIG_COMMON_TELEMETRY=y -CONFIG_DRIVERS_TONE_ALARM=y -CONFIG_DRIVERS_UAVCAN=y -CONFIG_BOARD_UAVCAN_INTERFACES=1 -CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q=y -CONFIG_MODULES_BATTERY_STATUS=y -CONFIG_MODULES_COMMANDER=y -CONFIG_MODULES_CONTROL_ALLOCATOR=y -CONFIG_MODULES_DATAMAN=y -CONFIG_MODULES_EKF2=y -CONFIG_MODULES_EVENTS=y -CONFIG_MODULES_FLIGHT_MODE_MANAGER=y -CONFIG_MODULES_FW_ATT_CONTROL=y -CONFIG_MODULES_FW_POS_CONTROL_L1=y -CONFIG_MODULES_GYRO_CALIBRATION=y -CONFIG_MODULES_GYRO_FFT=y -CONFIG_MODULES_LAND_DETECTOR=y -CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y -CONFIG_MODULES_LOAD_MON=y -CONFIG_MODULES_LOCAL_POSITION_ESTIMATOR=y -CONFIG_MODULES_LOGGER=y -CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y -CONFIG_MODULES_MANUAL_CONTROL=y -CONFIG_MODULES_MAVLINK=y -CONFIG_MODULES_MC_ATT_CONTROL=y -CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n -CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y -CONFIG_MODULES_MC_POS_CONTROL=y -CONFIG_MODULES_MC_RATE_CONTROL=y -CONFIG_MODULES_MICRODDS_CLIENT=y -CONFIG_MODULES_NAVIGATOR=y -CONFIG_MODULES_RC_UPDATE=y -CONFIG_MODULES_SENSORS=y -CONFIG_MODULES_TEMPERATURE_COMPENSATION=n -CONFIG_MODULES_VTOL_ATT_CONTROL=y -CONFIG_MODULES_GIMBAL=n -CONFIG_SYSTEMCMDS_BL_UPDATE=n -CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y -CONFIG_SYSTEMCMDS_DMESG=y -CONFIG_SYSTEMCMDS_DUMPFILE=n -CONFIG_SYSTEMCMDS_GPIO=y -CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y -CONFIG_SYSTEMCMDS_I2CDETECT=y -CONFIG_SYSTEMCMDS_LED_CONTROL=n -CONFIG_SYSTEMCMDS_MFT=n -CONFIG_SYSTEMCMDS_MOTOR_TEST=n -CONFIG_SYSTEMCMDS_MTD=n -CONFIG_SYSTEMCMDS_NSHTERM=y -CONFIG_SYSTEMCMDS_PARAM=y -CONFIG_SYSTEMCMDS_PERF=y -CONFIG_SYSTEMCMDS_REBOOT=y -CONFIG_SYSTEMCMDS_SD_BENCH=n -CONFIG_SYSTEMCMDS_SD_STRESS=n -CONFIG_SYSTEMCMDS_SERIAL_TEST=n -CONFIG_SYSTEMCMDS_SYSTEM_TIME=y -CONFIG_SYSTEMCMDS_TOP=y -CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y -CONFIG_SYSTEMCMDS_TUNE_CONTROL=n -CONFIG_SYSTEMCMDS_UORB=y -CONFIG_SYSTEMCMDS_USB_CONNECTED=y -CONFIG_SYSTEMCMDS_VER=y -CONFIG_SYSTEMCMDS_WORK_QUEUE=y -CONFIG_EXAMPLES_FAKE_GPS=n diff --git a/boards/matek/h743-slim/extras/matek_h743-slim_bootloader.bin b/boards/matek/h743-slim/extras/matek_h743-slim_bootloader.bin deleted file mode 100755 index 8a09116735bc86b17ff879166c5529333b030ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43224 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

RjZ^ctQ~u3F<$f1M|ju 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 - * - * 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 NuttX 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. - * - ************************************************************************************/ -#ifndef __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H -#define __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H - -/************************************************************************************ - * Included Files - ************************************************************************************/ - -#include "board_dma_map.h" - -#include - -#ifndef __ASSEMBLY__ -# include -#endif - -#include "stm32_rcc.h" -#include "stm32_sdmmc.h" - -/************************************************************************************ - * Pre-processor Definitions - ************************************************************************************/ - -/* Clocking *************************************************************************/ -/* The MatekH743-Slim board provides the following clock sources: - * - * X1: 8 MHz crystal for HSE - * - * So we have these clock source available within the STM32 - * - * HSI: 64 MHz RC factory-trimmed - * HSE: 8 MHz crystal for HSE - */ - -#define STM32_BOARD_XTAL 8000000ul - -#define STM32_HSI_FREQUENCY 16000000ul -#define STM32_LSI_FREQUENCY 32000 -#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL -#define STM32_LSE_FREQUENCY 32768 - -/* Main PLL Configuration. - * - * PLL source is HSE = 8,000,000 - * - * PLL_VCOx = (STM32_HSE_FREQUENCY / PLLM) * PLLN - * Subject to: - * - * 1 <= PLLM <= 63 - * 4 <= PLLN <= 512 - * 150 MHz <= PLL_VCOL <= 420MHz - * 192 MHz <= PLL_VCOH <= 836MHz - * - * SYSCLK = PLL_VCO / PLLP - * CPUCLK = SYSCLK / D1CPRE - * Subject to - * - * PLLP1 = {2, 4, 6, 8, ..., 128} - * PLLP2,3 = {2, 3, 4, ..., 128} - * CPUCLK <= 480 MHz - */ - -#define STM32_BOARD_USEHSE - -#define STM32_PLLCFG_PLLSRC RCC_PLLCKSELR_PLLSRC_HSE - -/* PLL1, wide 4 - 8 MHz input, enable DIVP, DIVQ, DIVR - * - * PLL1_VCO = (8,000,000 / 1) * 120 = 960 MHz - * - * PLL1P = PLL1_VCO/2 = 960 MHz / 2 = 480 MHz - * PLL1Q = PLL1_VCO/4 = 960 MHz / 4 = 240 MHz - * PLL1R = PLL1_VCO/8 = 960 MHz / 8 = 120 MHz - */ - -#define STM32_PLLCFG_PLL1CFG (RCC_PLLCFGR_PLL1VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL1RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP1EN | \ - RCC_PLLCFGR_DIVQ1EN | \ - RCC_PLLCFGR_DIVR1EN) -#define STM32_PLLCFG_PLL1M RCC_PLLCKSELR_DIVM1(1) -#define STM32_PLLCFG_PLL1N RCC_PLL1DIVR_N1(120) -#define STM32_PLLCFG_PLL1P RCC_PLL1DIVR_P1(2) -#define STM32_PLLCFG_PLL1Q RCC_PLL1DIVR_Q1(4) -#define STM32_PLLCFG_PLL1R RCC_PLL1DIVR_R1(8) - -#define STM32_VCO1_FREQUENCY ((STM32_HSE_FREQUENCY / 1) * 120) -#define STM32_PLL1P_FREQUENCY (STM32_VCO1_FREQUENCY / 2) -#define STM32_PLL1Q_FREQUENCY (STM32_VCO1_FREQUENCY / 4) -#define STM32_PLL1R_FREQUENCY (STM32_VCO1_FREQUENCY / 8) - -/* PLL2 */ - -#define STM32_PLLCFG_PLL2CFG (RCC_PLLCFGR_PLL2VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL2RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVP2EN | \ - RCC_PLLCFGR_DIVQ2EN | \ - RCC_PLLCFGR_DIVR2EN) -#define STM32_PLLCFG_PLL2M RCC_PLLCKSELR_DIVM2(2) -#define STM32_PLLCFG_PLL2N RCC_PLL2DIVR_N2(48) -#define STM32_PLLCFG_PLL2P RCC_PLL2DIVR_P2(2) -#define STM32_PLLCFG_PLL2Q RCC_PLL2DIVR_Q2(2) -#define STM32_PLLCFG_PLL2R RCC_PLL2DIVR_R2(2) - -#define STM32_VCO2_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL2P_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2Q_FREQUENCY (STM32_VCO2_FREQUENCY / 2) -#define STM32_PLL2R_FREQUENCY (STM32_VCO2_FREQUENCY / 2) - -/* PLL3 */ - -#define STM32_PLLCFG_PLL3CFG (RCC_PLLCFGR_PLL3VCOSEL_WIDE | \ - RCC_PLLCFGR_PLL3RGE_4_8_MHZ | \ - RCC_PLLCFGR_DIVQ3EN) -#define STM32_PLLCFG_PLL3M RCC_PLLCKSELR_DIVM3(2) -#define STM32_PLLCFG_PLL3N RCC_PLL3DIVR_N3(48) -#define STM32_PLLCFG_PLL3P RCC_PLL3DIVR_P3(2) -#define STM32_PLLCFG_PLL3Q RCC_PLL3DIVR_Q3(4) -#define STM32_PLLCFG_PLL3R RCC_PLL3DIVR_R3(2) - -#define STM32_VCO3_FREQUENCY ((STM32_HSE_FREQUENCY / 2) * 48) -#define STM32_PLL3P_FREQUENCY (STM32_VCO3_FREQUENCY / 2) -#define STM32_PLL3Q_FREQUENCY (STM32_VCO3_FREQUENCY / 4) -#define STM32_PLL3R_FREQUENCY (STM32_VCO3_FREQUENCY / 2) - -/* SYSCLK = PLL1P = 480MHz - * CPUCLK = SYSCLK / 1 = 480 MHz - */ - -#define STM32_RCC_D1CFGR_D1CPRE (RCC_D1CFGR_D1CPRE_SYSCLK) -#define STM32_SYSCLK_FREQUENCY (STM32_PLL1P_FREQUENCY) -#define STM32_CPUCLK_FREQUENCY (STM32_SYSCLK_FREQUENCY / 1) - -/* Configure Clock Assignments */ - -/* AHB clock (HCLK) is SYSCLK/2 (240 MHz max) - * HCLK1 = HCLK2 = HCLK3 = HCLK4 = 240 - */ - -#define STM32_RCC_D1CFGR_HPRE RCC_D1CFGR_HPRE_SYSCLKd2 /* HCLK = SYSCLK / 2 */ -#define STM32_ACLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* ACLK in D1, HCLK3 in D1 */ -#define STM32_HCLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* HCLK in D2, HCLK4 in D3 */ -#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */ - -/* APB1 clock (PCLK1) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE1 RCC_D2CFGR_D2PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */ -#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB2 clock (PCLK2) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D2CFGR_D2PPRE2 RCC_D2CFGR_D2PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */ -#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB3 clock (PCLK3) is HCLK/2 (120 MHz) */ - -#define STM32_RCC_D1CFGR_D1PPRE RCC_D1CFGR_D1PPRE_HCLKd2 /* PCLK3 = HCLK / 2 */ -#define STM32_PCLK3_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* APB4 clock (PCLK4) is HCLK/4 (120 MHz) */ - -#define STM32_RCC_D3CFGR_D3PPRE RCC_D3CFGR_D3PPRE_HCLKd2 /* PCLK4 = HCLK / 2 */ -#define STM32_PCLK4_FREQUENCY (STM32_HCLK_FREQUENCY/2) - -/* Timer clock frequencies */ - -/* Timers driven from APB1 will be twice PCLK1 */ - -#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) - -/* Timers driven from APB2 will be twice PCLK2 */ - -#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM15_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM16_CLKIN (2*STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM17_CLKIN (2*STM32_PCLK2_FREQUENCY) - -/* Kernel Clock Configuration - * - * Note: look at Table 54 in ST Manual - */ - -/* I2C123 clock source */ - -#define STM32_RCC_D2CCIP2R_I2C123SRC RCC_D2CCIP2R_I2C123SEL_HSI - -/* I2C4 clock source */ - -#define STM32_RCC_D3CCIPR_I2C4SRC RCC_D3CCIPR_I2C4SEL_HSI - -/* SPI123 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI123SRC RCC_D2CCIP1R_SPI123SEL_PLL2 - -/* SPI45 clock source */ - -#define STM32_RCC_D2CCIP1R_SPI45SRC RCC_D2CCIP1R_SPI45SEL_PLL2 - -/* SPI6 clock source */ - -#define STM32_RCC_D3CCIPR_SPI6SRC RCC_D3CCIPR_SPI6SEL_PLL2 - -/* USB 1 and 2 clock source */ - -#define STM32_RCC_D2CCIP2R_USBSRC RCC_D2CCIP2R_USBSEL_PLL3 - -/* ADC 1 2 3 clock source */ - -#define STM32_RCC_D3CCIPR_ADCSEL RCC_D3CCIPR_ADCSEL_PLL2 - -/* FDCAN 1 clock source */ - -#define STM32_RCC_D2CCIP1R_FDCANSEL RCC_D2CCIP1R_FDCANSEL_HSE /* FDCAN 1 2 clock source */ - -#define STM32_FDCANCLK STM32_HSE_FREQUENCY - -/* FLASH wait states - * - * ------------ ---------- ----------- - * Vcore MAX ACLK WAIT STATES - * ------------ ---------- ----------- - * 1.15-1.26 V 70 MHz 0 - * (VOS1 level) 140 MHz 1 - * 210 MHz 2 - * 1.05-1.15 V 55 MHz 0 - * (VOS2 level) 110 MHz 1 - * 165 MHz 2 - * 220 MHz 3 - * 0.95-1.05 V 45 MHz 0 - * (VOS3 level) 90 MHz 1 - * 135 MHz 2 - * 180 MHz 3 - * 225 MHz 4 - * ------------ ---------- ----------- - */ - -#define BOARD_FLASH_WAITSTATES 2 - -/* SDMMC definitions ********************************************************/ - -/* Init 480kHz, freq = PLL1Q/(2*div) div = PLL1Q/(2*freq) */ - -#define STM32_SDMMC_INIT_CLKDIV (300 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) - -/* 20 MHz Max for now - more reliable on some boards than 25 MHz - * 20 MHz = PLL1Q/(2*div), div = PLL1Q/(2*freq), div = 6 = 240 / 40 - */ - -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_MMCXFR_CLKDIV (6 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_MMCXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif -#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA) -# define STM32_SDMMC_SDXFR_CLKDIV (6 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#else -# define STM32_SDMMC_SDXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT) -#endif - -#define STM32_SDMMC_CLKCR_EDGE STM32_SDMMC_CLKCR_NEGEDGE - -/* LED definitions ******************************************************************/ -/* The board has two, LED_GREEN a Green LED and LED_BLUE a Blue LED, - * that can be controlled by software. - * - * 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() */ - -#define BOARD_LED1 0 -#define BOARD_LED2 1 -#define BOARD_NLEDS 2 - -#define BOARD_LED_BLUE BOARD_LED1 -#define BOARD_LED_GREEN BOARD_LED2 - -/* LED bits for use with board_userled_all() */ - -#define BOARD_LED1_BIT (1 << BOARD_LED1) -#define BOARD_LED2_BIT (1 << BOARD_LED2) - -/* If CONFIG_ARCH_LEDS is defined, the usage by the board port is defined in - * include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related - * events as follows: - * - * - * SYMBOL Meaning LED state - * Red Green Blue - * ---------------------- -------------------------- ------ ------ ----*/ - -#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */ -#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF OFF ON */ -#define LED_IRQSENABLED 2 /* Interrupts enabled OFF ON OFF */ -#define LED_STACKCREATED 3 /* Idle stack created OFF ON ON */ -#define LED_INIRQ 4 /* In an interrupt N/C N/C GLOW */ -#define LED_SIGNAL 5 /* In a signal handler N/C GLOW N/C */ -#define LED_ASSERTION 6 /* An assertion failed GLOW N/C GLOW */ -#define LED_PANIC 7 /* The system has crashed Blink OFF N/C */ -#define LED_IDLE 8 /* MCU is is sleep mode ON OFF OFF */ - -/* Thus if the Green LED is statically on, NuttX has successfully booted and - * is, apparently, running normally. If the Red LED is flashing at - * approximately 2Hz, then a fatal error has been detected and the system - * has halted. - */ - -/* Alternate function pin selections ************************************************/ - -#define GPIO_USART1_RX GPIO_USART1_RX_2 /* PA10 */ -#define GPIO_USART1_TX GPIO_USART1_TX_2 /* PA9 */ - -#define GPIO_USART2_RX GPIO_USART2_RX_2 /* PD6 */ -#define GPIO_USART2_TX GPIO_USART2_TX_2 /* PD5 */ - -#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */ -#define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */ - -#define GPIO_UART4_RX GPIO_UART4_RX_3 /* PB8 */ -#define GPIO_UART4_TX GPIO_UART4_TX_3 /* PB9 */ - -#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */ -#define GPIO_USART6_TX GPIO_USART6_TX_1 /* PC6 */ - -#define GPIO_UART7_RX GPIO_UART7_RX_3 /* PE7 */ -#define GPIO_UART7_TX GPIO_UART7_TX_3 /* PE8 */ -#define GPIO_UART7_RTS GPIO_UART7_RTS_1 /* PE9 */ -#define GPIO_UART7_CTS GPIO_UART7_CTS_1 /* PE10 */ - -#define GPIO_UART8_RX GPIO_UART8_RX_1 /* PE0 */ -#define GPIO_UART8_TX GPIO_UART8_TX_1 /* PE1 */ - - -/* CAN - * - * CAN1 is routed to transceiver. - */ - -#define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */ -#define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */ - -/* SPI - * - * SPI1 is MPU6000 - * SPI2 is MAX7456 - * SPI3 is extern with PD4 and PE2 as CS - * SPI4 is ICM20602 - */ - -#define ADJ_SLEW_RATE(p) (((p) & ~GPIO_SPEED_MASK) | (GPIO_SPEED_2MHz)) - -#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */ -#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_3 /* PD7 */ -#define GPIO_SPI1_SCK ADJ_SLEW_RATE(GPIO_SPI1_SCK_1) /* PA5 */ - -#define GPIO_SPI2_MISO GPIO_SPI2_MISO_1 /* PB14 */ -#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_1 /* PB15 */ -#define GPIO_SPI2_SCK ADJ_SLEW_RATE(GPIO_SPI2_SCK_4) /* PB13 */ - -#define GPIO_SPI3_MISO GPIO_SPI3_MISO_1 /* PB4 */ -#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_4 /* PB5 */ -#define GPIO_SPI3_SCK ADJ_SLEW_RATE(GPIO_SPI3_SCK_1) /* PB3 */ - -#define GPIO_SPI4_MISO GPIO_SPI4_MISO_1 /* PE13 */ -#define GPIO_SPI4_MOSI GPIO_SPI4_MOSI_1 /* PE14 */ -#define GPIO_SPI4_SCK ADJ_SLEW_RATE(GPIO_SPI4_SCK_1) /* PE12 */ - -/* I2C - * - * The optional _GPIO configurations allow the I2C driver to manually - * reset the bus to clear stuck slaves. They match the pin configuration, - * but are normally-high GPIOs. - * - */ - -#define GPIO_I2C1_SCL GPIO_I2C1_SCL_1 /* PB6 */ -#define GPIO_I2C1_SDA GPIO_I2C1_SDA_1 /* PB7 */ - -#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6) -#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7) - -#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1 /* PB10 */ -#define GPIO_I2C2_SDA GPIO_I2C2_SDA_1 /* PB11 */ - -#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN10) -#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN11) - -/* SDMMC1 - * - * SDMMC1_D0 PC8 - * SDMMC1_D1 PC9 - * SDMMC1_D2 PC10 - * SDMMC1_D3 PC11 - * SDMMC1_CK PC12 - * SDMMC1_CMD PD2 - */ - -// #define GPIO_SDMMC1_D0 GPIO_SDMMC1_D0 /* PC8 */ -// #define GPIO_SDMMC1_D1 GPIO_SDMMC1_D1 /* PC9 */ -// #define GPIO_SDMMC1_D2 GPIO_SDMMC1_D2 /* PC10 */ -// #define GPIO_SDMMC1_D3 GPIO_SDMMC1_D3 /* PC11 */ -// #define GPIO_SDMMC1_CK GPIO_SDMMC1_CK /* PC12 */ -// #define GPIO_SDMMC1_CMD GPIO_SDMMC1_CMD /* PD2 */ - - -/* USB - * - * OTG_FS_DM PA11 - * OTG_FS_DP PA12 - * VBUS PA9 - */ - - -/* Board provides GPIO or other Hardware for signaling to timing analyzer */ - -#if defined(CONFIG_BOARD_USE_PROBES) -# include "stm32_gpio.h" -# define PROBE_N(n) (1<<((n)-1)) -# define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTI|GPIO_PIN0) /* PI0 AUX1 */ -# define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN12) /* PH12 AUX2 */ -# define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN11) /* PH11 AUX3 */ -# define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN10) /* PH10 AUX4 */ -# define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN13) /* PD13 AUX5 */ -# define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) /* PD14 AUX6 */ -# define PROBE_7 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN6) /* PH6 AUX7 */ -# define PROBE_8 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN9) /* PH9 AUX8 */ -# define PROBE_9 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11) /* PE11 CAP1 */ - -# define PROBE_INIT(mask) \ - do { \ - if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \ - if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \ - if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \ - if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \ - if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \ - if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \ - if ((mask)& PROBE_N(7)) { stm32_configgpio(PROBE_7); } \ - if ((mask)& PROBE_N(8)) { stm32_configgpio(PROBE_8); } \ - if ((mask)& PROBE_N(9)) { stm32_configgpio(PROBE_9); } \ - } while(0) - -# define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0) -# define PROBE_MARK(n) PROBE(n,false);PROBE(n,true) -#else -# define PROBE_INIT(mask) -# define PROBE(n,s) -# define PROBE_MARK(n) -#endif - -#endif /*__NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H */ diff --git a/boards/matek/h743-slim/nuttx-config/include/board_dma_map.h b/boards/matek/h743-slim/nuttx-config/include/board_dma_map.h deleted file mode 100644 index 693132c389..0000000000 --- a/boards/matek/h743-slim/nuttx-config/include/board_dma_map.h +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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 - -// DMAMUX1 -#define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 /* DMA1:37 */ -#define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 /* DMA1:38 */ - - -// DMAMUX2 -#define DMAMAP_SPI4_RX DMAMAP_DMA12_SPI4RX_1 /* DMA2:83 */ -#define DMAMAP_SPI4_TX DMAMAP_DMA12_SPI4TX_1 /* DMA2:84 */ diff --git a/boards/matek/h743-slim/nuttx-config/nsh/defconfig b/boards/matek/h743-slim/nuttx-config/nsh/defconfig deleted file mode 100644 index 59efb97000..0000000000 --- a/boards/matek/h743-slim/nuttx-config/nsh/defconfig +++ /dev/null @@ -1,251 +0,0 @@ -# -# This file is autogenerated: PLEASE DO NOT EDIT IT. -# -# You can use "make menuconfig" to make any modifications to the installed .config file. -# You can then do "make savedefconfig" to generate a new defconfig file that includes your -# modifications. -# -# CONFIG_DISABLE_ENVIRON is not set -# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_DISABLE_PTHREAD is not set -# CONFIG_MMCSD_HAVE_CARDDETECT is not set -# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set -# CONFIG_MMCSD_MMCSUPPORT is not set -# CONFIG_MMCSD_SPI is not set -# CONFIG_NSH_DISABLEBG is not set -# CONFIG_NSH_DISABLESCRIPT is not set -# CONFIG_NSH_DISABLE_DF is not set -# CONFIG_NSH_DISABLE_EXEC is not set -# CONFIG_NSH_DISABLE_EXIT is not set -# CONFIG_NSH_DISABLE_GET is not set -# CONFIG_NSH_DISABLE_ITEF is not set -# CONFIG_NSH_DISABLE_LOOPS is not set -# CONFIG_NSH_DISABLE_SEMICOLON is not set -# CONFIG_NSH_DISABLE_TIME is not set -CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD_CUSTOM=y -CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/matek/h743-slim/nuttx-config" -CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y -CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" -CONFIG_ARCH_CHIP="stm32h7" -CONFIG_ARCH_CHIP_STM32H743VI=y -CONFIG_ARCH_CHIP_STM32H7=y -CONFIG_ARCH_INTERRUPTSTACK=512 -CONFIG_ARCH_STACKDUMP=y -CONFIG_ARMV7M_BASEPRI_WAR=y -CONFIG_ARMV7M_DCACHE=y -CONFIG_ARMV7M_DTCM=y -CONFIG_ARMV7M_ICACHE=y -CONFIG_ARMV7M_MEMCPY=y -CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_ARM_MPU_EARLY_RESET=y -CONFIG_BOARDCTL_RESET=y -CONFIG_BOARDCTL=y -CONFIG_BOARD_CRASHDUMP=y -CONFIG_BOARD_LOOPSPERMSEC=95150 -CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_BUILTIN=y -CONFIG_C99_BOOL8=y -CONFIG_CDCACM=y -CONFIG_CDCACM_IFLOWCONTROL=y -CONFIG_CDCACM_PRODUCTID=0x1013 -CONFIG_CDCACM_PRODUCTSTR="MatekH743" -CONFIG_CDCACM_RXBUFSIZE=600 -CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x1209 -CONFIG_CDCACM_VENDORSTR="Matek" -CONFIG_CLOCK_MONOTONIC=y -CONFIG_DEBUG_FULLOPT=y -CONFIG_DEBUG_HARDFAULT_ALERT=y -CONFIG_DEBUG_MEMFAULT=y -CONFIG_DEBUG_SYMBOLS=y -CONFIG_DEFAULT_SMALL=y -# CONFIG_NSH_DISABLE_ECHO is not set -# CONFIG_NSH_DISABLE_ENV is not set -# CONFIG_NSH_DISABLE_FREE is not set -# CONFIG_NSH_DISABLE_HELP is not set -# CONFIG_NSH_DISABLE_KILL is not set -# CONFIG_NSH_DISABLE_LS is not set -# CONFIG_NSH_DISABLE_MKDIR is not set -# CONFIG_NSH_DISABLE_MODCMDS is not set -# CONFIG_NSH_DISABLE_MOUNT is not set -# CONFIG_NSH_DISABLE_MV is not set -# CONFIG_NSH_DISABLE_PRINTF is not set -# CONFIG_NSH_DISABLE_PSSTACKUSAGE -# CONFIG_NSH_DISABLE_PWD is not set -# CONFIG_NSH_DISABLE_SOURCE is not set -# CONFIG_NSH_DISABLE_SLEEP is not set -# CONFIG_NSH_DISABLE_TEST is not set -# CONFIG_NSH_DISABLE_UMOUNT is not set -# CONFIG_NSH_DISABLE_UNSET is not set -# CONFIG_NSH_DISABLE_USLEEP is not set -CONFIG_DEV_FIFO_SIZE=0 -CONFIG_DEV_PIPE_MAXSIZE=1024 -CONFIG_DEV_PIPE_SIZE=70 -CONFIG_EXPERIMENTAL=y -CONFIG_FAT_DMAMEMORY=y -CONFIG_FAT_LCNAMES=y -CONFIG_FAT_LFN=y -CONFIG_FAT_LFN_ALIAS_HASH=y -CONFIG_FDCLONE_STDIO=y -CONFIG_FS_BINFS=y -CONFIG_FS_CROMFS=y -CONFIG_FS_FAT=y -CONFIG_FS_FATTIME=y -CONFIG_FS_PROCFS=y -CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y -CONFIG_FS_PROCFS_MAX_TASKS=64 -CONFIG_FS_PROCFS_REGISTER=y -CONFIG_FS_ROMFS=y -CONFIG_GRAN=y -CONFIG_GRAN_INTR=y -CONFIG_HAVE_CXX=y -CONFIG_HAVE_CXXINITIALIZE=y -CONFIG_I2C=y -CONFIG_I2C_RESET=y -CONFIG_IDLETHREAD_STACKSIZE=750 -CONFIG_LIBC_FLOATINGPOINT=y -CONFIG_LIBC_LONG_LONG=y -CONFIG_LIBC_STRERROR=y -CONFIG_MEMSET_64BIT=y -CONFIG_MEMSET_OPTSPEED=y -CONFIG_MMCSD=y -CONFIG_MMCSD_SDIO=y -CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y -CONFIG_MM_REGIONS=4 -CONFIG_NAME_MAX=40 -CONFIG_NSH_ARCHINIT=y -CONFIG_NSH_ARGCAT=y -CONFIG_NSH_BUILTIN_APPS=y -CONFIG_NSH_CMDPARMS=y -CONFIG_NSH_CROMFSETC=y -CONFIG_NSH_LINELEN=128 -CONFIG_NSH_MAXARGUMENTS=15 -CONFIG_NSH_NESTDEPTH=8 -CONFIG_NSH_QUOTE=y -CONFIG_NSH_ROMFSETC=y -CONFIG_NSH_ROMFSSECTSIZE=128 -CONFIG_NSH_STRERROR=y -CONFIG_NSH_VARS=y -CONFIG_OTG_ID_GPIO_DISABLE=y -CONFIG_PIPES=y -CONFIG_PREALLOC_TIMERS=50 -CONFIG_PRIORITY_INHERITANCE=y -CONFIG_PTHREAD_MUTEX_ROBUST=y -CONFIG_PTHREAD_STACK_MIN=512 -CONFIG_RAM_SIZE=245760 -CONFIG_RAM_START=0x20010000 -CONFIG_RAW_BINARY=y -CONFIG_READLINE_CMD_HISTORY=y -CONFIG_READLINE_TABCOMPLETION=y -CONFIG_RTC_DATETIME=y -CONFIG_LIBC_MAX_EXITFUNS=1 -CONFIG_SCHED_HPWORK=y -CONFIG_SCHED_HPWORKPRIORITY=249 -CONFIG_SCHED_HPWORKSTACKSIZE=1280 -CONFIG_SCHED_INSTRUMENTATION=y -CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y -CONFIG_SCHED_INSTRUMENTATION_SWITCH=y -CONFIG_SCHED_LPWORK=y -CONFIG_SCHED_LPWORKPRIORITY=50 -CONFIG_SCHED_LPWORKSTACKSIZE=1632 -CONFIG_SCHED_WAITPID=y -CONFIG_SDCLONE_DISABLE=y -CONFIG_SDMMC1_SDIO_PULLUP=y -CONFIG_SEM_PREALLOCHOLDERS=32 -CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y -CONFIG_SERIAL_TERMIOS=y -CONFIG_SIG_DEFAULT=y -CONFIG_SIG_SIGALRM_ACTION=y -CONFIG_SIG_SIGUSR1_ACTION=y -CONFIG_SIG_SIGUSR2_ACTION=y -CONFIG_SIG_SIGWORK=4 -CONFIG_STACK_COLORATION=y -CONFIG_START_DAY=30 -CONFIG_START_MONTH=11 -CONFIG_STDIO_BUFFER_SIZE=256 -CONFIG_STM32H7_ADC1=y -CONFIG_STM32H7_ADC3=y -CONFIG_STM32H7_BBSRAM=y -CONFIG_STM32H7_BBSRAM_FILES=5 -CONFIG_STM32H7_BDMA=y -CONFIG_STM32H7_BKPSRAM=y -CONFIG_STM32H7_DMA1=y -CONFIG_STM32H7_DMA2=y -CONFIG_STM32H7_DMACAPABLE=y -CONFIG_STM32H7_FLOWCONTROL_BROKEN=y -CONFIG_STM32H7_I2C1=y -CONFIG_STM32H7_I2C2=y -CONFIG_STM32H7_I2C_DYNTIMEO=y -CONFIG_STM32H7_I2C_DYNTIMEO_STARTSTOP=10 -CONFIG_STM32H7_OTGFS=y -CONFIG_STM32H7_PROGMEM=y -CONFIG_STM32H7_RTC=y -CONFIG_STM32H7_RTC_HSECLOCK=y -CONFIG_STM32H7_RTC_MAGIC_REG=1 -CONFIG_STM32H7_SAVE_CRASHDUMP=y -CONFIG_STM32H7_SDMMC1=y -CONFIG_STM32H7_SERIALBRK_BSDCOMPAT=y -CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y -CONFIG_STM32H7_SPI1=y -CONFIG_STM32H7_SPI1_DMA=y -CONFIG_STM32H7_SPI1_DMA_BUFFER=2048 -CONFIG_STM32H7_SPI2=y -CONFIG_STM32H7_SPI3=y -CONFIG_STM32H7_SPI4=y -CONFIG_STM32H7_SPI4_DMA=y -CONFIG_STM32H7_SPI4_DMA_BUFFER=2048 -CONFIG_STM32H7_SPI_DMA=y -CONFIG_STM32H7_SPI_DMATHRESHOLD=8 -CONFIG_STM32H7_TIM15=y -CONFIG_STM32H7_TIM1=y -CONFIG_STM32H7_TIM2=y -CONFIG_STM32H7_TIM4=y -CONFIG_STM32H7_TIM5=y -CONFIG_STM32H7_TIM8=y -CONFIG_STM32H7_UART4=y -CONFIG_STM32H7_UART7=y -CONFIG_STM32H7_UART8=y -CONFIG_STM32H7_USART1=y -CONFIG_STM32H7_USART2=y -CONFIG_STM32H7_USART3=y -CONFIG_STM32H7_USART6=y -CONFIG_STM32H7_USART_BREAKS=y -CONFIG_STM32H7_USART_INVERT=y -CONFIG_STM32H7_USART_SINGLEWIRE=y -CONFIG_STM32H7_USART_SWAP=y -CONFIG_SYSTEM_CDCACM=y -CONFIG_SYSTEM_NSH=y -CONFIG_TASK_NAME_SIZE=24 -CONFIG_UART4_BAUD=57600 -CONFIG_UART4_RXBUFSIZE=600 -CONFIG_UART4_TXBUFSIZE=1500 -CONFIG_UART7_BAUD=57600 -CONFIG_UART7_IFLOWCONTROL=y -CONFIG_UART7_OFLOWCONTROL=y -CONFIG_UART7_RXBUFSIZE=600 -CONFIG_UART7_TXBUFSIZE=1500 -CONFIG_UART8_BAUD=57600 -CONFIG_UART8_RXBUFSIZE=600 -CONFIG_UART8_TXBUFSIZE=1500 -CONFIG_USART1_BAUD=57600 -CONFIG_USART1_RXBUFSIZE=600 -CONFIG_USART1_SERIAL_CONSOLE=y -CONFIG_USART1_TXBUFSIZE=1500 -CONFIG_USART2_BAUD=57600 -CONFIG_USART2_RXBUFSIZE=600 -CONFIG_USART2_TXBUFSIZE=1500 -CONFIG_USART3_BAUD=57600 -CONFIG_USART3_RXBUFSIZE=600 -CONFIG_USART3_TXBUFSIZE=1500 -CONFIG_USART6_BAUD=57600 -CONFIG_USART6_RXBUFSIZE=600 -CONFIG_USART6_TXBUFSIZE=1500 -CONFIG_USBDEV=y -CONFIG_USBDEV_BUSPOWERED=y -CONFIG_USBDEV_MAXPOWER=500 -CONFIG_USEC_PER_TICK=1000 -CONFIG_INIT_STACKSIZE=2944 -CONFIG_INIT_ENTRYPOINT="nsh_main" -CONFIG_WATCHDOG=y diff --git a/boards/matek/h743-slim/nuttx-config/scripts/bootloader_script.ld b/boards/matek/h743-slim/nuttx-config/scripts/bootloader_script.ld deleted file mode 100644 index 511ef26242..0000000000 --- a/boards/matek/h743-slim/nuttx-config/scripts/bootloader_script.ld +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The Durandal-v1 uses an STM32H743II has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * The Durandal has a Swtich on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the swiutch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - flash (rx) : ORIGIN = 0x08000000, LENGTH = 2048K - dtcm1 (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - dtcm2 (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - sram (rwx) : ORIGIN = 0x24000000, LENGTH = 512K - sram1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K - sram2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K - sram3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K - sram4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K - bbram (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > flash - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > flash - - - .ARM.extab : { - *(.ARM.extab*) - } > flash - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > flash - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - } > sram AT > flash - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > sram - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/matek/h743-slim/nuttx-config/scripts/script.ld b/boards/matek/h743-slim/nuttx-config/scripts/script.ld deleted file mode 100644 index c6a8ee1141..0000000000 --- a/boards/matek/h743-slim/nuttx-config/scripts/script.ld +++ /dev/null @@ -1,228 +0,0 @@ -/**************************************************************************** - * scripts/script.ld - * - * Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/* The board uses an STM32H743II and has 2048Kb of main FLASH memory. - * The flash memory is partitioned into a User Flash memory and a System - * Flash memory. Each of these memories has two banks: - * - * 1) User Flash memory: - * - * Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each - * Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each - * - * 2) System Flash memory: - * - * Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector - * Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector - * - * 3) User option bytes for user configuration, only in Bank 1. - * - * In the STM32H743II, two different boot spaces can be selected through - * the BOOT pin and the boot base address programmed in the BOOT_ADD0 and - * BOOT_ADD1 option bytes: - * - * 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0]. - * ST programmed value: Flash memory at 0x0800:0000 - * 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0]. - * ST programmed value: System bootloader at 0x1FF0:0000 - * - * There's a switch on board, the BOOT0 pin is at ground so by default, - * the STM32 will boot to address 0x0800:0000 in FLASH unless the switch is - * drepresed, then the boot will be from 0x1FF0:0000 - * - * The STM32H743ZI also has 1024Kb of data SRAM. - * SRAM is split up into several blocks and into three power domains: - * - * 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with - * 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus - * - * 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000 - * - * The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit - * DTCM ports. The DTCM-RAM could be used for critical real-time - * data, such as interrupt service routines or stack / heap memory. - * Both DTCM-RAMs can be used in parallel (for load/store operations) - * thanks to the Cortex-M7 dual issue capability. - * - * 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000 - * - * This RAM is connected to ITCM 64-bit interface designed for - * execution of critical real-times routines by the CPU. - * - * 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA - * through D1 domain AXI bus matrix - * - * 2.1) 512Kb of SRAM beginning at address 0x2400:0000 - * - * 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA - * through D2 domain AHB bus matrix - * - * 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000 - * 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000 - * 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000 - * - * SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000 - * - * 4) AHB SRAM (D3 domain) accessible by most of system masters - * through D3 domain AHB bus matrix - * - * 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000 - * 4.1) 4Kb of backup RAM beginning at address 0x3880:0000 - * - * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 - * where the code expects to begin execution by jumping to the entry point in - * the 0x0800:0000 address range. - */ - -MEMORY -{ - ITCM_RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K - FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 1920K - - DTCM1_RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - DTCM2_RAM (rwx) : ORIGIN = 0x20010000, LENGTH = 64K - AXI_SRAM (rwx) : ORIGIN = 0x24000000, LENGTH = 512K /* D1 domain AXI bus */ - SRAM1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K /* D2 domain AHB bus */ - SRAM3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K /* D2 domain AHB bus */ - SRAM4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K /* D3 domain */ - BKPRAM (rwx) : ORIGIN = 0x38800000, LENGTH = 4K -} - -OUTPUT_ARCH(arm) -EXTERN(_vectors) -ENTRY(_stext) - -/* - * Ensure that abort() is present in the final object. The exception handling - * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). - */ -EXTERN(abort) -EXTERN(_bootdelay_signature) - -SECTIONS -{ - .text : { - _stext = ABSOLUTE(.); - *(.vectors) - . = ALIGN(32); - /* - This signature provides the bootloader with a way to delay booting - */ - _bootdelay_signature = ABSOLUTE(.); - FILL(0xffecc2925d7d05c5) - . += 8; - *(.text .text.*) - *(.fixup) - *(.gnu.warning) - *(.rodata .rodata.*) - *(.gnu.linkonce.t.*) - *(.glue_7) - *(.glue_7t) - *(.got) - *(.gcc_except_table) - *(.gnu.linkonce.r.*) - _etext = ABSOLUTE(.); - - } > FLASH - - /* - * Init functions (static constructors and the like) - */ - .init_section : { - _sinit = ABSOLUTE(.); - KEEP(*(.init_array .init_array.*)) - _einit = ABSOLUTE(.); - } > FLASH - - - .ARM.extab : { - *(.ARM.extab*) - } > FLASH - - __exidx_start = ABSOLUTE(.); - .ARM.exidx : { - *(.ARM.exidx*) - } > FLASH - __exidx_end = ABSOLUTE(.); - - _eronly = ABSOLUTE(.); - - .data : { - _sdata = ABSOLUTE(.); - *(.data .data.*) - *(.gnu.linkonce.d.*) - CONSTRUCTORS - _edata = ABSOLUTE(.); - - /* Pad out last section as the STM32H7 Flash write size is 256 bits. 32 bytes */ - . = ALIGN(16); - FILL(0xffff) - . += 16; - } > AXI_SRAM AT > FLASH = 0xffff - - .bss : { - _sbss = ABSOLUTE(.); - *(.bss .bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - . = ALIGN(4); - _ebss = ABSOLUTE(.); - } > AXI_SRAM - - /* Emit the the D3 power domain section for locating BDMA data */ - - .sram4_reserve (NOLOAD) : - { - *(.sram4) - . = ALIGN(4); - _sram4_heap_start = ABSOLUTE(.); - } > SRAM4 - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/matek/h743-slim/src/CMakeLists.txt b/boards/matek/h743-slim/src/CMakeLists.txt deleted file mode 100644 index c47215375d..0000000000 --- a/boards/matek/h743-slim/src/CMakeLists.txt +++ /dev/null @@ -1,68 +0,0 @@ -############################################################################ -# -# Copyright (c) 2021 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. -# -############################################################################ -if("${PX4_BOARD_LABEL}" STREQUAL "bootloader") - add_library(drivers_board - bootloader_main.c - usb.c - ) - target_link_libraries(drivers_board - PRIVATE - nuttx_arch - nuttx_drivers - bootloader - ) - target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common) - -else() - add_library(drivers_board - i2c.cpp - init.c - led.c - sdio.c - spi.cpp - timer_config.cpp - usb.c - ) - add_dependencies(drivers_board arch_board_hw_info) - - target_link_libraries(drivers_board - PRIVATE - arch_io_pins - arch_spi - arch_board_hw_info - drivers__led - nuttx_arch - nuttx_drivers - px4_layer - ) -endif() diff --git a/boards/matek/h743-slim/src/board_config.h b/boards/matek/h743-slim/src/board_config.h deleted file mode 100644 index f977a2e8dd..0000000000 --- a/boards/matek/h743-slim/src/board_config.h +++ /dev/null @@ -1,230 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file board_config.h - * - * Board internal definitions - */ - -#pragma once - -/**************************************************************************************************** - * Included Files - ****************************************************************************************************/ - -#include -#include -#include - -#include - -/**************************************************************************************************** - * Definitions - ****************************************************************************************************/ - -// #define FLASH_BASED_PARAMS - - -/* LEDs are driven with push open drain to support Anode to 5V or 3.3V */ - -#define GPIO_nLED_BLUE /* PE3 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN3) -#define GPIO_nLED_GREEN /* PE4 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN4) - -#define BOARD_HAS_CONTROL_STATUS_LEDS 1 -#define BOARD_ARMED_STATE_LED 1 // Green LED -#define BOARD_OVERLOAD_LED 0 // Blue LED - - -/* - * ADC channels - * - * These are the channel numbers of the ADCs of the microcontroller that - * can be used by the Px4 Firmware in the adc driver - */ - -/* ADC defines to be used in sensors.cpp to read from a particular channel */ -#define ADC1_CH(n) (n) - -/* Define GPIO pins used as ADC N.B. Channel numbers must match below */ -#define PX4_ADC_GPIO \ - /* PC0 */ GPIO_ADC123_INP10, \ - /* PC1 */ GPIO_ADC123_INP11, \ - /* PA4 */ GPIO_ADC12_INP18, \ - /* PA7 */ GPIO_ADC12_INP7, \ - /* PC4 */ GPIO_ADC12_INP4, \ - /* PC5 */ GPIO_ADC12_INP8 - -/* Define Channel numbers must match above GPIO pin IN(n)*/ -#define ADC_BATTERY_VOLTAGE_CHANNEL /* PC0 */ ADC1_CH(10) -#define ADC_BATTERY_CURRENT_CHANNEL /* PC1 */ ADC1_CH(11) -#define ADC_BATTERY2_VOLTAGE_CHANNEL /* PA4 */ ADC1_CH(18) -#define ADC_BATTERY2_CURRENT_CHANNEL /* PA7 */ ADC1_CH(7) -#define ADC_AIRSPEED_IN_CHANNEL /* PC4 */ ADC1_CH(4) -#define ADC_RSSI_IN_CHANNEL /* PC5 */ ADC1_CH(8) - -#define ADC_CHANNELS \ - ((1 << ADC_BATTERY_VOLTAGE_CHANNEL) | \ - (1 << ADC_BATTERY_CURRENT_CHANNEL) | \ - (1 << ADC_BATTERY2_VOLTAGE_CHANNEL) | \ - (1 << ADC_BATTERY2_CURRENT_CHANNEL) | \ - (1 << ADC_AIRSPEED_IN_CHANNEL) | \ - (1 << ADC_RSSI_IN_CHANNEL)) - -/* CAN Silence - * - * Silent mode control \ ESC Mux select - */ - -#define GPIO_CAN1_SILENT_S0 /* PD3 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN3) - - -/* PWM - */ -#define DIRECT_PWM_OUTPUT_CHANNELS 12 -#define DIRECT_INPUT_TIMER_CHANNELS 12 - -#define BOARD_HAS_PWM DIRECT_PWM_OUTPUT_CHANNELS - - -/* Spare GPIO */ - -#define GPIO_VIDEO_PWR /* PD10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN10) -#define GPIO_VIDEO_CAM /* PD11 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN11) -// #define GPIO_PG15 /* PG15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN15) - - -/* Tone alarm output */ - -#define GPIO_TONE_ALARM_IDLE /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) -#define GPIO_TONE_ALARM_GPIO /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) - -// #define TONE_ALARM_TIMER 2 /* Timer 2 */ -// #define TONE_ALARM_CHANNEL 1 /* PA15 GPIO_TIM2_CH1OUT_2 */ -// #define GPIO_TONE_ALARM_IDLE /* PA15 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN15) -// #define GPIO_TONE_ALARM GPIO_TIM2_CH1OUT_2 - - -/* USB OTG FS - * - * PE2 OTG_FS_VBUS VBUS sensing - */ - -#define GPIO_OTGFS_VBUS /* PE2 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTE|GPIO_PIN2) - - -/* High-resolution timer */ -#define HRT_TIMER 2 /* use timer8 for the HRT */ -#define HRT_TIMER_CHANNEL 1 /* use capture/compare channel 3 */ - - -/* RC Serial port */ -#define RC_SERIAL_PORT "/dev/ttyS4" -#define BOARD_SUPPORTS_RC_SERIAL_PORT_OUTPUT - -// #define GPIO_RSSI_IN /* PC5 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTC|GPIO_PIN5) - - -/* SD Card */ -#define SDIO_SLOTNO 0 /* Only one slot */ -#define SDIO_MINOR 0 - -/* This board provides a DMA pool and APIs */ -#define BOARD_DMA_ALLOC_POOL_SIZE 5120 - -/* This board provides the board_on_reset interface */ -#define BOARD_HAS_ON_RESET 1 - - -#define PX4_GPIO_INIT_LIST { \ - PX4_ADC_GPIO, \ - GPIO_CAN1_TX, \ - GPIO_CAN1_RX, \ - GPIO_CAN1_SILENT_S0, \ - GPIO_nLED_BLUE, \ - GPIO_nLED_GREEN, \ - GPIO_TONE_ALARM_IDLE, \ - GPIO_VIDEO_PWR, \ - GPIO_VIDEO_CAM, \ - } - -#define BOARD_ENABLE_CONSOLE_BUFFER - -#define BOARD_NUM_IO_TIMERS 4 - - -__BEGIN_DECLS - -/**************************************************************************************************** - * Public Types - ****************************************************************************************************/ - -/**************************************************************************************************** - * Public data - ****************************************************************************************************/ - -#ifndef __ASSEMBLY__ - -/**************************************************************************************************** - * Public Functions - ****************************************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void); - -/**************************************************************************************************** - * Name: stm32_spiinitialize - * - * Description: - * Called to configure SPI chip select GPIO pins for the board. - * - ****************************************************************************************************/ - -extern void stm32_spiinitialize(void); - -extern void stm32_usbinitialize(void); - -extern void board_peripheral_reset(int ms); - -#include - -#endif /* __ASSEMBLY__ */ - -__END_DECLS diff --git a/boards/matek/h743-slim/src/bootloader_main.c b/boards/matek/h743-slim/src/bootloader_main.c deleted file mode 100644 index 5670308a29..0000000000 --- a/boards/matek/h743-slim/src/bootloader_main.c +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file bootloader_main.c - * - * FMU-specific early startup code for bootloader -*/ - -#include "board_config.h" -#include "bl.h" - -#include -#include -#include -#include -#include -#include "arm_internal.h" -#include - -extern int sercon_main(int c, char **argv); - -__EXPORT void board_on_reset(int status) {} - -__EXPORT void stm32_boardinitialize(void) -{ - /* configure USB interfaces */ - stm32_usbinitialize(); -} - -__EXPORT int board_app_initialize(uintptr_t arg) -{ - return 0; -} - -void board_late_initialize(void) -{ - sercon_main(0, NULL); -} - -extern void sys_tick_handler(void); -void board_timerhook(void) -{ - sys_tick_handler(); -} diff --git a/boards/matek/h743-slim/src/hw_config.h b/boards/matek/h743-slim/src/hw_config.h deleted file mode 100644 index 3256b9c63d..0000000000 --- a/boards/matek/h743-slim/src/hw_config.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -/**************************************************************************** - * 10-8--2016: - * To simplify the ripple effect on the tools, we will be using - * /dev/serial/by-id/PX4 to locate PX4 devices. Therefore - * moving forward all Bootloaders must contain the prefix "PX4 BL " - * in the USBDEVICESTRING - * This Change will be made in an upcoming BL release - ****************************************************************************/ -/* - * Define usage to configure a bootloader - * - * - * Constant example Usage - * APP_LOAD_ADDRESS 0x08004000 - The address in Linker Script, where the app fw is org-ed - * BOOTLOADER_DELAY 5000 - Ms to wait while under USB pwr or bootloader request - * BOARD_FMUV2 - * INTERFACE_USB 1 - (Optional) Scan and use the USB interface for bootloading - * INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading - * USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string - * USBPRODUCTID 0x0011 - PID Should match defconfig - * BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom - * delay provided by an APP FW - * BOARD_TYPE 9 - Must match .prototype boad_id - * _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection - * BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector - * BOARD_FLASH_SECTORS 11 - Hard coded zero based last sector - * BOARD_FLASH_SIZE (_FLASH_KBYTES*1024)- Total Flash size of device, determined at run time. - * (1024 * 1024) - Hard coded Total Flash of device - The bootloader and app reserved will be deducted - * programmatically - * - * BOARD_FIRST_FLASH_SECTOR_TO_ERASE 2 - Optional sectors index in the flash_sectors table (F4 only), to begin erasing. - * This is to allow sectors to be reserved for app fw usage. That will NOT be erased - * during a FW upgrade. - * The default is 0, and selects the first sector to be erased, as the 0th entry in the - * flash_sectors table. Which is the second physical sector of FLASH in the device. - * The first physical sector of FLASH is used by the bootloader, and is not defined - * in the table. - * - * APP_RESERVATION_SIZE (BOARD_FIRST_FLASH_SECTOR_TO_ERASE * 16 * 1024) - Number of bytes reserved by the APP FW. This number plus - * BOOTLOADER_RESERVATION_SIZE will be deducted from - * BOARD_FLASH_SIZE to determine the size of the App FW - * and hence the address space of FLASH to erase and program. - * USBMFGSTRING "PX4 AP" - Optional USB MFG string (default is '3D Robotics' if not defined.) - * SERIAL_BREAK_DETECT_DISABLED - Optional prevent break selection on Serial port from entering or staying in BL - * - * * Other defines are somewhat self explanatory. - */ - -/* Boot device selection list*/ -#define USB0_DEV 0x01 -#define SERIAL0_DEV 0x02 -#define SERIAL1_DEV 0x04 - -#define APP_LOAD_ADDRESS 0x08020000 -#define BOOTLOADER_DELAY 5000 -#define INTERFACE_USB 1 -#define INTERFACE_USB_CONFIG "/dev/ttyACM0" -#define BOARD_VBUS MK_GPIO_INPUT(GPIO_OTGFS_VBUS) - -//#define USE_VBUS_PULL_DOWN -#define INTERFACE_USART 1 -#define INTERFACE_USART_CONFIG "/dev/ttyS0,57600" -#define BOOT_DELAY_ADDRESS 0x000001a0 -#define BOARD_TYPE 1013 -#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880) -#define BOARD_FLASH_SECTORS (15) -#define BOARD_FLASH_SIZE (_FLASH_KBYTES * 1024) - -#define OSC_FREQ 8 - -#define BOARD_PIN_LED_ACTIVITY GPIO_nLED_BLUE // BLUE -#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_GREEN // GREEN -#define BOARD_LED_ON 0 -#define BOARD_LED_OFF 1 - -#define SERIAL_BREAK_DETECT_DISABLED 1 - -#if !defined(ARCH_SN_MAX_LENGTH) -# define ARCH_SN_MAX_LENGTH 12 -#endif - -#if !defined(APP_RESERVATION_SIZE) -# define APP_RESERVATION_SIZE 0 -#endif - -#if !defined(BOARD_FIRST_FLASH_SECTOR_TO_ERASE) -# define BOARD_FIRST_FLASH_SECTOR_TO_ERASE 1 -#endif - -#if !defined(USB_DATA_ALIGN) -# define USB_DATA_ALIGN -#endif - -#ifndef BOOT_DEVICES_SELECTION -# define BOOT_DEVICES_SELECTION USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif - -#ifndef BOOT_DEVICES_FILTER_ONUSB -# define BOOT_DEVICES_FILTER_ONUSB USB0_DEV|SERIAL0_DEV|SERIAL1_DEV -#endif diff --git a/boards/matek/h743-slim/src/i2c.cpp b/boards/matek/h743-slim/src/i2c.cpp deleted file mode 100644 index 1444ea1172..0000000000 --- a/boards/matek/h743-slim/src/i2c.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = { - initI2CBusExternal(1), - initI2CBusInternal(2), -}; diff --git a/boards/matek/h743-slim/src/init.c b/boards/matek/h743-slim/src/init.c deleted file mode 100644 index f78e570c5a..0000000000 --- a/boards/matek/h743-slim/src/init.c +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file init.c - * - * FMU-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 - * subsystems and perform board-specific initialisation. - */ - -#include "board_config.h" - -#include - -#include -#include -#include -#include -#include -#include "arm_internal.h" - -#include -#include -#include -#include -#include -#include -#include - -// # if defined(FLASH_BASED_PARAMS) -// # include -// #endif - -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -__END_DECLS - -/************************************************************************************ - * Name: board_peripheral_reset - * - * Description: - * - ************************************************************************************/ -__EXPORT void board_peripheral_reset(int ms) -{ - UNUSED(ms); -} - -/************************************************************************************ - * Name: board_on_reset - * - * Description: - * Optionally provided function called on entry to board_system_reset - * It should perform any house keeping prior to the rest. - * - * status - 1 if resetting to boot loader - * 0 if just resetting - * - ************************************************************************************/ -__EXPORT void board_on_reset(int status) -{ - for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) { - px4_arch_configgpio(PX4_MAKE_GPIO_INPUT(io_timer_channel_get_as_pwm_input(i))); - } - - if (status >= 0) { - up_mdelay(6); - } -} - -/************************************************************************************ - * 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. - * - ************************************************************************************/ -__EXPORT void stm32_boardinitialize(void) -{ - /* Reset PWM first thing */ - board_on_reset(-1); - - /* configure LEDs */ - board_autoled_initialize(); - - /* configure pins */ - const uint32_t gpio[] = PX4_GPIO_INIT_LIST; - px4_gpio_init(gpio, arraySize(gpio)); - - /* configure SPI interfaces */ - stm32_spiinitialize(); - - /* configure USB interfaces */ - stm32_usbinitialize(); - -} - -/**************************************************************************** - * Name: board_app_initialize - * - * Description: - * Perform application specific initialization. This function is never - * called directly from application code, but only indirectly via the - * (non-standard) boardctl() interface using the command BOARDIOC_INIT. - * - * Input Parameters: - * arg - The boardctl() argument is passed to the board_app_initialize() - * implementation without modification. The argument has no - * meaning to NuttX; - * - * Returned Value: - * Zero (OK) is returned on success; a negated errno value is returned on - * any failure to indicate the nature of the failure. - * - ****************************************************************************/ -__EXPORT int board_app_initialize(uintptr_t arg) -{ - /* Need hrt running before using the ADC */ - px4_platform_init(); - - /* configure the DMA allocator */ - if (board_dma_alloc_init() < 0) { - syslog(LOG_ERR, "[boot] DMA alloc FAILED\n"); - } - - /* initial LED state */ - drv_led_start(); - led_off(LED_RED); - led_off(LED_BLUE); - - if (board_hardfault_init(2, true) != 0) { - led_on(LED_BLUE); - } - -#ifdef CONFIG_MMCSD - int ret = stm32_sdio_initialize(); - - if (ret != OK) { - led_on(LED_BLUE); - } - -#endif - - -// #if defined(FLASH_BASED_PARAMS) -// static sector_descriptor_t params_sector_map[] = { -// {6, 128 * 1024, 0x081C0000}, -// {7, 128 * 1024, 0x081E0000}, -// {0, 0, 0}, -// }; - -// /* Initialize the flashfs layer to use heap allocated memory */ -// int result = parameter_flashfs_init(params_sector_map, NULL, 0); - -// if (result != OK) { -// syslog(LOG_ERR, "[boot] FAILED to init params in FLASH %d\n", result); -// led_on(LED_BLUE); -// return -ENODEV; -// } - -// #endif - - /* Configure the HW based on the manifest */ - px4_platform_configure(); - - return OK; -} diff --git a/boards/matek/h743-slim/src/led.c b/boards/matek/h743-slim/src/led.c deleted file mode 100644 index 2d60d89be9..0000000000 --- a/boards/matek/h743-slim/src/led.c +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2021 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. - * - ****************************************************************************/ - -/** - * @file led.c - * - * LED backend. - */ - -#include - -#include - -#include "chip.h" -#include "stm32_gpio.h" -#include "board_config.h" - -#include -#include - -/* - * Ideally we'd be able to get these from arm_internal.h, - * but since we want to be able to disable the NuttX use - * of leds for system indication at will and there is no - * separate switch, we need to build independent of the - * CONFIG_ARCH_LEDS configuration switch. - */ -__BEGIN_DECLS -extern void led_init(void); -extern void led_on(int led); -extern void led_off(int led); -extern void led_toggle(int led); -__END_DECLS - -# define xlat(p) (p) -static uint32_t g_ledmap[] = { - GPIO_nLED_BLUE, // Indexed by LED_BLUE (defaulted to an output) - GPIO_nLED_GREEN -}; - -__EXPORT void led_init(void) -{ - /* Configure LED GPIOs for output */ - for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { - if (g_ledmap[l] != 0) { - stm32_configgpio(g_ledmap[l]); - } - } -} - -static void phy_set_led(int led, bool state) -{ - /* Drive Low to switch on */ - if (g_ledmap[led] != 0) { - stm32_gpiowrite(g_ledmap[led], !state); - } -} - -static bool phy_get_led(int led) -{ - /* If Low it is on */ - if (g_ledmap[led] != 0) { - return !stm32_gpioread(g_ledmap[led]); - } - - return false; -} - -__EXPORT void led_on(int led) -{ - phy_set_led(xlat(led), true); -} - -__EXPORT void led_off(int led) -{ - phy_set_led(xlat(led), false); -} - -__EXPORT void led_toggle(int led) -{ - phy_set_led(xlat(led), !phy_get_led(xlat(led))); -} diff --git a/boards/matek/h743-slim/src/sdio.c b/boards/matek/h743-slim/src/sdio.c deleted file mode 100644 index 869d757756..0000000000 --- a/boards/matek/h743-slim/src/sdio.c +++ /dev/null @@ -1,177 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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 NuttX 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. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include "chip.h" -#include "board_config.h" -#include "stm32_gpio.h" -#include "stm32_sdmmc.h" - -#ifdef CONFIG_MMCSD - - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* Card detections requires card support and a card detection GPIO */ - -#define HAVE_NCD 1 -#if !defined(GPIO_SDMMC1_NCD) -# undef HAVE_NCD -#endif - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -static FAR struct sdio_dev_s *sdio_dev; -#ifdef HAVE_NCD -static bool g_sd_inserted = 0xff; /* Impossible value */ -#endif - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_ncd_interrupt - * - * Description: - * Card detect interrupt handler. - * - ****************************************************************************/ - -#ifdef HAVE_NCD -static int stm32_ncd_interrupt(int irq, FAR void *context) -{ - bool present; - - present = !stm32_gpioread(GPIO_SDMMC1_NCD); - - if (sdio_dev && present != g_sd_inserted) { - sdio_mediachange(sdio_dev, present); - g_sd_inserted = present; - } - - return OK; -} -#endif - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: stm32_sdio_initialize - * - * Description: - * Initialize SDIO-based MMC/SD card support - * - ****************************************************************************/ - -int stm32_sdio_initialize(void) -{ - int ret; - -#ifdef HAVE_NCD - /* Card detect */ - - bool cd_status; - - /* Configure the card detect GPIO */ - - stm32_configgpio(GPIO_SDMMC1_NCD); - - /* Register an interrupt handler for the card detect pin */ - - stm32_gpiosetevent(GPIO_SDMMC1_NCD, true, true, true, stm32_ncd_interrupt); -#endif - - /* Mount the SDIO-based MMC/SD block driver */ - /* First, get an instance of the SDIO interface */ - - finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO); - - sdio_dev = sdio_initialize(SDIO_SLOTNO); - - if (!sdio_dev) { - syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n", SDIO_SLOTNO); - return -ENODEV; - } - - /* Now bind the SDIO interface to the MMC/SD driver */ - - finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR); - - ret = mmcsd_slotinitialize(SDIO_MINOR, sdio_dev); - - if (ret != OK) { - syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret); - return ret; - } - - finfo("Successfully bound SDIO to the MMC/SD driver\n"); - -#ifdef HAVE_NCD - /* Use SD card detect pin to check if a card is g_sd_inserted */ - - cd_status = !stm32_gpioread(GPIO_SDMMC1_NCD); - finfo("Card detect : %d\n", cd_status); - - sdio_mediachange(sdio_dev, cd_status); -#else - /* Assume that the SD card is inserted. What choice do we have? */ - - sdio_mediachange(sdio_dev, true); -#endif - - return OK; -} - -#endif /* CONFIG_MMCSD */ diff --git a/boards/matek/h743-slim/src/spi.cpp b/boards/matek/h743-slim/src/spi.cpp deleted file mode 100644 index db673bedf0..0000000000 --- a/boards/matek/h743-slim/src/spi.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 -#include - - -constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { - initSPIBus(SPI::Bus::SPI1, { - initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortC, GPIO::Pin15}, SPI::DRDY{GPIO::PortB, GPIO::Pin2}), - }), - initSPIBus(SPI::Bus::SPI2, { - initSPIDevice(DRV_OSD_DEVTYPE_ATXXXX, SPI::CS{GPIO::PortB, GPIO::Pin12}), - }), - initSPIBusExternal(SPI::Bus::SPI3, { - initSPIConfigExternal(SPI::CS{GPIO::PortD, GPIO::Pin4}), - initSPIConfigExternal(SPI::CS{GPIO::PortE, GPIO::Pin2}), - }), - initSPIBus(SPI::Bus::SPI4, { - initSPIDevice(DRV_IMU_DEVTYPE_ICM42605, SPI::CS{GPIO::PortC, GPIO::Pin13}), - initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortE, GPIO::Pin11}), - }), -}; - -static constexpr bool unused = validateSPIConfig(px4_spi_buses); diff --git a/boards/matek/h743-slim/src/timer_config.cpp b/boards/matek/h743-slim/src/timer_config.cpp deleted file mode 100644 index e862bf2a7a..0000000000 --- a/boards/matek/h743-slim/src/timer_config.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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 - -constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { - initIOTimer(Timer::Timer3, DMA{DMA::Index1, DMA::Stream2, DMA::Channel5}), - initIOTimer(Timer::Timer5, DMA{DMA::Index1, DMA::Stream0, DMA::Channel6}), - initIOTimer(Timer::Timer4, DMA{DMA::Index1, DMA::Stream6, DMA::Channel2}), - initIOTimer(Timer::Timer15), -}; - -constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel3}, {GPIO::PortB, GPIO::Pin0}), - initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel4}, {GPIO::PortB, GPIO::Pin1}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, {GPIO::PortA, GPIO::Pin0}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel2}, {GPIO::PortA, GPIO::Pin1}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel3}, {GPIO::PortA, GPIO::Pin2}), - initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel4}, {GPIO::PortA, GPIO::Pin3}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel1}, {GPIO::PortD, GPIO::Pin12}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel2}, {GPIO::PortD, GPIO::Pin13}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel3}, {GPIO::PortD, GPIO::Pin14}), - initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel4}, {GPIO::PortD, GPIO::Pin15}), - initIOTimerChannel(io_timers, {Timer::Timer15, Timer::Channel1}, {GPIO::PortE, GPIO::Pin5}), - initIOTimerChannel(io_timers, {Timer::Timer15, Timer::Channel2}, {GPIO::PortE, GPIO::Pin6}), -}; - -constexpr io_timers_channel_mapping_t io_timers_channel_mapping = - initIOTimerChannelMapping(io_timers, timer_io_channels); - - - -constexpr io_timers_t led_pwm_timers[MAX_LED_TIMERS] = { - initIOTimer(Timer::Timer1), -}; - -// #define CCER_C1_NUM_BITS 4 -// #define POLARITY(c) (GTIM_CCER_CC1P << (((c)-1) * CCER_C1_NUM_BITS)) -// #define DRIVE_TYPE(p) ((p)|GPIO_OPENDRAIN|GPIO_PULLUP) - -// static inline constexpr timer_io_channels_t initIOTimerChannelLED(const io_timers_t io_timers_conf[MAX_LED_TIMERS], -// Timer::TimerChannel timer, GPIO::GPIOPin pin, int ui_polarity) -// { -// timer_io_channels_t ret = initIOTimerChannel(io_timers_conf, timer, pin); -// ret.gpio_out = DRIVE_TYPE(ret.gpio_out); -// ret.masks = POLARITY(ui_polarity); -// return ret; -// } - -// constexpr timer_io_channels_t led_pwm_channels[MAX_TIMER_LED_CHANNELS] = { -// initIOTimerChannelLED(led_pwm_timers, {Timer::Timer1, Timer::Channel1}, {GPIO::PortA, GPIO::Pin8}, 1), -// }; diff --git a/boards/matek/h743-slim/src/usb.c b/boards/matek/h743-slim/src/usb.c deleted file mode 100644 index 4fdfafd250..0000000000 --- a/boards/matek/h743-slim/src/usb.c +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** - * - * Copyright (C) 2021 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. - * - ****************************************************************************/ - -/** - * @file usb.c - * - * Board-specific USB functions. - */ - -#include "board_config.h" -#include -#include -#include -#include - -/************************************************************************************ - * Name: stm32_usbinitialize - * - * Description: - * Called to setup USB-related GPIO pins for the 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 - * - * Description: - * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is - * used. This function is called whenever the USB enters or leaves suspend mode. - * This is an opportunity for the board logic to shutdown clocks, power, etc. - * while the USB is suspended. - * - ************************************************************************************/ -__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) -{ - uinfo("resume: %d\n", resume); -} diff --git a/boards/matek/h743/default.px4board b/boards/matek/h743/default.px4board index 0e3b91b463..ee9ee7d89e 100644 --- a/boards/matek/h743/default.px4board +++ b/boards/matek/h743/default.px4board @@ -7,23 +7,17 @@ CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5" CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS6" CONFIG_DRIVERS_ADC_BOARD_ADC=y CONFIG_DRIVERS_BAROMETER_DPS310=y -CONFIG_DRIVERS_CAMERA_CAPTURE=n -CONFIG_DRIVERS_CAMERA_TRIGGER=n CONFIG_COMMON_DISTANCE_SENSOR=y CONFIG_DRIVERS_DSHOT=y CONFIG_DRIVERS_GPS=y -CONFIG_DRIVERS_IMU_INVENSENSE_MPU6000=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM42605=y CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y -CONFIG_COMMON_LIGHT=n +CONFIG_DRIVERS_IMU_INVENSENSE_MPU6000=y CONFIG_COMMON_MAGNETOMETER=y CONFIG_COMMON_OPTICAL_FLOW=y -CONFIG_DRIVERS_OSD=y CONFIG_DRIVERS_PWM_OUT=y -CONFIG_DRIVERS_PWM_OUT_SIM=n CONFIG_DRIVERS_RC_INPUT=y -CONFIG_DRIVERS_RPM=n CONFIG_COMMON_TELEMETRY=y CONFIG_DRIVERS_TONE_ALARM=y CONFIG_DRIVERS_UAVCAN=y @@ -49,7 +43,6 @@ CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y CONFIG_MODULES_MANUAL_CONTROL=y CONFIG_MODULES_MAVLINK=y CONFIG_MODULES_MC_ATT_CONTROL=y -CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=n CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y CONFIG_MODULES_MC_POS_CONTROL=y CONFIG_MODULES_MC_RATE_CONTROL=y @@ -57,33 +50,20 @@ CONFIG_MODULES_MICRODDS_CLIENT=y CONFIG_MODULES_NAVIGATOR=y CONFIG_MODULES_RC_UPDATE=y CONFIG_MODULES_SENSORS=y -CONFIG_MODULES_TEMPERATURE_COMPENSATION=n CONFIG_MODULES_VTOL_ATT_CONTROL=y -CONFIG_MODULES_GIMBAL=n -CONFIG_SYSTEMCMDS_BL_UPDATE=n CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y CONFIG_SYSTEMCMDS_DMESG=y -CONFIG_SYSTEMCMDS_DUMPFILE=n CONFIG_SYSTEMCMDS_GPIO=y CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y CONFIG_SYSTEMCMDS_I2CDETECT=y -CONFIG_SYSTEMCMDS_LED_CONTROL=n -CONFIG_SYSTEMCMDS_MFT=n -CONFIG_SYSTEMCMDS_MOTOR_TEST=n -CONFIG_SYSTEMCMDS_MTD=n CONFIG_SYSTEMCMDS_NSHTERM=y CONFIG_SYSTEMCMDS_PARAM=y CONFIG_SYSTEMCMDS_PERF=y CONFIG_SYSTEMCMDS_REBOOT=y -CONFIG_SYSTEMCMDS_SD_BENCH=n -CONFIG_SYSTEMCMDS_SD_STRESS=n -CONFIG_SYSTEMCMDS_SERIAL_TEST=n CONFIG_SYSTEMCMDS_SYSTEM_TIME=y CONFIG_SYSTEMCMDS_TOP=y CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y -CONFIG_SYSTEMCMDS_TUNE_CONTROL=n CONFIG_SYSTEMCMDS_UORB=y CONFIG_SYSTEMCMDS_USB_CONNECTED=y CONFIG_SYSTEMCMDS_VER=y CONFIG_SYSTEMCMDS_WORK_QUEUE=y -CONFIG_EXAMPLES_FAKE_GPS=n diff --git a/boards/matek/h743/extras/matek_h743_bootloader.bin b/boards/matek/h743/extras/matek_h743_bootloader.bin index 8dd5ed219be4448957980d1d900bbf2b89f31574..00559156fa758c9b225e95c07b1192412179fa36 100755 GIT binary patch delta 9942 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 D^qu(b diff --git a/boards/matek/h743/firmware.prototype b/boards/matek/h743/firmware.prototype index a9177f689b..a1a9b1f725 100644 --- a/boards/matek/h743/firmware.prototype +++ b/boards/matek/h743/firmware.prototype @@ -1,7 +1,7 @@ { "board_id": 1013, "magic": "PX4FWv1", - "description": "Firmware for the MatekH743 boards", + "description": "Firmware for the MatekH743 board", "image": "", "build_time": 0, "summary": "MatekH743", diff --git a/boards/matek/h743-slim/init/rc.board_defaults b/boards/matek/h743/init/rc.board_defaults similarity index 100% rename from boards/matek/h743-slim/init/rc.board_defaults rename to boards/matek/h743/init/rc.board_defaults diff --git a/boards/matek/h743/nuttx-config/Kconfig b/boards/matek/h743/nuttx-config/Kconfig deleted file mode 100644 index bb33d3cfda..0000000000 --- a/boards/matek/h743/nuttx-config/Kconfig +++ /dev/null @@ -1,17 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see misc/tools/kconfig-language.txt. -# -config BOARD_HAS_PROBES - bool "Board provides GPIO or other Hardware for signaling to timing analyze." - default y - ---help--- - This board provides GPIO FMU-CH1-5, CAP1-6 as PROBE_1-11 to provide timing signals from selected drivers. - -config BOARD_USE_PROBES - bool "Enable the use the board provided FMU-CH1-5, CAP1-6 as PROBE_1-11" - default n - depends on BOARD_HAS_PROBES - - ---help--- - Select to use GPIO FMU-CH1-5, CAP1-6 to provide timing signals from selected drivers. diff --git a/boards/matek/h743/nuttx-config/bootloader/defconfig b/boards/matek/h743/nuttx-config/bootloader/defconfig index 54259fc2b5..65f888fe8c 100644 --- a/boards/matek/h743/nuttx-config/bootloader/defconfig +++ b/boards/matek/h743/nuttx-config/bootloader/defconfig @@ -7,7 +7,6 @@ # # CONFIG_DEV_CONSOLE is not set # CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set -# CONFIG_DISABLE_PTHREAD is not set # CONFIG_SPI_EXCHANGE is not set # CONFIG_STM32H7_SYSCFG is not set CONFIG_ARCH="arm" @@ -23,52 +22,32 @@ CONFIG_ARMV7M_BASEPRI_WAR=y CONFIG_ARMV7M_ICACHE=y CONFIG_ARMV7M_MEMCPY=y CONFIG_ARMV7M_USEBASEPRI=y -CONFIG_BOARDCTL_RESET=y CONFIG_BOARDCTL=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_ASSERT_RESET_VALUE=0 CONFIG_BOARD_INITTHREAD_PRIORITY=254 CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=22114 CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_BOARD_ASSERT_RESET_VALUE=0 -CONFIG_C99_BOOL8=y CONFIG_CDCACM=y -CONFIG_CDCACM_PRODUCTID=0x004b -CONFIG_CDCACM_PRODUCTSTR="Matek H743-slim" +CONFIG_CDCACM_IFLOWCONTROL=y +CONFIG_CDCACM_PRODUCTID=0x1013 +CONFIG_CDCACM_PRODUCTSTR="MatekH743" CONFIG_CDCACM_RXBUFSIZE=600 CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x3162 +CONFIG_CDCACM_VENDORID=0x1209 CONFIG_CDCACM_VENDORSTR="Matek" -CONFIG_CLOCK_MONOTONIC=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEFAULT_SMALL=y -# CONFIG_NSH_DISABLE_ECHO is not set -# CONFIG_NSH_DISABLE_ENV is not set -# CONFIG_NSH_DISABLE_FREE is not set -# CONFIG_NSH_DISABLE_HELP is not set -# CONFIG_NSH_DISABLE_KILL is not set -# CONFIG_NSH_DISABLE_LS is not set -# CONFIG_NSH_DISABLE_MKDIR is not set -# CONFIG_NSH_DISABLE_MODCMDS is not set -# CONFIG_NSH_DISABLE_MOUNT is not set -# CONFIG_NSH_DISABLE_MV is not set -# CONFIG_NSH_DISABLE_PRINTF is not set -# CONFIG_NSH_DISABLE_PSSTACKUSAGE -# CONFIG_NSH_DISABLE_PWD is not set -# CONFIG_NSH_DISABLE_SOURCE is not set -# CONFIG_NSH_DISABLE_SLEEP is not set -# CONFIG_NSH_DISABLE_TEST is not set -# CONFIG_NSH_DISABLE_UMOUNT is not set -# CONFIG_NSH_DISABLE_UNSET is not set -# CONFIG_NSH_DISABLE_USLEEP is not set -CONFIG_DISABLE_MQUEUE=y -CONFIG_DISABLE_PTHREAD=y CONFIG_EXPERIMENTAL=y CONFIG_FDCLONE_DISABLE=y CONFIG_FDCLONE_STDIO=y CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y CONFIG_IDLETHREAD_STACKSIZE=750 +CONFIG_INIT_ENTRYPOINT="bootloader_main" +CONFIG_INIT_STACKSIZE=2944 CONFIG_LIBC_FLOATINGPOINT=y CONFIG_LIBC_LONG_LONG=y CONFIG_LIBC_STRERROR=y @@ -79,7 +58,6 @@ CONFIG_PTHREAD_STACK_MIN=512 CONFIG_RAM_SIZE=245760 CONFIG_RAM_START=0x20010000 CONFIG_RAW_BINARY=y -CONFIG_SDCLONE_DISABLE=y CONFIG_SERIAL_TERMIOS=y CONFIG_SIG_DEFAULT=y CONFIG_SIG_SIGALRM_ACTION=y @@ -109,5 +87,3 @@ CONFIG_USBDEV=y CONFIG_USBDEV_BUSPOWERED=y CONFIG_USBDEV_MAXPOWER=500 CONFIG_USEC_PER_TICK=1000 -CONFIG_INIT_STACKSIZE=2944 -CONFIG_INIT_ENTRYPOINT="bootloader_main" diff --git a/boards/matek/h743/nuttx-config/include/board.h b/boards/matek/h743/nuttx-config/include/board.h index 4bf2b6e45e..878fbdb3a4 100644 --- a/boards/matek/h743/nuttx-config/include/board.h +++ b/boards/matek/h743/nuttx-config/include/board.h @@ -32,8 +32,7 @@ * POSSIBILITY OF SUCH DAMAGE. * ************************************************************************************/ -#ifndef __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H -#define __NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H +#pragma once /************************************************************************************ * Included Files @@ -55,7 +54,7 @@ ************************************************************************************/ /* Clocking *************************************************************************/ -/* The MatekH743-Slim board provides the following clock sources: +/* The board provides the following clock sources: * * X1: 8 MHz crystal for HSE * @@ -186,19 +185,16 @@ #define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) /* APB3 clock (PCLK3) is HCLK/2 (120 MHz) */ - #define STM32_RCC_D1CFGR_D1PPRE RCC_D1CFGR_D1PPRE_HCLKd2 /* PCLK3 = HCLK / 2 */ #define STM32_PCLK3_FREQUENCY (STM32_HCLK_FREQUENCY/2) /* APB4 clock (PCLK4) is HCLK/4 (120 MHz) */ - #define STM32_RCC_D3CFGR_D3PPRE RCC_D3CFGR_D3PPRE_HCLKd2 /* PCLK4 = HCLK / 2 */ #define STM32_PCLK4_FREQUENCY (STM32_HCLK_FREQUENCY/2) /* Timer clock frequencies */ /* Timers driven from APB1 will be twice PCLK1 */ - #define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) #define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) #define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) @@ -210,7 +206,6 @@ #define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) /* Timers driven from APB2 will be twice PCLK2 */ - #define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) #define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) #define STM32_APB2_TIM15_CLKIN (2*STM32_PCLK2_FREQUENCY) @@ -223,35 +218,27 @@ */ /* I2C123 clock source */ - #define STM32_RCC_D2CCIP2R_I2C123SRC RCC_D2CCIP2R_I2C123SEL_HSI /* I2C4 clock source */ - #define STM32_RCC_D3CCIPR_I2C4SRC RCC_D3CCIPR_I2C4SEL_HSI /* SPI123 clock source */ - #define STM32_RCC_D2CCIP1R_SPI123SRC RCC_D2CCIP1R_SPI123SEL_PLL2 /* SPI45 clock source */ - #define STM32_RCC_D2CCIP1R_SPI45SRC RCC_D2CCIP1R_SPI45SEL_PLL2 /* SPI6 clock source */ - #define STM32_RCC_D3CCIPR_SPI6SRC RCC_D3CCIPR_SPI6SEL_PLL2 /* USB 1 and 2 clock source */ - #define STM32_RCC_D2CCIP2R_USBSRC RCC_D2CCIP2R_USBSEL_PLL3 /* ADC 1 2 3 clock source */ - #define STM32_RCC_D3CCIPR_ADCSEL RCC_D3CCIPR_ADCSEL_PLL2 /* FDCAN 1 clock source */ - #define STM32_RCC_D2CCIP1R_FDCANSEL RCC_D2CCIP1R_FDCANSEL_HSE /* FDCAN 1 2 clock source */ #define STM32_FDCANCLK STM32_HSE_FREQUENCY @@ -319,29 +306,9 @@ #define BOARD_LED_GREEN BOARD_LED2 /* LED bits for use with board_userled_all() */ - #define BOARD_LED1_BIT (1 << BOARD_LED1) #define BOARD_LED2_BIT (1 << BOARD_LED2) -/* If CONFIG_ARCH_LEDS is defined, the usage by the board port is defined in - * include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related - * events as follows: - * - * - * SYMBOL Meaning LED state - * Red Green Blue - * ---------------------- -------------------------- ------ ------ ----*/ - -#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */ -#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF OFF ON */ -#define LED_IRQSENABLED 2 /* Interrupts enabled OFF ON OFF */ -#define LED_STACKCREATED 3 /* Idle stack created OFF ON ON */ -#define LED_INIRQ 4 /* In an interrupt N/C N/C GLOW */ -#define LED_SIGNAL 5 /* In a signal handler N/C GLOW N/C */ -#define LED_ASSERTION 6 /* An assertion failed GLOW N/C GLOW */ -#define LED_PANIC 7 /* The system has crashed Blink OFF N/C */ -#define LED_IDLE 8 /* MCU is is sleep mode ON OFF OFF */ - /* Thus if the Green LED is statically on, NuttX has successfully booted and * is, apparently, running normally. If the Red LED is flashing at * approximately 2Hz, then a fatal error has been detected and the system @@ -374,22 +341,12 @@ #define GPIO_UART8_TX GPIO_UART8_TX_1 /* PE1 */ -/* CAN - * - * CAN1 is routed to transceiver. - */ - +/* CAN */ #define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */ #define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */ -/* SPI - * - * SPI1 is MPU6000 - * SPI2 is MAX7456 - * SPI3 is extern with PD4 and PE2 as CS - * SPI4 is ICM20602 - */ +/* SPI */ #define ADJ_SLEW_RATE(p) (((p) & ~GPIO_SPEED_MASK) | (GPIO_SPEED_2MHz)) #define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */ @@ -408,26 +365,13 @@ #define GPIO_SPI4_MOSI GPIO_SPI4_MOSI_1 /* PE14 */ #define GPIO_SPI4_SCK ADJ_SLEW_RATE(GPIO_SPI4_SCK_1) /* PE12 */ -/* I2C - * - * The optional _GPIO configurations allow the I2C driver to manually - * reset the bus to clear stuck slaves. They match the pin configuration, - * but are normally-high GPIOs. - * - */ - +/* I2C */ #define GPIO_I2C1_SCL GPIO_I2C1_SCL_1 /* PB6 */ #define GPIO_I2C1_SDA GPIO_I2C1_SDA_1 /* PB7 */ -#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6) -#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7) - #define GPIO_I2C2_SCL GPIO_I2C2_SCL_1 /* PB10 */ #define GPIO_I2C2_SDA GPIO_I2C2_SDA_1 /* PB11 */ -#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN10) -#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN11) - /* SDMMC1 * * SDMMC1_D0 PC8 @@ -444,50 +388,3 @@ // #define GPIO_SDMMC1_D3 GPIO_SDMMC1_D3 /* PC11 */ // #define GPIO_SDMMC1_CK GPIO_SDMMC1_CK /* PC12 */ // #define GPIO_SDMMC1_CMD GPIO_SDMMC1_CMD /* PD2 */ - - -/* USB - * - * OTG_FS_DM PA11 - * OTG_FS_DP PA12 - * VBUS PA9 - */ - - -/* Board provides GPIO or other Hardware for signaling to timing analyzer */ - -#if defined(CONFIG_BOARD_USE_PROBES) -# include "stm32_gpio.h" -# define PROBE_N(n) (1<<((n)-1)) -# define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTI|GPIO_PIN0) /* PI0 AUX1 */ -# define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN12) /* PH12 AUX2 */ -# define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN11) /* PH11 AUX3 */ -# define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN10) /* PH10 AUX4 */ -# define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN13) /* PD13 AUX5 */ -# define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) /* PD14 AUX6 */ -# define PROBE_7 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN6) /* PH6 AUX7 */ -# define PROBE_8 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTH|GPIO_PIN9) /* PH9 AUX8 */ -# define PROBE_9 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11) /* PE11 CAP1 */ - -# define PROBE_INIT(mask) \ - do { \ - if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \ - if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \ - if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \ - if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \ - if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \ - if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \ - if ((mask)& PROBE_N(7)) { stm32_configgpio(PROBE_7); } \ - if ((mask)& PROBE_N(8)) { stm32_configgpio(PROBE_8); } \ - if ((mask)& PROBE_N(9)) { stm32_configgpio(PROBE_9); } \ - } while(0) - -# define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0) -# define PROBE_MARK(n) PROBE(n,false);PROBE(n,true) -#else -# define PROBE_INIT(mask) -# define PROBE(n,s) -# define PROBE_MARK(n) -#endif - -#endif /*__NUTTX_CONFIG_MATEKH743SLIM_INCLUDE_BOARD_H */ diff --git a/boards/matek/h743/nuttx-config/nsh/defconfig b/boards/matek/h743/nuttx-config/nsh/defconfig index c30335c612..86936d55c5 100644 --- a/boards/matek/h743/nuttx-config/nsh/defconfig +++ b/boards/matek/h743/nuttx-config/nsh/defconfig @@ -15,13 +15,30 @@ # CONFIG_NSH_DISABLEBG is not set # CONFIG_NSH_DISABLESCRIPT is not set # CONFIG_NSH_DISABLE_DF is not set +# CONFIG_NSH_DISABLE_ECHO is not set +# CONFIG_NSH_DISABLE_ENV is not set # CONFIG_NSH_DISABLE_EXEC is not set # CONFIG_NSH_DISABLE_EXIT is not set +# CONFIG_NSH_DISABLE_FREE is not set # CONFIG_NSH_DISABLE_GET is not set +# CONFIG_NSH_DISABLE_HELP is not set # CONFIG_NSH_DISABLE_ITEF is not set +# CONFIG_NSH_DISABLE_KILL is not set # CONFIG_NSH_DISABLE_LOOPS is not set +# CONFIG_NSH_DISABLE_LS is not set +# CONFIG_NSH_DISABLE_MKDIR is not set +# CONFIG_NSH_DISABLE_MOUNT is not set +# CONFIG_NSH_DISABLE_MV is not set +# CONFIG_NSH_DISABLE_PRINTF is not set +# CONFIG_NSH_DISABLE_PWD is not set # CONFIG_NSH_DISABLE_SEMICOLON is not set +# CONFIG_NSH_DISABLE_SLEEP is not set +# CONFIG_NSH_DISABLE_SOURCE is not set +# CONFIG_NSH_DISABLE_TEST is not set # CONFIG_NSH_DISABLE_TIME is not set +# CONFIG_NSH_DISABLE_UMOUNT is not set +# CONFIG_NSH_DISABLE_UNSET is not set +# CONFIG_NSH_DISABLE_USLEEP is not set CONFIG_ARCH="arm" CONFIG_ARCH_BOARD_CUSTOM=y CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/matek/h743/nuttx-config" @@ -40,45 +57,24 @@ CONFIG_ARMV7M_MEMCPY=y CONFIG_ARMV7M_USEBASEPRI=y CONFIG_ARM_MPU_EARLY_RESET=y CONFIG_BOARDCTL_RESET=y -CONFIG_BOARDCTL=y +CONFIG_BOARD_ASSERT_RESET_VALUE=0 CONFIG_BOARD_CRASHDUMP=y CONFIG_BOARD_LOOPSPERMSEC=95150 CONFIG_BOARD_RESET_ON_ASSERT=2 -CONFIG_BOARD_ASSERT_RESET_VALUE=0 CONFIG_BUILTIN=y -CONFIG_C99_BOOL8=y CONFIG_CDCACM=y -CONFIG_CDCACM_PRODUCTID=0x0036 +CONFIG_CDCACM_IFLOWCONTROL=y +CONFIG_CDCACM_PRODUCTID=0x1013 CONFIG_CDCACM_PRODUCTSTR="MatekH743" CONFIG_CDCACM_RXBUFSIZE=600 CONFIG_CDCACM_TXBUFSIZE=12000 -CONFIG_CDCACM_VENDORID=0x1B8C +CONFIG_CDCACM_VENDORID=0x1209 CONFIG_CDCACM_VENDORSTR="Matek" -CONFIG_CLOCK_MONOTONIC=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_HARDFAULT_ALERT=y CONFIG_DEBUG_MEMFAULT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEFAULT_SMALL=y -# CONFIG_NSH_DISABLE_ECHO is not set -# CONFIG_NSH_DISABLE_ENV is not set -# CONFIG_NSH_DISABLE_FREE is not set -# CONFIG_NSH_DISABLE_HELP is not set -# CONFIG_NSH_DISABLE_KILL is not set -# CONFIG_NSH_DISABLE_LS is not set -# CONFIG_NSH_DISABLE_MKDIR is not set -# CONFIG_NSH_DISABLE_MODCMDS is not set -# CONFIG_NSH_DISABLE_MOUNT is not set -# CONFIG_NSH_DISABLE_MV is not set -# CONFIG_NSH_DISABLE_PRINTF is not set -# CONFIG_NSH_DISABLE_PSSTACKUSAGE -# CONFIG_NSH_DISABLE_PWD is not set -# CONFIG_NSH_DISABLE_SOURCE is not set -# CONFIG_NSH_DISABLE_SLEEP is not set -# CONFIG_NSH_DISABLE_TEST is not set -# CONFIG_NSH_DISABLE_UMOUNT is not set -# CONFIG_NSH_DISABLE_UNSET is not set -# CONFIG_NSH_DISABLE_USLEEP is not set CONFIG_DEV_FIFO_SIZE=0 CONFIG_DEV_PIPE_MAXSIZE=1024 CONFIG_DEV_PIPE_SIZE=70 @@ -104,8 +100,11 @@ CONFIG_HAVE_CXXINITIALIZE=y CONFIG_I2C=y CONFIG_I2C_RESET=y CONFIG_IDLETHREAD_STACKSIZE=750 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=2944 CONFIG_LIBC_FLOATINGPOINT=y CONFIG_LIBC_LONG_LONG=y +CONFIG_LIBC_MAX_EXITFUNS=1 CONFIG_LIBC_STRERROR=y CONFIG_MEMSET_64BIT=y CONFIG_MEMSET_OPTSPEED=y @@ -136,8 +135,9 @@ CONFIG_PTHREAD_STACK_MIN=512 CONFIG_RAM_SIZE=245760 CONFIG_RAM_START=0x20010000 CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_TABCOMPLETION=y CONFIG_RTC_DATETIME=y -CONFIG_LIBC_MAX_EXITFUNS=1 CONFIG_SCHED_HPWORK=y CONFIG_SCHED_HPWORKPRIORITY=249 CONFIG_SCHED_HPWORKSTACKSIZE=1280 @@ -148,7 +148,6 @@ CONFIG_SCHED_LPWORK=y CONFIG_SCHED_LPWORKPRIORITY=50 CONFIG_SCHED_LPWORKSTACKSIZE=1632 CONFIG_SCHED_WAITPID=y -CONFIG_SDCLONE_DISABLE=y CONFIG_SDMMC1_SDIO_PULLUP=y CONFIG_SEM_PREALLOCHOLDERS=32 CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y @@ -193,7 +192,6 @@ CONFIG_STM32H7_SPI3=y CONFIG_STM32H7_SPI4=y CONFIG_STM32H7_SPI4_DMA=y CONFIG_STM32H7_SPI4_DMA_BUFFER=2048 -CONFIG_STM32H7_SPI_DMA=y CONFIG_STM32H7_SPI_DMATHRESHOLD=8 CONFIG_STM32H7_TIM15=y CONFIG_STM32H7_TIM1=y @@ -243,6 +241,4 @@ CONFIG_USBDEV=y CONFIG_USBDEV_BUSPOWERED=y CONFIG_USBDEV_MAXPOWER=500 CONFIG_USEC_PER_TICK=1000 -CONFIG_INIT_STACKSIZE=2944 -CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_WATCHDOG=y diff --git a/boards/matek/h743/src/board_config.h b/boards/matek/h743/src/board_config.h index 151d6b59c5..f977a2e8dd 100644 --- a/boards/matek/h743/src/board_config.h +++ b/boards/matek/h743/src/board_config.h @@ -101,15 +101,6 @@ (1 << ADC_AIRSPEED_IN_CHANNEL) | \ (1 << ADC_RSSI_IN_CHANNEL)) - -/* Define Battery 1 Voltage Divider and A per V - */ - -#define BOARD_BATTERY1_V_DIV (11.0f) /* measured with the provided PM board */ -#define BOARD_BATTERY1_A_PER_V (40.0f) -#define BOARD_BATTERY2_V_DIV (11.0f) /* measured with the provided PM board */ - - /* CAN Silence * * Silent mode control \ ESC Mux select @@ -128,9 +119,9 @@ /* Spare GPIO */ -// #define GPIO_PG6 /* PG6 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN6) -// #define GPIO_PD15 /* PD15 */ (GPIO_INPUT|GPIO_FLOAT|GPIO_PORTD|GPIO_PIN15) -// #define GPIO_PG15 /* PG15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN15) +#define GPIO_VIDEO_PWR /* PD10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN10) +#define GPIO_VIDEO_CAM /* PD11 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN11) +// #define GPIO_PG15 /* PG15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTG|GPIO_PIN15) /* Tone alarm output */ @@ -183,6 +174,8 @@ GPIO_nLED_BLUE, \ GPIO_nLED_GREEN, \ GPIO_TONE_ALARM_IDLE, \ + GPIO_VIDEO_PWR, \ + GPIO_VIDEO_CAM, \ } #define BOARD_ENABLE_CONSOLE_BUFFER diff --git a/boards/matek/h743/src/hw_config.h b/boards/matek/h743/src/hw_config.h index f289dc960d..3256b9c63d 100644 --- a/boards/matek/h743/src/hw_config.h +++ b/boards/matek/h743/src/hw_config.h @@ -96,7 +96,7 @@ #define INTERFACE_USART 1 #define INTERFACE_USART_CONFIG "/dev/ttyS0,57600" #define BOOT_DELAY_ADDRESS 0x000001a0 -#define BOARD_TYPE 139 +#define BOARD_TYPE 1013 #define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880) #define BOARD_FLASH_SECTORS (15) #define BOARD_FLASH_SIZE (_FLASH_KBYTES * 1024) diff --git a/boards/matek/h743/src/init.c b/boards/matek/h743/src/init.c index a2a531882c..f78e570c5a 100644 --- a/boards/matek/h743/src/init.c +++ b/boards/matek/h743/src/init.c @@ -60,6 +60,10 @@ #include #include +// # if defined(FLASH_BASED_PARAMS) +// # include +// #endif + __BEGIN_DECLS extern void led_init(void); extern void led_on(int led); @@ -174,6 +178,25 @@ __EXPORT int board_app_initialize(uintptr_t arg) #endif + +// #if defined(FLASH_BASED_PARAMS) +// static sector_descriptor_t params_sector_map[] = { +// {6, 128 * 1024, 0x081C0000}, +// {7, 128 * 1024, 0x081E0000}, +// {0, 0, 0}, +// }; + +// /* Initialize the flashfs layer to use heap allocated memory */ +// int result = parameter_flashfs_init(params_sector_map, NULL, 0); + +// if (result != OK) { +// syslog(LOG_ERR, "[boot] FAILED to init params in FLASH %d\n", result); +// led_on(LED_BLUE); +// return -ENODEV; +// } + +// #endif + /* Configure the HW based on the manifest */ px4_platform_configure();