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

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

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

  • 【车载开发系列】HexView文件合并
    • 一. 合并文件目的
    • 二. 地址范围说明
      • 1)Bootloader地址范围
      • 2)应用程序地址范围
      • 3)其它数据的地址范围
    • 三. 批处理合并
      • 1)/S 命令
      • 2)/MT:file1[;offset][:range1][+file2][;offset][:range1]命令
      • 3)/XS[:reclinelen[:rectype]]命令
      • 3)/FA 命令
      • 4)/Af:xx: 命令

一. 合并文件目的

我们经常需要将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-后缀)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FindDiff_Qt找不同项目

文章目录 项目简介源代码widget.hwidget.cppwidget.ui配置文件找不同.json 项目简介 开发平台 win10Qt6.6msvc2022 简介 微信上有一些好玩的游戏, 找不同一种比较轻松有趣的游戏,也曾经在街机上被坑过N币, 玩了几次后,发现还是太难了,于是开始截屏放大,慢慢找,再然后就发展到截…

C++11的lambda表达式

lambda来源于函数式编程的概念。C11这次终于把lambda加进来了。 lambda表达式有如下优点: 1、声明式编程风格:就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或者函数对象。以更直接的方式去写程序,好的可读性和可维护…

群晖上搭建teamspeak3语音服务器

什么是 TeamSpeak ? TeamSpeak (简称 TS)是一款团队语音通讯工具,但比一般的通讯工具具有更多的功能而且使用方便。它由服务器端程序和客户端程序两部分组成,如果不是想自己架设 TS 服务器,只需下载客户端程…

【vim 学习系列文章 12 -- vimrc 那点事】

文章目录 系统级及本地 vimrc 文件设置 vimrc 的路径 系统级及本地 vimrc 文件 当 Vim 启动时,编辑器会去搜索一个系统级的 vimrc 文件来进行系统范围内的默认初始化工作。 这个文件通常在你系统里 $VIM/vimrc 的路径下,如果没在那里,那你可…

Linux系统编程_网络编程:字节序、socket、serverclient、ftp 云盘

1. 网络编程概述(444.1) TCP/UDP对比 TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的,即发送数据之前不需要建立连接TCP 提供可靠的服务。也就是说,通过 TCP 连接传送的数据&#xf…

Android 13.0 SystemUI状态栏屏蔽掉通知栏不显示通知

1.概述 在13.0的系统产品开发中,在SystemUI定制化开发中,有产品需求要求屏蔽通知显示,由于对状态栏的通知管控的比较严,所以要求屏蔽掉通知栏的通知不显示通知 接下来就需要对通知栏的显示流程分析,屏蔽掉通知就可以了 2.SystemUI状态栏屏蔽掉通知栏不显示通知的核心类 f…

【斑梨】世界最小?linux开发板?价格只要39元 Luckfox Pico Mini 超越树莓派PICO ESP32 Arduino

教程地址 幸狐Luckfox Pico RV1103 教程合集 斑梨】世界最小?linux开发板?价格只要39元 Luckfox Pico Mini 超越树莓派PICO ESP32 Arduino

析构函数的相关解释

析构函数(Destructor)是C中一种特殊的成员函数,用于在对象生命周期结束时执行清理和资源释放操作。每个类都可以有一个析构函数,它的名称与类的名称相同,前面加上一个波浪号(~)。析构函数通常用…

设计模式——单例模式详解

目录 设计模式类型单例模式单例模式方式饿汉式静态常量方式静态代码块形式 懒汉式线程不安全(不推荐)懒汉式优化(不推荐) 双重检查(推荐方式)静态内部类(推荐方式)枚举方式&#xff…

STM32 ADC数模转换器

STM32 ADC数模转换器 ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 STM32主要是数字电路,数字电路只有高低电平&#xf…

【torch高级】一种新型的概率学语言pyro(01/2)

