zoukankan      html  css  js  c++  java
  • 映像文件工具srec


    title: 映像文件工具srec
    tags: pc
    date: 2019-01-06 22:58:38

    映像文件工具srec

    介绍与帮助

    项目主页在这里

    1. MDK提供的简单例子
    2. 官方的例子
    3. 在线hex,bin的工具
    4. arm文件格式

    开源工具SRecord能够解析转换多种映像文件,Binary,Intel,intel_16等数十种文件.

    • srec_cat 转换,合并文件
    • srec_cmp 比较文件,可以比较hex和bin
    • srec_info 查看文件信息

    常用例子

    常用选项

    1. Disable_Sequence_Warnings 这个是因为如果输入的Intel HEX文件的记录未按升序地址顺序排序,则此选项会禁止发出警告。由OH51,OHX51,OH251或OH166生成的HEX文件未按升序地址顺序排序。
    2. address-length =2或3或4
      指定Intel HEX输出文件中的地址字节数。默认情况下,srec_cat会生成扩展地址记录(类型04),地址范围最大为4GB。如果要避免生成扩展地址记录,请在指定输出文件之前指定 address-length = 2。这限制了最大值。地址空间为64K,可用于大多数8051应用程序。
    3. Output_Block_Size = ByteCount
      指定每个HEX记录的长度。默认情况下,srec_cat生成包含最多32个字节数据的行。如果你想限制最大值。行长为16字节(与OH51,OHX51,OH251或OH166兼容),使用-Output_Block_Size = 16。

    一个实际的例子

    
    if exist ..\*256* ( 
     set lenth="0x40000"
    ) else (
     set lenth="0x80000"
    )
    
    
    rm *.bin
    rm *.hex
     copy  ..app.hex app.hex
     copy  ..oot.hex boot.hex
     md HEX阅读器
     srec_cat.exe -o boot.bin -binary boot.hex -Intel -fill 0xff 0x0000 0x3000
     srec_cat.exe -o app.bin -binary app.hex -Intel  -fill 0xff 0x3000 %lenth%
     srec_cat.exe -o ok_0xFF.bin -binary boot.bin -binary -fill 0xff 0x00000 0x3000 app.bin -binary -crop 0x3000 %lenth%  -fill 0xFF 0x3000 %lenth%
     srec_cat.exe -o ok_0xFF.hex -Intel ok_0xFF.bin -binary -Output_Block_Size=16
     srec_cat.exe -o ok.hex -Intel boot.hex -Intel app.hex -Intel -Output_Block_Size=16
     srec_info.exe  boot.hex -Intel app.hex -Intel  ok_0xFF.hex -Intel ok.hex -Intel  >info.txt 
     hexcrc.exe ok_0xFF.hex
     srec_cat.exe -o  HEX阅读器app.hex.txt -Hexdump  app.hex -Intel
     srec_cat.exe -o  HEX阅读器oot.hex.txt -Hexdump boot.hex -Intel
     srec_cat.exe -o  HEX阅读器ok_0xFF.hex.txt -Hexdump ok_0xFF.hex -Intel
    
    

    hex转bin

    srec_cat.exe test.hex -intel -offset -0x3000 -o .out.bin -binary
    
    1. 如果不指定-offset -0xxxx 则bin从0开始

    2. keil生成的51的hex,地址并不是递增的,会有如下警告,加入-Disable_Sequence_Warning选项在exe后

      srec_cat.exe  12864.hex -intel -o a.bin -Binary
      srec_cat: 12864.hex: 11: warning: data records not in strictly ascending order
          (expected >= 0x0188, got 0x012C)
      

      正确用法

      srec_cat.exe -Disable_Sequence_Warning 12864.hex -intel  -o .out.bin -binary
      

    数据填充

    -fill 0xFF 0x0000 0x8000
    

    具体可以看下文件合并的例子

    文件合并

    参考

    srec_cat -output "1.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000
    
    srec_cat.exe HexFile1.hex -Intel HexFile2.hex -Intel -o MergedHexFile.hex -Intel
    
    1. -output "1.bin" -binary 指定输出文件
    2. 0x00000.bin -binary第一个输入文件
    3. -fill 0xff 0x00000 0x10000 先把0x00000到0x10000全部填充0xff(其实内部会先生成一个用于存储的文件)
    4. 0x10000.bin -binary -offset 0x10000 ,找到第二个bin文件把自己的地址偏移到0x10000开始

    其他例子http://www.keil.com/support/docs/1144.htm

    文件分割

    详细例子 http://www.keil.com/support/docs/963.htm

    srec_cat.exe HexFile.hex -Intel -crop 0x000000 0x007FFF -o HexFilePart1.hex -Intel
    srec_cat.exe HexFile.hex -Intel -crop 0x008000 0x00FFFF -offset -0x008000 -o HexFilePart2.hex -Intel
    

    另一个稍微复杂的

    Content of SplitHexPart1.cmd command file:

    # BL51 hex files are not sorted for ascending addresses. Suppress this warning
    -disable-sequence-warning
    # take HexFile.hex address area 0x000000-0x007FFF
    .OBJHexFile.hex -Intel -crop 0x000000 0x007FFF
    #generate hex records with 16 byte data length (default 32 byte)
    -Output_Block_Size=16
    # generate a Intel hex file
    -o .OBJHexFilePart1.hex -Intel
    

    Content of SplitHexPart2.cmd command file:

    # BL51 hex files are not sorted for ascending addresses. Suppress this warning
    -disable-sequence-warning
    # take HexFile.hex address area 0x008000-0x00FFFF and shift it down to 0x000000
    .OBJHexFile.hex -Intel -crop 0x008000 0x00FFFF -offset 0x008000
    #generate hex records with 16 byte data length (default 32 byte)
    -Output_Block_Size=16
    # generate a Intel hex file
    -o .OBJHexFilePart2.hex -Intel
    

    Invocation of srec_cat.exe with two command files:

    srec_cat.exe @SplitHexPart1.cmd
    srec_cat.exe @SplitHexPart2.cmd
    

    参考MDK计算CRC的文档an277.pdf

    srec_cat SelfTestROM_Ex2.hex -intel -crop 0x00000 0x0FFFC -fill 0x00 0x00000 0x0FFFC -crc32-l-e 0x0FFFC -o SelfTestROM.0.hex -intel
    srec_cat SelfTestROM_Ex2.hex -intel -crop 0x10000 0x1FFFC -fill 0x00 0x10000 0x1FFFC -crc32-l-e 0x1FFFC -o SelfTestROM.1.hex -intel
    srec_cat SelfTestROM_Ex2.hex -intel -crop 0x20000 0x2FFFC -fill 0x00 0x20000 0x2FFFC -crc32-l-e 0x2FFFC -o SelfTestROM.2.hex -intel
    srec_cat SelfTestROM_Ex2.hex -intel -crop 0x30000 0x3FFFC -fill 0x00 0x30000 0x3FFFC -crc32-l-e 0x3FFFC -o SelfTestROM.3.hex -intel
    

    加入CRC

    这里的意思是转换生成的bin,最后4字节存着前面到倒数4字节前的CRC32

    参考MDK计算CRC的文档an277.pdf,里面有单个文件的crc,还有将一个hex分割成四个区域的代码算4个crc的方式 ,SelfTestROM代码链接

    srec_cat SelfTestROM_Ex2.hex -intel -crop 0x00000 0x0FFFC -fill 0x00 0x00000 0x0FFFC -crc32-l-e 0x0FFFC -o SelfTestROM.0.hex -intel
    
    1. srec_cat SelfTestROM_Ex2.hex -intel读取hex

    2. -crop 0x00000 0x0FFFC -fill 0x00 读取的区域,没有的填充0x00

    3. 0x00000 0x0FFFC -crc32-l-e 0x0FFFC计算CRC,CRC放在0x0FFFC

    4. 代码中的定位

      uint32_t crc_nominal __attribute__((at(0x0003FFFC)));
      #define ROM_START 0x00000000
      #define ROM_LEN   0x0003FFFC
      

    查看信息

    srec_info.exe  SelfTestROM_Ex.hex -intel
    

    使用命令集合的文本

    1. 新建一个文本

      -Disable_Sequence_Warnings    #disable warning about hex records not in ascending order
      MyInputFile.hex               #input file name
      -Intel                        #read input file in intel hex format
      -fill 0xFF 0x0000 0x8000      #fill gaps from 0x0000-0x7FFF (32K) with value 0xFF
      -Output_Block_Size=16         #generate hex records with 16 byte data length (default 32 byte)
      -address-length=2             #generate 16-bit address records (no extended adress records type 04)
      -o MyOutputFile.hex           #output file name
      -Intel                        #generate intel hex output file
      
    2. 使用命令srec_cat.exe @CommandFile

    详细文件格式的描述

    附录:MDK的例子(谷歌翻译的)

    用例

    请参阅以下知识库文章如何使用srec_cat.exe实用程序和Keil微控制器开发工具转换,合并和拆分HEX和BINARY文件 。

    一般HEX文件操作

    用于8051设备的HEX文件操作

    ARM设备的HEX文件操作

    一般BINARY文件操作

    其他应用

    教程

    设置工具以在每个项目构建/重建后执行srec_cat.exe

    1. 打开μVision
    2. 选择下拉菜单项目 - >目标选项,然后单击用户** 选项卡
    3. 下面生成后/重建检查框 运行#1
    4. 对于user命令,使用命令选项调用srec_cat.exe。该键序列 #H可用于输入十六进制文件名。
    5. 例如:
    srec_cat.exe #H -Intel -o SortedHexFile.hex -Intel
    

    注意:如果需要许多参数,则使用命令文件会更容易。在μVision中使用srec_cat.exe的命令文件时,请确保将“@”字符加倍,否则μVision可能会将其解释为键序列

    img

    句法

    有关所有srec_cat.exe参数的完整说明,请参阅“ SRecord参考手册”。以下是一些对Keil工具有用的选项:

    • -Disable Sequence Warnings
      禁止显示输入文件的HEX记录未按升序地址顺序排序的警告消息。OH51,OHX51,OH251或OH166无法按地址升序生成HEX文件。
    • -address-length = 2或3或4
      英特尔HEX输出文件中的地址字节数(默认为4:生成扩展地址记录(类型04),地址范围最大为4GB)。在命令字符串中, address-length必须在before之前-o(指定输出文件)。
      对于非代码库8051应用程序:避免生成扩展地址记录。设置-address-length=2为将最大地址空间限制为64K。代码库应用程序可以大于64K。
    • -Output Block Size = ByteCount
      每个HEX记录的长度(默认为32:行包含最多32个字节的数据)。
      对于C51,C251,C166应用:设置 (与OH51,OHX51,OH251或OH166兼容)。 -Output*Block*Size=16
    • -fill FillValue StartAddress EndAddress
      使用指定的常量值填充未使用的区域。
      建议:使用值0xFF - 这对应于擦除闪存的值。
    • -crop StartAddress EndAddress
      仅从上一个输入文件加载指定的地址区域。将此选项与-offset。结合使用。
    • -offset Offset
      为上一个输入文件添加地址偏移量。允许正值或负值。将此选项与-crop。结合使用 。
    • -Intel
      将前面的文件名视为Intel Hex,例如,[input filename] -Intel=将输入文件解释为Intel HEX,或者[output filename] -Intel=在Intel HEX中生成输出文件
    • -Binary
      对待前面的文件名是二进制文件,例如,[input filename] -Binary=将输入文件解释为二进制文件,或者[输出文件名] -Binary=生成二进制文件的输出文件
    • @CommandFile
      命令文件可以包含srec_cat.exe的部分或全部调用参数。
      提示:使用“#”开始一行,将所有内容评论到该行的末尾。
    • -Motorola
      可以在输入或输出文件名之后使用,以指定输入文件应解释为Motorola S-Record文件,或输出文件应生成为Motorola S-Record文件。
    • -C-Array filename [-INClude]
      可以在输出文件名之后使用,以指定它应该作为带有可选包含文件的C源文件生成。

    更多信息

    也可以看看

    另见8051

  • 相关阅读:
    sharepoint 2010 无法停止爬网 金大昊(jindahao)
    自定义搜索核心结果 金大昊(jindahao)
    fast search 爬网倒计时 金大昊(jindahao)
    workspace 限制 金大昊(jindahao)
    权限级别“打开项目”影响搜索结果 金大昊(jindahao)
    sharepoint 多服务器部署错误 金大昊(jindahao)
    大列表读取 金大昊(jindahao)
    sharepoint web servcie 金大昊(jindahao)
    SharePoint:pdf加密(RMS)方案 金大昊(jindahao)
    Infopath form to HTML using csharp 金大昊(jindahao)
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/10229223.html
Copyright © 2011-2022 走看看