Linux下STM32開發環境的搭建


目錄

一、概述

  1.目的

  2、開發環境描述

  3、Eclipse構建的STM32集成開發環境結構

  4、GDB / GDB Server 調試模型

二、搭建步驟 

三、詳細的搭建過程

  1、安裝eclipse IDE for C/C++ developers

  2、安裝交叉編譯鏈arm-none-eabi-gcc 

  3、安裝JLink驅動

  4、安裝GNU ARM Eclipse插件包 

  5、新建一個LED_Test工程並配置、編譯

四、使用C/C++ GDB HardWare Debugging進行硬件調試

      1、安裝GDB調試插件--C/C++ GDB HardWare Debugging

  2、設置Eclipse調試環境並調試

  3、 另一種調試的方法

五、使用arm-none-eabi-gdb直接進行硬件調試

 

一、概述

1、目的

  MDK+Jlink的開發環境集編譯、下載、調試為一體,配合上友好的操作界面,給用戶者提供了很Happy的開發工具。但是,曾經玩過Linux系統的人總想嘗試對開發環境的一次搬移,轉戰到Linux下看有什么事情發生。

  在Linux下,搭建STM32的開發環境是一種具有挑戰性的任務,從中我們能學到如何創造一個集成開發環境,或者說我們知道集成開發環境的構成元素。不得不提出“Eclipse”絕對是一個好東西,它就像一個開發環境框架,在這個框架中我們添加STM32專用的編譯器、調試工具,就構造出一個STM32集成開發環境。

  開源給電子行業工作者提供了一種向技術更深處進發的機遇,開源在技術壟斷的商業模式中開辟了一塊屬於世界的自由的知識財富。

2、開發環境描述

硬件開發板:野火STM32開發板

Cortex-M3型號:STM32F103VET6

下載器與調試接口:Jlink + JTAG

操作系統:虛擬機VMware6.5 + Ubuntu12.0.4

集成開發環境平台:eclipse IDE for C/C++ developers

交叉編譯鏈:arm-none-eabi-gcc

調試服務器:JLink GDB Server

3、Eclipse構建的STM32集成開發環境結構

4、GDB / GDB Server 調試模型

  The GNU Project Debugger (GDB) is a freely available debugger, distributed under the terms of the GPL. It connects to an em ulator via a TCP/IP connection. It can con-nect to every emulator for which a GDB Server software is available.

  GDB Server is a remote server for GDB. When you run GDB in the GDB source direc-tory, it will read a .gdb file. The GDB .gdb file contains default setting informationand additional monitor commands. GDB and GDB Server communicate via a TCP/IP connection, using the standard GDB remote serial protocol. The GDB Server trans-lates the GDB monitor commands into J-Link commands.

二、搭建步驟

1、安裝eclipse IDE for C/C++ developers

2、安裝交叉編譯鏈arm-none-eabi-gcc

3、安裝JLink驅動

4、安裝GNU ARM Eclipse插件包

5、新建一個LED_Test工程並配置、編譯

6、安裝GDB調試插件--C/C++ GDB HardWare Debugging

7、設置Eclipse調試環境並調試

說明:

  本文需要用到的Eclipse插件的下載地址不能確保讀者從該網址上就能找到可用的資源,因為Eclipse的插件下載地址會經常更新,而且更改了下載地址。所以如果出現找不到資源的情況,需要讀者自己從Google上搜索出當前Eclipse提供的可用的資源。

三、詳細的搭建過程

1、安裝eclipse IDE for C/C++ developers

  參考ubuntu安裝eclipse IDE for C/C++ developers,安裝到這一步就可以像VC6.0一樣進行C/C++的開發,但是編譯的代碼只能在X86平台上運行,不支持ARM。

  為了能進行交叉編譯,我們需要安裝交叉編譯鏈arm-none-eabi-gcc,但是次編譯鏈不屬於Eclipse的一部分,也不是Eclipse的可安裝插件。Eclipse只是來調用交叉編譯鏈,再調用之前還需要安裝“GNU ARM Eclipse插件”,有了這個插件便可以調用arm-none-eabi-gcc來編譯我們的源程序。倘若沒有安裝GNU ARM Eclipse插件,打開工程的屬性,情況是這樣的:

  僅僅安裝了“eclipse IDE for C/C++ developers”,只能進行X86平台上的程序調試,卻不能進行ARM平台的硬件調試。為了能進行硬件調試,我們需要安裝交叉編譯鏈arm-none-eabi-gcc中的工具arm-none-eabi-gdb,同樣此工具不屬於Eclipse的一部分,也不是Eclipse的可安裝插件。Eclipse只是來調用此調試器,再調用之前還需要安裝“GDB調試插件”,有了這個插件便可以調用arm-none-eabi-gdb來硬件調試我們的源程序。倘若沒有安裝“GDB調試插件”,打開“Debug Configurations”,情況是這樣的:

  僅僅安裝了“eclipse IDE for C/C++ developers”,是可以調用外部的硬件調試服務器--JLinkGDBServer,只是這個時候由於無法連接到GDB調試客戶端而無法進行調試。

