使用eclipse建立ARM开发环境

使用eclipse建立ARM开发环境原文:http://blog.sina.com.cn/s/blog_78212a050100ph5y.html J-Link: http://www.segger.com/http://www.eclipse.org/downloads/ 下载Eclipse IDE for C/C++ Developers 环境http://sourceforge.net/projects/gnu

大家好,又见面了,我是你们的朋友全栈君。

原文:http://blog.sina.com.cn/s/blog_78212a050100ph5y.html

 

J-Link: http://www.segger.com/

http://www.eclipse.org/downloads/ 下载Eclipse IDE for C/C++ Developers 环境

http://sourceforge.net/projects/gnuarmeclipse/ 下载GNU ARM Eclipse Plug-in最新版本。

http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite 下载 sourcery g++ lite 的EABI版本

 

 

搭建eclipse STM32平台需要用到 eclipse for C\C++ 软件,GUN ARM 插件,工具集(汇编器、编译器、连接器)。

目前已知的工具集有好几种,这里选择免费的Sourcery G++ Lite

搭建eclipse的STM32平台

上图中红色框图中的软件是必须下载的。

 

1、下载

下载软件  JDK eclipse IDE for c/c++ Developers

下载插件  org.eclipse.cdt.cross.arm.gnu_0.5.3.201010141144.zip

下载完整的软件开发环境   Sourcery G++Lite  EABI

 

2、安装

安装JRE或者JDK

安装eclipse IDE for c/c++ Developers

安装Sourcery G++Lite

这里介绍在eclipse中安装插件GNU ARM Eclipse Plug-in

首先启动eclipse。选择Help->Install New Software

搭建eclipse的STM32平台

搭建eclipse的STM32平台

点击: Available Software Sites,在弹出的窗口中点击Add按钮。

搭建eclipse的STM32平台

点击: Archive… 按钮,择插件org.eclipse.cdt.cross.arm.gnu_0.5.3.201010141144.zip

确定后,在下图中将: Contact all update sites during install to find required software选项去掉。

然后在Work with中选择刚刚添加的插件路径。

然后在下方选择 GNU ARM C/C++ Development Support.点击Next.直至安装完成。

搭建eclipse的STM32平台

然后新建工程,发现多了ARM Windows GCC(Sourcery G++ Lite)项。

搭建eclipse的STM32平台

这表示插件以成功安装。


3、建立工程。

将固件库加入工程中:

搭建eclipse的STM32平台

STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\TrueSTUDIO

文件夹下的startup_stm32f10x_hd.s文件拷贝到上一层目录startup\,并将后缀改为大写。删除startup\目录下的其它的文件夹。

搭建eclipse的STM32平台

 

在工程下建立usr文件夹,将例子程序的 搭建eclipse的STM32平台

文件复制过来。如下图。

搭建eclipse的STM32平台

STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Template\TrueSTUDIO文件夹中有目标芯片的链接文件。

搭建eclipse的STM32平台

每个文件夹中包含了stm32f10 系列中不同大小的芯片所需的链接文件。

这里选择STM3210C-EVAL文件夹下的stm32_flash.ld文件,用记事本打开后可以看到以下内容:

*****************************************************************************

**

**  File        : stm32_flash.ld

**

**  Abstract    : Linker script for STM32F107VC Device with

**                256KByte 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.

**

**  Target      : STMicroelectronics STM32

**

**  Environment : Atollic TrueSTUDIO(R)

这说明该文件于我的目标芯片匹配。将该文件复制到工程目录下。

 

4、配置

在工程上点击鼠标右键,选择Properties 。

搭建eclipse的STM32平台

在弹出的窗口中选择Settings,可以看到,其中有

汇编器、编译器、连接器的配置。

以下的任务就是配置这些选项。

搭建eclipse的STM32平台

首先选择以下选项。

搭建eclipse的STM32平台

汇编器的配置默认就行了。

编译器的配置需要定义两个符号

STM32F10X_HD

USE_STDPERIPH_DRIVER

搭建eclipse的STM32平台


然后在目录选项中包含以下路径,好让编译器找到编译时需要的文件。

搭建eclipse的STM32平台

在连接器选项中,指定Script file 为新建项目下的stm32_flash.ld文件

搭建eclipse的STM32平台

在链接库中加入m参数,用来包含libm.a 数学库以支持math.c中的数学运算。

搭建eclipse的STM32平台

设置好后。解决sprintf maco函数无法编译的问题。

