- 实现了通过 SPI PING 命令获取 GD32 应用程序和引导加载程序版本信息 - 添加 /api/version HTTP 端点返回固件版本、编译时间和 Git 哈希 - 在系统状态 API 中包含 GD32 版本信息和存活状态 - 优化 SPI PING 协议解析以支持版本数据提取 refactor(ota): 移除压缩功能并简化 OTA 上传流程 - 移除 OTA 数据压缩和解压缩功能,简化数据处理流程 - 删除 utils/ota_compressor.cpp 文件及相关依赖 - 直接写入原始数据块而不是解压缩后写入 - 更新 OTA 上传处理器以处理原始二进制数据 build(cmakelists): 添加版本头文件自动生成机制 - 配置 CMake 构建时自动生成 version.h 头文件 - 集成 git 哈希和编译时间信息到固件版本 - 更新主 CMakeLists.txt 以包含版本生成目标 - 修改 app_config.h 以使用自动生成的版本字符串 fix(wifi_ota): 修复 OTA 中继状态管理和 SPI 通信问题 - 修复 OTA 中继完成后立即重置的问题,增加 3 秒延迟让前端轮询完成 - 修正 SPI CRC 错误检测和调试信息输出 - 优化 SPI PING 通信超时和重试机制 - 修复 OTA 上传大小计算和数据写入偏移跟踪
55 lines
1.6 KiB
CMake
55 lines
1.6 KiB
CMake
# gen_version.cmake - 自动生成版本信息头文件
|
|
# 包含版本号、编译时间、Git 信息
|
|
|
|
# 版本号(可手动修改)
|
|
set(FW_VERSION_MAJOR 0)
|
|
set(FW_VERSION_MINOR 3)
|
|
set(FW_VERSION_PATCH 10)
|
|
|
|
# 获取编译时间
|
|
string(TIMESTAMP BUILD_TIME "%Y-%m-%d %H:%M:%S")
|
|
|
|
# 获取 Git 信息(如果可用)
|
|
find_package(Git QUIET)
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_HASH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
)
|
|
else()
|
|
set(GIT_HASH "unknown")
|
|
endif()
|
|
|
|
# 生成版本头文件
|
|
set(VERSION_HEADER_CONTENT
|
|
"// Auto-generated version info - DO NOT EDIT
|
|
#pragma once
|
|
|
|
// 固件版本
|
|
#define FW_VERSION_MAJOR ${FW_VERSION_MAJOR}
|
|
#define FW_VERSION_MINOR ${FW_VERSION_MINOR}
|
|
#define FW_VERSION_PATCH ${FW_VERSION_PATCH}
|
|
#define FW_VERSION_STRING \"${FW_VERSION_MAJOR}.${FW_VERSION_MINOR}.${FW_VERSION_PATCH}\"
|
|
|
|
// 编译时间
|
|
#define BUILD_TIME \"${BUILD_TIME}\"
|
|
|
|
// Git 信息
|
|
#define GIT_HASH \"${GIT_HASH}\"
|
|
")
|
|
|
|
# 检查文件是否需要更新
|
|
if(EXISTS ${VERSION_HEADER_PATH})
|
|
file(READ ${VERSION_HEADER_PATH} EXISTING_CONTENT)
|
|
if(NOT "${EXISTING_CONTENT}" STREQUAL "${VERSION_HEADER_CONTENT}")
|
|
file(WRITE ${VERSION_HEADER_PATH} "${VERSION_HEADER_CONTENT}")
|
|
message(STATUS "Version header updated: ${VERSION_HEADER_PATH}")
|
|
endif()
|
|
else()
|
|
file(WRITE ${VERSION_HEADER_PATH} "${VERSION_HEADER_CONTENT}")
|
|
message(STATUS "Version header generated: ${VERSION_HEADER_PATH}")
|
|
endif()
|