Skip to content

Commit 3776e44

Browse files
authored
Separate FreeRTOS from HAL (#319)
# Purpose Seperate FreeRTOS from HAL so we can upgrade it in the future ([this task](https://www.notion.so/uworbital/6375c5c5dcf1485e8a6c47f18d419ae5?v=72baf90d01f643b09d77418bd3f53b14&p=9baacb8f5f174a8f80777968c91f6279&pm=s)) # New Changes - Modified HalCoGen files to not generate FreeRTOS files - Moved FreeRTOS files into new directory and modified CMakeLists to use common FreeRTOS files # Testing ![image](https://github.com/user-attachments/assets/6e293fe4-1d2a-4d06-ab9a-d3f5bcb7fcb1) # Outstanding Changes - Changes to FreeRTOS files - Also HalCoGen settings
1 parent e63f037 commit 3776e44

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+84
-34199
lines changed

obc/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ target_link_libraries(${OUT_FILE_NAME} PRIVATE
140140
${HAL_LIB_OPTIMIZE}
141141
$<TARGET_OBJECTS:${HAL_LIB_NO_OPTIMIZE}>
142142
)
143+
target_link_libraries(${OUT_FILE_NAME} PRIVATE
144+
${FREERTOS_LIB_OPTIMIZE}
145+
$<TARGET_OBJECTS:${FREERTOS_LIB_NO_OPTIMIZE}>
146+
)
143147

144148
# Generate .bin for the app
145149
string(CONCAT commentStr "Generating " ${BIN_FILE_NAME})
@@ -232,6 +236,10 @@ target_link_libraries(debug-tool.out PRIVATE
232236
${HAL_LIB_OPTIMIZE}
233237
$<TARGET_OBJECTS:${HAL_LIB_NO_OPTIMIZE}>
234238
)
239+
target_link_libraries(debug-tool.out PRIVATE
240+
${FREERTOS_LIB_OPTIMIZE}
241+
$<TARGET_OBJECTS:${FREERTOS_LIB_NO_OPTIMIZE}>
242+
)
235243

236244

237245
if (${BOARD_TYPE} MATCHES RM46_LAUNCHPAD)

obc/shared/hal/CMakeLists.txt

Lines changed: 36 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ cmake_minimum_required(VERSION 3.15)
33
include(cmake/board_lib_defs.cmake)
44

55
set(RM46_LAUNCHPAD_HAL_SOURCES
6-
${CMAKE_CURRENT_SOURCE_DIR}/common/os_required_fns.c
76
${CMAKE_CURRENT_SOURCE_DIR}/common/rti_weak.c
87
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/adc.c
98
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/can.c
@@ -14,16 +13,6 @@ set(RM46_LAUNCHPAD_HAL_SOURCES
1413
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/het.c
1514
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/i2c.c
1615
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/notification.c
17-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_assert.c
18-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_croutine.c
19-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_event_groups.c
20-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_heap.c
21-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_list.c
22-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_port.c
23-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_portasm.s
24-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_queue.c
25-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_tasks.c
26-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_timer.c
2716
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/pinmux.c
2817
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/sci.c
2918
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/spi.c
@@ -41,11 +30,9 @@ set(RM46_LAUNCHPAD_HAL_SOURCES
4130
set(RM46_LAUNCHPAD_NO_OPTIMIZE_SOURCES
4231
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/sys_selftest.c
4332
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/sys_startup.c
44-
${CMAKE_CURRENT_SOURCE_DIR}/launchpad/source/os_mpu_wrappers.c
4533
)
4634

4735
set(OBC_REV1_HAL_SOURCES
48-
${CMAKE_CURRENT_SOURCE_DIR}/common/os_required_fns.c
4936
${CMAKE_CURRENT_SOURCE_DIR}/common/rti_weak.c
5037
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/adc.c
5138
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/can.c
@@ -56,16 +43,6 @@ set(OBC_REV1_HAL_SOURCES
5643
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/het.c
5744
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/i2c.c
5845
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/notification.c
59-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_assert.c
60-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_croutine.c
61-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_event_groups.c
62-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_heap.c
63-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_list.c
64-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_port.c
65-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_portasm.s
66-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_queue.c
67-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_tasks.c
68-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_timer.c
6946
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/pinmux.c
7047
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/sci.c
7148
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/spi.c
@@ -83,11 +60,9 @@ set(OBC_REV1_HAL_SOURCES
8360
set(OBC_REV1_NO_OPTIMIZE_SOURCES
8461
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/sys_selftest.c
8562
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/sys_startup.c
86-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev1/source/os_mpu_wrappers.c
8763
)
8864

8965
set(OBC_REV2_HAL_SOURCES
90-
${CMAKE_CURRENT_SOURCE_DIR}/common/os_required_fns.c
9166
${CMAKE_CURRENT_SOURCE_DIR}/common/rti_weak.c
9267
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/adc.c
9368
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/can.c
@@ -98,16 +73,6 @@ set(OBC_REV2_HAL_SOURCES
9873
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/het.c
9974
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/i2c.c
10075
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/notification.c
101-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_assert.c
102-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_croutine.c
103-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_event_groups.c
104-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_heap.c
105-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_list.c
106-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_port.c
107-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_portasm.s
108-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_queue.c
109-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_tasks.c
110-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_timer.c
11176
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/pinmux.c
11277
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/sci.c
11378
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/spi.c
@@ -125,9 +90,28 @@ set(OBC_REV2_HAL_SOURCES
12590
set(OBC_REV2_NO_OPTIMIZE_SOURCES
12691
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/sys_selftest.c
12792
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/sys_startup.c
128-
${CMAKE_CURRENT_SOURCE_DIR}/obc_rev2/source/os_mpu_wrappers.c
12993
)
13094

95+
set(FREERTOS_SOURCES
96+
${CMAKE_CURRENT_SOURCE_DIR}/common/os_required_fns.c
97+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_assert.c
98+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_croutine.c
99+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_event_groups.c
100+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_heap.c
101+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_list.c
102+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_port.c
103+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_portasm.s
104+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_queue.c
105+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_tasks.c
106+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_timer.c
107+
)
108+
109+
set(FREERTOS_NO_OPTIMIZE_SOURCES
110+
${CMAKE_CURRENT_SOURCE_DIR}/freertos/source/os_mpu_wrappers.c
111+
)
112+
113+
set(FREERTOS_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/freertos/include)
114+
131115
if (${BOARD_TYPE} MATCHES RM46_LAUNCHPAD)
132116
set(HAL_SOURCES ${RM46_LAUNCHPAD_HAL_SOURCES})
133117
set(HAL_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/launchpad/include)
@@ -145,23 +129,37 @@ else()
145129
endif()
146130

147131
add_library(${HAL_LIB_OPTIMIZE} STATIC)
148-
target_include_directories(${HAL_LIB_OPTIMIZE} PUBLIC ${HAL_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/common)
132+
target_include_directories(${HAL_LIB_OPTIMIZE} PUBLIC ${FREERTOS_INCLUDE_DIRS} ${HAL_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/common)
133+
add_library(${FREERTOS_LIB_OPTIMIZE} STATIC)
134+
target_include_directories(${FREERTOS_LIB_OPTIMIZE} PUBLIC ${FREERTOS_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/common)
135+
target_link_libraries(${FREERTOS_LIB_OPTIMIZE} PUBLIC ${HAL_LIB_OPTIMIZE})
136+
149137
target_sources(${HAL_LIB_OPTIMIZE} PUBLIC ${HAL_SOURCES})
138+
target_sources(${FREERTOS_LIB_OPTIMIZE} PUBLIC ${FREERTOS_SOURCES})
150139

151140
if (DEBUG MATCHES 1)
152141
target_compile_options(${HAL_LIB_OPTIMIZE} PRIVATE -O0)
142+
target_compile_options(${FREERTOS_LIB_OPTIMIZE} PRIVATE -O0)
153143
else()
154144
target_compile_options(${HAL_LIB_OPTIMIZE} PRIVATE -O2)
145+
target_compile_options(${FREERTOS_LIB_OPTIMIZE} PRIVATE -O2)
155146
endif()
156147

157148
# Higher optimization levels on some hal files will break firmware for some reason
158149
# Compile them with no optimizations
159150
add_library(${HAL_LIB_NO_OPTIMIZE} OBJECT)
160-
target_include_directories(${HAL_LIB_NO_OPTIMIZE} PUBLIC ${HAL_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/common)
151+
target_include_directories(${HAL_LIB_NO_OPTIMIZE} PUBLIC ${FREERTOS_INCLUDE_DIRS} ${HAL_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/common)
152+
add_library(${FREERTOS_LIB_NO_OPTIMIZE} OBJECT)
153+
target_include_directories(${FREERTOS_LIB_NO_OPTIMIZE} PUBLIC ${FREERTOS_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/common)
154+
161155
target_sources(${HAL_LIB_NO_OPTIMIZE} PUBLIC ${NO_OPTIMIZE_SOURCES})
162156
target_compile_definitions(${HAL_LIB_NO_OPTIMIZE} PRIVATE
163157
ENABLE_TASK_STATS_COLLECTOR=${ENABLE_TASK_STATS_COLLECTOR}
164158
)
159+
target_sources(${FREERTOS_LIB_NO_OPTIMIZE} PUBLIC ${FREERTOS_NO_OPTIMIZE_SOURCES})
160+
target_compile_definitions(${FREERTOS_LIB_NO_OPTIMIZE} PRIVATE
161+
ENABLE_TASK_STATS_COLLECTOR=${ENABLE_TASK_STATS_COLLECTOR}
162+
)
165163

166164
if (DEBUG MATCHES 1)
167165
target_compile_options(${HAL_LIB_NO_OPTIMIZE} PRIVATE -O0 -g -gdwarf-3 -gstrict-dwarf)
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
cmake_minimum_required(VERSION 3.15)
22

33
if (${BOARD_TYPE} MATCHES RM46_LAUNCHPAD)
4-
set(HAL_LIB rm46-launchpad-hal)
4+
set(COMMON_LIB rm46-launchpad-common)
55
elseif(${BOARD_TYPE} MATCHES OBC_REVISION_1)
6-
set(HAL_LIB obc-rev1-hal)
6+
set(COMMON_LIB obc-rev1-common)
77
elseif(${BOARD_TYPE} MATCHES OBC_REVISION_2)
8-
set(HAL_LIB obc-rev2-hal)
8+
set(COMMON_LIB obc-rev2-common)
99
else()
1010
message(FATAL_ERROR "Invalid board type: ${BOARD_TYPE}")
1111
endif()
1212

13-
set(HAL_LIB_OPTIMIZE ${HAL_LIB}-optimize)
14-
set(HAL_LIB_NO_OPTIMIZE ${HAL_LIB}-no-optimize)
13+
set(HAL_LIB_OPTIMIZE ${COMMON_LIB}-optimize)
14+
set(HAL_LIB_NO_OPTIMIZE ${COMMON_LIB}-no-optimize)
15+
set(FREERTOS_LIB_OPTIMIZE ${COMMON_LIB}-freertos-optimize)
16+
set(FREERTOS_LIB_NO_OPTIMIZE ${COMMON_LIB}-freertos-no-optimize)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)