2、安裝交叉編譯鏈arm-none-eabi-gcc

1> 編譯器下載,地址為https://launchpad.net/gcc-arm-embedded/+download

2> 解壓安裝 tar  

3> 修改/etc/profile

4> 使/etc/profile的修改生效

5> 測試

#arm-none-eabi-gcc -v

  成功的界面如下

3、安裝JLink驅動

  Jlink驅動包含四個工具:JLinkExe、JLinkGDBServer、JLinkRemoteServer、JLinkSWOViewer。  

1> 驅動下載,地址為 http://www.segger.com/jlink-software.html

注意選擇安裝包:“Software and documentation pack for Linux V4.86a, DEB Installer 32-bit version”

2> 利用dpkg -i命令進行安裝,安裝位置在/usr/bin目錄下

3> 測試版本

  首先將硬件Jlink連接在電腦上,再將Jlink從物理PC機轉移映射到虛擬機下,輸入測試命令

#JLinkExe

  成功的界面如下

4> 下載測試

命令序列

① h   --停止程序的運行

②  exec device=STM32F103ZE   --選擇芯片型號

  這里選擇的是STM32F103ZE,而不是STM32F103VET6,原因是由於此版本的JLink驅動不支持STM32F103VET6,所以用一個與之接近的型號代替。

③ loadbin Led_Test.bin 0x8000000   --下載

4、安裝GNU ARM Eclipse插件包

  此插件包包含了6個插件,可以手動下載安裝,不過這種方法只能安裝其中的4個插件;如果采用自動下載安裝則可以完整的安裝所有的插件。

方法一:手動下載安裝

1> 下載插件,地址:http://sourceforge.net/projects/gnuarmeclipse/files/Current%20Releases/2.x/

  插件名:ilg.gnuarmeclipse.repository-2.2.2-201404240550.zip

2> 拷貝到Linux的某一目錄下,假設為/source

3> 安裝該插件 

  打開Eclipse-->help-->Install New Software-->Add-->Archive-->選擇該插件-->選中“√”-->一路Next-->等待

方法二:自動下載安裝

The recommended way to install these plug-ins is to use the Eclipse standard install/update mechanism: In the Eclipse menu: Help → Install New Software…

  • in the Install window, click the Add… button (on future updates, just select the URL in theWork with: combo)
  • fill in Name: with GNU ARM Eclipse Plug-ins
  • fill in Location: with http://gnuarmeclipse.sourceforge.net/updates
  • click the OK button
  • normally the main window should list a group named CDT GNU Cross Development Tools; expand it
  • (in case the main window will list There are no categorized items, you are probably using a very old version; disable the Group items by category option)
  • select all the plug-ins (the one marked End of life is needed only for compatibility with previous version, normally can be safely skipped)
  • click the Next button and follow the usual installation procedure

Once you define the update site URL, further updates are greatly simplified (Help → Check For Updates).                            摘自:Plug-ins install

☆ 測試

測試一:Eclipse-->help-->Install New Software-->already installed查看已經安裝的插件:

測試二:此插件安裝成功后,在新建C工程的時候,界面也發生了變化

5、新建一個LED_Test工程並配置、編譯

1> 新建一個工程

  File-->Project-->C Project-->Project name-->Cross ARM GCC-->Tools chain path-->Finsh

  此時在工作目錄下(筆者的為/root/workspace)就多了一個子目錄LED_Test

2> 將源碼拷貝到該目錄下

  把曾經在MDK做LED實驗的源碼拷貝到Linux系統中,放進/root/workspace/LED_Test目錄下

3> 添加源碼到工程中

  在工程瀏覽器(Project Explorer)中,點擊“F5”刷新,就可以添加所有的源碼目錄和其中的文件。

4> 更改需要的文件

① 啟動文件

  另外,注意將TureSTUDIO/startup_stm32f10x_hd.s 的后綴"s"改成大寫的"S",原因是由於編譯器對應S的文件會先進行預處理操作然后是匯編操作,而s的只進行匯編操作,詳細原因參考gcc編譯 .s文件和.S文件有什么區別

② 連接腳本

③ 其他文件與在MDK上的需要文件類似,把需要的文件保留,不需要的文件從工程中移除

