공식 펌웨어 버전/DFU 이미지 버전 매칭

This commit is contained in:
2026-08-05 13:52:33 +09:00
parent 0a18893932
commit 36fa5c6b35
+14 -6
View File
@@ -42,8 +42,9 @@ if(SB_CONFIG_BOOTLOADER_MCUBOOT)
)
endif()
# DFU ZIP 파일명에 MCUboot 서명 버전을 붙인 복사본 생성
# DFU ZIP 파일명에 공식 FW 버전과 MCUboot 이미지 버전을 함께 붙인 복사본 생성
set(APP_PRJ_CONF "${APP_DIR}/prj.conf")
set(APP_MAIN_H "${APP_DIR}/src/main.h")
if(EXISTS "${APP_PRJ_CONF}")
file(READ "${APP_PRJ_CONF}" APP_PRJ_CONF_TEXT)
@@ -51,9 +52,12 @@ if(EXISTS "${APP_PRJ_CONF}")
set(DFU_ZIP_VERSION "${CMAKE_MATCH_1}")
set(DFU_ZIP_SUFFIX "${DFU_ZIP_VERSION}")
# 0.0.1+3 형식은 사용자가 구분하기 쉽도록 1+3만 사용
if(DFU_ZIP_VERSION MATCHES "^0\\.0\\.([0-9]+\\+[^+]+)$")
set(DFU_ZIP_SUFFIX "${CMAKE_MATCH_1}")
if(EXISTS "${APP_MAIN_H}")
file(READ "${APP_MAIN_H}" APP_MAIN_H_TEXT_FOR_DFU)
if(APP_MAIN_H_TEXT_FOR_DFU MATCHES "#define[ \t]+FIRMWARE_VERSION[ \t]+\"([^\"]+)\"")
set(DFU_FW_VERSION "${CMAKE_MATCH_1}")
set(DFU_ZIP_SUFFIX "${DFU_FW_VERSION}_${DFU_ZIP_VERSION}")
endif()
endif()
# 파일명에 쓰기 어려운 문자는 밑줄로 치환
@@ -86,11 +90,15 @@ if(EXISTS "${APP_MAIN_H}")
if(APP_MAIN_H_TEXT MATCHES "#define[ \t]+FIRMWARE_VERSION[ \t]+\"([^\"]+)\"")
set(FW_HEX_VERSION "${CMAKE_MATCH_1}")
string(REGEX REPLACE "[^A-Za-z0-9_.+-]" "_" FW_HEX_VERSION "${FW_HEX_VERSION}")
set(FW_HEX_SUFFIX "${FW_HEX_VERSION}")
if(DEFINED DFU_ZIP_VERSION)
set(FW_HEX_SUFFIX "${FW_HEX_VERSION}_${DFU_ZIP_VERSION}")
endif()
string(REGEX REPLACE "[^A-Za-z0-9_.+-]" "_" FW_HEX_SUFFIX "${FW_HEX_SUFFIX}")
set(FW_HEX_SOURCE "${CMAKE_BINARY_DIR}/merged.hex")
set(FW_HEX_RELEASE_DIR "${APP_DIR}/release")
set(FW_HEX_VERSIONED "${FW_HEX_RELEASE_DIR}/VesiScan-Basic_${FW_HEX_VERSION}.hex")
set(FW_HEX_VERSIONED "${FW_HEX_RELEASE_DIR}/VesiScan-Basic_${FW_HEX_SUFFIX}.hex")
add_custom_command(
OUTPUT "${FW_HEX_VERSIONED}"