stm32_flash.ld文件中找到以下段:

 

 

  . = ALIGN(4);

  .bss :

  {

   

    _sbss = .;        

    __bss_start__ = _sbss;

    *(.bss)

    *(.bss*)

    *(COMMON)

 

    . = ALIGN(4);

    _ebss = .;        

    __bss_end__ = _ebss;

  } >RAM

 

  PROVIDE ( end = _ebss );

  PROVIDE ( _end = _ebss );

在其末尾添加:

  PROVIDE(__HEAP_START = _end );

 

然后在usr文件夹下建立syscalls.c文件。

 

#include <sys/types.h>

//为了使用malloc sprintf 函数

extern int  __HEAP_START;

 

caddr_t _sbrk ( int incr ){

  static unsigned char *heap = NULL;

  unsigned char *prev_heap;

 

  if (heap == NULL) {

    heap = (unsigned char *)&__HEAP_START;

  }

  prev_heap = heap;

 

 

  heap += incr;

 

  return (caddr_t) prev_heap;

}

这样,整个工程就配置完完成。

Build工程后就会出现Hex文件,将其下载到目标芯片中就可以工作了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134384.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据建模之ODS层命名规范及质量规范

    数据建模之ODS层命名规范及质量规范命名规范表命名规范表命名规则:{层次}{源系统表名}{保留位/delta与否}。 增量数据:ods_{库名}_{表名}_{id}。 全量数据:ods_{库名}_{表名}。 ODSETL过程的临时表:tmp_{临时表所在过程的输出表}_{从0开始的序号}。 按小时同步的增量表:ods_{库名}_{表名}_{ih}。 按小时同步的全量表:ods_{库名}_{表名}_{hh}。 ps:如果库名可能重复,可使用编码来代替库名字段命名规范 字段默认使用源系统的字段名。 字段名与.

    2022年9月1日
    2
  • JSPJavaBean组件(动作标签)[通俗易懂]

    JSPJavaBean组件(动作标签)[通俗易懂]什么是JavaBean组件JavaBeans组件是具有以下功能的Java类:一个无参构造函数。(Ano-argumentconstructor.)定义属性的访问器和修改器(getter和setter方法)(Propertiesdefinedwithaccessorsandmutators(getterandsettermethod).)类不得定义任何公共实例变量。该类必须实现java.io.Serializable接口。javaBean的意义javaBean作为数据

    2022年7月27日
    7
  • sdio接口定义_sdio接口

    sdio接口定义_sdio接口转:https://www.cnblogs.com/hellokitty2/p/10981084.htmlSDIO接口一、SDIO简介SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。SDIO1.0标准定义了两种类型的SDIO卡:1.全速的SDIO卡,传输率可以超过100Mbps;2.低速的SDIO卡,支援的时脉速率…

    2022年10月4日
    0
  • 腾讯云服务器配置ssl,腾讯云服务器SSL证书申请及配置[通俗易懂]

    腾讯云服务器配置ssl,腾讯云服务器SSL证书申请及配置[通俗易懂]最近在研究微信小程序,服务端需要部署在一台服务器上,查看了一下,腾讯云在搞活动,就申请了腾讯云的服务器,但是微信小程序访问需要用https协议才能请求,于是研究了一下如何申请及配置ssl证书。本人穷逼一枚,一向以节俭,所以申请了一个免费证书。申请步骤如下:1、登录证书申请页面https://console.qcloud.com/ssl/apply2、输入必要信息,通用名称及申请邮箱,点击下一步这一…

    2022年9月4日
    4
  • 数据结构与算法——从零开始学习(一)基础概念篇「建议收藏」

    前言数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。为什么要学数据结构?首先,因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它;其次,数据结构是计算机软考、计算机等级考试等相关考试的必考内容之一,想要顺利通过这些考…

    2022年4月11日
    42
  • mysql窗口函数用法_mysql实现窗口函数

    mysql窗口函数用法_mysql实现窗口函数一,MySQl8.0窗口函数窗口函数适用场景:对分组统计结果中的每一条记录进行计算的场景下,使用窗口函数更好;可以跟Hive的对比着看:点我,特么的花了一晚上整理,没想到跟Hive的基本一致,还不因为好久没复习博客了,淦注意:mysql因为没有array数据结构,无法像Hive一样行列进行转换;1.1窗口函数分类MySQL从8.0版本开始支持窗口函数。窗口函数的作用类似于在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是

    2022年10月5日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号