Keil5 生成bin文件失败解决方法
Keil5 生成bin文件失败解决方法
-
如何生成.bin文件
打开工程Options for Target -> User 勾选Run #1,并添加如上图代码 “$KARM\ARMCC\bin\fromelf.exe --bin -o ./bin/Locker.bin ./OUTPUT/Locker.axf” (./bin/Locker.bin是我要生成的bin文件名和所在目录, 可自定义.
$KARM\ARMCC\bin\fromelf.exe : 生成bin文件的工具, 一般在Kei5安装目录下可找到
–bin -o : 生成bin文件的命令
./bin/Locker.bin : 需要生成的bin文件名及路径
./OUTPUT/Locker.axf : 生成bin所需要的的源文件, 一般编译完成就会自动生成, 找到此文件填写进去即可.
配置完成后,直接编译工程即可, 编译完成后,可在相应目录下找到生成的bin文件 -
可能遇到的问题
- 编译报警告, 如图, 无法打开文件 “Locker.axf” ,没有此文件或者目录
可能原因: 工程编译后生成的 .axf文件名和用于生成bin文件的文件名不一致, 解决方法 Options for Terget -> Output -> Nmae of Rxecutable 中的工程名填写与生成bin文件的所依赖的文件名称一致. - 编译生成的是一个名称为 xx.bin 的文件夹而不是我们想要的bin文件, 如下图
这种情况一般是我们的程序里使用了 “attribute” 等命令来指定某些变量到指定的ROM地址中, 而这个地址又刚好不是我们的工程程序所在的ROM地址区域, 例如, 现在我指定一个变量到0x8003000;这个地址, 而我们程序的开始的地址是0x8006000, 此时编译器的编译时会将程序分段, 也就会生成上诉的多个文件, 解决方法是将需要设置在ROM中的变量设置在本工程程序的ROM内, 即起始地址之后, 结束地址之前.
- 编译报警告, 如图, 无法打开文件 “Locker.axf” ,没有此文件或者目录