那曲檬骨新材料有限公司

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

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

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

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

jf_pJlTbmA9 ? 來源: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減小地址,或者說不強(qiáng)制指定地址,由編譯器自動(dòng)分配,但這樣就要去找相應(yīng)的版本標(biāo)識字符串了。

優(yōu)化方法

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

方法如下:

pYYBAGIB2reAZnv-AAbHsQk41is233.png

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

圍觀 49

評論 0

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

    關(guān)注

    117

    文章

    3795

    瀏覽量

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

    關(guān)注

    1

    文章

    1642

    瀏覽量

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

    關(guān)注

    0

    文章

    37

    瀏覽量

    16869
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    最新的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語言的過程

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

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

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

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

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

    hex文件如何查看原c語言代碼

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

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

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

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

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

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

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

    怎么加上.bin文件版本號?

    描述:我想在工程名稱后添加改工程的版本,這樣生成的固件就是帶版本號的。 問題:目前生成的bin文件后面帶不上版本號,不知道為啥?如下圖所示。
    發(fā)表于 06-11 07:43

    SMT32手搓5套無人機(jī)飛控,最終決定開源……

    !01V1.0的特性/亮點(diǎn)?1.成本僅90元2.基于STM32H743VI設(shè)計(jì)3.可以下載各種完整版固件!根據(jù)MatekH7固件的bfconfig文件制作,BF、I
    的頭像 發(fā)表于 06-02 08:04 ?638次閱讀
    用<b class='flag-5'>SMT32</b>手搓5套無人機(jī)飛控,最終決定開源……

    TSMaster 中 Hex 文件編輯器使用詳細(xì)教程

    TSMaster中Hex文件編輯器的使用方法,該編輯器能實(shí)現(xiàn)將現(xiàn)有的Hex、bin、mot、s19和tsbinary類型的文件按地址分割;并
    的頭像 發(fā)表于 06-01 08:21 ?943次閱讀
    TSMaster 中 <b class='flag-5'>Hex</b> <b class='flag-5'>文件</b>編輯器使用詳細(xì)教程

    使用psoc編程器寫入Modus生成的Hex文件時(shí),Hex文件解析失敗的原因?

    我們正在使用 pSoC6 CY8C6137BZI-F14 做軟件, 我們使用 Modus 集成開發(fā)環(huán)境。 但當(dāng)我們使用 psoc 編程器寫入 Modus 生成的 Hex 文件時(shí), psoc 編程器顯示以下錯(cuò)誤: Hex
    發(fā)表于 05-21 06:57

    STVD如何設(shè)置才能生成HEX文件呢?

    請教大家,如何設(shè)置才能生成HEX文件呢?我百度一下,按網(wǎng)上的方法,其實(shí)是不行。所以在次求助,謝謝了
    發(fā)表于 04-28 07:50

    hightec編譯生成hex文件要怎么操作?

    一些燒寫工具需要.hex文件那么就需要在HIGTEC GNU編譯器中進(jìn)行設(shè)置,來產(chǎn)生想要的.hex文件。請教各位,該怎么設(shè)置?
    發(fā)表于 02-20 08:22
    百家乐官网长龙技巧| 百家乐大娱乐场开户注册| 百家乐官网1元投注| 桦甸市| 足球博彩网| 水果机游戏下载| 蓝盾百家乐的玩法技巧和规则| 百家乐编单短信接收| 24山来水吉凶| 百家乐官网荷| 巴特百家乐官网的玩法技巧和规则 | 百家乐官网机器图片| 百家乐官网偷码| 百家乐官网游戏程序出售| 百家乐官网网站出售| 百家乐官网的保单打法| 百家乐官网赌假的工具| 稷山县| 曲沃县| 百家乐官网新台第二局| 百家乐官网怎样玩才能赢| 百家乐官网小型抽水泵| 赌场百家乐官网网站| 百家乐官网规律打法| 百家乐官网秘| 运城百家乐官网的玩法技巧和规则 | 银泰娱乐城| 百家乐官网娱乐平台备用网址| 百家乐微笑玩法| 贵族百家乐的玩法技巧和规则| 怎么赢百家乐的玩法技巧和规则| 三公百家乐在哪里可以玩| 大发888 迅雷下载| 网上棋牌室| 新昌县| 百家乐官网游戏机的玩法| 百家乐官网分析仪有真的吗| 劳力士百家乐官网的玩法技巧和规则| 仕達屋百家乐官网的玩法技巧和规则| 百家乐冯式打法| 百家乐评级网站|