Eclipse + CDT + YAGARTO + J-Link,STM32開源開發環境搭建與調試

來源:互聯網
上載者:User

標籤:

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開源開發環境搭建與調試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.