【嵌入式烧录/刷写文件】-2.5-Fill填充Intel Hex文件

news2024/11/17 14:54:32

案例背景(共8页精讲)该篇将告诉你,如何对一个Hex文件进行填充:

  • 对“起始地址”和“结束地址”内的非连续的Block块,进行填充
  • 自定义填充范围。

目录

1 为什么要“Fill填充”

2 使用Vector HexView工具“填充”Hex文件

2.1 对“起始地址”和“结束地址”内的非连续的Block块,进行填充

2.1.1 “自动”完成填充

2.1.2 “手动”完成填充

2.1.3 Command line命令行说明

2.2 自定义填充范围

2.2.1 “自动”完成填充

2.2.2 “手动”完成填充

2.2.3 Command line命令行说明

结尾


优质博文推荐阅读(单击下方链接,即可跳转):

点击返回「《Autosar从入门到精通-实战篇》总目录」

点击返回「《Autosar_BSW高阶配置》总目录」

点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏

1 为什么要“Fill填充”

S19/Hex文件是一种广泛使用的嵌入式系统文件格式,用于存储程序代码和数据。S19/Hex文件中的未使用地址需要进行填充的主要原因有:

  • 确保二进制映像的连续性。S19/Hex文件存放的其实是目标处理器上程序和数据的二进制映像,如果有地址段未填充,会导致此地址段的二进制映像 discontinuity,无法正确下载到目标处理器。
  • 满足一些处理器的对齐要求。有些处理器要求程序代码和数据必须按一定的地址边界对齐,如果未填充,可能导致映像无法正确运行。
  • 防止未初始化数据被错误执行。未使用的地址段的数据初始值是不确定的,如果不进行填充,这些未初始化的数据可能被处理器错误执行,导致未定义行为。
  • 便于程序调试。填充后的S19/Hex文件,各地址段的二进制映像是连续完整的,这有利于调试工具读取和解析,实现更准确的调试。
  • 防止其他意外影响。未填充的地址段的数据虽然不会被正常执行,但是可能会影响执行环境,导致意料之外的影响。填充可以避免这些未知影响。

2 使用Vector HexView工具“填充”Hex文件

2.1 对“起始地址”和“结束地址”内的非连续的Block块,进行填充

2.1.1 “自动”完成填充

基于批处理Bat(如下图中的Fill_Hex_File.bat)调用HexView工具提供的Command line,通过该脚本来实现对Hex文件(Boot+App.hex) “起始地址”和“结束地址”内的非连续的Block块,进行填充。将该脚本集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,即可自动实现。见图2-1。

图2-1

Boot+App.hex摘录:

:2090000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767760
:2090200078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969740
:2090400098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B720
:20906000B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D700
:20908000D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7E0
:2090A000F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617C0
:2090C00018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323334353637A0
:0990E00038393A3B3C3D3E3F406B
:2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F
:2091200078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973F
:2091400098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71F
:20916000B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FF
:01918000D816
:00000001FF

 

Fill_Hex_File.bat摘录:

@echo off

Rem Path to the executable exe of the Vector HexView tool on your PC
set "HexViewPath=D:\Merge_Hex\HexView\hexview.exe"

Rem Filled input file Input_Hex_File
set "Input_Hex_File=D:\Merge_Hex\Boot+App.hex"

Rem The output file Output_Hex_File after filling
set "Output_Hex_File=D:\Merge_Hex\Boot+App_Fill.hex"

Rem For a new Output_Hex_File, fill in the characters
%HexViewPath% %Input_Hex_File% /S /FA: /AF:0xFF /XI:32 -o %Output_Hex_File%

运行该批处理Fill_Hex_File.bat,即可得到填充后的Boot+App_Fill.hex文件。

2.1.2 “手动”完成填充

打开Vector Hexview工具打开hex文件,在菜单栏中依次选择Edit -- > Fill block data

在弹出的Fill data record对话框中,单击“Get "Fill all" region”,接着“Fill address range:”中显示该hex文件的“起始地址”和“结束地址”范围,最后在 “Fill with a record”中,填入填充值,并单击OK,完成填充。

填充后的效果,见下图。

2.1.3 Command line命令行说明

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

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

2.2 自定义填充范围

2.2.1 “自动”完成填充

基于批处理Bat(如下图中的Fill_Hex_File.bat)调用HexView工具提供的Command line,通过该脚本来实现对hex文件(Boot+App.hex) 自定义填充范围。将该脚本集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,即可自动实现。见图2-2。

图2-2

Boot+App.hex摘录:

:2090000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767760
:2090200078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969740
:2090400098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B720
:20906000B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D700
:20908000D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7E0
:2090A000F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617C0
:2090C00018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323334353637A0
:0990E00038393A3B3C3D3E3F406B
:2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F
:2091200078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973F
:2091400098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71F
:20916000B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FF
:01918000D816
:00000001FF

 

Fill_Hex_File.bat摘录:

@echo off

Rem Path to the executable exe of the Vector HexView tool on your PC
set "HexViewPath=D:\Merge_Hex\HexView\hexview.exe"

Rem Filled input file Input_Hex_File
set "Input_Hex_File=D:\Merge_Hex\Boot+App.hex"

Rem The output file Output_Hex_File after filling
set "Output_Hex_File=D:\Merge_Hex\Boot+App_Fill.hex"

Rem For a new Output_Hex_File, fill in the characters
%HexViewPath% %Input_Hex_File% /S /FR:0x8FE0-0x91EF /FP:0xFF /XI:32 -o %Output_Hex_File%

运行该批处理Fill_Hex_File.bat,即可得到填充后的Boot+App_Fill.hex文件。

2.2.2 “手动”完成填充

打开Vector Hexview工具打开Hex文件,在菜单栏中依次选择Edit -- > Fill block data

在弹出的Fill data record对话框中,在“Fill address range:”中,填入自定义地址范围,接着在 “Fill with a record”中,填入填充值,最后单击OK,完成填充。

填充后的效果,见下图。

2.2.3 Command line命令行说明

/FR:’range1’:’range2’:… 1         填充区域

该选项用于创建和填充内存区域。如果没有提供/FP参数,HexView将创建随机数据来填充块或区域。否则,将重复使用/FP参数所给的值。填充操作不涉及现有数据。因此,它甚至可以用来填充段之间的数据。范围可以由它的开始和长度指定,用逗号隔开,或者由开始和结束地址指定,用减号隔开(例如:/FR:0x1000,0x200:0x2000-0x2FFF)。

/FP:11223344   以十六进制为单位的填充模式。由/FR参数使用。

这个选项可以用来指定一个被用于填充区域的填充模式。这个选项只在与/FR参数结合时有用。/FP的参数是一个列表(见/FR选项)。该参数将作为十六进制格式的数据流被踩踏。

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注CSDN博客“汽车电子助手”,做您的好助手。

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

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

相关文章

【Linux0.11代码分析】09 之 ELF可执行程序02 - Section Headers解析

【Linux0.11代码分析】09 之 ELF可执行程序02 - Section Headers解析 一、ELF概述二、ELF的组成结构2.1 ELF header:解析出 section headers 含31个section节和 program headers 含13个segment段2.2 Section Headers:获取当前程序的31个section节区信息2…

18-03 MySQL高可用方案与选择

主从复制 读写分离 流程 原理 bin log STATEMENT 优点:记录的是执行的SQL,比较省空间,降低了主从复制时的IO开销缺点:由于记录的是SQL,所以MySQL多个节点之间复制的时候,特定场景下会导致数据不一致的情况 ROW 优点…

【多线程进阶二】JUC工具类 线程安全的集合类 死锁

目录 一、JUC工具类 🍅1、Callable接口 🍅2、ReentrantLock 🍅3、原子类 🍅4、Semaphore信号量 🍅5、CountDownLatch 二、线程安全的集合类 ​🍅1、多线程环境下,怎么使用线程安全…

第十三届蓝桥杯国赛JavaB组题解

