@@ -5,6 +5,9 @@ include(${CMAKE_SOURCE_DIR}/cmake/obc_build_options.cmake)
55
66include (${CMAKE_CURRENT_SOURCE_DIR} /shared/hal/cmake/board_lib_defs.cmake)
77
8+ # Load setup-specific definitions
9+ include (${CMAKE_SOURCE_DIR} /obc/shared/config/peripheral_config_definitions.cmake)
10+
811set (LD_DIR_PATH "${CMAKE_CURRENT_SOURCE_DIR} /shared/hal/common/ld" )
912set (APP_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR} /shared/hal/common/ld/app_link.ld" )
1013set (BL_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR} /shared/hal/common/ld/bl_link.ld" )
@@ -28,7 +31,52 @@ endif()
2831# Pass the address to the linker
2932add_link_options (-Wl,--defsym,CUSTOM_START_ADDRESS=${CUSTOM_START_ADDRESS} )
3033
31- add_executable (OBC-firmware.out app/app_main.c)
34+ # Select main for build
35+ if (${CMAKE_BUILD_TYPE} MATCHES OBC)
36+ set (OUT_FILE_NAME OBC-firmware.out)
37+ set (BIN_FILE_NAME OBC-firmware.bin)
38+ add_compile_options (-Werror) # TODO: Move this back to download_arm_toolchain once all examples warnings are fixed
39+ add_executable (${OUT_FILE_NAME} app/app_main.c)
40+ elseif (${CMAKE_BUILD_TYPE} MATCHES Examples)
41+ set (OUT_FILE_NAME OBC-firmware-${EXAMPLE_TYPE} .out)
42+ set (BIN_FILE_NAME OBC-firmware-${EXAMPLE_TYPE} .bin)
43+ if (${EXAMPLE_TYPE} MATCHES DMA_SPI)
44+ add_executable (${OUT_FILE_NAME} examples/dma_spi_demo/main.c)
45+ elseif (${EXAMPLE_TYPE} MATCHES FRAM_PERSIST)
46+ add_executable (${OUT_FILE_NAME} examples/test_app_fram_persist/main.c)
47+ elseif (${EXAMPLE_TYPE} MATCHES FRAM_SPI)
48+ add_executable (${OUT_FILE_NAME} examples/test_app_fram_spi/main.c)
49+ elseif (${EXAMPLE_TYPE} MATCHES LM75BD)
50+ add_executable (${OUT_FILE_NAME} examples/test_app_lm75bd/main.c)
51+ elseif (${EXAMPLE_TYPE} MATCHES MPU6050)
52+ add_executable (${OUT_FILE_NAME} examples/test_app_mpu6050/main.c examples/test_app_mpu6050/source /mpu6050.c)
53+ target_include_directories (${OUT_FILE_NAME} PRIVATE examples/test_app_mpu6050/include )
54+ elseif (${EXAMPLE_TYPE} MATCHES RE_SD)
55+ add_executable (${OUT_FILE_NAME} examples/test_app_reliance_edge_sd/main.c)
56+ elseif (${EXAMPLE_TYPE} MATCHES RTC)
57+ add_executable (${OUT_FILE_NAME} examples/test_app_rtc/main.c)
58+ elseif (${EXAMPLE_TYPE} MATCHES UART_RX)
59+ add_executable (${OUT_FILE_NAME} examples/test_app_uart_rx/main.c)
60+ elseif (${EXAMPLE_TYPE} MATCHES UART_TX)
61+ add_executable (${OUT_FILE_NAME} examples/test_app_uart_tx/main.c)
62+ elseif (${EXAMPLE_TYPE} MATCHES VN100)
63+ add_executable (${OUT_FILE_NAME} examples/vn100_demo/test_binary_reading/main.c)
64+ elseif (${EXAMPLE_TYPE} MATCHES ADC)
65+ add_executable (${OUT_FILE_NAME} examples/test_app_adc/main.c)
66+ elseif (${EXAMPLE_TYPE} MATCHES CC1120_SPI)
67+ add_executable (${OUT_FILE_NAME} examples/test_app_cc1120_spi/main.c examples/test_app_cc1120_spi/cc1120_spi_tests.c)
68+ target_include_directories (${OUT_FILE_NAME} PRIVATE examples/test_app_cc1120_spi)
69+ elseif (${EXAMPLE_TYPE} MATCHES RS)
70+ add_executable (${OUT_FILE_NAME} examples/test_app_rs/main.c)
71+
72+ # ADD MORE EXAMPLES ABOVE THIS COMMENT
73+ else ()
74+ message (FATAL_ERROR "Invalid example type: ${EXAMPLE_TYPE} " )
75+ endif ()
76+ else ()
77+ message (FATAL_ERROR "Invalid build type: ${CMAKE_BUILD_TYPE} " )
78+ endif ()
79+
3280add_executable (OBC-bl.out)
3381add_executable (debug-tool.out)
3482
@@ -37,16 +85,16 @@ add_subdirectory(shared/config)
3785add_subdirectory (shared/hal)
3886
3987# Application
40- target_link_options (OBC-firmware.out PRIVATE
88+ target_link_options (${OUT_FILE_NAME} PRIVATE
4189 -specs=nosys.specs
4290 -Wl,-Map=OBC-firmware.map -T${APP_LINKER_SCRIPT}
4391 -Wl,--print-memory-usage
4492 -Wl,-L${LD_DIR_PATH}
4593)
4694
47- target_compile_options (OBC-firmware.out PRIVATE ${TARGET_OPTIMIZATION_FLAGS} )
95+ target_compile_options (${OUT_FILE_NAME} PRIVATE ${TARGET_OPTIMIZATION_FLAGS} )
4896
49- target_compile_definitions (OBC-firmware.out PRIVATE
97+ target_compile_definitions (${OUT_FILE_NAME} PRIVATE
5098 ${BOARD_TYPE}
5199 LOG_DEFAULT_OUTPUT_LOCATION=${LOG_DEFAULT_OUTPUT_LOCATION}
52100 LOG_DEFAULT_LEVEL=${LOG_DEFAULT_LEVEL}
@@ -57,6 +105,7 @@ target_compile_definitions(OBC-firmware.out PRIVATE
57105 OBC_UART_BAUD_RATE=${OBC_UART_BAUD_RATE}
58106 CSDC_DEMO_ENABLED=${CSDC_DEMO_ENABLED}
59107 ENABLE_TASK_STATS_COLLECTOR=${ENABLE_TASK_STATS_COLLECTOR}
108+ ${PERIPHERAL_CONFIG}
60109)
61110
62111# Determine the root of the repository
@@ -69,7 +118,7 @@ execute_process(
69118# Set the SOURCE_PATH using the detected REPO_ROOT
70119add_compile_definitions (SOURCE_PATH="${REPO_ROOT} /" )
71120
72- target_include_directories (OBC-firmware.out PUBLIC
121+ target_include_directories (${OUT_FILE_NAME} PUBLIC
73122 ${CMAKE_BINARY_DIR} /toolchain/arm-none-eabi/include
74123)
75124
@@ -80,7 +129,7 @@ add_subdirectory(app/sys)
80129add_subdirectory (app/drivers)
81130add_subdirectory (app/reliance_edge)
82131
83- target_link_libraries (OBC-firmware.out PRIVATE
132+ target_link_libraries (${OUT_FILE_NAME} PRIVATE
84133 tiny-aes
85134 lib-correct
86135 obc-gs-interface
@@ -92,8 +141,9 @@ target_link_libraries(OBC-firmware.out PRIVATE
92141)
93142
94143# Generate .bin for the app
144+ string (CONCAT commentStr "Generating " ${BIN_FILE_NAME} )
95145add_custom_command (
96- OUTPUT OBC-firmware.bin
146+ OUTPUT ${BIN_FILE_NAME}
97147 COMMAND toolchain/bin/arm-none-eabi-objcopy -O binary --only-section=.intvecs
98148 --only-section=.kernelTEXT
99149 --only-section=.text
@@ -103,16 +153,16 @@ add_custom_command(
103153 --only-section=.init_array
104154 --only-section=.fini_array
105155 --only-section=.data
106- OBC-firmware.out OBC-firmware.bin
156+ ${OUT_FILE_NAME} ${BIN_FILE_NAME}
107157 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
108- DEPENDS OBC-firmware.out
109- COMMENT "Generating OBC-firmware.bin"
158+ DEPENDS ${OUT_FILE_NAME}
159+ COMMENT commentStr
110160)
111161
112162add_custom_target (
113163 OBC-firmware_bin
114164 ALL
115- DEPENDS OBC-firmware.bin
165+ DEPENDS ${BIN_FILE_NAME}
116166)
117167
118168# Bootloader
@@ -135,6 +185,7 @@ target_compile_definitions(OBC-bl.out PRIVATE
135185 OBC_UART_BAUD_RATE=${OBC_UART_BAUD_RATE}
136186 CSDC_DEMO_ENABLED=${CSDC_DEMO_ENABLED}
137187 ENABLE_TASK_STATS_COLLECTOR=${ENABLE_TASK_STATS_COLLECTOR}
188+ ${PERIPHERAL_CONFIG}
138189)
139190
140191add_subdirectory (bl)
@@ -165,6 +216,7 @@ target_compile_definitions(debug-tool.out PRIVATE
165216 OBC_UART_BAUD_RATE=${OBC_UART_BAUD_RATE}
166217 CSDC_DEMO_ENABLED=${CSDC_DEMO_ENABLED}
167218 ENABLE_TASK_STATS_COLLECTOR=${ENABLE_TASK_STATS_COLLECTOR}
219+ ${PERIPHERAL_CONFIG}
168220)
169221
170222add_subdirectory (app/tools/interface_debug_tool)
0 commit comments