0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SMT32的HEX文件里加入固件版本的方法

jf_pJlTbmA9 ? 來(lái)源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-09-18 15:34 ? 次閱讀

本文介紹一個(gè)小技巧:

使用MDK編譯器,讓STM32程序HEX文件中加入固件版本信息。

代碼

代碼如下:

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

//------------------------------------------------------------------------------

寫入到程序中:

pYYBAGIB2rCAajdXAAGiQGwH_5I181.png

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

poYBAGIB2rGAPt-4AAJSJGauc0M632.png

HEX文件:

pYYBAGIB2rOAH1YFAAFSe2uzrSA694.png

串口打印輸出:

poYBAGIB2rSAXPpzAAEGJueLs7M335.png

上述方法的缺點(diǎn)

上述操作可行, 但是有一個(gè)缺點(diǎn):就是生成的bin文件都是滿flash大小的, 造成每次燒錄都是整個(gè)flash讀寫。

其實(shí)這個(gè)可以把存放地址放到前面,比如偏移1K的地方,都不用改指定地址。

按照上述操作,程序末尾到VERINFO_ADDR_BASE地址這一段會(huì)被填充成0x00。根據(jù)需要可以修改VERINFO_ADDR_BASE減小地址,或者說(shuō)不強(qiáng)制指定地址,由編譯器自動(dòng)分配,但這樣就要去找相應(yīng)的版本標(biāo)識(shí)字符串了。

優(yōu)化方法

不想前面這一段被大量填充0x00,讓HEX文件體積小一點(diǎn)的話, 可以把選項(xiàng)配置中Flash的Size改小一點(diǎn),把VERINFO_ADDR_BASE設(shè)置成從FlashSize后面的空間開始,這樣生成的HEX文件就小了,且未用空間就不會(huì)被大量填充0x00了。

方法如下:

pYYBAGIB2reAZnv-AAbHsQk41is233.png

來(lái)源:STM32嵌入式開發(fā)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理(聯(lián)系郵箱:cathy@eetrend.com)。

圍觀 49