A. 重合次数 思路: 枚举不同的时刻,判断哪些时刻秒针和分针表示的数字是相同的。这道题坑就坑在:xx:59:59 xx:00:00分针和时。也就是说一个小时会重叠两次。 题目要求是分钟和秒钟的重叠次数,故时钟,分钟,秒钟同时重叠的次数不算(这题还是有点咬文嚼字了…

MySQL---事务

1. 事务操作 开启事务:Start Transaction 任何一条DML语句(insert、update、delete)执行, 标志事务的开启命令:BEGIN 或 START TRANSACTION 提交事务:Commit Transaction 成功的结束,将所有的DML语句操作历史记录…

G2O学习使用

g2o全称是General Graph Optimization,也就是图优化,我们在做SLAM后端或者更加常见的任何优化问题(曲线拟合)都可以使用G2O进行处理。 就经验而言,solvers给人的感觉是大同小异,而 types 的选取&#xff0…

C语言小游戏——扫雷

前言 结合前边我们所学的C语言知识,本期我们将使用C语言实现一个简单的小游戏——扫雷 目录 前言 总体框架设计 多文件分装程序 各功能模块化实现 初始化棋盘 棋盘打印 埋雷 判赢与排雷 游戏逻辑安排 总结 总体框架设计 和三子棋相同,游戏开始时…

32岁测试工程师,陷入中年危机,最终我裸辞了....

前言 今年32岁,我从公司离职了,是裸辞。 前段时间,我有一件事情一直憋在心里很难受,想了很久也没找到合适的人倾诉,就借着今天写出来。 我一个十几年IT经验,七年测试经验的职场老人,我慢慢涨…

02 Android开机启动之BootLoader及kernel的启动

Android开机启动之BootLoader及kernel的启动 1、booloader的启动流程 第一阶段:硬件初始化,SVC模式,关闭中断,关闭看门狗,初始化栈,进入C代码 第二阶段:cpu/board/中断初始化;初始化内存以及flash,将kernel从flash中拷贝到内存中,执行bootm,启动内核 2、kernel的启…

学习如何将Jenkins与UI测试报告完美整合,事半功倍,轻松获取高薪职位!

目录 引言 (一)在本地整合出报告 1.在cmd分别安装pytest和allure-pytest 2.进入需要执行的代码所在的路径 3.运行测试报告,代码如下 4.解析此json文件,代码如下(新打开cmd进入路径) 5.打开此HTML文件…

包管理工具

包 package,代表了一组特定功能的源码集合。 包管理工具 管理包的应用软件,可以对包进行下载安装、更新、删除、上传等操作。 借助包管理工具,可以快速开发项目,提升开发效率。 常用包管理工具 npm(nodejs官方内…

百度API实现自动写诗

作者介绍 张琪,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件:3126743452qq.com 王泽宇,男,西安工程大学电子信息学院,2022级研究生&#xff0…

Spring——Spring_IOC

1.Spring_IOC概念引入 控制反转 2.Spring_IOC代码测试 IOC代码演示 控制反转:就是创建对象的权力交给了容器 1.创建一个接口,定义一个抽象方法 package org.example;public interface Empdao {int addemp(); } 2.创建一个实现类,实现这…

两台电脑之间怎么互相传文件?

​随着技术的发展,我们似乎可以从家中或工作电脑远程访问另一台电脑。同时,一些用户也在想,“我能不能把文件从一台电脑远程传输到另一台电脑,这样我就可以在本地电脑上随心所欲地查看和编辑文件了”。 这个问题的答案是…

Android自定义一个省份简称键盘

hello啊各位老铁,这篇文章我们重新回到Android当中的自定义View,其实最近一直在搞Flutter,初步想法是,把Flutter当中的基础组件先封装一遍,然后接着各个工具类,列表,网络,统统由浅入…

PostgreSQL实战之物理复制和逻辑复制(八)

目录 PostgreSQL实战之物理复制和逻辑复制(八) 8 级联复制 8.1 级联复制物理架构 8.2 级联复制部署 PostgreSQL实战之物理复制和逻辑复制(八) 8 级联复制 实际上PostgreSQL支持备库既可接收主库发送的将WAL,也支持…

Java泛型基本知识附面试题

一次平平无奇的面试 为什么要写这篇文档&#xff0c;主要就是在字节二面的时候&#xff0c;面试官提了这么一个问题 面试官&#xff1a;Java中的List<Integer>里有可能存String类型元素吗&#xff1f; 当时的我&#xff1a;应该…不可以吧&#xff0c;好像编译器会报错…

2023口腔护理行业分析:市场需求多元化,细分市场持续多变

随着人们生活水平的提高以及口腔护理意识的提升&#xff0c;消费者对于口腔护理的诉求愈发多样化&#xff0c;对于与此相关的产品&#xff0c;包括牙膏、牙刷、牙齿美白产品、漱口水、牙线等产品的需求也日益提高&#xff0c;在这种情况下&#xff0c;口腔护理相关细分产品的销…

软件研发管理高效的关键:11项自动化功能

1、自动锁定需求缺陷 为了提高用户需求分析质量&#xff0c;尽早发现需求缺陷&#xff0c;CoCode开发云特开发了需求分析工具&#xff0c;使用AI&#xff0c;通过需求测试和一致性检测&#xff0c;能够在几分钟内快速分析用户需求缺陷&#xff0c;如歧义、重复、遗漏、不一致和…

深度学习神经网络学习笔记-多模态方向-09-VQA: Visual Question Answering

摘要 -我们提出了自由形式和开放式视觉问答(VQA)的任务。给定一张图像和一个关于图像的自然语言问题&#xff0c;任务是提供一个准确的自然语言答案。镜像现实场景&#xff0c;比如帮助视障人士&#xff0c;问题和答案都是开放式的。视觉问题有选择地针对图像的不同区域&#…