哈儿哇 2024-04-07 14:56 采纳率: 0%
浏览 870

keil编译后生成不了hex文件

img


keil编译后出现一个错误,而且无法生成hex文件,报错原因为找不到预先设置的保存路径下的文件夹,详见下图

  • 写回答

5条回答 默认 最新

  • 程序员超庆 2024-04-08 09:58
    关注

    确认编译是否存在错误,同时魔法棒中需要勾选生成 hex。
    步骤如下:
    步骤1: 点击 魔法棒 “Options for Target” 。
    步骤2: 单击 Output。
    步骤3: 选择输出生成文件的路径。
    步骤4: 自定义生成的hex文件名。
    步骤5: 勾选生成Hex文件 Create HEX File 。
    步骤6: 点击 OK。

    评论
  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-07 14:56
    关注

    引自免费微信小程序:皆我百晓生

    非常感谢您向我提出这个问题。根据您的描述,这可能是由于目标未被创建或者初始化导致的问题。

    首先,我们需要确保在编译过程中指定了存储主程序文件(main.c)的位置。这可以通过以下命令行选项实现:

    -MM3 /MM3 /MM3 . axf main.o
    

    这将把main.c保存到MM3内,并且使用MM3作为默认存储设备。

    如果上述步骤仍然无法解决您的问题,您可以尝试重启你的keil编译器,或者更换其他IDE进行编译。同时,如果您使用的是Linux操作系统,您也可以尝试检查系统日志文件(例如/var/log/syslog),看是否有关于“mm3”的错误信息。

    如果以上步骤都不能解决问题,那么建议您联系keil的官方技术支持团队获取更专业的帮助。

    另外,您也可以通过查看Keil的用户手册,找到关于如何正确配置编译参数以及目标设置的相关章节,这些可能会对您的问题有所帮助。

    希望以上信息能帮到您,如果有任何进一步的问题,欢迎随时向我提问。

    评论 编辑记录
  • GISer Liu 2024-04-07 17:44
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    对于无法生成hex文件的问题,可能是由于keil编译器设置的保存路径出现错误导致的。请按照以下步骤进行排查和解决:

    1. 检查保存路径设置: 打开Keil工程,查看工程设置中的保存路径是否正确。可以通过点击Project菜单下的Options for Target...,在弹出的对话框中选择Output,在Output directory设置正确的保存路径。
    2. 检查文件夹是否存在: 确保保存路径下的文件夹是存在的,如果不存在,则手动创建该文件夹。
    3. 清除临时文件: 可以尝试清除Keil生成的临时文件。可以在Keil的菜单中选择Project -> Manage -> Delete All Output Files来删除所有输出文件。
    4. 重新编译: 删除已编译的文件,并重新编译工程,看是否可以生成hex文件。
      如果以上步骤都没有解决问题,可能需要进一步检查Keil工程的配置和环境设置,以确保编译器可以正确生成hex文件。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-08 16:56
    关注

    【相关推荐】



    • 这个问题的回答你可以参考下: 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 byte2 byte1 byten byte1 byte
      1. 第一个字节:表示数据的长度,即有多少个数据

      2. 第二个,第三个字节表示数据的起始地址.

      3. 第四字节表示数据类型,数据类型有: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: 开始线性地址记录

      1. 第五个字节到最后一个字节之前,为数据

      2. 最后一个字节 为校验和。

      校验和的算法为:计算校验和前所有16进制码的累加和(不计进位),检验和 = 0x100 - 累加和.

      • 示例说明

      image-20210924123544404

      其中第一行数据 :020000040800F2 ,可拆分为:

      0x02 表示有两个数据

      0x00 0x00 数据起始地址

      0x04 代表数据类型,即扩展线性地址记录

      0x08 0x00 表示两个数据

      0xF2 校验和,检验和 = 0x100 - 累加和.

      检验数据

      累加和:将最后一个字节之前的数据相加,即0x02+0x00+0x00+0x04+0x08+0x00=0x0E

      校验和=0x100-0x0E=0xF2,数据检验正确


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

    展开全部

    评论
  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    问题描述:Keil编译后无法生成Hex文件,原因是找不到预先设置的保存路径下的文件夹。

    解决方案:

    1. 检查路径设置:检查Keil工程中的路径设置是否正确,确认路径是否存在,将保存路径设置为一个存在的文件夹。

    2. 清除错误:清除掉所有编译错误,重新编译程序,确认是否能够生成Hex文件。

    3. 重新创建文件夹:如果文件夹不存在,手动创建该文件夹并重新编译程序。

    4. 检查名字:检查文件名字是否正确,确认文件的后缀名是否为“.hex”。

    5. 删除无用文件:清理掉无用的文件,如备份文件、旧版本文件等,保证编译器可以正常读取和生成文件。

    修改后的代码:

    在此错误信息中并没有提到修改后的代码信息,所以我们无法为你提供修改后的代码。建议您按照上述解决方案进行操作,改正你的路径或文件名字后再进行编译操作。

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部