Keil不能正确生成.bin文件的解决办法

电子说

1.2w人已加入

描述

前段时间我写过如何利用CW、IAR和Keil生成image文件,效果还不错,有些用户反馈挺有帮助的,毕竟待项目开发到最后是需要生成image文件用来量产烧写,我们总不至于到最后使用调试下载吧(不过还别说,用量比较小的用户还真有可能用调试的方法来下载,当然这个只能说是小批量烧写,如果真是大批量烧写,这效率估计得把老板愁死,呵呵)。不过最近同事遇到了用keil生成bin文件时不能正确生成.bin文件而是生成.bin文件夹的问题,这个问题最开始感觉比较怪异,后来问题解决了还是豁然开朗了,Keil还是蛮有意思的,呵呵。

其实这个问题顺藤摸瓜还是比较容易找到根结的(还是那句话,授之以鱼不如授之以渔才是俺的风格,问题解决只是结果,但是我更希望跟大家说明白解决问题的方法,结果是给老板看的,但对自己来说方法和过程很重要,学会了方法会让你在处理问题上游刃有余),既然问题出在生成文件上,那我们就只能找fromelf这个文件转换工具的麻烦了(啥?不知道啥叫fromelf,咳咳,先去面壁2小时然后百度一下吧,呵呵),打开keil IDE,然后打开help->uVison Help,搜索fromelf关键字如下图1:

然后再进入到右下角的索引找到fromelf命令行的语法和选项,找到—bin的说明如下,如红色标注所说,正是症结所在,即如果链接文件中定义了多个加载段的话,fromelf会以目标文件名来创建一个文件夹并将每个加载段都生成一个相应的文件存放在该文件夹下,问题的原因是找到了,但是另外两个问题又来了(咳咳,问题咋这么多捏),一是我的工程为啥会有多个加载段,另一个问题是如果出现这种加载段我们怎么生成我们想要的bin文件呢,不要捉急,咱们一个一个聊。

第一个问题,我们打开Keil->Options->Linker选项卡如下图,可以看到本工程中没有使用Options->Target下选项卡对内存映射的配置,而是使用自己的.scf链接文件,打开该文件一看就明白了,其定义了很多个内存段因此造成上述情况的发生,如果使用Target Dialog应该不会出现此类问题(但是此时工程会编译错误,因为工程中某些原文件用了自定义.scf中某些段名)。

第二个问题,既然问题找到了,我们该使用哪种方法来正确生成想要的.bin二进制文件呢,通过查看fromelf所支持的命令集,终于找到了解决办法,即使用—bincombined命令可以实现将使用多加载段的工程生成真正的.bin文件,具体用法如下:

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分