标签:__ ADDR FW attribute HEX 单片机 STR2 固件 define
一. 软件版本信息
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
标签:__,ADDR,FW,attribute,HEX,单片机,STR2,固件,define 来源: https://www.cnblogs.com/linux-37ge/p/13219958.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。