From c11d7d58ae1d4dd08eff1f1b4c62ac11465df1b4 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 3 Apr 2022 17:50:53 +0200 Subject: [PATCH] Moved FreeRTOS to an object library This also allows for reducing the propagated includes and thus avoid name clashes to FreeRTOS. --- radio/src/CMakeLists.txt | 2 +- radio/src/cli.cpp | 4 +- radio/src/pulses/pulses.cpp | 3 -- radio/src/rtos.c | 4 +- radio/src/rtos.h | 6 +-- radio/src/syscalls.c | 4 +- radio/src/targets/common/arm/CMakeLists.txt | 18 -------- .../common/arm/stm32/f2/CMakeLists.txt | 42 ++++++++++++++----- .../common/arm/stm32/f4/CMakeLists.txt | 41 +++++++++++++----- radio/src/telemetry/telemetry.cpp | 6 ++- 10 files changed, 75 insertions(+), 55 deletions(-) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index ab5051135..63dddacd8 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -76,7 +76,7 @@ set(FIRMWARE_RANLIB "${GCC_ARM_PATH}arm-none-eabi-ranlib" CACHE STRING "Specific set(THIRDPARTY_DIR thirdparty) set(LUA_DIR ${THIRDPARTY_DIR}/Lua/src) -set(RTOS_DIR ${THIRDPARTY_DIR}/FreeRTOS-Kernel-10.4.4) +set(RTOS_DIR ${THIRDPARTY_DIR}/FreeRTOS) set(FATFS_DIR ${THIRDPARTY_DIR}/FatFs) set(RADIO_BIN_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index bdd85611f..39b3f9eb4 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -19,8 +19,8 @@ * GNU General Public License for more details. */ -#include -#include +#include +#include #include "opentx.h" #include "diskio.h" diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index fc99f8a38..42965e403 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -49,9 +49,6 @@ #include "pulses/afhds2.h" #endif -#include -#include - uint8_t s_pulses_paused = 0; ModuleState moduleState[NUM_MODULES]; InternalModulePulsesData intmodulePulsesData __DMA; diff --git a/radio/src/rtos.c b/radio/src/rtos.c index 8c6e710f5..a6dd417fb 100644 --- a/radio/src/rtos.c +++ b/radio/src/rtos.c @@ -23,8 +23,8 @@ #if configSUPPORT_STATIC_ALLOCATION > 0 -#include -#include +#include +#include /* configSUPPORT_STATIC_ALLOCATION is set to 1, so the application must provide an implementation of vApplicationGetIdleTaskMemory() to provide the memory that is diff --git a/radio/src/rtos.h b/radio/src/rtos.h index 5db5223a4..2de0c2bae 100644 --- a/radio/src/rtos.h +++ b/radio/src/rtos.h @@ -141,9 +141,9 @@ inline void RTOS_CREATE_TASK(pthread_t &taskId, void * (*task)(void *), const ch #ifdef __cplusplus extern "C" { #endif - #include - #include - #include + #include + #include + #include #ifdef __cplusplus } #endif diff --git a/radio/src/syscalls.c b/radio/src/syscalls.c index ed3bd31c5..d57597bba 100644 --- a/radio/src/syscalls.c +++ b/radio/src/syscalls.c @@ -47,8 +47,8 @@ extern caddr_t _sbrk(int nbytes) #if defined(THREADSAFE_MALLOC) && !defined(BOOT) -#include -#include +#include +#include void __malloc_lock(struct _reent *r) { diff --git a/radio/src/targets/common/arm/CMakeLists.txt b/radio/src/targets/common/arm/CMakeLists.txt index 9570d6a95..162793084 100644 --- a/radio/src/targets/common/arm/CMakeLists.txt +++ b/radio/src/targets/common/arm/CMakeLists.txt @@ -270,8 +270,6 @@ add_definitions(-DGPS) add_definitions(-DBATTGRAPH -DTHRTRACE) add_definitions(-DSBUS_TRAINER) -include_directories(${RTOS_DIR}/include) - foreach(LANGUAGE ${TTS_LANGUAGES}) string(TOLOWER ${LANGUAGE} lang_lower) set(SRC ${SRC} translations/tts_${lang_lower}.cpp) @@ -299,22 +297,6 @@ set(FIRMWARE_TARGET_SRC telemetry_driver.cpp ) -set(FIRMWARE_SRC - ${FIRMWARE_SRC} - ${RTOS_DIR}/list.c - ${RTOS_DIR}/queue.c - ${RTOS_DIR}/tasks.c - ${RTOS_DIR}/event_groups.c - ${RTOS_DIR}/timers.c - rtos.c) - -if(CLI) - set(FIRMWARE_SRC - ${FIRMWARE_SRC} - ${RTOS_DIR}/stream_buffer.c) -endif() - - set(PULSES_SRC ${PULSES_SRC} pulses.cpp diff --git a/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt b/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt index 58f7897cb..7cb9f26cf 100644 --- a/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt @@ -47,16 +47,36 @@ set(STM32LIB_SRC STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c ) -# -# FreeRTOS port specific include -# -include_directories(${RTOS_DIR}/portable/GCC/ARM_CM3) +if(NOT NATIVE_BUILD) + # + # FreeRTOS port specific include + # + add_library(freertos OBJECT EXCLUDE_FROM_ALL + ${RTOS_DIR}/list.c + ${RTOS_DIR}/queue.c + ${RTOS_DIR}/tasks.c + ${RTOS_DIR}/event_groups.c + ${RTOS_DIR}/timers.c + ${RTOS_DIR}/stream_buffer.c + ${RTOS_DIR}/portable/GCC/ARM_CM3/port.c + ) -# -# System and FreeRTOS port files -# -set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} - ../common/arm/stm32/f2/system_stm32f2xx.c - ../../${RTOS_DIR}/portable/GCC/ARM_CM3/port.c - ) + target_include_directories(freertos + PUBLIC ${RTOS_DIR}/portable/GCC/ARM_CM3 + PRIVATE ${RTOS_DIR}/include + ) + + include_directories(${RTOS_DIR}/portable/GCC/ARM_CM3) + + # EdgeTx Compat layer + set(FIRMWARE_SRC ${FIRMWARE_SRC} rtos.c) + + # + # System and FreeRTOS port files + # + set(FIRMWARE_SRC ${FIRMWARE_SRC} + $ + targets/common/arm/stm32/f2/system_stm32f2xx.c + ) +endif() diff --git a/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt b/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt index a1bf45710..61957b465 100644 --- a/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt @@ -49,16 +49,35 @@ set(STM32LIB_SRC STM32F4xx_StdPeriph_Driver/src/stm32f4xx_adc.c ) -# -# FreeRTOS port specific include -# -include_directories(${RTOS_DIR}/portable/GCC/ARM_CM4F) +if(NOT NATIVE_BUILD) + # + # FreeRTOS port specific include + # + add_library(freertos OBJECT EXCLUDE_FROM_ALL + ${RTOS_DIR}/list.c + ${RTOS_DIR}/queue.c + ${RTOS_DIR}/tasks.c + ${RTOS_DIR}/event_groups.c + ${RTOS_DIR}/timers.c + ${RTOS_DIR}/stream_buffer.c + ${RTOS_DIR}/portable/GCC/ARM_CM4F/port.c + ) -# -# System and FreeRTOS port files -# -set(FIRMWARE_TARGET_SRC ${FIRMWARE_TARGET_SRC} - ../common/arm/stm32/f4/system_stm32f4xx.c - ../../${RTOS_DIR}/portable/GCC/ARM_CM4F/port.c - ) + target_include_directories(freertos + PUBLIC ${RTOS_DIR}/portable/GCC/ARM_CM4F + PRIVATE ${RTOS_DIR}/include + ) + include_directories(${RTOS_DIR}/portable/GCC/ARM_CM4F) + + # EdgeTx Compat layer + set(FIRMWARE_SRC ${FIRMWARE_SRC} rtos.c) + + # + # System and FreeRTOS port files + # + set(FIRMWARE_SRC ${FIRMWARE_SRC} + $ + targets/common/arm/stm32/f4/system_stm32f4xx.c + ) +endif() diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index c6613c436..bd9a8e4cd 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -31,8 +31,10 @@ #include "libopenui.h" #endif -#include -#include +#if !defined(SIMU) + #include + #include +#endif uint8_t telemetryStreaming = 0; uint8_t telemetryRxBuffer[TELEMETRY_RX_PACKET_SIZE]; // Receive buffer. 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1)