keil4mdk编译生成.bin文件

我的实测生成.bin为"D:\english router soft\keil4\ARM\ARMCC\bin\fromelf.exe" --bin --output ../upload.bin ../obj/Target.axf

前面为keil的安装路径,后面为生成的.bin和.axf的文件名字。


FromELF: creating hex file...
User command #1: D:\Keil\ARM\BIN40\fromelf.exe  --bin  ..\Obj\Bootloader.axf   -o  ..\Obj\Bootloader.bin
--- Error: User Command terminated, Exit-Code = 1

原因及解决办法:

在OPTIONS FOR TARGET ->User分页有个RUN#1,功能是编译完成后执行该指令操作,应该是该指令有问题,一般情况下该错误是RUN#1设置的执行的程序位置不对;比如你的keil是装在c盘的,自然fromelf.exe文件也在C盘,你要使用fromelf将编译后生成的afx文件再转成bin文件(理论hex文件再转成bin文件也可以,但实测会报错,错误信息为:

C:\Keil\ARM\BIN40\fromelf.exe  --bin  ..\Obj\Bootloader.hex   -o  ..\Obj\Bootloader.bin
FromELF: creating hex file...

User command #1: C:\Keil\ARM\BIN40\fromelf.exe  --bin  ..\Obj\Bootloader.hex   -o  ..\Obj\Bootloader.bin

"..\Obj\Bootloader.hex": Error: Q0454E: In ELF file: File is not an ELF file (wrong magic number)
Finished: 0 information, 0 warning and 1 error messages.

"..\Obj\Bootloader.axf" - 0 Error(s), 0 Warning(s).

),那么你的执行程序的位置改为“C:\Keil\ARM\BIN40\fromelf.exe”,再如果你的keil装在D盘,那么执行程序的路径为D:\Keil\ARM\BIN40\fromelf.exe ;否则会提示该错误,如果不需要把生成的hex文件转bin文件,将Run User Programs AfterBuild/Rebuild的Run #1前的勾去掉或选择fromelf.exe就可以了.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: .\objects\sensorless_foc.axf: error: I6971e: emo_ram.o(i.ccu6_sett13compare) 是一个编译错误。该错误通常是由编译器在编译过程中发现的问题引起的。 在这个特定的错误中,出现了一个名为"ccu6_sett13compare"的错误。这可能是由于以下几种原因导致的: 1. ccu6_sett13compare函数或变量未被正确定义或声明:检查代码中是否存在这个函数或变量,并确保它们被正确声明和定义。 2. ccu6_sett13compare函数或变量的命名冲突:检查代码中是否有其他地方也定义了相同名称的函数或变量。如果有,可以尝试修改命名以避免冲突。 3. ccu6_sett13compare函数或变量的使用错误:检查代码中对这个函数或变量的使用情况,确保它们被正确地调用和引用。有时候,一些简单的语法错误或拼写错误也可能导致这种错误。 4. 编译器版本不兼容或缺少必要的库文件:尝试更新编译器版本,或确保所需的库文件已正确安装和链接。 总之,要解决这个错误,需要仔细检查代码,查找可能的问题并逐一排除。 ### 回答2: 根据提供的错误信息 ".\objects\sensorless_foc.axf: error: l6971e: emo_ram.o(i.ccu6_sett13compare)" 可以看出,是在连接阶段发生的错误。错误的原因是在连接中找不到 "emo_ram.o(i.ccu6_sett13compare)" 这个文件文件中所包含的函数 "i.ccu6_sett13compare"。 在解决此错误之前,我们需要查看一下项目的源代码和相关配置文件。首先,检查是否确实存在名为 "./objects/emo_ram.o" 的目标文件。确保该目标文件正常生成且位于正确的路径下。 如果目标文件存在并位于正确的位置,那么可能是函数 "i.ccu6_sett13compare" 的定义出现了问题。请确认在源代码文件中是否正确地定义了函数 "i.ccu6_sett13compare",并且函数的命名是否正确(大小写、拼写等)。另外,也需要检查该函数是否有正确的链接选项和正确的链接库依赖。 如果以上步骤都没有解决问题,可以尝试重新构建项目。在重新构建之前,可以尝试清除构建缓存,逐个删除相关的对象文件和目标文件,然后重新构建项目。 总之,错误 "l6971e: emo_ram.o(i.ccu6_sett13compare)" 表示连接器在连接项目时无法找到指定的源代码文件或函数定义。需要检查目标文件是否正常生成,函数是否正确定义,并尝试清除缓存和重新构建项目来解决该错误。 ### 回答3: 错误信息中的".\objects\sensorless_foc.axf: error: l6971e: emo_ram.o(i.ccu6_sett13compare)"指示了一个编译错误。具体错误是在文件"emo_ram.o"的"Ccu6_sett13compare"函数中发生了一个l6971e错误。 这个错误通常与CCU6 (Capture/Compare Unit 6)的设置相关。CCU6是一种用于嵌入式系统的定时器/计数器模块,用于实现各种计时和比较功能。在"Ccu6_sett13compare"函数中,可能涉及到了一些需要设置的参数或操作,而这些设置可能出现了问题,导致了编译错误。 要解决这个错误,我们需要仔细检查"emo_ram.o"中的"Ccu6_sett13compare"函数的实现。可能有以下一些步骤可以帮助我们找到并解决问题: 1. 确保"emo_ram.o"文件是正确生成的,并且包含了函数"Ccu6_sett13compare"的正确实现。 2. 检查函数内部的代码,确保没有语法错误或逻辑错误。 3. 检查与CCU6相关的设置和配置,确保设置正确,并且没有冲突或错误。 4. 如果可能的话,查阅编译器或开发工具的文档,查找关于l6971e错误的信息,以了解更多关于该错误的背景和可能的解决方案。 5. 与其他开发者进行沟通,特别是与有经验的嵌入式系统开发人员交流,寻求他们的建议和帮助。 综上所述,解决".\objects\sensorless_foc.axf: error: l6971e: emo_ram.o(i.ccu6_sett13compare)"错误需要仔细检查相关代码和设置,并在必要时请教其他开发者的建议和帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值