一. 軟件版本信息
1.1. 方法一:變量定義版本
#define HW_NAME XXX #define FW_FUNCTION 1 #define FW_STAGE 0 #define FW_NO 6 #define STR1(R) #R #define STR2(R) STR1(R) #define XXX_VERSION STR2(HW_NAME) "." STR2(FW_FUNCTION) "." STR2(FW_STAGE) "." STR2(FW_NO)
1.2. 方法二:HEX文件中加入固件版本信息
1.2.1. 相比於方法一,方法二可以直接從hex讀取版本
1.2.2. __attribute__ 機制
a. __attribute__ 可以設置函數屬性(Function Attribute )、變量屬性(Variable Attribute )和類型屬性(Type Attribute ),使用at參數,可以把變量或函數絕對定位到Flash或者RAM中
b. 示例模板
#define VERINFO_ADDR_BASE (0x8009F00) // 版本信息在FLASH中的存放地址 const char Hardware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x00))) = "Hardware: 1.0.0"; const char Firmware_Ver[] __attribute__((at(VERINFO_ADDR_BASE + 0x20))) = "Firmware: 1.0.0"; const char Compiler_Date[] __attribute__((at(VERINFO_ADDR_BASE + 0x40))) = "Date: "__DATE__; const char Compiler_Time[] __attribute__((at(VERINFO_ADDR_BASE + 0x60))) = "Time: "__TIME__;
c. 選項配置中:Flash地址與大小不用做任何修改


參考文檔:https://mp.weixin.qq.com/s/GtvJkNZboC__c1Dp4tEuqA
