1. 程式人生 > >Linux下STM32開發環境的搭建

Linux下STM32開發環境的搭建

目錄

一、概述

  1.目的

一、概述

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

2> 解壓安裝 tar  

3> 修改/etc/profile

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

5> 測試

#arm-none-eabi-gcc -v

  成功的介面如下

3、安裝JLink驅動

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

注意選擇安裝包:“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個外掛;如果採用自動下載安裝則可以完整的安裝所有的外掛。

方法一:手動下載安裝

  外掛名: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

  開啟一個終端輸入命令

[email protected]:~# JLinkGDBServer

7、啟動除錯

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

[email protected]:~/workspace/LED_Test/Debug# arm-none-eabi-gdb LED_Test.elf 

  除錯介面如下

相關推薦

[轉]LinuxSTM32開發環境搭建

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

LinuxSTM32開發環境搭建

目錄 一、概述   1.目的 一、概述 1、目的   MDK+Jlink的開發環境集編譯、下載、除錯為一體,配合上友好的操作介面,給使用者者提供了很Happy的開發工具。但是,曾經玩過Linux系統的人總想嘗試對開發環境的一次搬移,轉戰

Linuxgolang開發環境搭建

str windows div lec ola jos bin 工具庫 vscode 對於golang開發來說,Windows下可以用vscode或者liteide都不錯,但是Linux下的開發也就只有vim了,所以怎麽搞笑的利用vim進行golang開發呢? 參考官方推

LinuxPHP開發環境搭建(Apache2.4+PHP7.1+MySQL5.7)

AMP是當下非常熱門的Web開發環境。很多開發者在搭建LAMP的過程中會遇到各種各樣的問題,想到這些頭都快爆炸了,今天特意抽出時間將PHP開發環境的搭建過程記錄下來,以便供大家做個參考。如果大家發現什麼問題,還希望大家指正。 一、獲取安裝包 PHP下載地址:http://

LinuxPHP開發環境搭建(Apache2.4+PHP7.1+MySQL8.0)

一、獲取安裝包PHP下載地址:http://cn.php.net/distributions/php-7.2.6.tar.gzApache下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.33.t

linuxandroid開發環境搭建及NDK安裝[整合gcc編譯器]

對於Linux我也是一位新人,弄Linux也就半年左右吧,同時作為Android隊伍中的一個新人。 由於我最近每天使用的是CentOS 5.5,所以選擇CentOS5.5作為我的開發環境。 我以前一直在LinuxSir潛水,第一次發貼,我還是細緻的把我作的寫下來。同時作為我

(1)PX4開發指南——linuxpx4開發環境搭建

引言 這文件大部分是翻譯PX4官方開發指南,但是其中的的綠色字型就是我自己的實踐經驗或者案例。 本文主要介紹linux ubuntu開發環境搭建,原始碼編譯和上傳到硬體。 注意:僅限於開發者!這個指南旨在推動開發而不是為消費者準備。 這個指南介紹瞭如何在PX4系統架構下開

Windows 基於 Eclipse 的視覺化遠端 Linux C/C++ 開發環境搭建

1、簡介     Windows 下遠端 Linux 開發工具,比較著名的就是 WinGDB 和 Magic C++。都是商業軟體,而且配置複雜,據說還不穩定。其實,我們想要的就是個圖形環境 IDE,而且是直接操作的遠端 Linux 環境。經過若干的實踐,發現使用 Secu

WindowsARM Linux應用程式開發環境搭建說明

這是因為工作寫的一個文件,主要是我們開發人員都不會Linux不會vi也不會命令列,於是研究了一下Windows系統除錯ARM Linux程式的辦法,在這共享一下。1. 概述嵌入式Linux系統的應用程式開發,編譯器一般是gcc,一般都說是要在Linux虛擬機器中進行開發和編譯。本文提供了一種能夠在Wind

LinuxMinigui開發環境搭建(PC+S3C2440

花了兩天時間終於把Minigui的開發環境搭建好了,遇到了很多問題,看了很多人的部落格,對我的啟發很大。關鍵是以前偷懶裝redhat的時候為了省空間,很多庫檔案都沒安裝搞的自己很狼狽,不過也由於這個原因,讓我真正細細的實踐了一遍Minigui的移植,理解加深了很多。 Mi

Linux環境java開發環境搭建四 mysql密碼忘記找回

pri 配置 tables edi ant ngs oca 登錄mysql tor 第一步:在/etc/my.cnf配置文件中加入skip-grant-tables [mysqld] basedir=/usr/local/mysql datadir=/usr/lo

NDK在windows開發環境搭建開發過程

刷新 -1 ont static blog 簡單 包名 mfp targe 在Android應用的開發project中。無論是遊戲還是普通應用。都時常會用到.so即動態鏈接庫,關於.so是什麽玩意兒,有什麽優點。這個大家能夠在網上查一下,本人不做過多解釋。.

WindowsJava開發環境搭建

環境 輸入 電腦 blog html dev 進行 點擊 develop 1、在cmd中輸入Java,若如下圖所示的提示,則說明當前電腦沒有安裝Java運行環境或者是JDK,則需要手動下載和安裝Java 2、打開網站http://www.oracle.com/index.

macjava 開發環境搭建

mave machine 下載地址 pass bashrc htm display machines scrip mac配置java開發環境: jdk1.7 +sdk1.7+maven +tomcat 1、先安裝jdk ,才能安裝sdk 。 2 mac中jdk1.7的

MacJAVA開發環境搭建

環境變量 runtime 內容 ont 保存 java開發環境 port rac run 最近開始學習JAVA, 首先配置下環境! 1、Mac自帶的jdk版本老了,需要到oracle官網(http://www.oracle.com/technetwork/java/jav

Linux系統Go開發環境搭建

www ram color 安裝 lin linu 以及 bsp local Go 語言是由谷歌的科學家開發的,並開源的新語言,被譽為“21世紀的C語言”,它的主要目標是將靜態語言的安全性和高效性與動態語言的易開發性進行有機結合,達到完美平衡,從而使編程變得更加有樂趣,而不

LInux常用開發環境和軟件記錄

java 虛擬機 調整 備份 chrome插件 cover 資料 找不到 利用 0. 前言 在升級Ubuntu18.04時經歷了慘無人道的桌面丟失問題,備份了資料之後重裝解決。但是安裝過的軟件和配好的環境都丟了,只能重來。 重裝後發現重重疊疊的大額頭太難看了,嚴重降低屏幕利

ESP32的SDK開發之window系統eclipse開發環境搭建

在window系統下可以依託eclipse的環境開發ESP32 eclipse下載地址:下載Eclipse IDE for C/C++ Developers版本的 64位:點這裡 32位:點這裡 環境JDK下載地址 64位:點這裡 32位:點這裡 安裝好eclipse開啟報錯的話,就需要配置

WindowsJAVA開發環境搭建環境變數配置

1、安裝JDK開發環境 下載網站:http://www.oracle.com/ 開始安裝JDK: 修改安裝目錄如下: 確定之後,單擊“下一步”。 注:當提示安裝JRE時,可以選擇不要安裝。 2、配置環境變數: 對於Java程式開發而言,主要會

Linux入門及開發環境搭建

  什麼是Linux Linux簡介 Linux是一種自由和開放原始碼的作業系統,存在著許多不同的Linux版本,但它們都使用了Linux核心。Linux可安裝在各種計算機硬體裝置中,比如手機、平板電腦、路由器、臺式計算機 Linux介紹