欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

3天內不再提示

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

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

前言

上一篇介紹完如何在程序中的固定位置添加版本信息,而且如何通過映像工具將版本信息和固件文件名關聯(lián)同步;這篇主要介紹一下通過 Git 工具管理的程序如何在 MCU 程序版本信息中增加 Git commot 提交的 id 。

Git 是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理。簡單來說就是用來管理程序版本的。

為什么增加 git 信息

通過上一篇我們了解到軟件版本信息可以通過映像工具修改 hex 或者 bin 文件,那么在軟件版本管理中,如果程序編譯后的同一個固件文件在多次進行打包后,會存在多個已經添加了版本信息的固件,但是可執(zhí)行程序內容都是一樣的,在之后的管理中,如何區(qū)分不同版本的軟件功能是一樣的呢?

版本信息內容的不同不影響可執(zhí)行文件的功能,通過文件對比雖然能確認不同版本的固件中的可執(zhí)行程序是否一樣,但是還是比較繁瑣麻煩。

如果程序是通過 Git 工具管理的,那么此時可以通過 Git commot 提交 id 信息區(qū)分(每次提交的 id 值是不同的),通過在程序版本信息中添加 Git commot 提交 id 信息便能快速了解該版本固件對應的源碼是哪一次提交的。

實現(xiàn)方式

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

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

2.通過__attribute__定義一個只讀結構體變量(具體為什么這么實現(xiàn)可以看上一篇)。

const AppInfo_t __attribute__ ((section(".ARM.__at_0x08002000"))) sg_tAppInfo =
{
    "STM32_TEST",
    __DATE__,
    __TIME__,
    ""
};

3.提交git編譯后,可以看的git commit id 值

圖片

4.采用的映像工具 srec_cat,通過 Bat 腳本實現(xiàn)以下功能:

  1. 不需要修改代碼即可修改程序版本信息
  2. 按照當前固件打包時間作為程序的版本信息,同時按照版本信息命名文件
  3. 版本命名格式為:STM32_T2206111526
  4. 添加 Git Commit id 信息(新增)

根據(jù)目錄結構樹編寫指定腳本(該目錄必須是git倉庫)

.git
MDK_STM32
    ---- CORE
    ---- STM32F10x_FWLib
    ---- OBJ(編譯生成的hex文件)
    ---- USER
tool
    ---- srec_cat.exe
    ---- pack.bat

實現(xiàn) pack.bat(上一篇的腳本文件有些缺陷,發(fā)現(xiàn)修改路徑和文件名后不能正常打包,可私信回復關鍵詞“固件”或“固件打包”獲取下載鏈接):

:: 版本信息前綴和長度
set strPrefix=STM32_
set strPrefixlen=6

:: hex 文件路徑和文件名
set hexFilePath=..\\MDK_STM32\\OBJ
set hexFileName=main

:: 版本信息起始地址
set verStringAddr=0x08002000

:: git commit id信息起始地址
set commitIdStringAddr=0x08002060

if %time:~0,2% leq 9 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
if %time:~0,2% leq 9 (set minute=%time:~2,2%) else (set minute=%time:~3,2%)

:: 打包時間格式為年月日時分 T2206111526
set strTime=T%date:~2,2%%date:~5,2%%date:~8,2%%hour%%minute%
set strVersion=%strPrefix%%strTime%

:: 獲取commit id
@for /F %%i in ('git rev-parse --short HEAD') do @set commitid=%%i
@echo commitid=%commitid%

copy %hexFilePath%\\%hexFileName% .\\

:: 版本信息的結束地址
set /a InfoEnd=%verStringAddr%+%strPrefixlen%+11

.\\srec_cat.exe -generate %verStringAddr% %InfoEnd% -repeat-string %strVersion% %hexFilePath%\\%hexFileName%.hex -intel -exclude %verStringAddr% %InfoEnd% -o .\\tmp_%strVersion%.hex -intel

:: git commit id 信息的結束地址
set /a InfoEnd=%commitIdStringAddr%+7

.\\srec_cat.exe -generate %commitIdStringAddr% %InfoEnd% -repeat-string %commitid% .\\tmp_%strVersion%.hex -intel -exclude %commitIdStringAddr% %InfoEnd% -o .\\%strVersion%.hex -intel

del %hexFileName%.hex
del .\\tmp_%strVersion%.hex

5.編譯完成后,雙擊 pack.bat 生成添加版本信息后的固件。

圖片

6.之后需要通過 J-LINK 工具包或者 ST-Link 工具打開生成的固件進行燒錄(通過Keil編譯直接下載的沒有用,我這里用的是 ST-Link 工具)。

圖片

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

    關注

    146

    文章

    17353

    瀏覽量

    352777
  • 程序
    +關注

    關注

    117

    文章

    3797

    瀏覽量

    81453
  • Git
    Git
    +關注

    關注

    0

    文章

    201

    瀏覽量

    15825
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

    本文介紹一個小技巧: 使用MDK編譯器,讓STM32程序HEX文件中加入固件版本信息。 代碼 代碼如下
    的頭像 發(fā)表于 06-23 15:14 ?4118次閱讀
    如何使用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中加入頭文件和庫文件關鍵文件介紹加入頭文件大多數(shù)習慣于8位單片機開發(fā)的工程師,都會使用操作寄存器的方式來使用
    發(fā)表于 11-23 18:07 ?15次下載
    華大<b class='flag-5'>單片機</b>如何向MDK<b class='flag-5'>中加入</b>頭文件和庫文件

    單片機的燒錄方式:ISP、ICP、IAP的區(qū)別

    單片機的燒錄方式單片機三種燒錄方式ISP、IAP和ICP什么不同?單片機三種燒錄
    發(fā)表于 12-03 18:21 ?27次下載
    <b class='flag-5'>單片機</b>的燒錄<b class='flag-5'>方式</b>:ISP、ICP、IAP的區(qū)別

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

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

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

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

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

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

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

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

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

    開發(fā)完MCU軟件后,通常都會生成hex文件或者bin文件,用來做固件燒錄或者升級,如果用來做產品開發(fā),就涉及到固件版本的問題,初學者通常采用固件文件重命名來區(qū)分
    的頭像 發(fā)表于 02-15 15:13 ?1480次閱讀
    <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>哪些?-1

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

    這篇介紹一下如何在 MCU 程序中固定位置添加程序的版本信息等。
    的頭像 發(fā)表于 02-15 15:36 ?1309次閱讀
    <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

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

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

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

    時我們寫程序,通常都會備注軟件版本,那么,怎么在單片機中保存版本信息呢? 方法其實有很多,但基本原理都是在指定存儲區(qū)域(Flash)中寫入軟件版本
    發(fā)表于 08-22 09:16 ?472次閱讀
    <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單片機實現(xiàn)固件在線升級(IAP)

    1,固件升級方案綜述單片機固件升級方式很多種。1、ICP:簡單說就是在單片機開發(fā)時使用燒錄器
    的頭像 發(fā)表于 12-16 08:00 ?5658次閱讀
    STM32<b class='flag-5'>單片機</b>實現(xiàn)<b class='flag-5'>固件</b>在線升級(IAP)