【嵌入式烧录/刷写文件】-1.5-Fill填充Motorola S-record(S19/SREC/mot/SX)文件

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

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

目录

1 为什么要“Fill填充”

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

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文件中的未使用地址需要进行填充的主要原因有:

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

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

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

2.1.1 “自动”完成填充

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

图2-1

Boot+App.s19摘录:

S123900058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775C
S123902078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973C
S123904098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71C
S1239060B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FC
S1239080D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7DC
S12390A0F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617BC
S12390C018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233343536379C
S10C90E038393A3B3C3D3E3F4067
S123910058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775B
S123912078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973B
S123914098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71B
S1239160B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FB
S1239180D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7DB
S12391A0F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617BB
S12391C018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233343536379B
S10B91E038393A3B3C3D3E3FA7
S9030000FC

 

Fill_S19_File.bat摘录:

@echo off

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

Rem Filled input file Input_S19_File
set "Input_S19_File=D:\Merge_S19\Boot+App.s19"

Rem The output file Output_S19_File after filling
set "Output_S19_File=D:\Merge_S19\Boot+App_Fill.s19"

Rem For a new Output_S19_File, fill in the characters
%HexViewPath% %Input_S19_File% /S /FA: /AF:0xFF /XS:32 -o %Output_S19_File%

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

2.1.2 “手动”完成填充

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

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

填充后的效果,见下图。

2.1.3 Command line命令行说明

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

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

2.2 自定义填充范围

2.2.1 “自动”完成填充

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

图2-2

Boot+App.s19摘录:

S123900058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775C
S123902078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973C
S123904098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71C
S1239060B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FC
S1239080D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7DC
S12390A0F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617BC
S12390C018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233343536379C
S10C90E038393A3B3C3D3E3F4067
S123910058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775B
S123912078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973B
S123914098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71B
S1239160B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FB
S1239180D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7DB
S12391A0F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617BB
S12391C018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233343536379B
S10B91E038393A3B3C3D3E3FA7
S9030000FC

 

Fill_S19_File.bat摘录:

@echo off

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

Rem Filled input file Input_S19_File
set "Input_S19_File=D:\Merge_S19\Boot+App.s19"

Rem The output file Output_S19_File after filling
set "Output_S19_File=D:\Merge_S19\Boot+App_Fill.s19"

Rem For a new Output_S19_File, fill in the characters
%HexViewPath% %Input_S19_File% /S /FR:0x8FE0-0x91EF /FP:0xFF /XS:32 -o %Output_S19_File%

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

2.2.2 “手动”完成填充

打开Vector Hexview工具打开S19文件,在菜单栏中依次选择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选项)。该参数将作为十六进制格式的数据流被踩踏。

结尾

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值