- 添加OTA固件升级功能,包括应用程序验证和跳转机制 - 实现CANFD数据传输协议,支持加密和CRC校验 - 优化CAN通信处理,添加调试输出和错误处理 - 更新RTE组件配置,升级csolution版本到2.12.0 - 增加Flash擦除和写入的安全验证机制 - 添加应用程序区域扫描和验证功能 refactor(can): 重构CAN通信模块和OTA数据处理 - 移除未使用的常量定义和辅助函数 - 改进数据解包和加密解密流程 - 添加条件编译调试输出 - 优化Flash操作的安全性和可靠性 chore(build): 更新项目配置和忽略文件 - 添加tmp/和out/目录到.gitignore - 扩展ROM0_SIZE从0x0020000到0x08005000 - 添加bin输出格式支持
82 lines
2.3 KiB
CMake
82 lines
2.3 KiB
CMake
cmake_minimum_required(VERSION 3.27)
|
|
include(ExternalProject)
|
|
|
|
project("Robot_V2" NONE)
|
|
|
|
# Roots
|
|
include("roots.cmake")
|
|
|
|
# Context specific lists
|
|
set(CONTEXTS
|
|
"Robot_V2.Release+GD32C103CB"
|
|
)
|
|
list(LENGTH CONTEXTS CONTEXTS_LENGTH)
|
|
math(EXPR CONTEXTS_LENGTH "${CONTEXTS_LENGTH}-1")
|
|
|
|
set(DIRS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Robot_V2.Release+GD32C103CB"
|
|
)
|
|
|
|
set(OUTPUTS_1
|
|
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.bin"
|
|
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf"
|
|
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex"
|
|
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map"
|
|
)
|
|
|
|
set(ARGS
|
|
"-DSOLUTION_ROOT=${SOLUTION_ROOT}"
|
|
"-DCMSIS_PACK_ROOT=${CMSIS_PACK_ROOT}"
|
|
"-DCMSIS_COMPILER_ROOT=${CMSIS_COMPILER_ROOT}"
|
|
)
|
|
|
|
# Compilation database
|
|
add_custom_target(database)
|
|
|
|
# Iterate over contexts
|
|
foreach(INDEX RANGE ${CONTEXTS_LENGTH})
|
|
|
|
math(EXPR N "${INDEX}+1")
|
|
list(GET CONTEXTS ${INDEX} CONTEXT)
|
|
list(GET DIRS ${INDEX} DIR)
|
|
|
|
# Create external project, set configure and build steps
|
|
ExternalProject_Add(${CONTEXT}
|
|
PREFIX ${DIR}
|
|
SOURCE_DIR ${DIR}
|
|
BINARY_DIR ${N}
|
|
INSTALL_COMMAND ""
|
|
TEST_COMMAND ""
|
|
CONFIGURE_COMMAND ${CMAKE_COMMAND} -G Ninja -S <SOURCE_DIR> -B <BINARY_DIR> ${ARGS}
|
|
BUILD_COMMAND ${CMAKE_COMMAND} -E echo "Building CMake target '${CONTEXT}'"
|
|
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR>
|
|
BUILD_ALWAYS TRUE
|
|
BUILD_BYPRODUCTS ${OUTPUTS_${N}}
|
|
LOG_CONFIGURE ON
|
|
LOG_OUTPUT_ON_FAILURE ON
|
|
USES_TERMINAL_BUILD ON
|
|
)
|
|
|
|
# Executes command step
|
|
ExternalProject_Add_Step(${CONTEXT} executes
|
|
DEPENDEES build
|
|
)
|
|
|
|
ExternalProject_Add_StepTargets(${CONTEXT} build configure executes)
|
|
|
|
# Debug
|
|
message(VERBOSE "Configure Context: ${CMAKE_COMMAND} -G Ninja -S ${DIR} -B ${N}")
|
|
|
|
# Database generation step
|
|
ExternalProject_Add_Step(${CONTEXT} database
|
|
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target database
|
|
ALWAYS TRUE
|
|
LOG TRUE
|
|
USES_TERMINAL ON
|
|
DEPENDEES configure
|
|
)
|
|
ExternalProject_Add_StepTargets(${CONTEXT} database)
|
|
add_dependencies(database ${CONTEXT}-database)
|
|
|
|
endforeach()
|