From 56542bf7e86a819bb10bbc8a53934851e1c44192 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 25 Jul 2021 19:30:49 +0200 Subject: [PATCH] Some fixes for simu --- radio/src/CMakeLists.txt | 2 +- radio/src/FreeRTOSConfig.h | 2 +- radio/src/lua/api_model.cpp | 2 +- radio/src/opentx.cpp | 5 ++++- radio/src/rtos.h | 10 +++++----- radio/src/storage/eeprom_common.cpp | 2 +- radio/src/storage/eeprom_rlc.cpp | 2 +- radio/src/tasks.cpp | 3 --- radio/src/tasks.h | 7 +++++++ 9 files changed, 21 insertions(+), 14 deletions(-) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 028e5facd..9d712e8de 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -571,7 +571,7 @@ if(NOT MSVC) set(RADIO_DEPENDENCIES ${RADIO_DEPENDENCIES} bootloader) endif() - add_definitions(-DRTOS_COOS) + add_definitions(-DFREE_RTOS) add_executable(firmware ${SRC} ${FIRMWARE_HEADERS}) link_libraries(firmware -lstdc++) diff --git a/radio/src/FreeRTOSConfig.h b/radio/src/FreeRTOSConfig.h index 65a2ca018..a2a81e6cf 100644 --- a/radio/src/FreeRTOSConfig.h +++ b/radio/src/FreeRTOSConfig.h @@ -61,7 +61,7 @@ to exclude the API function. */ //#define INCLUDE_vTaskPrioritySet 1 //#define INCLUDE_uxTaskPriorityGet 1 -//#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskDelete 1 //#define INCLUDE_vTaskCleanUpResources 1 #define INCLUDE_vTaskSuspend 1 #define INCLUDE_vTaskDelayUntil 1 diff --git a/radio/src/lua/api_model.cpp b/radio/src/lua/api_model.cpp index 9737e6704..3d47b5191 100644 --- a/radio/src/lua/api_model.cpp +++ b/radio/src/lua/api_model.cpp @@ -22,7 +22,7 @@ #include #include "opentx.h" #include "lua_api.h" -#include "timers.h" +#include "../timers.h" #include "model_init.h" /*luadoc diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 3d69d8129..ca46b174e 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1917,10 +1917,13 @@ int main() initialise_monitor_handles(); #endif +#if defined(STM32) + +#if !defined(SIMU) /* Ensure all priority bits are assigned as preemption priority bits. */ NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); +#endif -#if defined(STM32) TRACE("reusableBuffer: modelSel=%d, moduleSetup=%d, calib=%d, sdManager=%d, hardwareAndSettings=%d, spectrumAnalyser=%d, usb=%d", sizeof(reusableBuffer.modelsel), sizeof(reusableBuffer.moduleSetup), diff --git a/radio/src/rtos.h b/radio/src/rtos.h index ba52bc1d6..36e35ff6a 100644 --- a/radio/src/rtos.h +++ b/radio/src/rtos.h @@ -119,9 +119,9 @@ extern "C++" { }; #define RTOS_DEFINE_STACK(name, size) FakeTaskStack name - #define TASK_FUNCTION(task) void task(void *) + #define TASK_FUNCTION(task) void* task(void *) - inline void RTOS_CREATE_TASK(pthread_t &taskId, void * task(void *), const char * name) + inline void RTOS_CREATE_TASK(pthread_t &taskId, void * (*task)(void *), const char * name) { pthread_create(&taskId, nullptr, task, nullptr); #ifdef __linux__ @@ -130,7 +130,7 @@ extern "C++" { } template - inline void RTOS_CREATE_TASK(pthread_t &taskId, void * task(void *), const char * name, FakeTaskStack &, unsigned size = 0, unsigned priority = 0) +inline void RTOS_CREATE_TASK(pthread_t &taskId, void * (*task)(void *), const char * name, FakeTaskStack &, unsigned size = 0, unsigned priority = 0) { UNUSED(size); UNUSED(priority); @@ -156,7 +156,7 @@ template return (uint32_t)(simuTimerMicros() / 1000); } -#elif defined(RTOS_COOS) +#elif defined(FREE_RTOS) #ifdef __cplusplus extern "C" { #endif @@ -324,7 +324,7 @@ template #define RTOS_DEFINE_STACK(name, size) TaskStack __ALIGNED(8) name __CCMRAM #define TASK_FUNCTION(task) void task(void *) - #define TASK_RETURN() return + #define TASK_RETURN() vTaskDelete(nullptr) #else // no RTOS static inline void RTOS_START() diff --git a/radio/src/storage/eeprom_common.cpp b/radio/src/storage/eeprom_common.cpp index 839feedb3..232c3c33d 100644 --- a/radio/src/storage/eeprom_common.cpp +++ b/radio/src/storage/eeprom_common.cpp @@ -22,7 +22,7 @@ #include #include #include "opentx.h" -#include "timers.h" +#include "../timers.h" #include "model_init.h" void eeLoadModel(uint8_t index) diff --git a/radio/src/storage/eeprom_rlc.cpp b/radio/src/storage/eeprom_rlc.cpp index ff68681d2..b9bb88515 100644 --- a/radio/src/storage/eeprom_rlc.cpp +++ b/radio/src/storage/eeprom_rlc.cpp @@ -21,7 +21,7 @@ #include #include #include "opentx.h" -#include "timers.h" +#include "../timers.h" #include "conversions/conversions.h" uint8_t s_write_err = 0; // error reasons diff --git a/radio/src/tasks.cpp b/radio/src/tasks.cpp index 2d5f3f97e..9d991318c 100644 --- a/radio/src/tasks.cpp +++ b/radio/src/tasks.cpp @@ -22,15 +22,12 @@ #include "mixer_scheduler.h" RTOS_TASK_HANDLE menusTaskId; -StaticTask_t menusTaskStruct; RTOS_DEFINE_STACK(menusStack, MENUS_STACK_SIZE); RTOS_TASK_HANDLE mixerTaskId; -StaticTask_t mixerTaskStruct; RTOS_DEFINE_STACK(mixerStack, MIXER_STACK_SIZE); RTOS_TASK_HANDLE audioTaskId; -StaticTask_t audioTaskStruct; RTOS_DEFINE_STACK(audioStack, AUDIO_STACK_SIZE); RTOS_MUTEX_HANDLE audioMutex; diff --git a/radio/src/tasks.h b/radio/src/tasks.h index d5aa3362c..d42d49ee2 100644 --- a/radio/src/tasks.h +++ b/radio/src/tasks.h @@ -33,10 +33,17 @@ #define AUDIO_STACK_SIZE 400 #define CLI_STACK_SIZE 1000 // only consumed with CLI build option +#if defined(FREE_RTOS) #define MIXER_TASK_PRIO (tskIDLE_PRIORITY + 4) #define AUDIO_TASK_PRIO (tskIDLE_PRIORITY + 2) #define MENUS_TASK_PRIO (tskIDLE_PRIORITY + 1) #define CLI_TASK_PRIO (tskIDLE_PRIORITY + 1) +#else +#define MIXER_TASK_PRIO (4) +#define AUDIO_TASK_PRIO (2) +#define MENUS_TASK_PRIO (1) +#define CLI_TASK_PRIO (1) +#endif extern RTOS_TASK_HANDLE menusTaskId; extern RTOS_DEFINE_STACK(menusStack, MENUS_STACK_SIZE);