srec_cat 常用參數的使用

前言

下面介紹映像文件工具 srec_cat 的使用,如何通過相關參數實現自己需要的功能。

下載鏈接:SRecord

使用方式

文件類型

在輸入文件和輸出文件文件時要指明文件類型,常用的如:

test.hex -intel
test.bin -binary

文件轉換

可以通過該軟件進入文件類型轉換。

如hex文件轉bin文件:

srec_cat.exe stm32.hex -intel -offset 0x08000000 -o stm32.bin -binary

將 stm32.hex 從 0x08000000 地址開始轉成 bin 文件。

bin文件轉hex文件:

srec_cat.exe stm32.bin -binary -offset 0x08000000 -o stm32.hex -intel

將 stm32.bin 偏移 0x08000000 地址開始轉成 hex 文件。

文件截取

如果需要文件部分內容截取,可以使用參數-crop

srec_cat.exe stm32.hex -intel -crop 0x08000000 0x08003FFF -o stm32_app.hex -intel

將 stm32.hex 文件中 0x08000000 – 0x08003FFF 中有效的數據生成一個新的文件 stm32_app.hex,如果代碼結束地址是 0x0800 1FFF,那麼新生成的文件代碼範圍是 0x08000000 – 0x08001FFF。

內容填充

字符串

如果想在文件指定的位置填充字符串信息等,如版本信息

srec_cat.exe -generate 0x08000000 0x08000005 -repeat-string STM32 stm32.hex -intel -exclude 0x08000000 0x08000005 -o stm32_new.hex -intel

在 0x08000000 0x08000005 的範圍內重複填充 「STM32」字符串信息,和 stm32.hex (排除了 0x08000000 0x08000005 範圍內數據)進行合併,生成新的文件 stm32_new.hex

  • -generate:數據生成器參數,即地址範圍-數據源
  • -repeat-string:字符串參數,後面接入字符串參數
  • -exclude:排除過濾器參數,不包括某一範圍內存的數據
  • 重複:如果字符串長度小於預留的範圍,則重複填充,比如將 0x14 改為 0x16,則 0x15和0x16地址對應的數據為 ‘ST’

數字

如果想在文件指定的位置填充數字信息等,如文件大小

srec_cat.exe -generate 0x08 0x0C -constant-l-e 0x123456 4 stm32.bin -Binary -exclude 0x08 0x0C -o stm32_new.bin -Binary

在 0x08~0x0C 的範圍內填充按照 4 位元組重複填充16進制數字 0x123456,和 stm32.bin (排除了 0x08~0x0C 範圍內數據)進行合併,生成新的文件 stm32_new.bin

  • -constant-l-e:數字值位元組寬度參數,即值-位元組寬度
  • 重複:如果對齊長度小於預留的範圍,則重複填充,比如將 0x0C 改為 0x0D,則 0x0D地址對應的數據為 0x56(小端模式)