单片机程序HEX文件中加入固件版本信息


一. 软件版本信息

    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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM