From b8af047e72af1b6acc2674e09eeebdc7c056a2bf Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 2 Aug 2025 03:28:11 +0200 Subject: [PATCH] fix(stm32h7s78-dk): various issues preventing compilation / boot (#6494) --- radio/src/datastructs.h | 4 ++++ radio/src/targets/common/arm/stm32/h7/system_stm32h7rsxx.c | 4 +++- radio/src/targets/common/arm/stm32/stm32_spi_h7.cpp | 2 +- radio/src/targets/stm32h7s78-dk/CMakeLists.txt | 4 ++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 7ba83e643..4c4a86694 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -75,6 +75,8 @@ static inline void check_struct() CHKSIZE(CustomScreenData, 1972); #if defined(PCBNV14) || defined(RADIO_NB4P) || defined(RADIO_NV14_FAMILY) CHKTYPE(TopBarPersistentData, 736); + #elif defined(RADIO_H7RS) + // TODO #else CHKTYPE(TopBarPersistentData, 1096); #endif @@ -122,6 +124,8 @@ static inline void check_struct() CHKSIZE(ModelData, 27761); #elif defined(RADIO_T15) CHKSIZE(ModelData, 27683); +#elif defined(RADIO_H7RS) + // CHKSIZE() #elif defined(PCBHORUS) CHKSIZE(ModelData, 27657); #else diff --git a/radio/src/targets/common/arm/stm32/h7/system_stm32h7rsxx.c b/radio/src/targets/common/arm/stm32/h7/system_stm32h7rsxx.c index 97d821bcb..1bd085f2f 100644 --- a/radio/src/targets/common/arm/stm32/h7/system_stm32h7rsxx.c +++ b/radio/src/targets/common/arm/stm32/h7/system_stm32h7rsxx.c @@ -140,7 +140,9 @@ uint32_t SystemCoreClock = HSI_VALUE; * @retval None */ -void SystemInit(void) +#define BOOTSTRAP __attribute__((section(".bootstrap"))) + +BOOTSTRAP void SystemInit(void) { /* Configure the Vector Table location -------------------------------------*/ SCB->VTOR = INTVECT_START; diff --git a/radio/src/targets/common/arm/stm32/stm32_spi_h7.cpp b/radio/src/targets/common/arm/stm32/stm32_spi_h7.cpp index f2c60a429..cd94fba8b 100644 --- a/radio/src/targets/common/arm/stm32/stm32_spi_h7.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_spi_h7.cpp @@ -222,7 +222,7 @@ static void _config_tx_dma_data_width(const stm32_spi_t* spi, uint32_t data_widt uint32_t dest_width = LL_DMA_DEST_DATAWIDTH_BYTE; if (data_width == sizeof(uint16_t)) { src_width = LL_DMA_SRC_DATAWIDTH_HALFWORD; - memory_size = LL_DMA_DEST_DATAWIDTH_HALFWORD; + dest_width = LL_DMA_DEST_DATAWIDTH_HALFWORD; } LL_DMA_SetSrcDataWidth(spi->DMA, spi->txDMA_Stream, src_width); LL_DMA_SetDestDataWidth(spi->DMA, spi->txDMA_Stream, dest_width); diff --git a/radio/src/targets/stm32h7s78-dk/CMakeLists.txt b/radio/src/targets/stm32h7s78-dk/CMakeLists.txt index d6dd1efdd..70f418856 100644 --- a/radio/src/targets/stm32h7s78-dk/CMakeLists.txt +++ b/radio/src/targets/stm32h7s78-dk/CMakeLists.txt @@ -28,7 +28,7 @@ set(PPM_LIMITS_SYMETRICAL YES) # for size report script set(CPU_TYPE_FULL STM32H7S7xx) set(TARGET_LINKER_DIR stm32h7rs_sdram) -set(TARGET_LINKER_PARAMS "-Wl,--defsym=__PSRAM_START__=0x90000000") +set(TARGET_EXTRAM_START 0x90000000) set(SIZE_TARGET_MEM_DEFINE "MEM_SIZE_SDRAM1=32768") set(FIRMWARE_FORMAT_UF2 YES) @@ -44,7 +44,7 @@ set(FIRMWARE_QSPI ON) add_definitions( -DSTM32H7S7xx -DFIRMWARE_QSPI - -DSDRAM -DCOLORLCD -DLIBOPENUI -DPCBHORUS -DPCBX10 + -DSDRAM -DCOLORLCD -DLIBOPENUI -DPCBHORUS -DPCBX10 -DRADIO_H7RS -DHARDWARE_TOUCH -DSOFTWARE_KEYBOARD -DAUDIO -DVOICE -DSOFTWARE_VOLUME )