評(píng)論 0

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3824

    瀏覽量

    82505
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1657

    瀏覽量

    49934
  • HEX
    HEX
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    17076
收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    SMT32 TP Tool Windows無(wú)法安裝驅(qū)動(dòng)怎么處理?

    新手小白,SMT32 TP Tool Windows無(wú)法安裝驅(qū)動(dòng)怎么處理
    發(fā)表于 06-06 06:52

    為什么無(wú)法在USB控制中心選擇固件映像文件?

    EEPROM 時(shí),USB 控制中心不會(huì)彈出圖像選擇窗口,而是自動(dòng)下載固件的先前版本。 由于這個(gè)問(wèn)題,我無(wú)法將我新開發(fā)的固件映像文件下載到 FX3。 即使我重命名以前的
    發(fā)表于 05-07 06:14

    新手小白,SMT32 TP Tool Windows無(wú)法安裝驅(qū)動(dòng)怎么處理?

    SMT32 TP Tool Windows無(wú)法安裝驅(qū)動(dòng)怎么處理
    發(fā)表于 04-27 08:06

    新手小白,SMT32 TP Tool Windows無(wú)法安裝驅(qū)動(dòng)怎么處理?

    新手小白,SMT32 TP Tool Windows無(wú)法安裝驅(qū)動(dòng)怎么處理
    發(fā)表于 04-25 07:24

    如何使用.hex進(jìn)行遠(yuǎn)程更新文件?

    使用 .hex 進(jìn)行遠(yuǎn)程更新 文件。
    發(fā)表于 04-21 06:53

    R60AFD1跌倒雷達(dá)全新固件127版本,精準(zhǔn)升級(jí)新體驗(yàn)

    云帆瑞達(dá)頂裝跌倒雷達(dá)R60AFD1-V,全新固件版本1.27已升級(jí)。此次升級(jí)專注于算法固件的優(yōu)化,未對(duì)硬件進(jìn)行改動(dòng),但由于算法變化較大,無(wú)法支持前期舊版本OTA升級(jí)。相較于前期
    的頭像 發(fā)表于 11-28 15:12 ?595次閱讀
    R60AFD1跌倒雷達(dá)全新<b class='flag-5'>固件</b>127<b class='flag-5'>版本</b>,精準(zhǔn)升級(jí)新體驗(yàn)

    hex格式和二進(jìn)制的區(qū)別

    HEX格式和二進(jìn)制在多個(gè)方面存在顯著的區(qū)別。以下是對(duì)這兩者的對(duì)比: 一、定義與表示方式 HEX格式 : HEX,全稱為Intel HEX,是一種用于存儲(chǔ)和傳輸數(shù)據(jù)到嵌入式系統(tǒng)(如單片機(jī)
    的頭像 發(fā)表于 11-18 15:24 ?1579次閱讀

    最新的Aduino IDE 2.3.3如何輸出hex文件?

    如題,在這個(gè)版本里的首選項(xiàng)里,已經(jīng)沒有所謂的“preference.txt”的路徑,在路徑里也沒有找到這個(gè)東西,編譯勾上后,輸出的只有bin、elf和map,找不到hex文件。
    發(fā)表于 10-04 12:06

    單片機(jī)hex文件反編譯成C語(yǔ)言的過(guò)程

    單片機(jī)和Hex文件簡(jiǎn)介 單片機(jī)(Microcontroller Unit,MCU)是一種集成了處理器、存儲(chǔ)器和輸入/輸出接口的微型計(jì)算機(jī)。它廣泛應(yīng)用于各種嵌入式系統(tǒng)和智能設(shè)備中。單片機(jī)的程序通常
    的頭像 發(fā)表于 09-02 10:49 ?5710次閱讀

    hex文件怎么能轉(zhuǎn)回去c語(yǔ)言

    將 .hex 文件直接“轉(zhuǎn)回去”為原始的C語(yǔ)言代碼是不可能的,因?yàn)?.hex 文件是編譯后的二進(jìn)制文件,它包含了機(jī)器碼,這些機(jī)器碼是處理器可
    的頭像 發(fā)表于 09-02 10:46 ?4133次閱讀

    hex可以轉(zhuǎn)成源代碼么

    ,可以通過(guò)以下幾種方法嘗試獲取源代碼的近似形式: 反匯編 : 使用反匯編工具可以將Hex文件中的機(jī)器碼轉(zhuǎn)換回匯編語(yǔ)言。匯編語(yǔ)言是一種低級(jí)語(yǔ)言,它更接近于機(jī)器碼,但仍然具有一定的可讀性。 通過(guò)反匯編得到的匯編代碼可以提供程序
    的頭像 發(fā)表于 09-02 10:41 ?2103次閱讀

    hex文件如何查看原c語(yǔ)言代碼

    是處理器可以直接執(zhí)行的指令,而 C 語(yǔ)言代碼則是人類可讀的高級(jí)編程語(yǔ)言代碼。 然而,如果你想要從 .hex 文件中獲取一些有用的信息或者對(duì)程序進(jìn)行分析,你可以考慮以下幾種方法: 反匯編(Disassembly) : 使用反匯編工
    的頭像 發(fā)表于 09-02 10:37 ?4556次閱讀

    使用CY521 EVAL配置CYPD2122,如何將文件保存為HEX格式?

    我正在使用 CY521 EVAL 配置 CYPD2122。 一切運(yùn)行正常,我現(xiàn)在希望將文件保存為 HEX 格式,以便通過(guò) MiniProg4 進(jìn)行編程。但是,當(dāng)我進(jìn)入\"保存到固件文件
    發(fā)表于 08-12 08:19

    SMT貼片加工工藝流程,輕松掌握,不再是難題!

    一站式PCBA智造廠家今天為大家講講smt貼片打樣加工方法有哪些?smt貼片打樣加工流程及方法。SMT貼片打樣是在實(shí)際生產(chǎn)之前對(duì)電路板進(jìn)行小
    的頭像 發(fā)表于 07-26 09:17 ?596次閱讀

    使用ESP32的Release/v2.1.0.0版本的AT固件,想升級(jí)成自己編譯的AT固件版本,有什么方法可實(shí)現(xiàn)嗎?

    目前使用 ESP32 的 Release/v2.1.0.0 版本的 AT固件,想升級(jí)成自己編譯的 AT 固件版本,有什么方法可實(shí)現(xiàn)嗎?
    發(fā)表于 06-27 06:16

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品