STM32開源開發(fā)環(huán)境的搭建
1.環(huán)境搭建1.1 Eclipse的下載與安裝
Eclipse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。由于eclipse只是一個IDE,因此需要借助其他插件以及軟件來搭建完整的開發(fā)環(huán)境,也正是因為如此eclipse具有很大的靈活性。
因此首先下載安裝eclipse,下載地址:
http://www.eclipse.org/downloads/
下載頁面如圖1.1所示。
圖1.1 eclipse下載界面
由于是針對C開發(fā),所以下載Eclipse IDE for C/C++ Developers版本,這個版本已經集成了CDT插件便于C語言的開發(fā)。
1.2 JRE的下載與安裝下載的eclipse是一個綠色軟件,并不需要安裝,雙擊就可以直接運行,但是由于eclipse是基于java開發(fā),因此系統(tǒng)中必須安裝了JDK或者JRE,這里使用JRE,下載地址如下:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
如果覺得官網下載比較麻煩可以到這兒下載:
http://www.skycn.com/soft/27213.html
java的下載界面如圖1.2所示。
圖1.2 java下載界面
JDK是Java Development Kit是面向開發(fā)人員使用的SDK,它提供了Java的開發(fā)環(huán)境和運行環(huán)境。JRE是Java Runtime Enviroment是指Java的運行環(huán)境,是面向Java程序的使用者,而不是開發(fā)者。因此我們只需要安裝JRE就可以。由于在運行eclipse的時候必須要在后臺運行java虛擬機,因此對內存和CPU占用較大,有時會比較卡。
1.3 GNU ARM Eclipse Plug-in的下載與安裝要搭建針對ARM的開發(fā)環(huán)境還需要下載針對ARM開發(fā)的插件,這樣才能夠新建針對ARM開發(fā)的項目,這里使用GNU ARM Eclipse Plug-in,下載地址如下:
http://sourceforge.net/projects/gnuarmeclipse/
下載界面如圖1.3所示。
圖1.3 GNU ARM Eclipse Plug-in下載界面
安裝eclipse的安裝方式安裝插件之后再新建項目就可以看到ARM的項目了,如圖1.4所示。
圖1.4安裝插件之后的新建工程界面
1.4 Sourcery G++ Lite的下載與安裝前面只是安裝了一個工具,要完成ARM的開發(fā)還需要安裝一個完整的軟件開發(fā)環(huán)境,從GNU ARM Eclipse Plug-in這個插件的支持也可以看到如圖4所示,他所支持的有四種WinARM、Sourcery G++ Lite、Yagarto、devkitPro四種,其中前兩種較為有名,WinAVR在之前做AVR等單片機設計的時候已經用的很多,也很方便,但是WINARM之前的很多版本并不支持STM32的cortex-M3內核,雖然WinARM_20080331_testing版本支持但是在測試時遇到了麻煩,支持的并不是太好而且已經停止了更新,因此放棄此種方案。Sourcery G++是一個基于GNU工具鏈的完整的軟件開發(fā)環(huán)境,目前仍在更新,通過比較選擇Sourcery G++作為開發(fā)環(huán)境,Sourcery G++本身是付費的但是Sourcery G++ Lite版本是免費的,我們采用免費版本。下載地址如下:
http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite
下載界面如圖1.5所示。
圖1.5軟件下載界面
通過下載界面可以可以知道Sourcery G++ Lite有4中版本,其中EABI是針對底層也就是不包含任何系統(tǒng)的開發(fā)的,我們就使用這個版本。Sourcery G++ Lite是采用安裝包的方式,相對于以前用的Cygwin等在安裝上很方便,只需點擊下一步就可以,安裝之后Eclipse能夠自己找到,無需再手動加入環(huán)境變量。
這樣一個基本的開發(fā)環(huán)境便搭建完成,針對STM32我們使用了ST公司的官方固件庫,這樣可以減少對底層硬件的關心,縮短開發(fā)周期,同時有利于程序的穩(wěn)定性和規(guī)范性,因此我們在搭建的開發(fā)環(huán)境中對固件庫進行編譯,ST的固件庫有很多版本,各版本之間有的差異也比較大,我們采用的是3.1版本,相對比較新,ST公司也不斷有新的版本發(fā)布,下載地址:
http://www.st.com/stonline/products/support/micro/files
包含了固件庫之后的開發(fā)界面如圖1.6所示。
圖1.6完整的開發(fā)環(huán)境界面
2.工程配置2.1新建工程使用配置好的開發(fā)環(huán)境新建一個工程,如圖2.1所示。
圖2.1新建工程界面
新建一個工程,點擊Finish之后會進入工程界面,如果環(huán)境配置正確,工程中會自動包含相關的文件,如圖2.2所示。包含的文件應該為Sourcery G++ Lite的安裝目錄。
圖2.2新建工程之后的包含文件
接下來是準備相關的文件,為了更好的進行STM32開發(fā),我使用ST提供的固件庫,可以從網上下載,我現(xiàn)在用的是最新版本3.4,其他版本可能類似。
固件庫的文件名為STM32F10x_StdPeriph_Lib_V3.4.0,首先把STM32F10x_StdPeriph_Lib_V3.4.0Libraries文件夾拷貝到剛剛建立的工程文件目錄下。這是編譯時候需要調用的固件庫。
2.2鏈接與啟動文件接下來需要找出Linker所需的ld文件,由于在固件庫中ST提供了一些編譯器的工程模板,因此可以使用模板中的配置文件。TrueSTUDIO文件夾下存在幾個文件夾。TrueSTUDIO是ST官方的編譯器,也是GCC的,因此使用它模板中的配置文件。打開STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_TemplateTrueSTUDIO可以看到在在目錄下有幾個文件夾,因為我用的是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文件一樣,打開目錄如下:
workspaceGCCTESTLibrariesCMSISCM3DeviceSupportSTSTM32F10xstartupTrueSTUDIO
里面同樣有很多文件,因為我用的是STM32F103ZET6所以我選擇startup_stm32f10x_hd.S這個文件,猜測對應的就是STM32的大容量,這一點應該是一致的,注意要把擴展名改為大S,拷到startup目錄下,把其他多余的都刪掉。
2.3其他文件在工程根目錄下新建一個User的文件夾,拷貝一個例程到文件中,固件庫中給了很多例程,我拷貝STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_ExamplesGPIOIOToggle這個例程,將IOToggle下面的所有文件拷貝到User文件夾下。這樣所有的文件就準備好了。
2.4配置工程回到eclipse的界面,按F5鍵,可刷新當前的工作目錄,這樣剛剛添加的文件就會在項目窗口顯示出來,如圖2.3所示。
圖2.3文件添加完畢之后的項目窗口
這個時候如果直接去編譯肯定出錯,因此我們需要對工程進行設置,接下來設置工程,右鍵點擊工程,選擇“properties”菜單。點擊C/C++ Build-Settings設置界面如圖2.4所示
圖2.4設置界面
點擊Target Processor選擇All configurations處理器選擇cortex-m3,如圖2.5所示。
圖2.5處理器選擇
如圖2.6所示,添加兩條編譯預定義STM32F10X_HD,USE_STDPERIPH_DRIVER。STM32F10X_HD和前面的鏈接與啟動文件對應,表示是大容量期間(我猜測的)。USE_STDPERIPH_DRIVER表示使用固件。
圖2.6添加編譯預定義
接下來添加文件包含路徑,為了防止工程找不到對應的頭文件需要把相應的路徑添加進去,和上面添加的方法類似,點擊添加按鈕,在路徑上選擇workspace,依次將工程目錄下有頭文件的文件夾都給包含進去。如圖2.7所示。
圖2.7添加文件包含路徑
接下來添加鏈接文件,如圖2.8所示,添加前面準備好的鏈接文件。
圖2.8添加鏈接文件