keil编译后出现一个错误,而且无法生成hex文件,报错原因为找不到预先设置的保存路径下的文件夹,详见下图
5条回答 默认 最新
- 程序员超庆 2024-04-08 09:58关注解决 2无用
关注
解决 无用评论 打赏 举报 编辑记录- GISer Liu 2024-04-07 17:44关注解决 无用评论 打赏 举报
关注
【相关推荐】
- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7768531
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:keil输出hex文件
- 除此之外, 这篇博客: keil下汇编程序的调试及hex文件详解中的 3. hex文件格式详解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
- hex文件是什么
它是由一行行符合Intel HEX 文件格式的文本所构成的ASCII 文本文件。每一行包含一 个 HEX 记录 ,由对应机器语言码和/或常量数据的十六进制编码数字组成。Hex文件通常用于传输将被存于ROM 或者EPROM 中的程序和数 据。大多数EPROM 编程器或模拟器使用Intel HEX 文件。Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。
- hex文件格式
冒号 数据长度 数据起始地址 数据类型 数据 校验码 : 1 byte 2 byte 1 byte n byte 1 byte -
第一个字节:表示数据的长度,即有多少个数据
-
第二个,第三个字节表示数据的起始地址.
-
第四字节表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
-
‘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: 开始线性地址记录
-
第五个字节到最后一个字节之前,为数据
-
最后一个字节 为校验和。
校验和的算法为:计算校验和前所有16进制码的累加和(不计进位),检验和 = 0x100 - 累加和.
- 示例说明
其中第一行数据 :020000040800F2 ,可拆分为:
0x02
表示有两个数据0x00 0x00
数据起始地址0x04
代表数据类型,即扩展线性地址记录0x08 0x00
表示两个数据0xF2
校验和,检验和 = 0x100 - 累加和.检验数据
累加和:将最后一个字节之前的数据相加,即0x02+0x00+0x00+0x04+0x08+0x00=0x0E
校验和=0x100-0x0E=0xF2,数据检验正确
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报- Kwan的解忧杂货铺@新空间 2024-04-15 14:43关注解决 无用评论 打赏 举报