diff --git a/.gitmodules b/.gitmodules index a63839f..7c188be 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "FreeRTOS-Kernel"] path = FreeRTOS-Kernel url = https://github.com/FreeRTOS/FreeRTOS-Kernel -[submodule "fsfw"] - path = fsfw - url = https://egit.irs.uni-stuttgart.de/fsfw/fsfw [submodule "contrib/lwip"] path = contrib/lwip url = https://git.savannah.gnu.org/git/lwip.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 4cb09a9..e33e526 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,13 +59,14 @@ set(lwip_SRCS ${LWIP_DIR}/src/apps/tftp/tftp.c ${LWIP_DIR}/contrib/ports/freertos/sys_arch.c ) -add_library(lwip ${lwip_SRCS}) -target_include_directories(lwip PUBLIC ${LWIP_INCLUDE_DIRS}) +#add_library(lwip ${lwip_SRCS}) +#target_include_directories(lwip PUBLIC ${LWIP_INCLUDE_DIRS}) #target_compile_options(${TARGET_NAME} PUBLIC -g -O0 -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard) # Add freeRTOS set(FREERTOS_PORT GCC_ARM_CA9 CACHE STRING "") +set(FREERTOS_HEAP 2 CACHE STRING "") add_library(freertos_config INTERFACE) target_include_directories(freertos_config SYSTEM INTERFACE ${FreeRTOS_CONFIG_PATH}) # The config file directory @@ -82,18 +83,7 @@ add_subdirectory(${FreeRTOS_PATH}) add_subdirectory(bsp_z7) -#set(FSFW_OSAL freertos CACHE STRING "FSFW OSAL") -set(FSFW_CONFIG_PATH "${BSP_PATH}/fsfwconfig") -set(COMMON_CONFIG_PATH "common/config") -set(FSFW_ADDITIONAL_INC_PATHS - "${COMMON_CONFIG_PATH}" "${CMAKE_CURRENT_BINARY_DIR}" "contrib/" - CACHE STRING "FSFW configuration paths") -set(FSFW_OSAL freertos CACHE STRING "FSFW OSAL") - -set(FSFW_ADD_MONITORING ON) - -add_subdirectory(fsfw) add_subdirectory(common) add_subdirectory(${MISSION_PATH}) @@ -104,15 +94,14 @@ add_subdirectory(mission_rust) # ############################################################################## # Add libraries for all sources. -target_link_libraries(lwip PUBLIC freertos_kernel) -target_link_libraries(fsfw PUBLIC lwip) -target_link_libraries(${TARGET_NAME} PUBLIC fsfw lwip mission_rust) +#target_link_libraries(lwip PUBLIC freertos_kernel) +target_link_libraries(${TARGET_NAME} PUBLIC freertos_kernel mission_rust) target_include_directories( ${TARGET_NAME} PUBLIC ${BSP_PATH}) -target_link_options(${TARGET_NAME} PRIVATE -Wl,--start-group,-lgcc,-lc,--end-group -Wl,-Map=${TARGET_NAME}.map -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -T${CMAKE_SOURCE_DIR}/${FreeRTOS_CONFIG_PATH}/lscript.ld -specs=${CMAKE_SOURCE_DIR}/${FreeRTOS_CONFIG_PATH}/Xilinx.spec) +target_link_options(${TARGET_NAME} PRIVATE -Wl,--cref -Wl,-Map=${TARGET_NAME}.map -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -T${CMAKE_SOURCE_DIR}/${FreeRTOS_CONFIG_PATH}/lscript.ld -specs=${CMAKE_SOURCE_DIR}/${FreeRTOS_CONFIG_PATH}/Xilinx.spec ) # Removed unused sections. target_link_options(${TARGET_NAME} PRIVATE "-Wl,--gc-sections") diff --git a/bsp_z7/CMakeLists.txt b/bsp_z7/CMakeLists.txt index 68d6496..240bf63 100644 --- a/bsp_z7/CMakeLists.txt +++ b/bsp_z7/CMakeLists.txt @@ -1,3 +1,2 @@ add_subdirectory(freeRTOS) -add_subdirectory(ps7_cortexa9_0) -add_subdirectory(objects) \ No newline at end of file +add_subdirectory(ps7_cortexa9_0) \ No newline at end of file diff --git a/bsp_z7/freeRTOS/FreeRTOSConfig.h b/bsp_z7/freeRTOS/FreeRTOSConfig.h index be80809..b8c70c9 100644 --- a/bsp_z7/freeRTOS/FreeRTOSConfig.h +++ b/bsp_z7/freeRTOS/FreeRTOSConfig.h @@ -77,23 +77,23 @@ #define configUSE_TICK_HOOK 1 #define configMAX_PRIORITIES ( 7 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 250 ) /* Large in case configUSE_TASK_FPU_SUPPORT is 2 in which case all tasks have an FPU context. */ -#define configTOTAL_HEAP_SIZE ( 20 * 1024 * 1024 ) +#define configTOTAL_HEAP_SIZE ( 0 ) #define configMAX_TASK_NAME_LEN ( 10 ) #define configUSE_TRACE_FACILITY 1 #define configUSE_16_BIT_TICKS 0 #define configIDLE_SHOULD_YIELD 1 #define configUSE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 8 #define configCHECK_FOR_STACK_OVERFLOW 2 #define configUSE_RECURSIVE_MUTEXES 1 #define configUSE_MALLOC_FAILED_HOOK 1 #define configUSE_APPLICATION_TASK_TAG 0 #define configUSE_COUNTING_SEMAPHORES 1 #define configUSE_QUEUE_SETS 1 -#define configSUPPORT_STATIC_ALLOCATION 0 +#define configSUPPORT_STATIC_ALLOCATION 1 +#define configSUPPORT_DYNAMIC_ALLOCATION 0 /* Include the query-heap CLI command to query the free heap space. */ -#define configINCLUDE_QUERY_HEAP_COMMAND 1 +#define configINCLUDE_QUERY_HEAP_COMMAND 0 /* Co-routine definitions. */ #define configUSE_CO_ROUTINES 0 @@ -128,11 +128,6 @@ to exclude the API function. */ #define INCLUDE_xTaskGetHandle 1 #define INCLUDE_xSemaphoreGetMutexHolder 1 -/* This demo makes use of one or more example stats formatting functions. These -format the raw data provided by the uxTaskGetSystemState() function in to human -readable ASCII form. See the notes in the implementation of vTaskList() within -FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* The private watchdog is used to generate run time stats. */ #include "xscuwdt.h" @@ -184,7 +179,7 @@ Zynq MPU. */ #define configUNIQUE_INTERRUPT_PRIORITIES 32 /* Newlib support*/ -#define configUSE_NEWLIB_REENTRANT 1 // Required for thread-safety of newlib sprintf, strtok, etc... +//#define configUSE_NEWLIB_REENTRANT 1 // Required for thread-safety of newlib sprintf, strtok, etc... #endif /* FREERTOS_CONFIG_H */ diff --git a/bsp_z7/freeRTOS/lscript.ld b/bsp_z7/freeRTOS/lscript.ld index 602aa9e..86de273 100644 --- a/bsp_z7/freeRTOS/lscript.ld +++ b/bsp_z7/freeRTOS/lscript.ld @@ -11,7 +11,7 @@ /*******************************************************************/ _STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x2000; -_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x01400000; +/* _HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x01400000; */ _ABORT_STACK_SIZE = DEFINED(_ABORT_STACK_SIZE) ? _ABORT_STACK_SIZE : 1024; _SUPERVISOR_STACK_SIZE = DEFINED(_SUPERVISOR_STACK_SIZE) ? _SUPERVISOR_STACK_SIZE : 2048; @@ -244,7 +244,7 @@ _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); /* Generate Stack and Heap definitions */ -.heap (NOLOAD) : { +/* .heap (NOLOAD) : { . = ALIGN(16); _heap = .; HeapBase = .; @@ -253,6 +253,7 @@ _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); _heap_end = .; HeapLimit = .; } > ps7_ddr_0_S_AXI_BASEADDR +*/ .stack (NOLOAD) : { . = ALIGN(16); diff --git a/bsp_z7/objects/CMakeLists.txt b/bsp_z7/objects/CMakeLists.txt deleted file mode 100644 index b494312..0000000 --- a/bsp_z7/objects/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -target_sources( - ${TARGET_NAME} PRIVATE - ObjectFactory.cpp) \ No newline at end of file diff --git a/bsp_z7/objects/ObjectFactory.cpp b/bsp_z7/objects/ObjectFactory.cpp deleted file mode 100644 index a552312..0000000 --- a/bsp_z7/objects/ObjectFactory.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "ObjectFactory.h" - -#include -#include -#include -#include - -#include "fsfw/events/EventManager.h" -#include "fsfw/health/HealthTable.h" -#include "fsfw/internalerror/InternalErrorReporter.h" -#include "fsfw/tmtc/UdpTmTcBridge.h" -#include "systemObjects.h" - -namespace objects { -enum commonObjects : object_id_t { - - /* 0x63 ('C') for core objects */ - CCSDS_DISTRIBUTOR = 0x63000000, - PUS_DISTRIBUTOR = 0x63000001, - TM_FUNNEL = 0x63000002, - CFDP_DISTRIBUTOR = 0x63000003, - CFDP_HANDLER = 0x63000004, - PUS_TM_FUNNEL = 0x63000005, - CFDP_TM_FUNNEL = 0x64000006, -}; -} - - -// void Factory::setStaticFrameworkObjectIds() { -// // MonitoringReportContent::timeStamperId = objects::TIME_STAMPER; -// // MonitoringReportContent::timeStamperId = objects::TIME_STAMPER; -// // MonitoringReportContent::timeStamperId = objects::TIME_STAMPER; -// // MonitoringReportContent::timeStamperId = objects::TIME_STAMPER; -// // MonitoringReportContent::timeStamperId = objects::TIME_STAMPER; -// // MonitoringReportContent::timeStamperId = objects::TIME_STAMPER; - -// // PusServiceBase::PUS_DISTRIBUTOR = objects::PUS_DISTRIBUTOR; -// // PusServiceBase::PACKET_DESTINATION = objects::PUS_TM_FUNNEL; - -// // CommandingServiceBase::defaultPacketSource = objects::PUS_DISTRIBUTOR; -// // CommandingServiceBase::defaultPacketDestination = objects::PUS_TM_FUNNEL; - -// // VerificationReporter::DEFAULT_RECEIVER = objects::PUS_SERVICE_1_VERIFICATION; -// } - -void ObjectFactory::produce(void *args) { - //Factory::setStaticFrameworkObjectIds(); - - - - { - LocalPool::LocalPoolConfig poolCfg = {{100, 16}, {50, 32}, {40, 64}, - {30, 128}, {20, 1024}, {10, 2048}}; - new PoolManager(objects::IPC_STORE, poolCfg); - } - - new EventManager(objects::EVENT_MANAGER, 20); - new HealthTable(objects::HEALTH_TABLE); - new InternalErrorReporter(objects::INTERNAL_ERROR_REPORTER); - - new TmManager(objects::TM_MANAGER); - - new UdpTmTcBridgeNew(130,7777,0,0); - - new PrintController(123); -} diff --git a/bsp_z7/objects/ObjectFactory.h b/bsp_z7/objects/ObjectFactory.h deleted file mode 100644 index 228e1bc..0000000 --- a/bsp_z7/objects/ObjectFactory.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -#include - - -namespace ObjectFactory { -void produce(void* args); -} // namespace ObjectFactory \ No newline at end of file diff --git a/bsp_z7/objects/communication/CMakeLists.txt b/bsp_z7/objects/communication/CMakeLists.txt deleted file mode 100644 index 591690d..0000000 --- a/bsp_z7/objects/communication/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -target_sources( - ${TARGET_NAME} PRIVATE - ServoCommInterface.cpp - SerialTCPCookie.cpp) \ No newline at end of file diff --git a/bsp_z7/objects/communication/SerialTCPCookie.cpp b/bsp_z7/objects/communication/SerialTCPCookie.cpp deleted file mode 100644 index 4d2c374..0000000 --- a/bsp_z7/objects/communication/SerialTCPCookie.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "SerialTCPCookie.h" - -SerialTCPCookie::SerialTCPCookie(const char* host, uint16_t port, bool flush, size_t bufferSize) - : host(host), port(port), flush(flush), bufferSize(bufferSize), socket(-1) { - buffer = new uint8_t[bufferSize]; -} - -SerialTCPCookie::~SerialTCPCookie() { delete buffer; } \ No newline at end of file diff --git a/bsp_z7/objects/communication/SerialTCPCookie.h b/bsp_z7/objects/communication/SerialTCPCookie.h deleted file mode 100644 index 1e1a192..0000000 --- a/bsp_z7/objects/communication/SerialTCPCookie.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include -#include - -class SerialTCPCookie : public CookieIF { - public: - SerialTCPCookie(const char* host, uint16_t port, bool flush, size_t bufferSize); - virtual ~SerialTCPCookie(); - - const char* const host; - const uint16_t port; - const bool flush; - uint8_t *buffer; - const size_t bufferSize; - int socket; -}; \ No newline at end of file diff --git a/bsp_z7/objects/communication/ServoCommInterface.cpp b/bsp_z7/objects/communication/ServoCommInterface.cpp deleted file mode 100644 index f94de68..0000000 --- a/bsp_z7/objects/communication/ServoCommInterface.cpp +++ /dev/null @@ -1,138 +0,0 @@ -#include "ServoCommInterface.h" - -#include -#include -#include -#include -#include -#include // POSIX.1-2001 does not require the inclusion of , and this header file is not required on Linux. However, some historical (BSD) implementations required this header file, and portable applications are probably wise to include it. -#include -#include - -#include "SerialTCPCookie.h" - -ServoCommInterface::ServoCommInterface(object_id_t setObjectId) : SystemObject(setObjectId) {} - -ReturnValue_t ServoCommInterface::initializeInterface(CookieIF *cookie) { - SerialTCPCookie *tcpCookie = dynamic_cast(cookie); - if (tcpCookie != nullptr) { - return initializeInterface(tcpCookie); - } - return DeviceCommunicationIF::INVALID_COOKIE_TYPE; -} - -ReturnValue_t ServoCommInterface::sendMessage(CookieIF *cookie, const uint8_t *sendData, - size_t sendLen) { - SerialTCPCookie *tcpCookie = dynamic_cast(cookie); - if (tcpCookie != nullptr) { - return sendMessage(tcpCookie, sendData, sendLen); - } - return DeviceCommunicationIF::INVALID_COOKIE_TYPE; -} - -ReturnValue_t ServoCommInterface::sendMessage(SerialTCPCookie *cookie, const uint8_t *sendData, - size_t sendLen) { - if (cookie->socket == -1) { - return returnvalue::FAILED; - } - - ssize_t result = send(cookie->socket, sendData, sendLen, 0); - - if (result < 0){ - return returnvalue::FAILED; - } - - if (std::cmp_not_equal(result, sendLen)) { - return returnvalue::FAILED; - } - - return returnvalue::OK; -} - -ReturnValue_t ServoCommInterface::getSendSuccess(CookieIF *cookie) { return returnvalue::OK; } - -ReturnValue_t ServoCommInterface::requestReceiveMessage(CookieIF *cookie, size_t requestLen) { - return returnvalue::OK; -} - -ReturnValue_t ServoCommInterface::readReceivedMessage(CookieIF *cookie, uint8_t **buffer, - size_t *size) { - SerialTCPCookie *tcpCookie = dynamic_cast(cookie); - if (tcpCookie != nullptr) { - return readReceivedMessage(tcpCookie, buffer, size); - } - return DeviceCommunicationIF::INVALID_COOKIE_TYPE; -} - -ReturnValue_t ServoCommInterface::readReceivedMessage(SerialTCPCookie *cookie, uint8_t **buffer, - size_t *size) { - if (cookie->socket == -1) { - return returnvalue::FAILED; - } - - ssize_t result = recv(cookie->socket, cookie->buffer, cookie->bufferSize, 0); - - if (result <= -1) { - *size = 0; - if (errno == EAGAIN or errno == EWOULDBLOCK) { - //no data - return returnvalue::OK; - } - // TODO wrap errno - return returnvalue::FAILED; - } - - if (result == 0) { - // peer shut down - close(cookie->socket); - cookie->socket = -1; - return returnvalue::FAILED; // TODO connection closed - } - - *size = result; - *buffer = cookie->buffer; - - - if (std::cmp_greater_equal(result, cookie->bufferSize) and cookie->flush) { - // we do not know if there is more data in the socket, so we read until we get no more - uint8_t ignore[10]; - while (recv(cookie->socket, ignore, sizeof(ignore), 0) > 0) { - } - //ignore any fault here as previous read was ok. next call will catch it - } - - return returnvalue::OK; -} - -ReturnValue_t ServoCommInterface::initializeInterface(SerialTCPCookie *cookie) { - cookie->socket = socket(AF_INET6, SOCK_STREAM, 0); - if (cookie->socket == -1) { - return returnvalue::FAILED; - } - - sockaddr_in6 serverAddr; - serverAddr.sin6_family = AF_INET6; - serverAddr.sin6_port = htons(cookie->port); - - int retval =inet_pton(AF_INET6, cookie->host, &serverAddr.sin6_addr); - if (retval == 0) { -#if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::error << "IpCommInterface::initializeInterface: Invalid IP!" << std::endl; -#endif - return returnvalue::FAILED; - } - - retval = connect(cookie->socket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); - - if (retval == -1) { -#if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::error << "IpCommInterface::initializeInterface: connection failed with " << errno - << std::endl; -#endif - return returnvalue::FAILED; - } - - fcntl(cookie->socket, F_SETFL, O_NONBLOCK); - - return returnvalue::OK; -} \ No newline at end of file diff --git a/bsp_z7/objects/communication/ServoCommInterface.h b/bsp_z7/objects/communication/ServoCommInterface.h deleted file mode 100644 index 6389f37..0000000 --- a/bsp_z7/objects/communication/ServoCommInterface.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include -#include - -#include "SerialTCPCookie.h" - -class ServoCommInterface : public DeviceCommunicationIF, public SystemObject { - public: - ServoCommInterface(object_id_t setObjectId); - - virtual ~ServoCommInterface() {} - - ReturnValue_t initializeInterface(CookieIF *cookie) override; - - ReturnValue_t sendMessage(CookieIF *cookie, const uint8_t *sendData, size_t sendLen) override; - - ReturnValue_t getSendSuccess(CookieIF *cookie) override; - - ReturnValue_t requestReceiveMessage(CookieIF *cookie, size_t requestLen) override; - - ReturnValue_t readReceivedMessage(CookieIF *cookie, uint8_t **buffer, size_t *size) override; - - private: - ReturnValue_t initializeInterface(SerialTCPCookie *cookie); - ReturnValue_t sendMessage(SerialTCPCookie *cookie, const uint8_t *sendData, size_t sendLen); - ReturnValue_t readReceivedMessage(SerialTCPCookie *cookie, uint8_t **buffer, size_t *size); -}; \ No newline at end of file diff --git a/bsp_z7/objects/systemObjects.h b/bsp_z7/objects/systemObjects.h deleted file mode 100644 index 515dbcc..0000000 --- a/bsp_z7/objects/systemObjects.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include - -FSFW_CLASSLESS_ENUM(SystemObjects, uint32_t, ((SERVO_FRONT_LEFT, "Servo front left")) - ((SERVO_FRONT_RIGHT, "Servo front right")) - ((SERVO_BACK_LEFT, "Servo back left")) - ((SERVO_BACK_RIGHT,"Servo back right")) - ((MOTOR_AXLE_LEFT, "Motors left axle")) - ((MOTOR_AXLE_RIGHT, "Motors right axle")) - ((MOTOR_AXLE_BACK, "Motors back axle")) - ((STEERING_CONTROLLER, "Steering Controller")) - ((COMM_IF, 123, "CommIF"))) \ No newline at end of file diff --git a/bsp_z7/ps7_cortexa9_0/libsrc/standalone/CMakeLists.txt b/bsp_z7/ps7_cortexa9_0/libsrc/standalone/CMakeLists.txt index 8c7ebb8..416de1f 100644 --- a/bsp_z7/ps7_cortexa9_0/libsrc/standalone/CMakeLists.txt +++ b/bsp_z7/ps7_cortexa9_0/libsrc/standalone/CMakeLists.txt @@ -6,7 +6,7 @@ target_sources(${TARGET_NAME} PUBLIC src/asm_vectors.S src/open.c src/xil_exception.c - src/sbrk.c + #src/sbrk.c src/xl2cc_counter.c src/xil_cache.c src/xil_spinlock.c @@ -48,5 +48,5 @@ target_sources(${TARGET_NAME} PUBLIC src/outbyte.c src/unlink.c src/abort.c - src/_sbrk.c + #src/_sbrk.c ) \ No newline at end of file diff --git a/fsfw b/fsfw deleted file mode 160000 index 9110fd2..0000000 --- a/fsfw +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9110fd27285c8f6ec145617b168d4cf29a04dc5e diff --git a/mission/CMakeLists.txt b/mission/CMakeLists.txt index 2e98bf2..43c1760 100644 --- a/mission/CMakeLists.txt +++ b/mission/CMakeLists.txt @@ -1 +1 @@ -target_sources(${TARGET_NAME} PRIVATE main.cpp testIp.cpp malloc_lock.c controller/PrintController.cpp) \ No newline at end of file +target_sources(${TARGET_NAME} PRIVATE main.c) \ No newline at end of file diff --git a/mission/controller/PrintController.cpp b/mission/controller/PrintController.cpp deleted file mode 100644 index 5613e03..0000000 --- a/mission/controller/PrintController.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "PrintController.h" - -#include - -PrintController::PrintController(object_id_t setObjectId) - : SystemObject(setObjectId) {} - -ReturnValue_t PrintController::initialize() { - ReturnValue_t result = SystemObject::initialize(); - if (result != returnvalue::OK) { - return result; - } - - XGpioPs_Config config; - config.DeviceId = 4; // chosen by fair dice throw - config.BaseAddr = XPS_GPIO_BASEADDR; - s32 returncode = XGpioPs_CfgInitialize(&gpio, &config, XPS_GPIO_BASEADDR); - if (returncode != 0) { - return returnvalue::FAILED; - } - XGpioPs_SetDirection(&gpio, 0, (1 << 7)); - XGpioPs_SetOutputEnable(&gpio, 0, (1 << 7)); - XGpioPs_WritePin(&gpio, 7, 1); - return returnvalue::OK; -} - -ReturnValue_t PrintController::performOperation(uint8_t operationCode) { - printf("running\n"); - static int pinvalue = 1; - pinvalue = pinvalue ^ 1; - XGpioPs_WritePin(&gpio, 7, pinvalue); - return returnvalue::OK; -} diff --git a/mission/controller/PrintController.h b/mission/controller/PrintController.h deleted file mode 100644 index 04e48e8..0000000 --- a/mission/controller/PrintController.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include - -#include -#include - - -class PrintController: public SystemObject, public ExecutableObjectIF { - public: - PrintController(object_id_t setObjectId); - virtual ~PrintController() = default; - - ReturnValue_t initialize() override; - - ReturnValue_t performOperation(uint8_t operationCode) override; - - private: - XGpioPs gpio; -}; \ No newline at end of file diff --git a/mission/main.cpp b/mission/main.c similarity index 85% rename from mission/main.cpp rename to mission/main.c index 29c6390..6dba6ab 100644 --- a/mission/main.cpp +++ b/mission/main.c @@ -62,9 +62,7 @@ /* Standard includes. */ #include -extern "C" { #include -} /* Scheduler include files. */ #include "FreeRTOS.h" @@ -84,34 +82,12 @@ extern "C" { /* Xilinx includes. */ // #include "platform.h" -extern "C" { #include "xil_exception.h" #include "xparameters.h" #include "xscugic.h" #include "xscutimer.h" #include "xuartps_hw.h" -} -#include -#include -#include -#include -#include -#include -#include - -#include - -void messagetypes::clearMissionMessage(CommandMessage* message){}; - -#include - -#if FSFW_CPP_OSTREAM_ENABLED == 1 -ServiceInterfaceStream sif::debug("DEBUG", false); -ServiceInterfaceStream sif::info("INFO", false); -ServiceInterfaceStream sif::warning("WARNING", false); -ServiceInterfaceStream sif::error("ERROR", false, true, true); -#endif /* * Configure the hardware as necessary to run this demo. @@ -153,26 +129,26 @@ int main(void) { /* Configure the hardware ready to run the demo. */ prvSetupHardware(); - printf("Booting Software\n"); + // printf("Booting Software\n"); - malloc_mutex = xSemaphoreCreateRecursiveMutex(); - if (malloc_mutex == NULL) { - printf("Could not obtaiin malloc mutex, bye...\n"); - exit(-1); - } + int taskParameters = 0; - int taskParameters =0; + static const uint16_t stackSizeWords = 512; + StaticTask_t xTaskBuffer; + StackType_t xStack[stackSizeWords]; - xTaskCreate( + xTaskCreateStatic( mission, /* The function that implements the task. */ - "init", /* The text name assigned to the task - for debug only as it is not used by the - kernel. */ - 10240, /* The size of the stack to allocate to the task. */ - &taskParameters, /* The parameter passed to the task - not used in this simple case. */ + "init", /* The text name assigned to the task - for debug only as it is + not used by the kernel. */ + stackSizeWords, /* The size of the stack to allocate to the task. */ + &taskParameters, /* The parameter passed to the task - not used in this + simple case. */ 4, /* The priority assigned to the task. */ - nullptr); /* The task handle is not required, so NULL is passed. */ + xStack, &xTaskBuffer); vTaskStartScheduler(); + /* If all is well, the scheduler will now be running, and the following line will never be reached. If the following line does execute, then there was either insufficient FreeRTOS heap memory available for the idle @@ -189,53 +165,19 @@ int main(void) { void testIp(); -extern "C" { void rust_main(double i); -} -void mission(void *){ +void mission(void *) { - printf("Starting Mission\n"); + // printf("Starting Mission\n"); rust_main(123456879123456789); - testIp(); + // testIp(); - sif::debug << "OStreams working" << std::endl; + // printf("Started Tasks, deleting init task\n"); - ObjectManager* objManager = ObjectManager::instance(); - objManager->setObjectFactoryFunction(ObjectFactory::produce, nullptr); - - printf("Created Objects\n"); - - objManager->initialize(); - - printf("Initialized Objects\n"); - - TaskFactory* taskFactory = TaskFactory::instance(); - if (taskFactory == nullptr) { - printf("Ooopsie\n"); - return; - } - - TaskPriority currPrio; - - TaskDeadlineMissedFunction deadlineMissedFunc = nullptr; - - currPrio = 2; - - PeriodicTaskIF* controllerTask = taskFactory->createPeriodicTask( - "controller", currPrio, 1024, 1, nullptr); - controllerTask->addComponent(123); - controllerTask->addComponent(130); - - printf("Created Tasks\n"); - - controllerTask->startTask(); - - printf("Started Tasks, deleting init task\n"); - - vTaskDelete(nullptr); + vTaskDelete(NULL); } /*-----------------------------------------------------------*/ @@ -318,12 +260,11 @@ void vApplicationIdleHook(void) { management options. If there is a lot of heap memory free then the configTOTAL_HEAP_SIZE value in FreeRTOSConfig.h can be reduced to free up RAM. */ - xFreeHeapSpace = xPortGetFreeHeapSize(); - xMinimumEverFreeHeapSpace = xPortGetMinimumEverFreeHeapSize(); + // xFreeHeapSpace = xPortGetFreeHeapSize(); + // xMinimumEverFreeHeapSpace = xPortGetMinimumEverFreeHeapSize(); - /* Remove compiler warning about xFreeHeapSpace being set but never used. */ - (void)xFreeHeapSpace; - (void)xMinimumEverFreeHeapSpace; + // /* Remove compiler warning about xFreeHeapSpace being set but never used. + // */ (void)xFreeHeapSpace; (void)xMinimumEverFreeHeapSpace; } /*-----------------------------------------------------------*/ @@ -444,11 +385,9 @@ void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer, application must provide an implementation of vApplicationGetTimerTaskMemory() to provide the memory that is used by the Timer service task. */ -extern "C" { void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize); -} void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, diff --git a/mission/malloc_lock.c b/mission/malloc_lock.c deleted file mode 100644 index a366824..0000000 --- a/mission/malloc_lock.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "FreeRTOS.h" - -#include "semphr.h" - -SemaphoreHandle_t malloc_mutex = NULL; - -void __malloc_lock(struct _reent *r) { - // if the mutex is not initialized yet, no task have been started either - if (malloc_mutex != NULL) { - xSemaphoreTakeRecursive(malloc_mutex, portMAX_DELAY); - } -} - -void __malloc_unlock(struct _reent *r) { - // if the mutex is not initialized yet, no task have been started either - if (malloc_mutex != NULL) { - xSemaphoreGiveRecursive(malloc_mutex); - } -}