在学习iap的过程中想要生成一个bin文件,发现需要在keil的user选项卡中配置下路径,通过fromelf.exe把xxx.axf转换成xxx.bin。但是采用原子的路径配置方法:D:\tools\mdk5.14\ARM\ARMCC\bin\fromelf.exe(这里替换成自己的keil路径) --bin -o …\OBJ\xxx.bin …\OBJ\xxx.axf 发现会报错Error: Q0122E Could not open file ‘xxxx.axf’: No such file or directory。但实际上我的OBJ文件夹里已经有xxxx.axf这个文件了。
前前后后折腾了一下小时,尝试了网上的各种方法,包括删除lst文件重新编译或者把相对地址中的…\改为.\ ,依旧没能解决这个问题。最后在stackoverflow上找到了解决方法,将bin文件和axf文件的相对地址改为绝对地址。
例如:将D:\tools\mdk5.14\ARM\ARMCC\bin\fromelf.exe(这里替换成自己的keil路径) --bin -o …\OBJ\xxx.bin …\OBJ\xxx.axf 改为完整路径D:\tools\mdk5.14\ARM\ARMCC\bin\fromelf.exe(这里替换成自己的keil路径) --bin -o “C:\xxx\OBJ\xxx.bin” “C:\xxx\OBJ\xxx.axf”
另一个更简单的办法,直接添加: fromelf.exe --bin -o “$L@L.bin” “#L”,就不用纠结路径了,具体见下图