历史上的今天
返回首页

历史上的今天

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

2020年09月08日 | 用Eclipse开发stm32(GNU ARM Eclipse Plug-in)(编码+编译+下载+调试)

2020-09-08 来源:eefocus

传统的IDE功能强大,特别是调试功能,但是如今,其它软件的发展,大家感觉到传统的IDE用户交互、编辑界面、编码效率不够友好;或者为了降低成本,需要使用开源工具
于是,有人选择使用IDE用来调试,用其它编辑器编码(比如source insight 、sublime text3、notepad++、atom、Eclipse等),来提高效率;或者使用其它的工具链来配合编辑器达到自制一个IDE的效果
当然还有一些改进得比较好的免费IDE和收费的IDE,比如coocox
这里是在Eclipse上编写ARM程序
在Eclipse上编写程序方法:

使用GCC、G++、makefile的方式进行手动编码,一切靠自己
使用Eclipse+插件(工具链等)的方式来实现
当然如果不需要编译就直接用啦

这里是使用GNU ARM Eclipse plug来简化一系列的操作
GNU ARM Eclipse 是一个插件,会帮助自动生成makefile,管理芯片包(现在使用的Keil的包),提供例示程序,以及提供编译、调试的一个框架,只要再安装一些必要的软件(工具链、build工具(比如make)、调试组件)(安装插件时不会一同安装,需要手动安装)就可以进行编译、调试
所以主要教程来自于GNU ARM Eclipse wiki
建议直接看这个
下面是安装的时候的笔记

(一)下载和安装

  • 安装java、配置环境变量

  • 下载Eclipse IDE for C/C++ Developers 环境

  • 解压Eclipse, 下载GNU ARM Eclipse Plug-in最新版本
     

     

    • github组织地址

    • 插件wiki(建议直接看这个,导航在右边)(如何安装插件)

  • 工具链 ,GNU ARM Eclipse Plug-in 插件支持的工具链有很多,如下


  • 比如GCC ARM Embedded(安装教程)不要设置环境变量!!!!!!不带make,所以用这个还需要下载一个make功能的软件(识别makefile)
    或者 sourcery g++ lite 的EABI版本 ,不用再下载make,自带,不过名字不是make,是cs-make

  • 安装build工具(make等)

  • 安装芯片包

  • 调试器软件安装(J-Link)

(二)建立工程

  • 在trace output选择semihosting,就可以在Eclipse的控制台中打印调试信息了

  • 下两步设置工程文件夹等可以默认

  • 如果遇到找不到make命令或者cs-make命令  就是没有make程序的原因,或者填错了名称,如果使用sourcery g++ lite EABI,在工程设置(project-->properties-->C++build-->settings)中改成cs-make就行了,如下图 

  • 但是如果是使用不带make程序的工具链,要手动安装,方法见(一)中的build tool的安装(或者使用MinGW或Cygwin(初次接触可自行搜索并了解)进行安装 比如cygwin安装这个

  • ) 安装完后可以设置环境变量,最终在控制台输入 make -v 能看到make的版本信息为止(插件官方不推荐) 或者在Eclipse中设置build path,如下图 然后进行编译,如果步骤没错,就可以了

  • 工程设置:
    只链接用到的代码,降低二进制文件大小


其它设置,参照模板内的,如果自己建新的空工程

(三)下载、调试ST-Link

  • 下载

    • 安装STM32 ST-LINK Utility

      Windows:官网直接下载安装即可
      Linux: 需下载源代码自行编译安装

    • 配置下载程序(使用ST-link utility ,只能下载程序,不能调试的方法,使用GDB进行调试的在后面)
      Run-->External tools-->External tools Configurations 然后左上角新建一个配置,按照下图设置

    • 点击这个就可以下载了


    •  

    • 可能会出现这个问

    • 在project-->clean处清理一下工程就行了

    • 这是正在下载

      下载完毕
       

  • 调试

    • 下载openocd(其它地址)或者找插件内的(我没找到ㄒoㄒ

    • 然后解压到一个文件夹

    • 选择DebugConfigurations

config options 中的内容来自于openocd文件夹下,根据不同的芯片和st-link版本选择不同的文件,都在同一个文件夹下 Executable中的内容是openocd.exe可执行文件的地址,可以使用变量,如图,或者直接用绝对地址比如D:Program Files (x86)openocdopenocd-0.9.0bin-x64openocd.exe Executable中的内容是GDB的位置,使用变量,如图;或者绝对地址如:C:Program FilesGNU_ARM_toolchainbinarm-none-eabi-gdb.exe

  • 如果变量忘记了没关系,有提示,指到前面的文字
     

  • 这样st-link调试和下载就基本可以了,效果图
     

  • 关于寄存器查看,可以安装keil的包(GNU ARM Eclipse插件中含有这个插件,只需要手动更新、下载包就行了),也可以使用插件

①使用GNU ARM Eclipse中的包管理:

使用方法(可能不好下载,多试几次,我第一天下了好多次不行,第二天就可以了。。。。。)
效果:



②使用插件:插件官网:
安装:
Help-->Eclipse marketplace出现下图 搜索embsysregview,然后点击Install。。然后下一步下一步下一步。。。。

J-Link

  • 方法:

  • 似st-link 只是配置文件不同

  • 使用JLinkGDBServer

  • 参考资料:

    • GNU ARM Eclipse wiki

    • J-Link debugging Eclipse plug-in wiki

  • 暂时用st-link,后面用的时候再加上来,欢迎大家来一起写

其它问题

  • 有时候可能会碰到enum 找不到。

    • ecplipse中enum成员有时会提示找不到,这是eclipse的bug , 使用project->C/C++Index -> rebuild 就行了

IF, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol"


推荐阅读

史海拾趣

Alpha-Micro Electronics公司的发展小趣事

Alpha-Micro Electronics是一家提供嵌入式系统解决方案的公司,专注于设计和制造微控制器、传感器和其他嵌入式设备。以下是关于Alpha-Micro Electronics公司发展的五个相关故事:

  1. 公司成立:Alpha-Micro Electronics公司成立于1982年,总部位于德国斯图加特。公司的创始人是一群电子工程师,他们致力于为各种应用领域提供高性能的嵌入式系统解决方案。

  2. 技术创新:在公司创立之初,Alpha-Micro Electronics就开始致力于技术创新。他们不断投资于研发,推出了一系列先进的微控制器和传感器产品,以满足客户对功能强大和性能稳定的需求。

  3. 解决方案定制:Alpha-Micro Electronics公司注重与客户的紧密合作,提供定制化的解决方案。他们的工程团队具有丰富的经验和专业知识,能够根据客户的具体要求设计和制造符合其需求的嵌入式系统。

  4. 国际扩展:随着业务的不断发展,Alpha-Micro Electronics逐渐拓展了国际市场。除了在德国的总部和研发中心外,公司还在全球范围内建立了销售和服务网络,包括在美国、亚洲和欧洲的分支机构和合作伙伴。

  5. 行业合作与创新:Alpha-Micro Electronics公司积极参与行业合作和创新项目,与其他企业、研究机构和学术界合作,共同推动嵌入式技术的发展。通过与行业领先者合作,公司不断探索新的技术和应用领域,为客户提供更具竞争力的解决方案。

这些故事展示了Alpha-Micro Electronics公司在技术创新、解决方案定制、国际扩展和行业合作方面的发展历程,以及其在电子行业中的重要地位和影响力。

地博电子(DIBO)公司的发展小趣事

随着公司业务的不断发展,地博电子在2010年成功投产了2条全自动化PC薄膜生产线。这一举措不仅大大提高了生产效率,降低了生产成本,还确保了产品质量的稳定性和一致性。全自动化生产线的投产,为地博电子在电子材料行业中的竞争地位奠定了坚实的基础。

Digital Voice Systems Inc公司的发展小趣事

Digital Voice Systems, Inc.(DVSI)于1988年成立,当时正值数字通信技术的兴起阶段。公司创始人凭借对语音编解码技术的深刻理解和前瞻性的市场洞察力,决定投身于这一领域。他们开发出了具有专利保护的基于鲁棒性多带激励模型(MBE Model)的低码率语音压缩算法,如IMBE和AMBE编解码系统。这些算法在当时的市场上独树一帜,为DVSI赢得了第一桶金。

在创立初期,DVSI面临着资金、技术、市场等多方面的挑战。然而,他们凭借着坚定的信念和不懈的努力,逐步克服了这些困难。他们不断投入研发,优化算法,提高产品的性能和稳定性;同时,他们积极开拓市场,与各大通信设备制造商建立合作关系,将产品推向市场。

随着时间的推移,DVSI的产品逐渐在市场上获得了认可。他们的编解码系统被广泛应用于移动通信、卫星通信、军事通信等领域,为客户提供了高效、稳定的语音通信解决方案。DVSI也因此逐渐崭露头角,成为了电子行业中一颗耀眼的明星。

故事二至五框架概述

  1. 技术创新与突破:DVSI在语音编解码技术方面的持续创新,如推出新一代的高效压缩算法,进一步提升了产品的竞争力。
  2. 市场拓展与国际化:随着公司实力的增强,DVSI开始拓展国际市场,与全球多家知名企业建立合作关系,实现了国际化发展。
  3. 合作与竞争:在电子行业中,DVSI与其他企业的合作与竞争并存。他们通过合作共赢的方式,共同推动行业的发展;同时,也面临着来自竞争对手的挑战和竞争压力。
  4. 企业文化与团队建设:DVSI注重企业文化建设,倡导创新、协作、共赢的价值观。他们注重团队建设,吸引了一批优秀人才加入公司,为公司的发展提供了有力的人才保障。

以上故事和框架概述仅供参考,您可以根据这些线索进一步挖掘和编写关于DVSI公司的故事。

HI Microwave Technology Limited公司的发展小趣事

随着技术的不断积累和市场需求的日益增长,HI Microwave不断加大研发投入,成功开发出了一系列高性能的微波组件产品,包括隔离器、循环器、开关、滤波器、功率分配器/合成器、定向耦合器、天线、混频器、压控振荡器(VCOs)和射频放大器等。这些产品广泛应用于无线电信和光纤通信行业,满足了客户多样化的需求。同时,公司还积极与国内外知名企业和科研机构合作,共同推动微波通信技术的发展。

Helicomm公司的发展小趣事

在稳固国内市场的同时,HI Microwave积极开拓国际市场,与全球多家知名企业建立了长期稳定的合作关系。公司凭借优质的产品和服务,赢得了国内外客户的广泛赞誉。此外,HI Microwave还积极参与国际展览和交流活动,不断提升品牌知名度和影响力。通过与国际同行的交流与合作,公司不断吸收先进的管理理念和技术成果,为企业的持续发展注入了新的活力。

Heatron公司的发展小趣事

进入21世纪后,Heatron公司开始积极寻求国际合作机会,以进一步拓展其全球业务。公司先后与多个国家的知名企业建立了战略伙伴关系,共同开发新产品、新技术。通过资源共享和市场互补,Heatron不仅成功进入了多个新兴市场,还显著提升了其品牌在国际市场上的知名度和影响力。

问答坊 | AI 解惑

求助,在5502中SDRAM的写入过程要用210ns,如何提升速度

在TMS320VC5502中,对SDRAM写操作,居然要210ns,简直无法干活,请教前辈,怎样解决这个问题?我对EMIF的相关寄存器进行设置,如WRITE SETUP 、WRITE STROBE 、WRITE HOLD ,对写操作消耗时间一点都没变化,很郁闷呀,在论坛上有说这是5502本身问题 ...…

查看全部问答>

vxworks下跨网段无法ping通???

老弟最近在开发过程遇到一个问题,就是开发出的vxworks程序 1、跨网段无法ping通,报文也过不去。 现象与现状:    同网段可以ping通,报文也可以过去。    目前的所跨的两个采用B类地址,从第二位开始有区别区分子网。分 ...…

查看全部问答>

软件工程应届生找不到工作

我是上海一大学软件工程专业的09届应届生,本科,不是很会说话。 在学校里学的是单片机开发之类的(偏软件 C语言),接触过ARM+Wince之类的嵌入式软件的开发。(其实学校里嵌入式软件方面的课基本就没有,都是我凭着兴趣自学的)单片机的水平达到自 ...…

查看全部问答>

关于2440 WINCE5.0 BSP中EBOOT的一点疑问,谢谢解疑

我在三星官方下了个SMDK2440A WINCE5.0的BSP,弄NBOOT+EBOOT启动的时候发现个问题: 在EBOOT中的main.c文件: void main(void) {             // Clear LEDs.     //        ...…

查看全部问答>

嵌入式操作系统裁剪是什么意思?

不裁剪不行吗? 我没有用到的功能我不用,比如任务的调度什么的,也不会影响我最终生成的可执行文件的大小啊。 …

查看全部问答>

射极跟随器问题

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 我想用三极管打一个射极跟随器  应该选取什么型号三极管 …

查看全部问答>

TC1-1T+ 巴伦 用的是什么型号的磁芯?

TC1-1T+ 巴伦 用的是什么型号的磁芯?…

查看全部问答>

【 低功耗】利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用

利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用 [ 本帖最后由 hangsky 于 2011-11-8 13:26 编辑 ]…

查看全部问答>

整理电脑有一些以前下载的文档

整理电脑有一些以前下载的文档…

查看全部问答>

如何跟踪 程序进入FaultISR的原因!

static voidFaultISR(void){    //    // Enter an infinite loop.    //    while(1)    {    }}程序调试时,经常进入这个函数里!如何有效的跟踪它 ...…

查看全部问答>