吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機固件中加入版本信息的方式有哪些?-1

汽車電子技術 ? 來源:大橙子瘋嵌入式 ? 作者:大橙子瘋 ? 2023-02-15 15:13 ? 次閱讀

前言

開發完MCU軟件后,通常都會生成hex文件或者bin文件,用來做固件燒錄或者升級,如果用來做產品開發,就涉及到固件版本的問題,初學者通常采用固件文件重命名來區分版本。

如果需要每次上電開機通過串口或者OLED等顯示版本信息,那么這種方式就無法實現

下面介紹如何在程序中加入版本信息,以MDK為例介紹。

實現方式

1.定義一個結構體,里面定義一些軟件版本相關的信息

typedef struct
{
    char szVersion[32];    // 軟件版本
    char szBuildDate[32];  // 程序編譯日期
    char szBuildTime[32];  // 程序編譯時間
}AppInfo_t;

2.定義一個只讀結構體變量(只讀的目的:防止程序改變、節約RAM),賦初值(其中__DATE___TIME__C語言中的內置宏,分別是當前的編譯日期和編譯時間)。

const AppInfo_t sg_tAppInfo =
{
    "STM32_V0.1.5",
    __DATE__,
    __TIME__,
};

3.在主函數添加打印,將版本信息輸出到終端上。

int main(void)
{
    SystemInit();

    printf("Version  : %s\\r\\n", sg_tAppInfo.szVersion);
    printf("buildTime: %s\\r\\n", sg_tAppInfo.szBuildDate);
    printf("buildTime: %s\\r\\n", sg_tAppInfo.szBuildTime);

    while (1)
    {

    }
}

4.在 Keil MDK 中,默認情況下,源文件不修改,只會編譯一次。

如果定于sg_tAppInfo變量的源文件沒有修改而其它文件修改時,編譯日期和編譯時間還是之前的

為了編譯版本、日期和時間正確,需要進行設置:總是編譯

圖片

5.下載程序后,通過串口工具在MCU上電就能收到版本信息的打印

圖片

擴展

從上述的實現方式可知,sg_tAppInfo只讀變量在程序中的位置不固定,有一定的局限性。

如果結構體有其他的信息,無法在編譯時初始化,而是需要在程序編譯后的hex文件中添加或者修改信息,但由于只讀變量在程序中的位置不固定,不能保證每次編譯后在固定的位置添加或者修改信息。

下一篇介紹通過__attribute__機制固定sg_tAppInfo只讀變量在程序中的地址,同時采用映像文件工具對hex固件文件進行操作,自動將固件中的版本信息和固件文件名稱關聯起來。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17324

    瀏覽量

    352656
  • HEX文件
    +關注

    關注

    0

    文章

    26

    瀏覽量

    12829
  • BIN文件
    +關注

    關注

    0

    文章

    26

    瀏覽量

    8389
