本文內容轉自阿莫論壇,文件作者icode
整理排版:單片機愛好者
分享一個小技巧,中加使用MDK編譯器,入固讓STM32程序HEX文件中加入固件版本信息,本信估計很多老手都已經在使用(你有好的序H息方法歡迎分享,希望我的文件磚能引來你的玉),該方法獻給新手或初學者。中加
代碼如下:
//------------------------------------------------------------------------------
#include
//------------------------------------------------------------------------------
#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__;
//------------------------------------------------------------------------------
寫入到程序中:
選項配置中:Flash地址與大小不用做任何修改!
HEX文件:
串口打印輸出:
xiaomu:
這樣可以,本信 但是有一個缺點,就是生成的bin文件都是滿flash大小的, 造成每次燒錄都是整個flash讀寫。
其實這個可以把存放地址放到前面,比如偏移1K的地方,都不用改指定地址
icode:
是的, 程序末尾 到 VERINFO_ADDR_BASE地址這一段會被填充成0x00, 根據需要可以修改 VERINFO_ADDR_BASE 減小地址 或者說 不強制指定地址, ?由編譯器自動分配, 但這樣就要去找相應的版本標識字符串了。
不想前面這一段被大量填充0x00,讓HEX文件體積小一點的話, 可以把選項配置中Flash的Size改小一點,把VERINFO_ADDR_BASE設置成從FlashSize后面的空間開始,這樣生成的HEX文件就小了,且未用空間就不會被大量填充0x00了。
方法如下:
免責聲明:本文來源網絡,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯系我進行刪除。
猜你喜歡
如何同時輸出調試信息到終端及文件?
訪問 GitHub 的速度很慢?試試這幾種方法
1024G 嵌入式資源大放送!包括但不限于C/C++、單片機、Linux等。在公眾號聊天界面回復1024,即可免費獲取!
免責聲明:本文內容由21ic獲得授權后發布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!