tft每日頭條

 > 生活

 > mdk如何查看堆棧使用情況

mdk如何查看堆棧使用情況

生活 更新时间:2024-07-07 00:29:59

開發stm32 目前在國内用的最多的集成開發環境就是MDK。最近做一個stm32的IAP在線升級程序,這個IAP程序編譯以後生成的bin文件我需要對它做個修改,存入我對整個APP代碼部分的checksum校驗。這樣我就可以通過bootloader來驗證我app部分代碼的完整性。

這裡面有個關鍵地方就是要對編譯好的bin文件進行修改。仔細想想MDK本身編譯好以後直接生成的是hex而非bin文件,那麼生成的bin是通過編譯後添加了一個選項生成的,如下圖所示:

mdk如何查看堆棧使用情況(MDK編譯以後執行腳本)1

圈起來的地方完整的命令如下: C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe –bin -o ./IAP-LED/IAP-LED.bin ./IAP-LED/IAP-LED.axf

也就是編譯晚以後會調用這條命令把IAP-LED.AXF 文件轉換成bin文件。

于是呢我就順着這條思路,來實現編譯後對我bin文件的修改。但是這裡我不再是調用一個現成的exe文件,而是換成了python腳本,測試了還果然ok。(前提是電腦上要安裝python并且添加到環境變量中)

下面就公布下我這段python代碼:

import os import sys import struct APP_SIZE=0XB0 #bin文件中的偏移地址 APP_CHECK=0XB4 APP_VER=0XB8 arg=sys.argv[1] #sys.argv[1] 表示傳入的第一個參數 fileName=str(arg) #通過傳入參數獲取bin文件名稱 f = open(fileName,'rb') #打開文件 buf=bytearray(f.read()) #讀取文件内容并轉換為byteArray,原為bytes不能編輯 f.close() #關閉文件 fileSize=len(buf) #獲取bin文件長度 print('|***************************bin add check tool********************************|') print('|*******************************BY Derrick************************************|') print('--read source file success! fileName: ' fileName ' filesize: ' str(fileSize)) newFileName=fileName[:-4] '-Check.bin' #拼接出新文件名 fileChecksum=sum(buf) #定義checksum print('--calc checksum is :' str(fileChecksum)) #把unsigned int型整數打包存進buf中 struct.pack_into('I',buf,APP_SIZE,fileSize) #寫入文件長度 struct.pack_into('I',buf,APP_CHECK,fileChecksum) #寫入checksum f=open(newFileName,'wb') #把buf内容寫入新的bin文件中 f.write(buf) f.close() print('--New bin file generated :' newFileName)

然後我把這個這個代碼保存為APPC.py名稱。并把它和我的MDK工程放在同一個文件夾下面。之後就是在我的mdk設置裡面添加編譯後執行該腳本了:

mdk如何查看堆棧使用情況(MDK編譯以後執行腳本)2

這樣做有什麼好處呢?就是每次編譯完我就可以直接獲得我想要的最終結果,而不再需要手動的把bin再通過手動進行修改。大大提高了效率

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved