历史上的今天
返回首页

历史上的今天

今天是:2024年08月24日(星期六)

2021年08月24日 | STM32开源开发环境的搭建

2021-08-24 来源:eefocus

STM32开源开发环境的搭建

Eclipse+ GNU ARM Eclipse Plug-in+Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。


这个教程是去年刚开始做STM32的时候写的,当时还没开始用STM32,先琢磨了免费的开发环境搭建,因此写的这个教程可能有很多错误,最近在网上看到很多人在论坛里转载了这个教程,由于当初我在ourdev论坛上只是贴出了文字,并上传了一个pdf版本,因此这次在博客里更新一下。帖子中的内容暂时不更新了,后面会重新写一个教程,欢迎大家关注我的博客。


1.环境搭建

1.1 Eclipse的下载与安装

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。由于eclipse只是一个IDE,因此需要借助其他插件以及软件来搭建完整的开发环境,也正是因为如此eclipse具有很大的灵活性。


因此首先下载安装eclipse,下载地址:

 http://www.eclipse.org/downloads/

下载页面如图1.1所示。

 http://www.oracle.com/technetwork/java/javase/downloads/index.html

如果觉得官网下载比较麻烦可以到这儿下载:

 http://www.skycn.com/soft/27213.html

java的下载界面如图1.2所示。

 http://sourceforge.net/projects/gnuarmeclipse/

下载界面如图1.3所示。

http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite

下载界面如图1.5所示。

clip_image009

图1.5 软件下载界面


通过下载界面可以可以知道Sourcery G++ Lite有4中版本,其中EABI是针对底层也就是不包含任何系统的开发的,我们就使用这个版本。Sourcery G++ Lite是采用安装包的方式,相对于以前用的Cygwin等在安装上很方便,只需点击下一步就可以,安装之后Eclipse能够自己找到,无需再手动加入环境变量。


这样一个基本的开发环境便搭建完成,针对STM32我们使用了ST公司的官方固件库,这样可以减少对底层硬件的关心,缩短开发周期,同时有利于程序的稳定性和规范性,因此我们在搭建的开发环境中对固件库进行编译,ST的固件库有很多版本,各版本之间有的差异也比较大,我们采用的是3.1版本,相对比较新,ST公司也不断有新的版本发布,下载地址:

http://www.st.com/stonline/products/support/micro/files

包含了固件库之后的开发界面如图1.6所示。

clip_image011

图1.6 完整的开发环境界面


2.工程配置

2.1 新建工程

使用配置好的开发环境新建一个工程,如图2.1所示。

clip_image013

图2.1 新建工程界面


新建一个工程,点击Finish之后会进入工程界面,如果环境配置正确,工程中会自动包含相关的文件,如图2.2所示。包含的文件应该为Sourcery G++ Lite的安装目录。

clip_image014

图2.2 新建工程之后的包含文件

接下来是准备相关的文件,为了更好的进行STM32开发,我使用ST提供的固件库,可以从网上下载,我现在用的是最新版本3.4,其他版本可能类似。


固件库的文件名为STM32F10x_StdPeriph_Lib_V3.4.0,首先把STM32F10x_StdPeriph_Lib_V3.4.0Libraries文件夹拷贝到刚刚建立的工程文件目录下。这是编译时候需要调用的固件库。


2.2链接与启动文件

接下来需要找出Linker所需的ld文件,由于在固件库中ST提供了一些编译器的工程模板,因此可以使用模板中的配置文件。TrueSTUDIO文件夹下存在几个文件夹。TrueSTUDIO是ST官方的编译器,也是GCC的,因此使用它模板中的配置文件。打开STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_TemplateTrueSTUDIO可以看到在在目录下有几个文件夹,因为我用的是STM32F103ZET6因此我选择STM3210E-EVAL文件下的stm32_flash.ld,通过记事本打开查看,部分内容摘录如下:

**  File        : stm32_flash.ld

**  Abstract    : Linker script for STM32F103ZE Device with

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

猜测应该是我要找的,复制文件到工程根目录下。

接下来要找到工程的启动文件,和linker文件一样,打开目录如下:

workspaceGCCTESTLibrariesCMSISCM3DeviceSupportSTSTM32F10xstartupTrueSTUDIO

里面同样有很多文件,因为我用的是STM32F103ZET6所以我选择startup_stm32f10x_hd.S这个文件,猜测对应的就是STM32的大容量,这一点应该是一致的,注意要把扩展名改为大S,拷到startup目录下,把其他多余的都删掉。


2.3其他文件

在工程根目录下新建一个User的文件夹,拷贝一个例程到文件中,固件库中给了很多例程,我拷贝STM32F10x_StdPeriph_Lib_V3.4.0ProjectSTM32F10x_StdPeriph_ExamplesGPIOIOToggle这个例程,将IOToggle下面的所有文件拷贝到User文件夹下。这样所有的文件就准备好了。


2.4 配置工程

回到eclipse的界面,按F5键,可刷新当前的工作目录,这样刚刚添加的文件就会在项目窗口显示出来,如图2.3所示。

clip_image015

图2.3 文件添加完毕之后的项目窗口

这个时候如果直接去编译肯定出错,因此我们需要对工程进行设置,接下来设置工程,右键点击工程,选择“properties”菜单。点击C/C++ Build-Settings设置界面如图2.4所示

clip_image017

图2.4 设置界面

 

点击Target Processor选择All configurations 处理器选择cortex-m3,如图2.5所示。

clip_image019

图2.5 处理器选择

如图2.6所示,添加两条编译预定义STM32F10X_HD,USE_STDPERIPH_DRIVER。STM32F10X_HD和前面的链接与启动文件对应,表示是大容量期间(我猜测的)。USE_STDPERIPH_DRIVER表示使用固件。

clip_image021

图2.6 添加编译预定义


接下来添加文件包含路径,为了防止工程找不到对应的头文件需要把相应的路径添加进去,和上面添加的方法类似,点击添加按钮,在路径上选择workspace,依次将工程目录下有头文件的文件夹都给包含进去。如图2.7所示。

clip_image023

图2.7 添加文件包含路径

接下来添加链接文件,如图2.8所示,添加前面准备好的链接文件。

clip_image025

图2.8 添加链接文件

推荐阅读

史海拾趣

amcc [applied micro circuits corp]公司的发展小趣事

Applied Micro Circuits Corp(AMCC)是一家半导体公司,主要从事高性能处理器和高速互连解决方案的设计和制造。以下是关于AMCC公司发展的五个相关故事:

  1. 公司成立与早期发展:AMCC公司于1979年由Hemant Kanakia等人在美国加利福尼亚州的圣塔克拉拉创立。公司最初专注于设计和制造用于通信和数据中心应用的集成电路芯片。在成立初期,AMCC致力于开发高性能、低功耗的处理器和互连解决方案,以满足不断增长的通信市场需求。

  2. 技术创新与产品发布:AMCC公司在技术创新方面处于行业领先地位。公司持续投入研发,并推出了一系列创新产品。1997年,AMCC发布了第一款64位PowerPC处理器,开创了其在高性能处理器市场的先河。随后,公司不断推出新一代的处理器产品,包括PowerPC、ARM等系列,以满足不同客户的需求。

  3. 业务拓展与市场扩张:随着时间的推移,AMCC不断拓展其业务范围和市场覆盖。公司不仅在通信领域取得了成功,还逐渐进军数据中心、云计算、存储等新兴领域。AMCC通过与各大客户和合作伙伴的紧密合作,扩大了产品的市场份额和影响力。

  4. 收购与整合:AMCC通过一系列收购和整合,加强了自身的技术实力和市场竞争力。公司收购了一些在特定领域具有核心技术的公司,如Tahoe Networks(2004年)、3ware(2005年)、Mindspeed Technologies(2014年)等。这些收购使得AMCC得以快速扩大产品线,并加速了公司在新兴市场的布局。

  5. 英特尔收购:2016年,英特尔公司宣布以约17亿美元的价格收购AMCC。这一交易使得AMCC成为英特尔旗下的子公司,英特尔得以借助AMCC在通信和数据中心领域的技术优势和客户资源,进一步拓展其在半导体行业的地位。此次收购也标志着AMCC作为独立实体的终结,但其在半导体行业的技术贡献和市场影响将持续延续。

这些故事展示了AMCC公司在技术创新、产品发布、业务拓展、收购整合等方面的发展历程,以及其作为半导体行业重要参与者的地位和影响力。

Danaher Corporation公司的发展小趣事

在十九世纪80年代,丹纳赫集团面对日益严峻的市场竞争,开始推行以精益生产为核心的全新运营方式。这种管理方式不仅强化了其在行业中的领导地位,还逐渐形成了独特的丹纳赫商业系统(Danaher Business System,DBS)。DBS注重持续改进、客户导向和团队合作,成为丹纳赫集团在电子行业取得成功的关键因素。

GeneSiC公司的发展小趣事

丹纳赫集团起源于1984年,由Steven Rales和Mitchell Rales兄弟二人创立。他们的愿景是建立一个致力于持续改善并提升客户满意度的制造公司。名字“Dana”源自古老的凯尔特语,寓意奔腾不息的精神和不断改善的品质。起初,丹纳赫集团并未直接涉足电子行业,但随着公司的发展,逐渐将业务范围扩展至包括电子设备和技术的领域。

Dailywell Electronics Co Ltd公司的发展小趣事

随着业务的不断扩展和市场需求的增加,德利威电子在1998年实现了全系列防水开关的生产,并取得了RS33A开关专利。同年,公司还扩大了经营规模,搬入了自购的厂办大楼,并增加了资本额至一千五百万元。这些举措不仅提升了公司的生产能力和产品品质,也为公司未来的发展奠定了坚实的基础。

EA Elektro-Automatik公司的发展小趣事

近年来,中国市场对EA Elektro-Automatik来说变得越来越重要。公司高层认识到了中国市场的巨大潜力和重要性,并制定了在中国市场继续投资和实现增长的明确计划。EA Elektro-Automatik的代表在多个场合与中国政府和行业领导进行交流和合作,努力拓展中国市场。目前,中国市场已经占据EA Elektro-Automatik全球业务的相当一部分份额,并有望在未来继续保持增长。

粤翔(FlyWin)公司的发展小趣事
通过电压监测元件实时监测系统电压,一旦发现电压下降到警戒值,立即触发保护机制。

问答坊 | AI 解惑

推荐ATMEL9260+Zigbee开发套件完美版

产品名称:ATMEL9260ARM + JN5139Zigbee    售价:1188元 产品规格:14*9.2cm      10*6cm 产品型号:CA-9260-ZB-EK                     &nb ...…

查看全部问答>

有谁用过红色飓风二代FPGA开发板的么?求助~

我手里的CY1C12开发板上的芯片是FPGA的EP1C12Q240C8,今天我用一个小程序,试图点亮那四个七段数码管。用的动态显示。然而,当我配置管脚,下载到板上后,数码管能够顺序点亮,但是不是之前程序里面设计的数字,有些乱码的感觉。 我怀疑是管脚配置 ...…

查看全部问答>

XILINX FPGA 设计的点滴

XILINX FPGA 设计的点滴 1、为时钟信号选用全局时钟缓冲器BUFG 2、尽量只用一个时钟沿来寄存数据 3、除了用CLKDLL或DCM产生的时钟外不要在内部产生时钟 4、注意状态机编码的可靠性:状态机转移状态改变的位数越少,则功能越可靠。 5、逻辑 ...…

查看全部问答>

windows CE6.0 USB 键盘鼠标

大家好,我在订制系统的时候,想添加USB键盘鼠标的支持,请问一下 需要添加那些组建,Reg文件 和 BIB文件需要添加那些东西 ?…

查看全部问答>

急! 使用wininet API 实现Http下载

刚刚接触Wince 6.0 现在要实现一个使用url链接下载的功能 ,参考了网上一些程序编写如下代码 void CHttpGet::Download(CString url) {         try         { CStdioFile* pSFile=NULL; CInternetSession ...…

查看全部问答>

EVC4的使用问题

请问大虾们EVC4-TOOL-WINDOWS CE PLATFORM MANAGER CONFIGURATION选项有什么用处? 如何在该选项里添加一个项目(前面带+号的那个东西)? 我是新人,百度上搜了很久没有答案,请大家帮帮忙,谢谢了。…

查看全部问答>

keil3 编译问题

我将ADS1.2下一个工程移植到Keil3 IDE下时,在解决了一些编译错误问题后,也参考了一些说明,编译完成后没有错误,当然有一堆的警告,什么字符串无效,最后一行没空等,但是连接没有生成默认该生成的.axf文件,导致调试也找不到.axf文件,当然也生 ...…

查看全部问答>

evc中怎样编辑多国语言

evc中怎样编辑多国语言 比如说我要SetWindowText(_T(\"? ?? ??\")); 但在Evc中成了SetWindowText(_T(\"? ?? ??\")); …

查看全部问答>

io口扩展问题

我想做个控制板上16个继电器,再留出一个可控制的扩展板接口也是控制16个继电器的。 我目前想用16f877单片机进行控制,不知道io扩展芯片用什么好 有什么好的设计方案,请帮忙,谢谢!…

查看全部问答>

EE_FPGA V1.0 调试进展(2010.10.17更新)

正面:   反面: 目前进展: 1. 最小系统工作 2. LED工作 3. key工作 4. usb转串口驱动正常,串口工作正常   稍后上图,敬请关注     10.17更新 [ 本帖最后由 chenzhufly 于 2010-10-17 14:20 编辑 ]…

查看全部问答>