一、说明 贝叶斯推理,也就是变分概率模型估计,属于高级概率学模型,极有学习价值;一般来说,配合实际活动学习可能更直观,而pyro是pytorch的概率工具,不同于以往的概率工具,只是集中于…

qt中怎么在鼠标停留的位置上显示该点的坐标位置

需要重写控件的mouseMoveEvent方法。 1、自定义一个QLabel控件&#xff0c;然后重写QLabel的mouseMoveEvent customlabel.h#include <QWidget> #include <QHBoxLayout> #include <QLabel>class CustomLabel : public QLabel {Q_OBJECT public:explicit Cus…

python常见爬虫库以及案例

python常见爬虫库以及案例 一、常见库 以下是一些常见的Python爬虫库&#xff0c;按照一般热门程度的排序&#xff1a; Requests&#xff1a;requests库是非常流行的用于发送HTTP请求的库&#xff0c;因其简洁易用和广泛的社区支持而备受青睐。Beautiful Soup&#xff1a;Be…

PY32F002A系列单片机:高性价比、低功耗,满足多样化应用需求

PY32F002A系列微控制器是一款高性能、低功耗的MCU&#xff0c;它采用32位ARM Cortex-M0内核&#xff0c;最高工作频率达到24MHz&#xff0c;提供了强大的计算能力。此外&#xff0c;PY32F002A拥有最大20Kbytes的flash存储器和3Kbytes的SRAM&#xff0c;为简单的数据处理提供了充…

基于LCC的Buck谐振变换器研究

摘 要 Buck 变换器应用广泛&#xff0c;比如可以为音圈电机、直流电机以及电子设备等提供直流供电电源。更高效率和更小体积的Buck 直流调压电源一直是研究的热点。在我们日常生活中&#xff0c; LLC谐振变换器和Buck谐振变换器随处可见&#xff0c;因为其相比其他变换器而言结…

Python Selenium 之数据驱动测试的实现!

数据驱动模式的测试好处相比普通模式的测试就显而易见了吧&#xff01;使用数据驱动的模式&#xff0c;可以根据业务分解测试数据&#xff0c;只需定义变量&#xff0c;使用外部或者自定义的数据使其参数化&#xff0c;从而避免了使用之前测试脚本中固定的数据。可以将测试脚本…

Unity3D 如何用unity引擎然后用c#语言搭建自己的服务器

Unity3D是一款强大的游戏开发引擎&#xff0c;可以用于创建各种类型的游戏。在游戏开发过程中&#xff0c;经常需要与服务器进行通信来实现一些功能&#xff0c;比如保存和加载游戏数据、实现多人游戏等。本文将介绍如何使用Unity引擎和C#语言搭建自己的服务器&#xff0c;并给…

thrust工程化学习(七)----噪声滤除进阶版

0. 简介 之前我们讲过通过体素化分割&#xff0c;并通过判断这个栅格内的点云数目是否大于阈值。从而来鉴别出噪点。而我们学过最近邻搜索后&#xff0c;我们可以来学习一下更加先进的方法—半径搜索噪声滤除&#xff08;Radius Search Noise Filtering&#xff09;。这是点云…

Redis(05)| 数据结构-哈希表

哈希表是一种保存键值对&#xff08;key-value&#xff09;的数据结构。 哈希表中的每一个 key 都是独一无二的&#xff0c;程序可以根据 key 查找到与之关联的 value&#xff0c;或者通过 key 来更新 value&#xff0c;又或者根据 key 来删除整个 key-value等等。 在讲压缩列表…

报错:Could not resolve host: mirrorlist.centos.org;Unknown error

报错&#xff1a;Could not resolve host: mirrorlist.centos.org;Unknown error 一般是因为网络配置错误导致无法连接外网&#xff0c;我们先尝试ping一下www.baidu.com发现无法ping通。 果然&#xff0c;接下来我们就开始排查吧&#xff01;&#xff01; 1.网络配置查看 打开…