最正宗的方法,如何生成单片机程序的bin文件(基于keil)
最权威的生成单片机程序的bin文件的方法(基于keil)
搞单片机开发的朋友,有一些应该接触过bin文件吧,像孔丙火(微信公众号:孔丙火)开发的一些传感器,有时候需要对传感器内单片机的程序进行升级更新,但传感器已经安装在现场,拿着编程器挨个烧录程序,着实很麻烦,但传感器一般都有现场总线接口,于是就采用总线对单片机程序进行IAP升级,这时,孔丙火(微信公众号:孔丙火)用到的就是bin文件。
这篇文章就讲一下用keil生成bin文件的方法,且是最权威的方法,为什么这么说呢,因为方法来自于keil的帮助文件,官方的,当然最权威。如图1所示,这是keil的帮助文件的截图,大段的文字大略看一下即可,只要按照给的例子做就可以了。

图1
还是以孔丙火(微信公众号:孔丙火)前面文章中的FreeModbus从站设计的单片机程序做为例子,如图2所示,在生成bin文件的fromelf指令要写在“After Build/Rebuild”里面。图2是完全按照帮助文件里的格式写的,FreeModbus.axf文件是编译默认生成的文件,不仅包含代码数据,而且还包含着调试信息,fromelf就是通过axf文件来生成bin文件。其实hex文件也是通过fromelf方法生成的,只不过用户操作简单,在选项中勾选一下就可以了。

图2
按照图2设置好后,Rebuild,但提示如图3所示的错误,显示找不到FreeModbus.axf文件,这个应该是路径的问题,但跟帮助文件里写的是一样的啊。在这张图中,也可以看出hex文件也是通过FromELF生成的。后来经过试验发现,keil MDK工程里默认的路径是MDK-ARM,这个从图4的设置选项里可以看出。在图4中,如果选中MDK-ARM文件夹,Create Executable显示的是.\FreeModbus,FreeModbus是生成的目标文件的名字,./表示相对路径,说明默认路径是MDK-ARM文件夹。

图3

图4

图5
如5所示,FreeModbus.axf文件其实是在MDK-ARM下的FreeModbus文件夹下,所以图2中的指令应该写成:fromelf --bin --output=outfile.bin .\FreeModbus\FreeModbus.axf,就可以正常生成bin文件了,如图6所示。outfile.bin生成在MDK-ARM文件夹下,也说明了MDK-ARM文件夹是默认路径。

图6
文章在公众号(孔丙火)同步推出,欢迎查看更多系列文章。
单片机、ARM、现场总线、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。