Keil不能正確生成.bin文件的解決辦法

轉自:http://www.elecfans.com/d/828601.html

前段時間我寫過如何利用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文件,具體用法如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章