STM32高階開發(15)-使用eclipse開發STM32
在最起初的時候,我剛剛接觸linux上微控制器的開發,最喜歡的就是 eclipse + arm-plug-in + arm-none-eabi 的開發環境,因為這是在Linux上最接近於windows下keil、IAR等IDE的開發方式,然而那是由於對eclipse亦或是makefile等編譯過程中的工具的不甚瞭解,很多時候會遇到一些莫名的錯誤,也導致了那是覺得這樣的環境很鬼畜,現在看來多是一些很淺顯的問題,直到最近我再一次的嘗試了eclipse開發環境的搭建和使用,我才很順利的完成了程式的配置。現在也把這個方法推薦給大家,不過在使用這個方式前,還是建議大家先把之前的文章內容看懂了,否則很多時候遇到問題都會不知道怎麼解決。
安裝java
與CubeMX一樣,eclipse也是執行在java環境下的,所以我們首先要在環境下安裝Java庫。方式在上一篇中已經介紹過了,這裡就不再做更多闡述了。
還有就是eclipse在顯示readme時會自動的載入markdown格式的預覽,需要系統安裝libwebkitgtk-1.0-0才能使用。
$ sudo apt-get install libwebkitgtk-1.0-0
安裝eclipse
在eclipse的官網上下載系統eclipse安裝包。注意一定下載CDT 版本的就是 Eclipse IDE for C/C++ Developers 版本,這個才是給C/C++語言開發用的版本,裡面已經預裝好了CDT的外掛。
解壓後放到自己喜歡的位置就可,我一般會把外部的程式放在使用者路徑下application的資料夾中。而後實際上我們這時候只要點選解壓後文件夾內的eclipse執行程式就能打開了。但是為了在系統選單中新增一個快捷方式,我們同樣的像上一篇中,在 /usr/share/applications/ 的路徑下新增一個desktop的檔案。
$ sudo gedit /usr/share/applications/eclipse
寫入內容,注意執行檔案路徑和圖示路徑根據自己的位置修改。
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse Platfrom
Comment=Eclipse IDE
Exec=/home/yangliu/Application/eclipse/eclipse
Icon=/home/yangliu/Application/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Development
然後我們就能在開始選單中找到eclipse的快捷方式了把它拖到我們左側的快捷啟動欄然後開啟吧~。在第一次開啟軟體後eclipse會要求設定一個工作目錄也就是日後我們預設的建立工程的目錄,我一般會選擇預設的在使用者路徑下的workspace目錄,點選use as default 就會默認了,之後我們再啟動就不會需要再點選確定了。
安裝GNU ARM Eclipse plug-ins
其實按照eclipse的特性來說,我們單純的使用CDT eclipse + 工具鏈就可以完成整個工程的編譯,但是在那種情況下要設定很多的引數,十分的麻煩。所以在這裡我們選擇安裝一個國外大神製作的arm 開發外掛,用外掛來配置我們的工程會極大的加快我們初始的工作。
這個外掛的專案主頁在這裡,裡面有安裝外掛的詳細介紹,不過我們下下面也會講到。
在下面這個網站中下載外掛的zip壓縮包,不用解壓。
開啟eclipse,點選選單欄上的help-> Install New Software
點選 add -> archive 選擇我們剛剛下載好的外掛壓縮包,eclipse就會自動讀取裡面的內容了,在選擇框內全選外掛的所有內容,然後開始安裝。之後就是一些安裝過程中的協議確認什麼的常見過程沒什麼好介紹的,等安裝完畢後,eclipse會提示重啟軟體,我們點重啟就行。
配置eclipse開發環境
在我們安裝外掛完畢後,還需要進行一些設定,來優化我們的eclipse顯示和操作,用以適應嵌入式開發,點選 windows -> preference 開啟全域性設定。然後根據一下官網的說明完成即可。除此之外我預設大家的Ubuntu中已經安裝好了arm-none-eabi 的工具鏈且配置到了系統PATH中,如果沒有請參照本系列之前的文章安裝。
匯入CubeMX工程
再配置好我們的eclipse後,我們就要開始正式的開發過程了,這裡我推薦大家使用CubeMX來生成工程模板。我們在上一章中已經教大家生成了GNU下使用的stm32工程,也嘗試使用了makefile去編譯執行它嗎,那麼我們現在來看看eclipse下怎麼編譯它吧。
點選新建工程 C project 或 C++ project ,選擇一個空工程,toolchain設定為 cross arm gcc。並在project name 的地方給工程起個名字。
之後選擇工具鏈設定其位置,並選擇編譯配置模板。最後點選finish完成。
在完成設定後,我們會在工作區看到一個空的工程。這是我們在工程上點選右鍵選擇 import ,選擇匯入檔案結構。並在選擇中工程資料夾勾選它後點擊finish 進行匯入操作。
設定編譯引數
在我們匯入後可能會看到很多的報錯和警告,我們先不要理會他們,首先我們要做的是把 startup下的 .s 彙編寫成的啟動檔案的改為 .S 因為eclipse預設是識別大寫S 為彙編文件的。我們在資源管理器中右鍵,啟動檔案 rename 修改即可。
而後我們需要右鍵資源欄中的工程設定工程引數。
在下面的介面中設定編譯引數,然後儲存我們就可以編譯了,這些引數的設定就相當於我們把makefile 變成了一個圖形化的配置介面放了過了,最後eclipse會在工程下建立一個debug目錄,並在裡面存放自動生成的makefile和編譯的中間結果及最終物件。它的實際make目錄就是在debug 下進行的。如果編譯報錯了,大家可以根據這些去看看自己是不是有些引數或路徑有問題。只要看看編譯過程中的指令輸入和後面的引數,再對應設定選單,我想大家只要看過之前的篇目就會很快理解這些小問題了。
至於一開始的報錯,我們在完成設定後,右鍵工程,選擇index -> fresh all files 來讓eclipse重建索引目錄就可以完成了。
eclipse下的特性
在eclipse下,我可以享受很多keil IAR下沒有的開發功能,比如 格式化程式碼 ,灰色顯示未啟用的 巨集定義區塊,快速查詢 函式位置等等一系列的方便功能,在windows下也就只有由 eclipse 再開發的 Truestdio 能夠與之相比。
其次eclipse也是支援執行使用者自己的makefile的,只有在make視窗中新建指令就可以實現。雙擊即可執行。
使用eclipse除錯工程
在eclipse下開發與我們之前的裸開發方式最大的不同我想也就是在除錯過程中了,我們接下來就來為大家介紹eclipse下使用 OpenOCD的除錯方式。這裡我們同樣預設我們已經安裝了OpenOCD了。
選擇debugconfig 然後在GDB OpenOCD上雙擊建立一個除錯配置。
如下根據自己的板卡設定好引數。
配置好後我們點選debug就可以愉快的開始除錯啦~。有圖形介面的除錯是不是還是挺爽的?哈~。同樣的如果這裡產生報錯我們只要檢視一下報錯指令很快就能修復。只要我們能夠理解eclipse上所有的操作只相當於幫助使用者在終端輸了一大串的指令,當我們點下一個按鈕的時候背後都是一條或多條終端指令的執行。我想對於大家這麼久以來跟著我一步一步從命令列開發走過的小夥伴,只要明白這一點,看著eclipse console下的資訊解決一些報錯和問題想來絕不是難事了。
最後幾句
最近有些忙,近期的幾篇文章可能寫的有些趕了,講的不是很詳細,如果大家遇到一些問題可以在下面留言,我會盡可能的解答的。同時在最後我也附上個參考的網址,大家可以自己去看看,裡面有很多很有一些的東西哦~。比如自動讀取RTOS任務序列啦之類的很炫酷又實用的東西,很多我都沒有自己去嘗試過,也希望大家在試驗成功後能夠寫一篇部落格,在評論區告訴我,大家多交流嘍~
樣板工程
哦對了差點忘了,放上我們配置好的樣例工程的連結,大家自己下載下去參考參考吧~。下載後記得要用匯入功能加入eclipse哦,否則會遇到一些工程路徑設定什麼的問題,需要手動修改才能正常編譯。