本文内容从Amo论坛转移而来,作者icode整理了版式:MCU爱好者分享了一些技巧,使用MDK编译器将固件版本信息添加到STM32程序的HEX文件中,估计有很多退伍军人已经使用过(欢迎您分享,希望我的积木可以吸引您的玉石),此方法专用于新手或初学者。
代码如下所示:// ------------------------------------------- - - - - - - - - - - - - - - - - - -#包括 // - - - - - - ------------------------------------------------- ----------------#define VERINFO_ADDR_BASE(0x8009F00)//版本信息在FLASH const char Hardware_Ver [] __attribute __((at(VERINFO_ADDR_BASE + 0x00))中的存储地址) =“固件:1.0.0&”; const char Firmware_Ver [] __attribute __((at(VERINFO_ADDR_BASE + 0x20)))=“固件:1.0.0&”; const char Compiler_Date [] __attribute __((at(VERINFO_ADDR_BASE + 0x40) ))=“日期:” __DATE __; const char Compiler_Time [] __attribute __((at(VERINFO_ADDR_BASE + 0x60)))=“时间:" __ TIME __; // ------------ --------- ----------------------------------------- --------- -------写入程序:选项配置:无需修改Flash地址和大小! HEX文件:串行打印输出:xiaomu:很好,但是存在一个缺点,即生成的bin文件已满闪存大小,这会导致每次读取和写入整个闪存。
实际上,您可以将存储地址放在最前面,例如偏移量1K,您无需更改指定的地址icode:是的,从程序末尾到VERINFO_ADDR_BASE地址的部分将填充为0x00 ,您可以根据需要修改VERINFO_ADDR_BASE以减少地址,或者说不是必须指定地址,它是由编译器自动分配的,但是在这种情况下,您需要找到相应的版本标识字符串。
如果您不希望前一段填充大量的0x00以使HEX文件更小,则可以将选项配置中的Flash大小更改为较小的大小,并将VERINFO_ADDR_BASE设置为从FlashSize后面的空间开始,这样生成的HEX文件会更小,并且未使用的空间将不会被大量0x00填充。
方法如下:免责声明:本文的源网络,自由传达知识,版权归原作者所有。
如果涉及该作品的版权问题,请与我联系以将其删除。
猜你喜欢如何将调试信息同时输出到终端和文件?访问GitHub慢吗?尝试这些方法,将释放1024G嵌入式资源!包括但不限于C / C ++,MCU,Linux等。
在官方帐户聊天界面上回复1024,您可以免费获得它!免责声明:本文内容经21ic授权后发布,版权归原作者所有。
该平台仅提供信息存储服务。
本文仅代表作者的个人观点,并不代表该平台的立场。
如有任何疑问,请与我们联系,谢谢!