Eclipse搭建stm32+jlink開發環境全攻略

Eclipse搭建stm32+jlink開發環境全攻略

初級篇

前言

爲什麼需要這樣的開發環境?

  1. 免費

  2. 跨平臺

  3. 自由度高

  4. Eclipse代碼提示功能強大,MDK弱爆了

注:本人原創,轉載註明作者——by**秋之前**

email:[email protected]

一、工具:

  1. jre或者jdk

地址

  1. eclipse+CDT

地址

  1. GNU eclipse ARM插件

地址

  1. GNU ARM Toolchain

地址

  1. Jlink驅動

地址

  1. st官方標準庫

地址

  1. st官方hal庫

地址

安裝提醒:

  1. 由於並不需要用到java,所以只需用安裝jre即可,不用安裝jdk

  2. 安裝GNU ARM Toolchain時勾選將目錄加入環境變量的選項,否則請自己添加bin目錄到環境變量中

  3. 現狀Jlink驅動和GNU ARM Toolchain,然後再裝Eclipse,接着裝CDT,在接着裝GNU eclipse

    ARM插件。

  4. 插件安裝的時候,取消掉需要聯網的地址。否則安裝比較慢。

二、新建工程:

打開eclipse,選擇工作目錄,點擊File->New->C++ project

 


然後我們會發現下圖的界面,在這個界面中有STM32等工程的現成選項,右側還有該工程支持的編譯鏈,如Cross Ar

m gcc,根據這個我們就可以判斷前面的軟件安裝成功了。此時我們可以直接點擊新建一個基於STM32模版的工程,

也可以創建一個空的工程,然後自己配置工程結構,就像我們使用MDK一樣。此處我們以創建空工程爲例子。

點擊Empty project,輸入工程名和路徑,Next。

選擇編譯鏈,由於我們安裝的是GNU ARM的工具鏈,所以選擇對應的,然後指定工具鏈的路徑。

創建好了之後,我們就可以看到下圖的效果了,可以看到,這個工程完完全全是一個空的。現在我們向這個工程中添

加文件,

就像我們之前在MDK環境下配置模版一樣,先創建四個文件夾

然後從官方庫文件中拷貝對應文件到該工程對應文件夾下。

需要注意的是,官方庫文件中有一些文件是與編譯環境相關的,官方提供的環境有

我們通過比較後發現,TrueSTUDIO和eclipse環境的工程文件格式是一樣的,所以確定選用TrueSTDUIO工程的文件

首先是啓動文件

然後還有鏈接文件

這兩個文件根據對應芯片容量決定。

文件拷貝完了後,將鼠標點到工程框中右鍵刷新,我們就可以看到工程結構更新了,如下圖

正如在MDK環境下開發我們需要配置define項,include包含項和debug項一樣,在eclipse也要做這些工作。

三、工程配置:

點擊在工程瀏覽器中選中該工程,然後點擊project->properties選擇項,

就會彈出如下對話框,在這個對話框中主要在setting中配置,首先看看Tool setting,該選項有四塊,即彙編(Assembl

er)選項,C編譯器選型,C++編譯器選項,鏈接選項,每一塊中preprocessor用來設置預編譯的,即設置define。incl

udes用來設置路徑包含的,所以啓動文件等彙編文件要加到第一個選項塊中,ld格式的鏈接文件要加到第四個塊中

上面設置好了後,由於穿件工程時我們已經設置了編譯器,所以這個地方應該是正確的,如下圖

好了點擊應用,OK。

四、開始編譯:

然而立馬就出現下面的問題,找不到make文件,通過查資料我們可以知道GNU Toolchain中是不自帶make工具的,

但是make工具其實都是一樣的,所以我們能否使用Eclipse自帶的make工具呢?

同樣打開工程設置,點擊Tool Chain Editor,選擇Builder工具爲CDT內部builder,

然後重新編譯,可以看到編譯進度了

然而又出錯了,這個問題的大致意思是這兩個指令的調用格式不正確,但是由於這兩條指令是彙編指令,他的調用格

式是由編譯器決定的,我們怎麼知道他的正確的調用格式呢?我們先通過搜索找到這條指令調用的地方。

既然這條彙編指令的格式是由編譯器決定的,那麼我們怎麼知道這條指令正確的格式呢?還記得之前創建工程時有現

成的工程模版嗎?我們可以創建一個現成的工程模版,然後編譯發現這個現成的模版編譯是沒有問題。然後對比兩個

工程中的這條指令格式,我們發現了一個驚人的差異,如下圖:

好了,問題找到了,在這兩條指令的=r中間加上一個&符號即可。兩條指令中都要加。然後再編譯

哈哈,編譯通過,生成了可執行文件elf和hex,然而我們將編譯信息拉到右邊後可以發現,編譯沒有問題,但是在鏈

接時出現了問題,即找不到Reset_Handler。怎麼會找不到Reset_Handler呢,我們都知道Reset_Handler是在啓動文

件中定義了的,沒有找到除非啓動文件沒有被編譯。

於是我們來看看編譯輸出的文件夾,即debug文件夾,發現只有3個文件夾有輸出,啓動文件確實沒有輸出,爲什麼

呢?初步懷疑是Eclipse沒有識別啓動文件。

我們打開窗體屬性看看,即window->preferences:

然後找到File Type,我們可以看到,軟件能夠識別的彙編文件拓展爲*.S是大寫的S,而我們工程中的啓動文件是小寫的

s,所以沒有識別出來,我嘗試將小寫s格式添加進去發現添加失敗,提示跟大寫S重複,好吧,我們直接將啓動文件

改成大寫S吧。

![][31]

然後再編譯,OK編譯成功,也沒有鏈接的錯誤。大功搞成

![][32]

![][33]

五、開始調試:

編譯完成後,我們就要進行下載和調試了。首先進行調試的配置。

Run->Debug Configurations。

![][34]

我們可以看到GDB SEGGER Jlink Debugging選項下面是空的,雙擊這個選項

![][35]

然後就新建了一個選項卡,設置debug的名稱,調試的工程和源文件

![][36]

![][37]

切換到Debugger選項卡,此處纔是關鍵,我們都知道,調試實際就是我們的調試窗口與Jlink通訊,然後Jlink與開發板

通訊,Jlink與開發板通訊是由Jlink GDBServerCL完成的,所以我們的調試窗口要與Jlink通訊,起始只需要與Jlink G

DBServerCL通訊即可,那麼是什麼來代表這個調試窗口呢,那自然就是GNU工具鏈的GDB調試器了,所以我們整體

的調試思路就清晰了,就是GNU GDB與Jlink GDBServerCL通訊,前者扮演客戶端的角色,後者扮演服務器的角色。

好了,再來看看這個配置窗口,服務器設置自然選擇Jlink GDBServerCL,而客戶端自然選擇GNU工具鏈中的GDB

了,然後設置芯片型號,鏈接模式,傳輸速度等。

![][38]

爲了保險,取消掉startup中的這連個選項

![][39]

好了,點擊Debug開始調試,我們就可以看到我們的軟件進入了調試模式,並且停留在了main函數的第一個有效行上

面。

![][40]

點擊紅色方塊結束調試,Jlink的GDB會自動關閉,然後點擊右側的C/C++選項卡即可回到工程的編輯視圖了。

OK,初級篇教程到此結束,在初級篇中,我們可以開發一些並不涉及到C標準庫函數的東西。

注:本人github中有工程模版 


Github地址

原文地址:http://m.blog.csdn.net/qiuzhiqian1990/article/details/55189920

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章