加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

絕妙 如何在SMT32程序HEX文件中加入固件版本信息

2020/07/01
168
閱讀需 5 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家有沒有遇到過軟硬件工程師扯皮的事情?如果一個程序,固件信息里面沒有任何版本信息,代碼里面通過串口等接口也查詢不到固件版本等信息,一旦出現(xiàn)問題,就會你推我,我推你了。那么,怎么樣來避免這種情況發(fā)生呢?一種方法是,就像上面提到的,可以將固件版本信息定義成一個常量存放在程序中,需要的時候可以通過串口等接口查詢代碼版本信息,另一種,是今天上網(wǎng)看到的,思路也非常巧妙,這里分享給大家!

使用 MDK 編譯器,在 STM32 程序 HEX 文件中加入固件版本信息,估計很多老手都已經(jīng)在使用(你有好的方法歡迎分享,希望我的磚能引來你的玉),該方法獻給新手或初學(xué)者。

代碼如下:


?

//------------------------------------------------------------------------------#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__;
//------------------------------------------------------------------------------

看到?jīng)],這里使用了 __attribute__?機制,__attribute__?可以設(shè)置函數(shù)屬性(Function Attribute )、變量屬性(Variable Attribute )和類型屬性(Type Attribute ),使用 at 參數(shù),可以把變量或函數(shù)絕對定位到 Flash 或者 RAM 中。? 具體語法,請自行百度,這里不再贅述。

?

選項配置中:Flash 地址與大小不用做任何修改!

重點在這里

?

串口打印輸出

有了這一個簡單的設(shè)置,將固件版本信息,硬件版本信息,軟件編譯時間等,就可以定義在 Flash 中的空閑位置,既可以通過 HEX 文件直接看出,亦可以通過串口打印版本信息,非常方便。怎么樣,趕快加到你的程序中試一下吧,從此,軟硬件工程師又手拉手,親密無間

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

最全電子漫畫收集達人,漫畫控必選!用文字和圖片帶你領(lǐng)略電子世界之美。 由曉宇哥哥操刀的芯片之家公眾號,提供45萬個Symbol和3D封裝庫免費下載,定期分享軟硬件、物聯(lián)網(wǎng)類技術(shù)知識外,還精心整理大量參考設(shè)計和文檔資源,電路圖和源代碼資料供下載。 立即打開“芯片之家 ”,感受電子與藝術(shù)的完美結(jié)合。