5> 開始配置工程

  在工程瀏覽器中選中工程,右鍵單擊選擇Properties,再選擇C/C++ Build-->Settings,跳出如下界面

6> 配置匯編器Cross ARM GNU Assembler

  主要是添加預處理宏

7> 配置編譯器Cross ARM C Compiler

① 添加預處理宏

② 添加頭文件搜索目錄

  • /root/workspace/LED_Test/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport
  • /root/workspace/LED_Test/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x
  • /root/workspace/LED_Test/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/STM32F10x_StdPeriph_Driver/inc
  • /root/workspace/LED_Test/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Template
  • /root/workspace/LED_Test/User

8> 配置連接器 Cross ARM C Linker

  主要是選擇連接腳本文件

  • /root/workspace/LED_Test/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Template/TrueSTUDIO/STM3210E-EVAL/stm32_flash.ld

9> 配置生成的鏡像文件 Cross ARM GNU Creat Flash Image

  選擇生成二進制的鏡像文件

10> 編譯

  Project-> Build Project

  在/root/workspace/LED_Test/Debug目錄中就可以看到生成的目標文件

四、使用C/C++ GDB HardWare Debugging進行硬件調試

1、安裝GDB調試插件--C/C++ GDB HardWare Debugging

1> 安裝

  此種方法是Eclipse自動在用戶提供的網絡地址上進行搜索,然后下載安裝,所以確保虛擬機能上網。

2> 驗證  

  成功以后,就可以在Run-->Debug Configurations中看到如下界面

  需要說明的是倘若Run菜單下沒有找到“Debug Configurations”選項,那是由於之前工程處於編譯環境,還沒有切換到調試環境,只有切換到調試環境才能在Run菜單下找到該選項。切換方法是:

2、設置Eclipse調試環境並調試

1> 配置Eclipse調試選項

① Debugger

  Run-->Debug Configurations-->GDB Hardware Debugging -->Debugger

② Startup

  在Initialization Commands中輸入檢測參數

    monitor flash device = STM32F103ZE
    monitor flash download = 1
    monitor flash breakpoints = 1
    monitor clrbp
    monitor endian little
    monitor speed 5
    monitor reset
    monitor sleep 100
    monitor speed auto
    monitor writeu32 0xE000ED08 = 0x00000000

  再在Run Commands中輸入命令

monitor reg r13 = (0x00000000)
monitor reg pc = (0x00000004)
break ResetHandler
break main
continue

2> 配置Eclipse調試選項

  Run-->External Toos-->External Toos Configurations-->New _configuration

3> 調試

  Run -->Debug

3、 另一種調試的方法

1>  配置

  配置還是步驟7中的1>和2>

2> 啟動JLinkGDBServer

  在終端上啟動JLinkGDBServer

3> GDB調試

  Run -->Debug

  如果連接成功,此時在終端上打印出如下界面

五、使用arm-none-eabi-gdb直接進行硬件調試

1、安裝Jlink驅動 

2、安裝交叉編譯鏈arm-none-eabi-gcc

3、編譯工程以生成elf文件 

4、在當前用戶目錄下創建.gdbinit文件

  筆者的當前用戶是root,所以在root目錄下創建.gdbinit初始化文件

#gedit ~/.gdbinit 

  內容為:

set auto-load safe-path /

5、在工程文件夾下的Debug目錄中創建.gdbinit文件

  在工程的Debug目錄下創建.gdbinit文件,內容為:

target remote :2331
set mem inaccessible-by-default off
monitor speed auto
monitor endian little
monitor reset
monitor flash device = STM32F103ZE monitor flash breakpoints = 1 monitor flash download = 1 load monitor reg sp = (0x08000000) monitor reg pc = (0x08000004) break ResetHandler break main continue

  需要說明的是:由於當前版本的Jlink驅動不支持STM32F103VET6,所以選擇STM32F103ZE來代替。

6、啟動JLinkGDBServer

  打開一個終端輸入命令

root@daneiqi:~# JLinkGDBServer

7、啟動調試

  再打開一個終端,在工程的Debug目錄下輸入命令:

root@daneiqi:~/workspace/LED_Test/Debug# arm-none-eabi-gdb LED_Test.elf 

  調試界面如下

本章參考資料: GNU ARM Eclipse (for STM32) 

          STM32 Discovery Development On Linux

 

全文參考資料:  J-Link GDB Server User Guide - Segger

                  GNU ARM Eclipse (for STM32)

         linux下配置ARM開發環境筆記(STM32系列/Kinetis系列)

           ubuntu下安裝stm32開發環境 秒殺keil和IAR

         Jlink 命令行 下載bin文件

         Eclipse配合GDB和jlinkGDBServer仿真調試STM32

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM