公司為了統(tǒng)一開發(fā)環(huán)境,將所有的基于arm的處理器開發(fā)環(huán)境統(tǒng)一為Eclipse禀酱,于是乎有了該篇日記炬守,以記錄搭建過程及使用過程中出現(xiàn)的各種問題。網(wǎng)絡(luò)中有很多關(guān)于搭建STM32開源開發(fā)環(huán)境的文章比勉,但搭建和使用中有些問題并沒有解答劳较。
一.下載相關(guān)軟件:
1.下載Eclipse集成開發(fā)環(huán)境,直接下載Eclipse IDE for C/C++ Developers目前最新版本代號(hào)為Neon浩聋。
2.下載gnu arm eclipse plugin储矩,用該插件支持arm gcc編譯器相關(guān)配置合住。
3.下載交叉編譯工具鏈,此處使用GCC ARM Embedded in Launchpad該處的工具鏈。
4.下載Build Tool工具宏娄,該工具提供編譯工程需要的相關(guān)命令如:make、rm搬葬、echo等斟或。
二.搭建開發(fā)環(huán)境:
1.將下載好的Eclipse壓縮包解壓到期望的安裝位置,比如D:\Program Files环凿,同時(shí)為了方便使用梧兼,建立桌面快捷方式。
2.安裝gnu arm eclipse 插件智听。打開Eclipse 點(diǎn)擊菜單[Help]>[Install New Software...]進(jìn)入插件安裝界面:
在彈出界面點(diǎn)擊1.[add...] 然后在彈出窗口點(diǎn)擊2.[Archive...]選擇下載的gnu arm eclipse插件文件羽杰。
點(diǎn)擊ok按鈕彈出如下界面,選擇需要安裝的插件到推,此處選擇全部安裝考赛。
點(diǎn)擊[Next]按鈕,等待進(jìn)度條完成莉测,在彈出窗口選擇[Accept]颜骤,點(diǎn)擊[Finish]完成安裝。
3.安裝交叉編譯工具鏈捣卤。
4.安裝Build Tools忍抽。
通過上述步驟開發(fā)環(huán)境已經(jīng)完全安裝成功,下面需要打開Eclipse配置交叉編譯工具董朝、Build Tools的路徑梯找。
打開Eclipse點(diǎn)擊[Windows] > [preference] 打開配置窗口,點(diǎn)擊C/C++選項(xiàng)益涧,然后點(diǎn)擊[Global Tools Paths]選項(xiàng)锈锤,如下圖,在窗口右側(cè)設(shè)置Build Tools路徑以及交叉編譯工具鏈路徑,可以手動(dòng)選擇安裝路徑久免,也通過[Restore Defaults]按鈕自動(dòng)設(shè)置路徑浅辙。
自此開發(fā)編譯環(huán)境安裝、配置完成阎姥,可以進(jìn)行項(xiàng)目開發(fā)了
三.使用過程出現(xiàn)問題:
1.未指定浮點(diǎn)支持選項(xiàng)记舆,編譯時(shí)會(huì)出現(xiàn)如下錯(cuò)誤:
Error: selected processor does not support `vstmdbeq r0!,{s16-s31}' in Thumb mode
解決該問題通過設(shè)置項(xiàng)目屬性中[C/C++ Build] > Setting 窗口中的Tool Setting選項(xiàng)[Target Process]子項(xiàng)中的[Float ABI],根據(jù)需要設(shè)置為軟件浮點(diǎn)呼巴、硬件浮點(diǎn)泽腮,同時(shí)修改[FPU]下拉選項(xiàng),選擇具體實(shí)現(xiàn)衣赶。
2.未定義'_exit' 和 '_sbrk'錯(cuò)誤:
exit.c:(.text.exit+0x16): undefined reference to `_exit'
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
解決該問題需要在[C/C++ Build] > Setting 窗口中的Tool Setting選項(xiàng)[Cross Arm C Linker]子項(xiàng)[Miscellaneous]中添加'--specs=nosys.specs'诊赊。
3.在工程中屏蔽不需要編譯的文件:
在編譯工程時(shí)往往需要屏蔽一些文件,但又不想將其刪除府瞄,可以通過設(shè)置[C/C++ General]選項(xiàng)中子項(xiàng)[Paths and Symbols]中[Source Location]窗口中的Filters碧磅,來批量屏蔽不需要編譯的文件。
4.匯編文件必須以大寫的'.S'結(jié)尾遵馆,小寫的'.s'文件默認(rèn)不進(jìn)行編譯鲸郊。