diff --git a/Software/firmware/CMakeLists.txt b/Software/firmware/CMakeLists.txt index 57983af..d76af5b 100644 --- a/Software/firmware/CMakeLists.txt +++ b/Software/firmware/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required (VERSION 3.16) SET(CMAKE_CXX_STANDARD 20) -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror=pedantic -Wextra -Os") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror=pedantic -Wextra") SET(PROJECT_NAME "app") project(${PROJECT_NAME}) @@ -15,10 +15,19 @@ add_executable(${PROJECT_NAME} target_link_libraries (${PROJECT_NAME} target womolin) -add_custom_command(OUTPUT ${PROJECT_NAME}.bin - COMMAND "${CMAKE_OBJCOPY} ARGS -O ihex ${PROJECT_NAME} ${PROJECT_NAME}.hex" +add_custom_target(${PROJECT_NAME}.hex ALL DEPENDS ${PROJECT_NAME}) + +add_custom_command(TARGET ${PROJECT_NAME}.hex + COMMAND ${CMAKE_C_OBJCOPY} ARGS -O ihex ${PROJECT_NAME} ${PROJECT_NAME}.hex DEPENDS ${PROJECT_NAME} COMMENT "objcopying ${PROJECT_NAME} to ${PROJECT_NAME}.hex") -add_custom_target(${PROJECT_NAME}.hex ALL DEPENDS ${PROJECT_NAME}) + +add_custom_target(${PROJECT_NAME}.bin ALL DEPENDS ${PROJECT_NAME}) + +add_custom_command(TARGET ${PROJECT_NAME}.bin + COMMAND ${CMAKE_C_OBJCOPY} ARGS -S -O binary ${PROJECT_NAME} ${PROJECT_NAME}.bin + DEPENDS ${PROJECT_NAME} + COMMENT "objcopying ${PROJECT_NAME} to ${PROJECT_NAME}.bin") + diff --git a/Software/firmware/helper/build.sh b/Software/firmware/helper/build.sh index f94bcf5..8a8bd73 100755 --- a/Software/firmware/helper/build.sh +++ b/Software/firmware/helper/build.sh @@ -59,3 +59,20 @@ cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \ make +########################### +# mainunit release version +########################### +WOMOLIN_TARGET="TARGET_MAINUNIT" +TARGET_FOLDER="${BUILD_MAINUNIT_ROOT}/${RELEASE}" +CMAKE_TOOLCHAIN_FILE="${CMAKE_TOOLCHAIN_FILE_MAINUNIT}" + +mkdir -p "${TARGET_FOLDER}" +cd ${TARGET_FOLDER} + +cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \ + -DCMAKE_BUILD_TYPE=${RELEASE} \ + ${FIRMWARE_ROOT} + +make + + diff --git a/Software/firmware/helper/target.mainunit b/Software/firmware/helper/target.mainunit index e4f3745..f7ca2dd 100644 --- a/Software/firmware/helper/target.mainunit +++ b/Software/firmware/helper/target.mainunit @@ -1,17 +1,34 @@ SET(WOMOLIN_TARGET "TARGET_MAINUNIT") +SET(CMAKE_SYSTEM_NAME Generic) +SET(CMAKE_SYSTEM_PROCESSOR arm) +SET(CMAKE_CROSSCOMPILING 1) SET(CMAKE_C_COMPILER /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-gcc) SET(CMAKE_CXX_COMPILER "/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++") -SET(CMAKE_OBJCOPY "/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-objcopy") +SET(CMAKE_C_OBJCOPY "/opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-objcopy") SET(CMAKE_CXX_FLAGS -D${WOMOLIN_TARGET}) SET(CMAKE_EXE_LINKER_FLAGS "-specs=nosys.specs") -SET(CPU "cortex-m4") +SET(COMMON_COMPILE_FLAGS "-mcpu=cortex-m4 \ + -mthumb-interwork \ + -mfloat-abi=hard \ + -mlong-calls \ + -ffunction-sections \ + -fno-exceptions \ + -fdata-sections \ + -DSTM32L476xx \ + -DUSE_HAL_DRIVER") -SET(COMMON_COMPILE_FLAGS "-mcpu=${CPU} -mthumb -DSTM32L476xx -DUSE_HAL_DRIVER") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILE_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILE_FLAGS}") -ADD_COMPILE_OPTIONS("-Tdrv/system/cmsis/STM32L476RGTx_FLASH.ld") +set(CMAKE_C_FLAGS_RELEASE "-Os") +set(CMAKE_CXX_FLAGS_RELEASE "-Os") + +set(CMAKE_C_FLAGS_DEBUG "-Og -g -gdwarf-3 -gstrict-dwarf") +set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -gdwarf-3 -gstrict-dwarf") + +ADD_COMPILE_OPTIONS("-Wl, -T\"${CMAKE_SOURCE_DIR}/target/mainunit/drv/system/STM32L476RGTx_FLASH.ld\"") +#set(CMAKE_EXE_LINKER_FLAGS "-Wl, -T\"${CMAKE_SOURCE_DIR}/target/mainunit/drv/system/STM32L476RGTx_FLASH.ld\"")