標籤:
Eclipse+CDT+YAGARTO+J-Li;開源開發環境搭建與調試;Chongqing;郵箱:[email protected];文檔版本:V1.0;發布日期:2014-08-04;前言;此文檔本著開源精神,基於LGPL協議發布;因網上開源的單片機、微控制器開發平台資訊很少,故;因用ARM公司的KeiluVision開發環境開;因Eclipse是一個
Eclipse + CDT + YAGARTO + J-Link,STM32
開源開發環境搭建與調試
作者 :Chongqing
郵箱 :[email protected]
文檔版本 :V1.0
發布日期 :2014-08-04
前言
此文檔本著開源精神,基於LGPL協議發布。如有修訂及重新發布,請標明原始作者、郵箱、原始版本及修訂日期。
因網上開源的單片機、微控制器開發平台資訊很少,故發布此文檔,以饗讀者。
因用ARM公司的Keil uVision開發環境開發單片機、微控制器並發布商業產品涉及著作權問題,需要支付不菲的授權使用費,這對中小型公司來說是筆不小的開銷。故尋找Keil uVision的替代方案。
因Eclipse是一個開源的開發平台,並且支援各種外掛程式的開發,因此可以以Eclipse + CDT + YAGARTO + J-Link的方式搭建開源開發平台。
Eclipse是一個開源、免費、跨平台、支援外掛程式擴充的Java、C/C++等整合式開發環境。Eclipse通過CDT可以比較好的支援C/C++的開發,讀者可以到Eclipse官網直接下載CDT版本的Eclipse。在Eclipse中添加GNU ARM Eclipse外掛程式,與YAGARTO GNU ARM Toolchain和J-link模擬調試器結合,就可以比較好地支援STM32的開發與調試。
但是Eclipse有其缺點。Eclipse做Java開發比較方便,代碼編輯與提示、代碼編譯都很方便,但是針對C/C++的代碼提示不方便。Eclipse臃腫,代碼編譯速度慢。Eclipse的GNU ARM 環境配置複雜,調試不便。在這裡,本人還是推薦使用Em::Blocks。Em::Blocks小巧,不像Keil uVision那麼大,也不像Eclipse那般臃腫。Em::Blocks安裝、配置相對Keil uVision更簡單方便,Eclipse的環境配置相對更複雜,更容易出錯。Em::Blocks的代碼編輯環境相當智能化,相對Keil uVision好很多,相比Eclipse也毫不遜色。Em::Blocks內嵌了GNU編譯器,代碼的編譯速度是Keil uVision和Eclipse不能比擬的。Em::Blocks內嵌對幾種JTAG模擬調試器的支援,調試時方便快捷,相比Keil uVision也毫不遜色。Eclipse的代碼提示、配置、編譯、調試的體驗很差,在此不贅述。Em::Blocks STM32開發環境的搭建在《EmBlocks + J-Link,STM32開源開發環境搭建與調試》這一文檔中有詳述。
開發環境
系統: Windows 7旗艦版。
開發工具:
1、
2、 因為Eclipse是用Java開發的,所以需要Java的運行環境,只要下載安裝jre即可,這裡我們下載安裝
(包含jre), Windows x86,32_bit;
3、 要使Eclipse支援ARM開發,需要下載安裝一個外掛程式:(ilg.gnuarmeclipse.repository-1.8.1-201401111229.zip);
因為我們下載的Eclipse IDE for C/C++ Developers中已經包含CDT外掛程式,無需我們手動安裝,4、 CDT外掛程式,
如果你下載的是別的版本的Eclipse,需要你自己手動安裝CDT外掛程式;
5、 YAGARTO,GNU ARM toolchain:
官網:,工具下載官網:
下載安裝:(yagarto-tools-20121018-setup.exe) 和(yagarto-bu-2.23.1_gcc-4.7.2-c-c++_nl-1.20.0_gdb-7.5.1_eabi_20121222.exe),:
;
6、 J-Link驅動工具包:Setup_JLinkARM_V434d.zip。
,版本:4.3.1,32_bit;
安裝交叉編譯工具:
1、 上面的工具都下載好以後,先安裝好Java SE Development Kit 7u51、YAGARTO-Tools-20121018(先於YAGARTO
GNU ARM toolchain安裝)、YAGARTO GNU ARM toolchain和J-Link驅動工具包;
2、 解壓Eclipse到指定目錄,進入目錄,開啟eclipse.exe,配置好Eclipse工作目錄;
3、 安裝GNU ARM Eclipse Plug-in外掛程式,Eclipse?Help?Install New Softwares,點擊“Work with”右邊的“Add”,
點擊彈出的框中“Name”右邊的“Local…”,加上解壓後的GNU ARM Eclipse Plug-in外掛程式目錄,點OK,然後一步步下去,直到Eclipse重啟;
Eclipse配置:
1、Eclipse編碼格式配置:
(1) Window?Preferences,左側導航樹到general?Workspace,右側“Text file encoding”,選擇“Other”,
改為“UTF-8”;
(2) Window?Preferences,左側導航樹到general?Content Types,右側“Content types”樹,點開“Text”,
選中“C Source File”,在下面的Default encoding框中填上“UTF-8”,點擊右邊的“Update”;
2、顯示行號:Window?Preferences?General?Editors?Text Editors,選中右側的“Show line numbers”複選框,另外把“Insert spaces for tabs”複選框選中,用空格代替tab,以便代碼用別的編譯器編譯時間,出現代碼對齊問題;
3、修改字型:Window?Preferences?General?Appearance?Colors and Fonts,在右側樹形列表中選擇C/C++?Editor?
編輯文本字型即可;
4、修改預設代碼格式:Window?Preferences?C/C++?Code Style?Formatter,單擊右側的“New”建立一個格式化配置,修改配置,然後儲存即可。還可以通過“Export All”匯出配置,重裝Eclipse時只要匯入該配置即可;
5、顯示空格和定位字元:Window?References?General?Editors?Text Editors,選中右側“Show whitespace characters”,還可以點擊“configure visibility”來選擇要顯示的空白字元,這裡可以取消“Carriage Return”和“Line Feed”的“Trailing”顯示;
6、顯示最大列寬範圍:一般的代碼規範會要求代碼的最大列寬為80個字元,Eclipse提供最大列寬提示界線:Window?Preferences?General?Editors?Text Editors,右邊選中“Show print margin”;
7、為防止在Eclipse外部修改工程目錄中的檔案引起檔案不同步導致“Resource ‘項目名’ is out of sync with file system.”的問題,解決辦法:Window?Preferences?General?Workspace,右邊選中“Refresh using native hooks or polling”和“Refresh on access”
8、修改過的代碼不用儲存直接編譯:Window?Preferences?General?Workspace,右邊選中“Save automatically before build”;
,點擊右邊的“Edit”,
編譯配置:
1、 Ctrl + n,建立新項目,選擇C/C++下的“C Project”,點“Next”,在彈出框中選擇
和,添加上項目名稱,點“Next”,在
彈出的框中設定處理器參數,因為我們的處理器是STM32F103VET6,所以Chip family改為
,Flash size改為512,RAM size改為64,“Next”、 “Next”、
“Next”,到Cross GUN ARM Toolchain框,Toolchain name改為
,Toolchain path改為
YAGARTO
GNU ARM toolchain的路徑,如
Explorer”中看到項目的結構; ,點OK後,就可以在Eclipse的“Project
2、 右擊項目名?Properties,C/C++ Build?Tool Chain Editor,把右邊的Current builder改為
;
3、 配置好後,把自己的.c檔案放到項目根目錄的src目錄下,.h檔案放到項目根目錄的include目錄下,選中
Eclipse分類樹,右鍵Refresh或者F5重新整理,就可以看到剛才添加的檔案了,點擊
看到編譯產生hex檔案了。
4、 剛開始我們的代碼預設為Debug模式,若想修改為Release模式,右鍵項目名稱?Preperties,在彈出框的
左側樹形目錄中選擇C/C++ Build?Tool Chain Editor,點擊右上方的“Manage Configurations”,在彈出的框中選中Release?點擊Set Active?點擊OK;然後Crtl + B,先產生Release版本的elf和hex檔案;開啟Debug Configurations?在彈出的框中,點擊
頁下,點擊,在下自訂的配置,在右側的main標籤下面的框中,選擇Release版本的elf檔案,點擊“OK”,完成; 或者Ctrl + B,就可以
5、 如果已經有Eclipse項目,可以匯入現存項目:File?Import或者右鍵Eclipse分類樹?Import,在彈出的框
中選General?
和
到此,編譯配置完成
?next,Select root directory選擇項目根目錄,選中,點擊“Finish”完成;
調試配置:
1、 開啟Debug Configurations?在彈出的框中,雙擊左邊樹形
2、 在右邊的Main標籤頁下,C/C++ Application文字框下面,點擊,在彈出的框中已經預設為,產生新的配置;
產生的elf檔案和預設的Debug產生的elf檔案,如果要改為Release產生的檔案,以後再改;
3、 在Debugger標籤頁下,GDB Command文字框,選擇安裝的YAGARTO編譯器的GDB調試工具,如:
,如果在安裝YAGARTO時,YAGARTO已經自動修改了環境變數,可
以直接填入“arm-none-eabi-gdb.exe”;Port number改為2331;JTAG Device改為Generic TCP/IP(如果不行,改為J-Link);
4、 在Startup標籤頁下,在Initialization Commands文字框中,輸入以下內容:
monitor flash device = STM32F103VE
monitor flash download = 1
monitor flash breakpoints = 1
monitor clrbp
monitorendianlittle;monitorspeed5;monitorreset;monitorsleep100;monitorspeedauto;monitorwriteu320xE000ED0;註:其中,monitorflashdevice需;RunCommands文字框中填入以下內容:;monitorregr13=(0x0000000;mo
monitor endian little
monitor speed 5
monitor reset
monitor sleep 100
monitor speed auto
monitor writeu32 0xE000ED08 = 0x00000000
註:其中,monitor flash device需要根據自己的STM32裝置自行修改;
Run Commands文字框中填入以下內容:
monitor reg r13 = (0x00000000)
monitor reg pc = (0x00000004)
break main
continue
註:請不要勾選Runtime Option中的選項。
然後點擊Apply,請確保GDB Server(如從開始菜單開啟SEGGER J-Link GDB Server V4.34d)已經開啟,並且串連正常,點擊Debug開始調試。
到此,Eclipse + CDT + YAGARTO + J-Link,STM32開源開發環境搭建全部完成。
幾種編譯環境的比較
1、 Keil uVision + J-link
Keil uVision是ARM公司提供的主要用於微控制器領域的整合式開發環境。比較穩定可靠,對各種晶片都有比較好的支援。Keil uVision產生的目標代碼效率很高,彙編代碼緊湊,容易理解。缺點是Keil uVision需要不菲的授權費,對中小型公司來說不適合用其開發商業軟體;Keil uVision的項目構建與配置不是很方便;Keil uVision的代碼編輯不是很方便。
2、 Eclipse + CDT + YAGARTO + J-link
Eclipse作為開源的開放開發平台,YAGARTO作為開源的GNU開發工具鏈,結合起來可以提供一個比較好的開源STM32開發環境。Eclipse的原始碼編輯環境非常友好,可以加快原始碼的編輯速度。Eclipse主要用來開發JAVA,可以通過CDT外掛程式支援C/C++的開發,但是Eclipse臃腫、緩慢,對C/C++的開發支援不是很友好,C/C++原始碼編輯環境不如JAVA方便。在Eclipse中安裝GNU ARM Eclipse Plug-in外掛程式、配置編譯與調試環境比較繁瑣,很容易出錯,在調試的時候,要先開啟J-link GDB Server,再到調試介面進行調試,調試時CPU不能Reset,每次調試都要重新燒寫Flash,費時,同時頻繁燒寫Flash也減短Flash壽命。
3、 Em::Blocks + J-link
Em::Blocks整合式開發環境基於Code::Blocks整合式開發環境。Code::Blocks是一個開源、免費、跨平台、支援外掛程式擴充的C/C++整合式開發環境。Code::Blocks支援多種應用的開發,並且小巧、穩定、可靠、快速,是一款功能非常強大的整合式開發環境。Em::Blocks繼承了Code::Blocks的優點,只針對嵌入式平台做開發,並針對嵌入式開發環境做了最佳化。Em::Blocks內嵌了GNU ARM編譯器,同時內嵌對J-link等JTAG模擬調試器的支援。在安裝Em::Blocks時不需要對GNU ARM和J-link做太多配置。編譯代碼非常快速。代碼編輯、代碼提示相對Keil uVision做得很出色,相比Eclipse也毫不遜色。建立工程非常方便,Em::Blocks根據建立工程時選擇的處理器自動添加韌體庫代碼,只要添加上自己的項目代碼就可以。在調試時,Em::Blocks會自動調用J-link GDB Server,也可以Reset CPU,也可以在RAM中執行程式從而減少燒寫Flash。
Em::Blocks相對Keil uVision開源、免費,同時工程管理方便,代碼編輯、提示都很優秀;Em::Blocks相對Eclipse小巧、快速,內嵌對GNU和J-link的支援,配置非常方便,調試自動調用J-link,可以Reset CPU,大大簡化在Eclipse下的操作。Em::Blocks是一款非常強大、對嵌入式開發支援非常友好的整合式開發環境。
Eclipse + CDT + YAGARTO + J-Link,STM32開源開發環境搭建與調試