init
This commit is contained in:
commit
a1cbf4a3c3
11 files changed
+460
No files matched your search
+100
@@ -0,0 +1,100 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
# 跳过编译器链接测试(裸机 ARM 无系统调用 _exit/_sbrk 等)
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
project(blink C)
|
||||
|
||||
# 输出固件带 .elf 后缀,pyOCD 自动识别格式
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".elf")
|
||||
|
||||
set(SDK_DIR "C:/ti/mspm0_sdk_2_11_00_07")
|
||||
set(SYSCONFIG_CLI "C:/ti/sysconfig_1.28.0/sysconfig_cli.bat")
|
||||
set(DEVICE "MSPM0G350X")
|
||||
set(PACKAGE "LQFP-64(PM)")
|
||||
|
||||
# ── SysConfig code generation ──────────────────────────────────────
|
||||
set(SYSCFG_OUTPUT_DIR "${CMAKE_BINARY_DIR}/syscfg")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
"${SYSCFG_OUTPUT_DIR}/ti_msp_dl_config.c"
|
||||
"${SYSCFG_OUTPUT_DIR}/ti_msp_dl_config.h"
|
||||
"${SYSCFG_OUTPUT_DIR}/device_linker.lds"
|
||||
"${SYSCFG_OUTPUT_DIR}/device.opt"
|
||||
"${SYSCFG_OUTPUT_DIR}/device.lds.genlibs"
|
||||
COMMAND cmd /c "${SYSCONFIG_CLI}"
|
||||
--compiler gcc
|
||||
--product "${SDK_DIR}/.metadata/product.json"
|
||||
--device "${DEVICE}"
|
||||
--package "${PACKAGE}"
|
||||
--output "${SYSCFG_OUTPUT_DIR}"
|
||||
"${CMAKE_SOURCE_DIR}/blink.syscfg"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/blink.syscfg"
|
||||
COMMENT "Running SysConfig..."
|
||||
)
|
||||
|
||||
# ── Source files ────────────────────────────────────────────────────
|
||||
set(GEN_DIR ${SYSCFG_OUTPUT_DIR})
|
||||
|
||||
add_executable(${PROJECT_NAME}
|
||||
src/main.c
|
||||
"${GEN_DIR}/ti_msp_dl_config.c"
|
||||
"${SDK_DIR}/source/ti/devices/msp/m0p/startup_system_files/gcc/startup_mspm0g350x_gcc.c"
|
||||
)
|
||||
|
||||
# SysConfig outputs are dependencies
|
||||
add_dependencies(${PROJECT_NAME} syscfg_gen)
|
||||
add_custom_target(syscfg_gen DEPENDS "${GEN_DIR}/ti_msp_dl_config.c")
|
||||
|
||||
# ── Include directories ─────────────────────────────────────────────
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||
"${CMAKE_SOURCE_DIR}/include"
|
||||
"${CMAKE_SOURCE_DIR}/src"
|
||||
"${GEN_DIR}"
|
||||
"${SDK_DIR}/source"
|
||||
"${SDK_DIR}/source/third_party/CMSIS/Core/Include"
|
||||
)
|
||||
|
||||
# ── Compile definitions & flags ─────────────────────────────────────
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
__MSPM0G3507__
|
||||
__USE_SYSCONFIG__
|
||||
)
|
||||
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
-mcpu=cortex-m0plus
|
||||
-march=armv6-m
|
||||
-mthumb
|
||||
-mfloat-abi=soft
|
||||
-std=c99
|
||||
-O2
|
||||
-ffunction-sections
|
||||
-fdata-sections
|
||||
-g
|
||||
-Wall
|
||||
-gstrict-dwarf
|
||||
)
|
||||
|
||||
# ── Linker flags ────────────────────────────────────────────────────
|
||||
# Override SysConfig's linker script with G3507 (128KB Flash / 32KB SRAM)
|
||||
set(LINKER_SCRIPT "${SDK_DIR}/source/ti/devices/msp/m0p/linker_files/gcc/mspm0g3507.lds")
|
||||
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
-mcpu=cortex-m0plus
|
||||
-march=armv6-m
|
||||
-mthumb
|
||||
-mfloat-abi=soft
|
||||
-nostartfiles
|
||||
-static
|
||||
-Wl,--gc-sections
|
||||
-Wl,-Map,${PROJECT_NAME}.map
|
||||
-T${LINKER_SCRIPT}
|
||||
-T${GEN_DIR}/device.lds.genlibs
|
||||
-L${SDK_DIR}/source
|
||||
--specs=nano.specs
|
||||
--specs=nosys.specs
|
||||
-lgcc
|
||||
-lc
|
||||
-lm
|
||||
)
|
||||
Reference in new issue
Block a user