打印
[应用相关]

Linux下STM32开发环境的搭建

[复制链接]
2906|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
目录
一、概述
  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直接进行硬件调试

使用特权

评论回复
沙发
internally|  楼主 | 2019-7-23 14:33 | 只看该作者
一、概述

1、目的

  MDK+Jlink的开发环境集编译、下载、调试为一体,配合上友好的操作界面,给用户者提供了很Happy的开发工具。但是,曾经玩过Linux系统的人总想尝试对开发环境的一次搬移,转战到Linux下看有什么事情发生。

  在Linux下,搭建STM32的开发环境是一种具有挑战性的任务,从中我们能学到如何创造一个集成开发环境,或者说我们知道集成开发环境的构成元素。不得不提出“Eclipse”绝对是一个好东西,它就像一个开发环境框架,在这个框架中我们添加STM32专用的编译器、调试工具,就构造出一个STM32集成开发环境。

  开源给电子行业工作者提供了一种向技术更深处进发的机遇,开源在技术垄断的商业模式中开辟了一块属于世界的自由的知识财富。

使用特权

评论回复
板凳
internally|  楼主 | 2019-7-23 14:33 | 只看该作者
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

使用特权

评论回复
地板
internally|  楼主 | 2019-7-23 14:34 | 只看该作者
3、Eclipse构建的STM32集成开发环境结构

使用特权

评论回复
5
internally|  楼主 | 2019-7-23 14:34 | 只看该作者
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.

使用特权

评论回复
6
internally|  楼主 | 2019-7-23 14:35 | 只看该作者
二、搭建步骤

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提供的可用的资源。

使用特权

评论回复
7
internally|  楼主 | 2019-7-23 14:35 | 只看该作者
三、详细的搭建过程

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调试客户端而无法进行调试。

使用特权

评论回复
8
internally|  楼主 | 2019-7-23 14:36 | 只看该作者
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


  成功的界面如下

使用特权

评论回复
9
internally|  楼主 | 2019-7-23 14:37 | 只看该作者
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   --下载

使用特权

评论回复
10
internally|  楼主 | 2019-7-23 14:38 | 只看该作者
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-->等待

使用特权

评论回复
11
internally|  楼主 | 2019-7-23 14:39 | 只看该作者
方法二:自动下载安装

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

使用特权

评论回复
12
internally|  楼主 | 2019-7-23 14:40 | 只看该作者
☆ 测试

测试一:Eclipse-->help-->Install New Software-->already installed查看已经安装的插件:



测试二:此插件安装成功后,在新建C工程的时候,界面也发生了变化

使用特权

评论回复
13
internally|  楼主 | 2019-7-23 14:40 | 只看该作者
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”刷新,就可以添加所有的源码目录和其中的文件。

使用特权

评论回复
14
internally|  楼主 | 2019-7-23 14:41 | 只看该作者
4> 更改需要的文件

① 启动文件



  另外,注意将TureSTUDIO/startup_stm32f10x_hd.s 的后缀"s"改成大写的"S",原因是由于编译器对应S的文件会先进行预处理操作然后是汇编操作,而s的只进行汇编操作,详细原因参考http://bbs.chinaunix.net/thread-1453835-1-1.html

② 连接脚本



③ 其他文件与在MDK上的需要文件类似,把需要的文件保留,不需要的文件从工程中移除

使用特权

评论回复
15
internally|  楼主 | 2019-7-23 14:42 | 只看该作者
5> 开始配置工程

  在工程浏览器中选中工程,右键单击选择Properties,再选择C/C++ Build-->Settings,跳出如下界面

使用特权

评论回复
16
internally|  楼主 | 2019-7-23 14:42 | 只看该作者
6> 配置汇编器Cross ARM GNU Assembler

  主要是添加预处理宏

使用特权

评论回复
17
internally|  楼主 | 2019-7-23 14:42 | 只看该作者
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

使用特权

评论回复
18
internally|  楼主 | 2019-7-23 14:43 | 只看该作者
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

使用特权

评论回复
19
internally|  楼主 | 2019-7-23 14:43 | 只看该作者
9> 配置生成的镜像文件 Cross ARM GNU Creat Flash Image

  选择生成二进制的镜像文件

使用特权

评论回复
20
internally|  楼主 | 2019-7-23 14:43 | 只看该作者
10> 编译

  Project-> Build Project



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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

315

帖子

0

粉丝