• 【车载开发系列】HexView文件合并


    【车载开发系列】HexView文件合并

    一. 合并文件目的

    我们经常需要将Bootloader程序和Application应用程序合并到同一个S19文件中,这样可以简化整个软件/固件的刷写/升级过程。
    Bootloader是一个特殊的程序,其主要功能是用来引导应用程序的运行。在实际的应用中,我们经常需要对应用程序进行刷写/升级,而刷写/升级过程需要将新的应用程序下载到设备中。如果应用程序和Bootloader分别存储在不同的文件中,那么在刷写/升级过程中就需要分别下载这两个文件,并且还需要确保这两个文件的版本是兼容的,否则可能会导致设备无法正常工作。
    因此,将Bootloader和应用程序合并到同一个文件中可以简化软件/固件刷写/升级的过程,减少用户的操作复杂度。在刷写/升级过程中,我们只需要下载一个文件,就可以完成整个软件/固件的刷写/升级。另外,在合并的过程中,我们可以使用一些特殊的技术,比如加密、校验和等,来保证软件/固件的安全性。

    二. 地址范围说明

    当将Bootloader和应用程序合并到同一个文件时,需要确定它们在文件中的地址范围。一般来说,Bootloader和应用程序需要存储在不同的地址范围内,以便在固件启动时正确加载它们。

    1)Bootloader地址范围

    Bootloader一般存储在起始地址处,通常是0x00000000开始的连续地址范围。举个例子,Bootloader地址范围可以是:0x00000000 - 0x00007FFF。这样BOOT程序的大小可以是32KB。

    2)应用程序地址范围

    应用程序一般存储在Bootloader之后的地址范围内,通常是0x00008000开始的连续地址范围。它占用的地址范围可以是0x00008000 - 0x0003FFFF,这样应用程序的大小为192KB。

    3)其它数据的地址范围

    一般其他数据地址范围在0x00040000 - 0x0007FFFF之间。在Flash中,我们通常会保留一部分地址范围用于存储其它数据,比如配置信息、用户数据等等。在本示例中,我们保留了32KB的地址范围,用于存储其它数据。
    正确的确定Bootloader和应用程序的地址范围是软件/固件设计中非常重要的一部分,它不仅关系到固件的安全性和可靠性,还关系到固件的性能和扩展性。

    三. 批处理合并

    对两个S19文件特定地址范围进行合并
    如何你想对两个S19文件特定地址范围进行合并,可将批处理最后一段改写如下。
    基于批处理Bat调用HexView工具提供的Command line,通过该脚本来实现两个S19文件的合并。将该脚本集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,即可自动实现S19文件的合并。

    %HexViewPath% /S /MT:%Input_S19_File1%;0x0:0x9000-0x90E8+%Input_S19_File2%;0x0:0x9100-0x91E7 /XS:32 -o %Output_S19_File%

    1)/S 命令

    该选项用于抑制对GUI的任何输出,在无声模式下运行HexView。在执行了命令行选项中给出的所有命令后,HexView将被关闭。

    2)/MT:file1[;offset][:range1][+file2][;offset][:range1]命令

    一个或多个文件以透明模式合并到memory中(现有数据不被覆盖)。可选的offset将应用于被合并的文件的所有地址。

    3)/XS[:reclinelen[:rectype]]命令

    以Motorola S-Record格式导出。Reclinelen表示Data段的长度。

    3)/FA 命令

    创建一个单一的区域文件(填写所有)。这个选项可以用来创建一个单块文件。在这种情况下,HexView将使用第一个区块的起始地址和最后一个区块的结束地址。

    4)/Af:xx: 命令

    指定填充字符,但xx可以指定为十进制(无后缀)、十六进制值(0x-后缀)或二进制(b-后缀)。

  • 相关阅读:
    基于BP/RBF神经网络的在线信道估计均衡算法matlab仿真
    期刊查重会泄露论文吗?
    【超级大坑】万恶的Received fatal alert: handshake_failure
    pytorch 常见的网络层(卷积层,池化层,线性层,激活函数)
    树莓派4b安装xenomai3(xenomai3 on raspberry4b)
    数学建模学习视频及资料集(2022.08.10)
    开关电源-PWM外设简介及MCC配置
    Vue3中ref创建的引用为什么一定要用.value来获取值
    JDBC数据库的连接
    1036 跟奥巴马一起编程
  • 原文地址:https://blog.csdn.net/Last_Impression/article/details/134090284