diff --git a/CMakeLists.txt b/CMakeLists.txt index 1cc0b40621fdc8b0366feeda26b2e77eb1f39727..05fe458e68468a795a6244782fde8a7479f40af8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ include(${BOARDCORE_PATH}/cmake/boardcore.cmake) # ### DEFAULT # # Define the miosix library with kernel and architecture sources -# add_library(skyward-boardcore STATIC ${BOARDCORE_SRC} ${PROTECT_SRC}) +# add_library(skyward-boardcore STATIC ${EXCLUDE_SRC} ${PROTECT_SRC} ${TO_DUPLICATE_SRC}) # link_boardcore_submodules(skyward-boardcore PUBLIC) # link_boardcore_libraries(skyward-boardcore PUBLIC) @@ -51,15 +51,22 @@ link_boardcore_submodules(to_protect_lib PUBLIC) link_boardcore_libraries(to_protect_lib PUBLIC) # Create a library for the board -add_library(external_lib STATIC EXCLUDE_FROM_ALL ${BOARDCORE_SRC}) +add_library(external_lib STATIC EXCLUDE_FROM_ALL ${EXCLUDE_SRC}) target_compile_options(external_lib PRIVATE -S -emit-llvm -O3) # add_options_boardcore_library(external_lib PUBLIC ${BOARD_NAME}) link_boardcore_submodules(external_lib PUBLIC) link_boardcore_libraries(external_lib PUBLIC) +# Create a library for the board +add_library(to_duplicate_lib STATIC EXCLUDE_FROM_ALL ${TO_DUPLICATE_SRC}) +target_compile_options(to_duplicate_lib PRIVATE -S -emit-llvm -O3) +# add_options_boardcore_library(to_duplicate_lib PUBLIC ${BOARD_NAME}) +link_boardcore_submodules(to_duplicate_lib PUBLIC) +link_boardcore_libraries(to_duplicate_lib PUBLIC) + get_property(CXXFLAGS_RET TARGET miosix PROPERTY TARGET_CXX_FLAGS) -apply_aspis_passes(to_protect_lib external_lib skyward-boardcore "${CXXFLAGS_RET}") +apply_aspis_passes(to_protect_lib external_lib to_duplicate_lib skyward-boardcore "${CXXFLAGS_RET}") # add_options_boardcore_library(skyward-boardcore INTERFACE ${BOARD_NAME}) link_boardcore_submodules(skyward-boardcore INTERFACE) diff --git a/cmake/boardcore.cmake b/cmake/boardcore.cmake index ec3d4bae26cb2926a2375491b63b80c1c4e8cd4b..58e36bc5de74dc048a8ef81a73af297ee2b830e9 100644 --- a/cmake/boardcore.cmake +++ b/cmake/boardcore.cmake @@ -37,23 +37,13 @@ include(${BOARDCORE_PATH}/cmake/boardcore-host.cmake) include(${BOARDCORE_PATH}/cmake/boards.cmake) # Boardcore source files -set(BOARDCORE_SRC +set(EXCLUDE_SRC # Actuators ${BOARDCORE_PATH}/src/shared/actuators/HBridge/HBridge.cpp ${BOARDCORE_PATH}/src/shared/actuators/Servo/Servo.cpp ${BOARDCORE_PATH}/src/shared/actuators/stepper/Stepper.cpp ${BOARDCORE_PATH}/src/shared/actuators/stepper/StepperPWM.cpp - # Algorithms - # ${BOARDCORE_PATH}/src/shared/algorithms/ADA/ADA.cpp - # ${BOARDCORE_PATH}/src/shared/algorithms/MEA/MEA.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/AirBrakes/AirBrakesPI.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/AirBrakes/AirBrakesInterp.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/NAS/NAS.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/NAS/StateInitializer.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/Propagator/Propagator.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/Follower/Follower.cpp - # Debug ${BOARDCORE_PATH}/src/shared/utils/Debug.cpp ${BOARDCORE_PATH}/src/shared/diagnostic/CpuMeter/CpuMeter.cpp @@ -77,9 +67,6 @@ set(BOARDCORE_SRC ${BOARDCORE_PATH}/src/shared/drivers/WIZ5500/WIZ5500.cpp ${BOARDCORE_PATH}/src/shared/drivers/DipSwitch/DipSwitch.cpp - # Events - ${BOARDCORE_PATH}/src/shared/events/EventBroker.cpp - # Logger ${BOARDCORE_PATH}/src/shared/logger/Logger.cpp @@ -91,9 +78,6 @@ set(BOARDCORE_SRC ${BOARDCORE_PATH}/src/shared/radio/SX1278/SX1278Lora.cpp ${BOARDCORE_PATH}/src/shared/radio/SX1278/SX1278Common.cpp - # Scheduler - ${BOARDCORE_PATH}/src/shared/scheduler/TaskScheduler.cpp - # Sensors ${BOARDCORE_PATH}/src/shared/sensors/ADS1118/ADS1118.cpp ${BOARDCORE_PATH}/src/shared/sensors/ADS131M04/ADS131M04.cpp @@ -130,6 +114,19 @@ set(BOARDCORE_SRC ${BOARDCORE_PATH}/src/shared/sensors/LPS22DF/LPS22DF.cpp ${BOARDCORE_PATH}/src/shared/sensors/LSM6DSRX/LSM6DSRX.cpp + # Utils + ${BOARDCORE_PATH}/src/shared/utils/ButtonHandler/ButtonHandler.cpp + ${BOARDCORE_PATH}/src/shared/utils/PinObserver/PinObserver.cpp + ${BOARDCORE_PATH}/src/shared/utils/Stats/Stats.cpp + ${BOARDCORE_PATH}/src/shared/utils/TestUtils/TestHelper.cpp + ${BOARDCORE_PATH}/src/shared/utils/Registry/RegistryFrontend.cpp + ${BOARDCORE_PATH}/src/shared/utils/Registry/RegistrySerializer.cpp + ${BOARDCORE_PATH}/src/shared/utils/Registry/Backend/FileBackend.cpp +) + +set(PROTECT_SRC + ${BOARDCORE_PATH}/src/shared/aspis/aspis.cpp + # Calibration ${BOARDCORE_PATH}/src/shared/sensors/calibration/BiasCalibration/BiasCalibration.cpp ${BOARDCORE_PATH}/src/shared/sensors/calibration/SensorDataExtra/SensorDataExtra.cpp @@ -140,23 +137,28 @@ set(BOARDCORE_SRC ${BOARDCORE_PATH}/src/shared/sensors/correction/BiasCorrector/BiasCorrector.cpp ${BOARDCORE_PATH}/src/shared/sensors/correction/SixParametersCorrector/SixParametersCorrector.cpp + # Algorithms + ${BOARDCORE_PATH}/src/shared/algorithms/AirBrakes/AirBrakesPI.cpp + ${BOARDCORE_PATH}/src/shared/algorithms/AirBrakes/AirBrakesInterp.cpp + ${BOARDCORE_PATH}/src/shared/algorithms/NAS/NAS.cpp + ${BOARDCORE_PATH}/src/shared/algorithms/NAS/StateInitializer.cpp + ${BOARDCORE_PATH}/src/shared/algorithms/Propagator/Propagator.cpp + ${BOARDCORE_PATH}/src/shared/algorithms/Follower/Follower.cpp + ${BOARDCORE_PATH}/src/shared/algorithms/MEA/MEA.cpp + ${BOARDCORE_PATH}/src/shared/algorithms/ADA/ADA.cpp + # Utils ${BOARDCORE_PATH}/src/shared/utils/AeroUtils/AeroUtils.cpp - ${BOARDCORE_PATH}/src/shared/utils/ButtonHandler/ButtonHandler.cpp - ${BOARDCORE_PATH}/src/shared/utils/PinObserver/PinObserver.cpp ${BOARDCORE_PATH}/src/shared/utils/SkyQuaternion/SkyQuaternion.cpp - ${BOARDCORE_PATH}/src/shared/utils/Stats/Stats.cpp - ${BOARDCORE_PATH}/src/shared/utils/TestUtils/TestHelper.cpp - ${BOARDCORE_PATH}/src/shared/utils/Registry/RegistryFrontend.cpp - ${BOARDCORE_PATH}/src/shared/utils/Registry/RegistrySerializer.cpp - ${BOARDCORE_PATH}/src/shared/utils/Registry/Backend/FileBackend.cpp - ${BOARDCORE_PATH}/src/shared/utils/DependencyManager/DependencyManager.cpp ) -set(PROTECT_SRC - ${BOARDCORE_PATH}/src/shared/aspis/aspis.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/MEA/MEA.cpp - ${BOARDCORE_PATH}/src/shared/algorithms/ADA/ADA.cpp +set(TO_DUPLICATE_SRC + # Scheduler + ${BOARDCORE_PATH}/src/shared/scheduler/TaskScheduler.cpp + ${BOARDCORE_PATH}/src/shared/utils/DependencyManager/DependencyManager.cpp + + # Events + ${BOARDCORE_PATH}/src/shared/events/EventBroker.cpp ) function(link_boardcore_submodules TARGET TYPE) @@ -195,30 +197,39 @@ endfunction() set(ASPIS_PASSES_PATH /home/streben/Documenti/ASPIS/build/passes) # Given two libs, it creates a static library -function(apply_aspis_passes TO_PROTECT_LIB EXTERNAL_LIB OUTLIBRARY CXXFLAGS_RET) +function(apply_aspis_passes TO_PROTECT_LIB EXTERNAL_LIB TO_DUPLICATE_LIB OUTLIBRARY CXXFLAGS_RET) # Getting the sources of the two libraries get_property(TO_PROTECT_SRC TARGET ${TO_PROTECT_LIB} PROPERTY SOURCES) + get_property(TO_DUPLICATE_SRC TARGET ${TO_DUPLICATE_LIB} PROPERTY SOURCES) get_property(EXTERNAL_SRC TARGET ${EXTERNAL_LIB} PROPERTY SOURCES) # Create list of compiled protected sources for each board set(PROTECT_COMPILED_SOURCES TO_PROTECT_COMPILED) list(TRANSFORM TO_PROTECT_SRC APPEND ".o" OUTPUT_VARIABLE PROTECT_COMPILED_SOURCES) list(TRANSFORM PROTECT_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "") - list(TRANSFORM PROTECT_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_PROTECT_LIB}.dir) + list(TRANSFORM PROTECT_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_PROTECT_LIB}.dir/) + + # Create list of compiled boardcore sources for each board + set(TO_DUPLICATE_COMPILED_SOURCES EXTERNAL_COMPILED) + list(TRANSFORM TO_DUPLICATE_SRC APPEND ".o" OUTPUT_VARIABLE TO_DUPLICATE_COMPILED_SOURCES) + list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "") + list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_DUPLICATE_LIB}.dir/) # Create list of compiled boardcore sources for each board set(EXTERNAL_COMPILED_SOURCES EXTERNAL_COMPILED) list(TRANSFORM EXTERNAL_SRC APPEND ".o" OUTPUT_VARIABLE EXTERNAL_COMPILED_SOURCES) list(TRANSFORM EXTERNAL_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "") - list(TRANSFORM EXTERNAL_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${EXTERNAL_LIB}.dir) + list(TRANSFORM EXTERNAL_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${EXTERNAL_LIB}.dir/) add_custom_target( ${OUTLIBRARY}-target BYPRODUCTS lib${OUTLIBRARY}.a COMMAND export LLVM_SYMBOLIZER_PATH=${LLVM_PREFIX}/llvm-symbolizer COMMAND ${MIOSIX_PREFIX}-link ${EXTERNAL_COMPILED_SOURCES} -o externals.bc - COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libMarkToExclude.so --passes="mark-to-exclude" externals.bc -o externals.bc - COMMAND ${MIOSIX_PREFIX}-link -v ${PROTECT_COMPILED_SOURCES} externals.bc -o out.bc + COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-exclude" externals.bc -o externals.bc + COMMAND ${MIOSIX_PREFIX}-link ${TO_DUPLICATE_COMPILED_SOURCES} -o to_duplicate.bc + COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-duplicate" to_duplicate.bc -o to_duplicate.bc + COMMAND ${MIOSIX_PREFIX}-link -v ${PROTECT_COMPILED_SOURCES} externals.bc to_duplicate.bc -o out.bc # COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libEDDI.so --passes="func-ret-to-ref" out.bc -o ret_to_ref.bc # COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libSEDDI.so --passes="eddi-verify" ret_to_ref.bc -o out.bc -debug # COMMAND ${CMAKE_OPT} --passes="dce,simplifycfg" out.bc -o out.bc @@ -229,6 +240,7 @@ function(apply_aspis_passes TO_PROTECT_LIB EXTERNAL_LIB OUTLIBRARY CXXFLAGS_RET) COMMENT "Applying ASPIS passes and creating archive lib${OUTLIBRARY}.a" ) add_dependencies(${OUTLIBRARY}-target ${TO_PROTECT_LIB}) + add_dependencies(${OUTLIBRARY}-target ${TO_DUPLICATE_LIB}) add_dependencies(${OUTLIBRARY}-target ${EXTERNAL_LIB}) # Importing the just built library @@ -239,9 +251,10 @@ endfunction() # Given two libs, it creates an executable -function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE OUTEXECUTABLE CXXFLAGS_RET) +function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE TO_DUPLICATE_LIB OUTEXECUTABLE CXXFLAGS_RET) # Getting the sources of the two libraries get_property(TO_PROTECT_SRC TARGET ${TO_PROTECT_EXE} PROPERTY SOURCES) + get_property(TO_DUPLICATE_SRC TARGET ${TO_DUPLICATE_LIB} PROPERTY SOURCES) get_property(EXTERNAL_SRC TARGET ${EXTERNAL_EXE} PROPERTY SOURCES) # Create list of compiled protected sources for each board @@ -250,6 +263,12 @@ function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE OUTEXECUTABLE CXXFLA list(TRANSFORM PROTECT_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "") list(TRANSFORM PROTECT_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_PROTECT_EXE}.dir/) + # Create list of compiled boardcore sources for each board + set(TO_DUPLICATE_COMPILED_SOURCES EXTERNAL_COMPILED) + list(TRANSFORM TO_DUPLICATE_SRC APPEND ".o" OUTPUT_VARIABLE TO_DUPLICATE_COMPILED_SOURCES) + list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "") + list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_DUPLICATE_LIB}.dir/) + # Create list of compiled boardcore sources for each board set(EXTERNAL_COMPILED_SOURCES EXTERNAL_COMPILED) list(TRANSFORM EXTERNAL_SRC APPEND ".o" OUTPUT_VARIABLE EXTERNAL_COMPILED_SOURCES) @@ -261,8 +280,10 @@ function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE OUTEXECUTABLE CXXFLA BYPRODUCTS ${OUTEXECUTABLE}.elf COMMAND export LLVM_SYMBOLIZER_PATH=${LLVM_PREFIX}/llvm-symbolizer COMMAND ${MIOSIX_PREFIX}-link ${EXTERNAL_COMPILED_SOURCES} -o externals.bc - COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libMarkToExclude.so --passes="mark-to-exclude" externals.bc -o externals.bc - COMMAND ${MIOSIX_PREFIX}-link -v ${CMAKE_BINARY_DIR}/skyward_boardcore.bc ${PROTECT_COMPILED_SOURCES} externals.bc -o out.bc + COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-exclude" externals.bc -o externals.bc + COMMAND ${MIOSIX_PREFIX}-link ${TO_DUPLICATE_COMPILED_SOURCES} -o to_duplicate.bc + COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-duplicate" to_duplicate.bc -o to_duplicate.bc + COMMAND ${MIOSIX_PREFIX}-link -v ${CMAKE_BINARY_DIR}/skyward_boardcore.bc ${PROTECT_COMPILED_SOURCES} externals.bc to_duplicate.bc -o out.bc COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libEDDI.so --passes="func-ret-to-ref" out.bc -o ret_to_ref.bc COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libSEDDI.so --passes="eddi-verify" ret_to_ref.bc -o out.bc -debug COMMAND ${CMAKE_OPT} --passes="dce,simplifycfg" out.bc -o out.bc @@ -273,6 +294,7 @@ function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE OUTEXECUTABLE CXXFLA COMMENT "Applying ASPIS passes and creating ${OUTEXECUTABLE}.elf" ) add_dependencies(${OUTEXECUTABLE}-target ${TO_PROTECT_EXE}) + add_dependencies(${OUTEXECUTABLE}-target ${TO_DUPLICATE_LIB}) add_dependencies(${OUTEXECUTABLE}-target ${EXTERNAL_EXE}) # /usr/lib64/ccache/clang++ --target=arm-none-eabi --sysroot=/opt/arm-miosix-eabi/arm-miosix-eabi/lib -g -O0 -Wl,-Map,/home/streben/Documenti/POLIMI/TESI/obsw/src/entrypoints/Main/build/main-entry.map -Wl,-Map,/home/streben/Documenti/POLIMI/TESI/obsw/src/entrypoints/Main/build/skyward-boardcore.map -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -Wl,--gc-sections -Wl,-T/home/streben/Documenti/POLIMI/TESI/obsw/skyward-boardcore/src/bsps/stm32f767zi_gemini_motor/stm32_2m+16m_xram.ld -nostdlib -o main-entry.elf -L/opt/arm-miosix-eabi/arm-miosix-eabi/lib/thumb/cm7/hardfp/fpv5 -L/opt/arm-miosix-eabi/lib/gcc/arm-miosix-eabi/9.2.0/thumb/cm7/hardfp/fpv5 libskyward-boardcore.a -Wl,--start-group libmiosix.a -lstdc++ -lc -lm -lgcc -latomic -Wl,--end-group diff --git a/libs/miosix-kernel b/libs/miosix-kernel index e25e6ce927806d6a1954f8750569fc67e2eb8b48..12840bc5a26610905ac8ee0f6b3e3256bb4713bb 160000 --- a/libs/miosix-kernel +++ b/libs/miosix-kernel @@ -1 +1 @@ -Subproject commit e25e6ce927806d6a1954f8750569fc67e2eb8b48 +Subproject commit 12840bc5a26610905ac8ee0f6b3e3256bb4713bb diff --git a/src/tests/test-serial/CMakeLists.txt b/src/tests/test-serial/CMakeLists.txt index ca864fd57be3085dc4f0ca20b5b173d91242e322..16c060fd83f70469a2c14e3dfda564c2630efef3 100644 --- a/src/tests/test-serial/CMakeLists.txt +++ b/src/tests/test-serial/CMakeLists.txt @@ -35,7 +35,7 @@ include(${TESTS_PATH}/../../CMakeLists.txt) # List here your source files (.s, .c and .cpp) add_executable(test-serial test-serial.cpp) -boardcore_link_target(test-serial) +boardcore_link_target(test-serial PUBLIC) # List here additional include directories # target_include_directories(test-serial PRIVATE here_your_includes)