收藏 人收藏

    評論

    相關推薦

    華大單片機是如何向MDK中加入頭文件和庫文件的

    華大單片機如何向MDK中加入頭文件和庫文件關鍵文件介紹加入頭文件大多數習慣于8位單片機開發的工程師,都會使用操作寄存器的方式來使用
    發表于 07-13 08:43

    請問單片機如何向MDK中加入頭文件和庫文件?

    請問單片機如何向MDK中加入頭文件和庫文件?
    發表于 09-27 08:32

    如何更簡單的給單片機更新固件

    單片機已經焊接到電路板上時,如何更簡單更便捷的為單片機升級固件便成了一件值得深思的問題。本文介紹了一種更簡單更便捷的固件升級方式,不需要任
    的頭像 發表于 10-23 18:19 ?1.8w次閱讀
    如何更簡單的給<b class='flag-5'>單片機</b>更新<b class='flag-5'>固件</b>?

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

    本文介紹一個小技巧: 使用MDK編譯器,讓STM32程序HEX文件中加入固件版本信息。 代碼 代碼如下
    的頭像 發表于 06-23 15:14 ?4112次閱讀
    如何使用MDK編譯器讓STM32程序HEX文件<b class='flag-5'>中加入</b><b class='flag-5'>固件</b><b class='flag-5'>版本</b><b class='flag-5'>信息</b>

    華大單片機如何向MDK中加入頭文件和庫文件

    華大單片機如何向MDK中加入頭文件和庫文件關鍵文件介紹加入頭文件大多數習慣于8位單片機開發的工程師,都會使用操作寄存器的方式來使用
    發表于 11-23 18:07 ?15次下載
    華大<b class='flag-5'>單片機</b>如何向MDK<b class='flag-5'>中加入</b>頭文件和庫文件

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

    本文介紹一個小技巧:使用MDK編譯器,讓STM32程序HEX文件中加入固件版本信息
    發表于 02-08 15:28 ?0次下載
    SMT32的HEX文件里<b class='flag-5'>加入</b><b class='flag-5'>固件</b><b class='flag-5'>版本</b>的方法

    單片機固件中加入版本信息的方法

    平時我們寫程序,通常都會備注軟件版本,那么,怎么在單片機中保存版本信息呢?方法其實有很多,但基本原理都是在指定存儲區域(Flash)中寫入軟件版本
    的頭像 發表于 04-18 14:50 ?1162次閱讀

    STM32程序HEX文件中加入固件版本信息

    使用MDK編譯器,讓STM32程序HEX文件中加入固件版本信息
    的頭像 發表于 08-14 16:13 ?4426次閱讀

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

    使用MDK編譯器,讓STM32程序HEX文件中加入固件版本信息
    的頭像 發表于 02-01 09:37 ?3913次閱讀

    單片機固件中加入版本信息方式哪些?-2

    這篇介紹一下如何在 MCU 程序中固定位置添加程序的版本信息等。
    的頭像 發表于 02-15 15:36 ?1294次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>固件</b><b class='flag-5'>中加入</b><b class='flag-5'>版本</b><b class='flag-5'>信息</b>的<b class='flag-5'>方式</b><b class='flag-5'>有</b>哪些?-2

    單片機固件中加入版本信息方式哪些?-3

    這篇主要介紹一下通過 Git 工具管理的程序如何在 MCU 程序版本信息中增加 Git commot 提交的 id 。
    的頭像 發表于 02-15 15:38 ?807次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>固件</b><b class='flag-5'>中加入</b><b class='flag-5'>版本</b><b class='flag-5'>信息</b>的<b class='flag-5'>方式</b><b class='flag-5'>有</b>哪些?-3

    介紹單片機 MCU 固件打包腳本軟件

    1. 基于 Windows 平臺的單片機 MCU 固件腳本打包工具
    的頭像 發表于 02-15 15:40 ?1433次閱讀
    介紹<b class='flag-5'>單片機</b> MCU <b class='flag-5'>固件</b>打包腳本軟件

    怎么在單片機中保存版本信息呢?

    平時我們寫程序,通常都會備注軟件版本,那么,怎么在單片機中保存版本信息呢?
    的頭像 發表于 04-18 15:12 ?900次閱讀

    單片機固件如何加入版本信息

    時我們寫程序,通常都會備注軟件版本,那么,怎么在單片機中保存版本信息呢? 方法其實有很多,但基本原理都是在指定存儲區域(Flash)中寫入軟件版本
    發表于 08-22 09:16 ?466次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>固件</b>如何<b class='flag-5'>加入</b><b class='flag-5'>版本</b><b class='flag-5'>信息</b>

    STM32單片機實現固件在線升級(IAP)

    1固件升級方案綜述單片機固件升級方式很多種。1
    的頭像 發表于 12-16 08:00 ?5629次閱讀
    STM32<b class='flag-5'>單片機</b>實現<b class='flag-5'>固件</b>在線升級(IAP)
    凤山市| 肯博百家乐的玩法技巧和规则| 巴特百家乐官网的玩法技巧和规则| 现场百家乐官网牌路分析| 金都百家乐官网现金网| 网上百家乐官网投注技巧| 百家乐官网最新首存优惠| 百家乐官网如何稳赢| 金樽百家乐的玩法技巧和规则| E世博百家乐娱乐城| 沙龙百家乐娱乐场开户注册 | 线上百家乐官网网站| 百家乐官网可以作假吗| 线上百家乐玩法| 华侨人百家乐的玩法技巧和规则 | 六合彩现场开奖| 韩国百家乐的玩法技巧和规则| 大发888完整客户端| 网上百家乐官网赢钱公式| 百家乐优惠现金| 百家乐赢退输进有哪些| tt娱乐城备用网址| 百家乐官网道具扫描| 百家乐十赌九诈| 皇冠网店| 百家乐不倒翁缺点| 大发888出纳柜台 在线| 双鸭山市| 格龙24山五行| 威尼斯人娱乐城 色情| 百家乐官网免费破解外挂| 稳赢的百家乐投注方法| 足球赌球网| 百家乐玩法既规则| 丰禾线上娱乐| 网上百家乐哪里| 香港六合彩特码开奖结果| 百家乐客户端皇冠| 武陟县| 利都百家乐国际娱乐| 八大胜官网|