Eclipse+ GNU ARM Eclipse Plug-in+Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的開源開發環境。
這個教程是去年剛開始做STM32的時候寫的,當時還沒開始用STM32,先琢磨了免費的開發環境搭建,是以寫的這個教程可能有很多錯誤,最近在網上看到很多人在論壇裡轉載了這個教程,由于當初我在ourdev論壇上隻是貼出了文字,并上傳了一個pdf版本,是以這次在部落格裡更新一下。文章中的内容暫時不更新了,後面會重新寫一個教程,歡迎大家關注我的部落格。
--emouse
Eclipse 是一個開放源代碼的、基于 Java 的可擴充開發平台。就其本身而言,它隻是一個架構和一組服務,用于通過插件元件建構開發環境。由于eclipse隻是一個IDE,是以需要借助其他插件以及軟體來搭建完整的開發環境,也正是因為如此eclipse具有很大的靈活性。
是以首先下載下傳安裝eclipse,下載下傳位址:
<a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a>
下載下傳頁面如圖1.1所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102118387076.jpg"></a>
圖1.1 eclipse下載下傳界面
由于是針對C開發,是以下載下傳Eclipse IDE for C/C++ Developers版本,這個版本已經內建了CDT插件便于C語言的開發。
下載下傳的eclipse是一個綠色軟體,并不需要安裝,輕按兩下就可以直接運作,但是由于eclipse是基于java開發,是以系統中必須安裝了JDK或者JRE,這裡使用JRE,下載下傳位址如下:
<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>
如果覺得官網下載下傳比較麻煩可以到這兒下載下傳:
<a href="http://www.skycn.com/soft/27213.html">http://www.skycn.com/soft/27213.html</a>
java的下載下傳界面如圖1.2所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102118447462.jpg"></a>
圖1.2 java下載下傳界面
JDK是Java Development Kit是面向開發人員使用的SDK,它提供了Java的開發環境和運作環境。JRE是Java Runtime Enviroment是指Java的運作環境,是面向Java程式的使用者,而不是開發者。是以我們隻需要安裝JRE就可以。由于在運作eclipse的時候必須要在背景運作java虛拟機,是以對記憶體和CPU占用較大,有時會比較卡。
要搭建針對ARM的開發環境還需要下載下傳針對ARM開發的插件,這樣才能夠建立針對ARM開發的項目,這裡使用GNU ARM Eclipse Plug-in,下載下傳位址如下:
<a href="http://sourceforge.net/projects/gnuarmeclipse/">http://sourceforge.net/projects/gnuarmeclipse/</a>
下載下傳界面如圖1.3所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102118586533.jpg"></a>
圖1.3 GNU ARM Eclipse Plug-in下載下傳界面
安裝eclipse的安裝方式安裝插件之後再建立項目就可以看到ARM的項目了,如圖1.4所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102119152831.jpg"></a>
圖1.4 安裝插件之後的建立工程界面
前面隻是安裝了一個工具,要完成ARM的開發還需要安裝一個完整的軟體開發環境,從GNU ARM Eclipse Plug-in這個插件的支援也可以看到如圖4所示,他所支援的有四種WinARM、Sourcery G++ Lite、Yagarto、devkitPro四種,其中前兩種較為有名,WinAVR在之前做AVR等單片機設計的時候已經用的很多,也很友善,但是WINARM之前的很多版本并不支援STM32的cortex-M3核心,雖然WinARM_20080331_testing版本支援但是在測試時遇到了麻煩,支援的并不是太好而且已經停止了更新,是以放棄此種方案。Sourcery G++ 是一個基于 GNU 工具鍊的完整的軟體開發環境,目前仍在更新,通過比較選擇Sourcery G++作為開發環境,Sourcery G++本身是付費的但是Sourcery G++ Lite版本是免費的,我們采用免費版本。下載下傳位址如下:
<a href="http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite">http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite</a>
下載下傳界面如圖1.5所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102119176994.png"></a>
圖1.5 軟體下載下傳界面
通過下載下傳界面可以可以知道Sourcery G++ Lite有4中版本,其中EABI是針對底層也就是不包含任何系統的開發的,我們就使用這個版本。Sourcery G++ Lite是采用安裝包的方式,相對于以前用的Cygwin等在安裝上很友善,隻需點選下一步就可以,安裝之後Eclipse能夠自己找到,無需再手動加入環境變量。
這樣一個基本的開發環境便搭建完成,針對STM32我們使用了ST公司的官方固件庫,這樣可以減少對底層硬體的關心,縮短開發周期,同時有利于程式的穩定性和規範性,是以我們在搭建的開發環境中對固件庫進行編譯,ST的固件庫有很多版本,各版本之間有的差異也比較大,我們采用的是3.1版本,相對比較新,ST公司也不斷有新的版本釋出,下載下傳位址:
http://www.st.com/stonline/products/support/micro/files
包含了固件庫之後的開發界面如圖1.6所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/20111010211922468.jpg"></a>
圖1.6 完整的開發環境界面
使用配置好的開發環境建立一個工程,如圖2.1所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102119582112.jpg"></a>
圖2.1 建立工程界面
建立一個工程,點選Finish之後會進入工程界面,如果環境配置正确,工程中會自動包含相關的檔案,如圖2.2所示。包含的檔案應該為Sourcery G++ Lite的安裝目錄。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102120016798.png"></a>
圖2.2 建立工程之後的包含檔案
接下來是準備相關的檔案,為了更好的進行STM32開發,我使用ST提供的固件庫,可以從網上下載下傳,我現在用的是最新版本3.4,其他版本可能類似。
固件庫的檔案名為STM32F10x_StdPeriph_Lib_V3.4.0,首先把STM32F10x_StdPeriph_Lib_V3.4.0\Libraries檔案夾拷貝到剛剛建立的工程檔案目錄下。這是編譯時候需要調用的固件庫。
接下來需要找出Linker所需的ld檔案,由于在固件庫中ST提供了一些編譯器的工程模闆,是以可以使用模闆中的配置檔案。TrueSTUDIO檔案夾下存在幾個檔案夾。TrueSTUDIO是ST官方的編譯器,也是GCC的,是以使用它模闆中的配置檔案。打開STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Template\TrueSTUDIO可以看到在在目錄下有幾個檔案夾,因為我用的是STM32F103ZET6是以我選擇STM3210E-EVAL檔案下的stm32_flash.ld,通過記事本打開檢視,部分内容摘錄如下:
** File : stm32_flash.ld
** Abstract : Linker script for STM32F103ZE Device with
** 512KByte FLASH, 64KByte RAM
** Set heap size, stack size and stack location according
** to application requirements.
** Set memory bank area and size if external memory is used.
猜測應該是我要找的,複制檔案到工程根目錄下。
接下來要找到工程的啟動檔案,和linker檔案一樣,打開目錄如下:
workspace\GCCTEST\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\TrueSTUDIO
裡面同樣有很多檔案,因為我用的是STM32F103ZET6是以我選擇startup_stm32f10x_hd.S這個檔案,猜測對應的就是STM32的大容量,這一點應該是一緻的,注意要把擴充名改為大S,拷到startup目錄下,把其他多餘的都删掉。
在工程根目錄下建立一個User的檔案夾,拷貝一個例程到檔案中,固件庫中給了很多例程,我拷貝STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Examples\GPIO\IOToggle這個例程,将IOToggle下面的所有檔案拷貝到User檔案夾下。這樣所有的檔案就準備好了。
回到eclipse的界面,按F5鍵,可重新整理目前的工作目錄,這樣剛剛添加的檔案就會在項目視窗顯示出來,如圖2.3所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102120128740.png"></a>
圖2.3 檔案添加完畢之後的項目視窗
這個時候如果直接去編譯肯定出錯,是以我們需要對工程進行設定,接下來設定工程,右鍵點選工程,選擇“properties”菜單。點選C/C++ Build-Settings設定界面如圖2.4所示
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102120144049.jpg"></a>
圖2.4 設定界面
點選Target Processor選擇All configurations 處理器選擇cortex-m3,如圖2.5所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102120217816.jpg"></a>
圖2.5 處理器選擇
如圖2.6所示,添加兩條編譯預定義STM32F10X_HD,USE_STDPERIPH_DRIVER。STM32F10X_HD和前面的連結與啟動檔案對應,表示是大容量期間(我猜測的)。USE_STDPERIPH_DRIVER表示使用固件。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102120244105.jpg"></a>
圖2.6 添加編譯預定義
接下來添加檔案包含路徑,為了防止工程找不到對應的頭檔案需要把相應的路徑添加進去,和上面添加的方法類似,點選添加按鈕,在路徑上選擇workspace,依次将工程目錄下有頭檔案的檔案夾都給包含進去。如圖2.7所示。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/20111010212036833.jpg"></a>
圖2.7 添加檔案包含路徑
接下來添加連結檔案,如圖2.8所示,添加前面準備好的連結檔案。
<a href="http://images.cnblogs.com/cnblogs_com/emouse/201110/201110102120451303.jpg"></a>
圖2.8 添加連結檔案
本文轉自emouse部落格園部落格,原文連結:http://www.cnblogs.com/emouse/archive/2011/10/10/2206584.html,如需轉載請自行聯系原作者