HEX文件格式和其校验算法

 

这次我将在原来的基础上(http://www.cnblogs.com/libra13179/p/5787084.html)继续讲解HEX文件的格式

打开app_valid_setting_apply.hex如下

 

:020000040003F7 :10FC00000100000000000000FE000000FFFFFFFFF9 :00000001FF

 

分析如下

 

对数据帧结构

 

冒号
本行数据长度
本行数据的起始地址
数据类型
数据
校验码
(红色)
(紫色)
(绿色)
(蓝色)
(黑色)
(橙色)
 
1byte
2byte
1byte
N byte
1byte

 

补充

 

数据类型

 

'00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录

 

'01' End of File Record:用来标识文件结束,放在文件的最后,标识HEX文件的结尾

 

'02' Extended Segment Address Record:用来标识扩展段地址的记录

 

'03' Start Segment Address Record:开始段地址记录

 

'04' Extended Linear Address Record:用来标识扩展线性地址的记录

 

'05' Start Linear Address Record:开始线性地址记录

 

 

校验码

020000040003F7为例子

具体算法为 0x100-((0x02+0x00+0x00+0x04+0x00+0x03)%256)= 0xF7

相关校验测试程序
下面算法实现记录的校验,校验成功返回1,失败返回0

 

 //代码引用http://blog.chinaunix.net/uid-24789420-id-1635048.html   
    bit AnalyseHEX(char hex[],int len)
    {
      unsigned char i=1;
      unsigned char data;
      int cc=0;
      char temp[2];
      do
      {
          temp[0] = hex[i++];
          temp[1] = hex[i++];
          sscanf(temp,"%x",&data);
          cc += data;
      } while (i<(len-2));
      cc%=256;
      cc=0x100-cc;
      temp[0] = hex[i++];
      temp[1] = hex[i++];
      sscanf(temp,"%x",&data);
      return (cc==data)?1:0;
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
        char hex[]="::020000040000FA";
        AnalyseHEX(hex,sizeof(hex));
    }

 

转载于:https://www.cnblogs.com/libra13179/p/5821266.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,Hex文件是一种十六进制代码文件格式,可以用于将程序或数据写入微控制器、EPROM或其他设备。在实际应用中,Hex文件不仅用于将代码下载到芯片中,也可以用于数据存储、调试等,因此Hex文件一直是嵌入式系统开发中不可或缺的一部分。 其次,Hex文件校验和是保障文件传输过程中数据完整性的重要手段,常用的校验算法有CRC、MD5、SHA等。在Hex文件中,校验和是通过将文件内容中每个字节的十六进制值累加,然后对256取余,取反后得到的结果。 最后,针对Hex文件校验和和内容,可以使用一些工具进行查看和分析。比较常用的工具有WinHexHEX VIEW、Beyond Compare、hexdump等。这些工具可以在Windows、Linux和Mac OS X等操作系统下运行,并能够提供比较直观的Hex文件内容和校验和信息。此外,一些IDE、编译器和调试工具也会内置Hex文件查看功能,如Keil、IAR、CCS等。通过这些工具,可以快速了解Hex文件的结构和内容,从而更好地进行调试和优化。 ### 回答2: Hex文件是一种十六进制格式文件,其中包含了程序的二进制代码和数据。通常,Hex文件是用于将程序下载到嵌入式设备上的。 而校验和则是用于验证Hex文件是否正确的标准。当我们使用Hex文件下载程序时,校验和可以用来验证下载的程序是否正确地写入嵌入式设备的内存中。 为了计算Hex文件校验和,我们需要用一个校验和工具。校验和工具能够自动计算Hex文件校验和。在计算校验和时,工具会将文件中每一个字节的值相加,并对结果取反,然后输出结果。 此外,还有一些工具可以用来查看Hex文件的内容。这些工具可以以十六进制或ASCII格式显示Hex文件中的内容,使我们能够更好地理解程序代码和数据。 总之,Hex文件校验和是嵌入式系统编程中非常重要的概念。了解如何生成、验证和查看Hex文件,以及如何计算校验和,对于嵌入式开发者来说是必不可少的技能。 ### 回答3: Hex文件是一种常见的二进制文件格式,它是一种十六进制表示的可执行文件,常用于嵌入式系统中。在编写嵌入式程序时,经常需要通过将源代码编译后生成Hex文件,再将Hex文件烧录到目标设备上,以实现程序下载和运行。 在生成Hex文件时,通常还会附带一个校验和。校验和是将Hex文件中所有数据的十六进制值相加,并将结果取反后得到的一个校验码。它可以用来验证Hex文件是否被更改或损坏,有助于确保程序的可靠性和安全性。 为了方便查看Hex文件校验和,我们可以使用一些Hex文件校验和查看工具。这些工具可以帮助我们自动计算Hex文件校验和,并将结果展示出来。比如,我们常用的有CRC校验工具、HEX文件校验工具等。 使用Hex文件校验和查看工具,我们可以快速准确地知道Hex文件校验和,确定文件是否完整可靠,以及确保程序的正常运行。这对于嵌入式软件开发和测试等方面都非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值