前段時間我寫過如何利用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文件,具體用法如下:
-
二進制
+關注
關注
2文章
802瀏覽量
41868 -
keil
+關注
關注
69文章
1214瀏覽量
167732
原文標題:Keil不能正確生成.bin文件的解決辦法
文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Keil使用生成bin文件問題分析與解決辦法
如何用Keil生成bin、匯編、C與匯編混合文件?

Access數據庫不能寫問題解決辦法

關于老師發的keil軟件報錯如下: --- Error: failed to execute 'd:\Keil\C51\BIN\C51.EXE' Target not created

Keil開發環境如何生成BIN文件

評論