最近的項目上使用内部Flash存儲程序代碼,外部Flash儲存圖片文字等數據,無線更新的時候隻更新内部Flash,那麼就需要從程序中将内部Flash的二進制文件生成出來,接下來就開始操作吧!
2.工程建立首先我選擇TouchGFX生成工程,這裡選擇了STM32L4R9I_DISCOVERY這個開發套件,然後選擇官方提供的Demo,最終界面圖如下圖1。
然後生成代碼,點擊圖1的【Generate Code】,這個軟件的使用等後面有機會出一個連載教程,這裡就不多說明了,然後生成代碼成功後,打開分散加載文件,打開方式如圖2。
通過圖3可以看到程序部分存儲在内部Flash,圖片和文字數據存儲在外部Flash。
3.生成BIN文件
這時候添加一串生成BIN文件的命令。
- fromelf --bin --output STM32L4R9I_DISCOVERY\BIN_Data.BIN STM32L4R9I_DISCOVERY\STM32L4R9I_DISCOVERY.axf
複制代碼
添加在如圖4所示位置,這個位置是編譯通過之後會執行的命令。
編譯一下,查看生成的BIN文件,可以看到一個奇怪的現象,生成了一個為【Bin_Data.BIN】的文件夾,如圖5所示。
進入文件夾之後可以看到兩個文件,分别是【ER_EROM1】和【ER_IROM1】兩個文件,如圖6但是文件類型未知。
雖然這個文件也是一個BIN文件,隻是後綴名不正确,我們用【WinHex】軟件打開其中一個文件如圖7,可以看到文件是可以被正常打開的,内容也是正确的。
但是這個文件後綴不太如意,這時候我發現了一件事,文件名與分散加載文件中的某一些名字一樣,那麼我如果修改這個名字是不是可以達到我想要的以BIN為後綴的文件,說做就做,把文件中的名稱加上【.BIN】後綴,如圖8所示。
然後将生成的文件夾名字中的【.BIN】删除,如圖9,修改後的代碼如下。
- fromelf --bin --output STM32L4R9I_DISCOVERY\BIN_Data.BIN STM32L4R9I_DISCOVERY\STM32L4R9I_DISCOVERY.axf
複制代碼
編譯一下,可以看到生成的了一個新的【BIN_Data】的文件夾,如圖10。
點擊進去後可以看到這兩個文件名有了【.BIN】的後綴如圖11,說明我猜想的沒有問題。
4.總結
生成BIN文件的整體操作其實很簡單,但是在網上找不到相關的教程,所以就寫了一篇,對于文中提到的【分散加載文件】的教程網上也比較少,網上都是一些官方的說明,下一篇我寫一下【分散加載文件】的使用,讓你靈活分配内存。
原标題:【Keil使用記錄】Part1:使用Keil生成内部和外部BIN文件
原創作者:二哲科技
本文為21ic原創獎勵作品,詳情請見21ic論壇活動專區:第一屆萬元紅包——藍V達人原創獎勵活動,如果您也有興趣參與征文,歡迎進入論壇參與活動~
,