目录

一、前言

二、鸟瞰各家Eclipse IDE

2.1 原版Eclipse

2.2 迈来芯MLXIDE

2.3 STM32CubeIDE

2.4 S32DS

三、工程管理

3.1 选择和创建新的工作空间

3.2 同时打开两个工作空间

3.3 切换工作空间

3.4 导入工程

3.5 选择合适的工程代码编码方式

四、常用技巧

4.1 切换主题

4.2 改变字体大小和颜色

4.3 添加模块窗口

4.4 常用图标介绍

4.5 常用默认快捷键

4.6 GCC的并行编译

4.7 开启并行编译

4.9 编译器选项(STM32CubeIDE)

五、工程调试技巧

5.1 查看.elf和.map文件

5.2 查看反汇编文件

5.2.1 S32DS生成反汇编文件

5.2.2 STM32CubeIDE生成反汇编文件

5.3 打断点

5.4 查看变量、寄存器、修改变量

5.5 查看内存

六、高阶技巧之Git版本管理

6.1 Git简介

6.3 注册并新建代码仓库

6.5 在IDE中初始化仓库

6.6 打开GIT管理模块

6.7 进行第一次本地提交和推送

6.8 添加远程仓库

6.9 查看远程仓库

6.10 从远程仓库将工程导入IDE

七、高阶技巧之外部工具的使用

八、总结


一、前言

Keil和IAR一直以来都是嵌入式编程IDE的标杆,从51到ARM、AVR、再到各家私有内核开发都它们的身影。近几年,众多MCU厂商却都在大力发展自家的免费IDE,力图摆脱KEIL和IAR的垄断局面。而这些免费IDE大都基于Eclipse深度定制而来,如迈来芯的MLXIDE、ST的CubeIDE、TruStudio、NXP的S32DS、TI的CCS、再到最近比较火热的Risc-V,国内Risc-V处理器的领军企业芯来科技开发的Nuclei Studio IDE,都是Eclipse的定制产品,它们不同LOGO背后,都是Eclipse+SDK插件+代码生成插件+编译器+调试服务器的工具大集合。

基于上述原因,笔者结合自己开发过程中所接触的Eclipse开发环境,从代码编辑、工程管理、仿真调试、常用技巧等几个方面介绍Eclipse的使用技巧,本文主要以NXP的S32DS及STM32CubeIDE作为示例展开介绍,笔者水平有限,无法面面俱到,如果错漏,烦请指出。

三、工程管理

Eclipse的工程会有各自的工作空间,每个工作空间对应不同的用户配置,工作空间一般在第一次安装IDE打开时选择,实际上,工作空间可以不唯一,用户可以根据自己使用需要,建立多个工作空间管理不同系列的工程。

笔者习惯建立一个主工作空间,以及一个备用工作空间,备用空间用于调试测试代码,主工作空间用于发布正式代码,使用上来说,主空间在管理时需要严谨一些,备用空间则可以随意。

3.1 选择和创建新的工作空间

打开IDE的时候会有以下弹窗,可以根据需要新建工作空间或选择已有工作空间。

3.2 同时打开两个工作空间

再次打开IDE,可以选择不同的空间,此时,配合双屏,可以方便的对比两个工程的代码异同。

3.3 切换工作空间

若电脑硬件资源有限,不允许同时开启多个工作空间时,可以从当前工作空间切出,选择其他工作空间。

3.4 导入工程

      Eclipse的工程支持不同工作空间互相导入,导入时,可以选择是否将原工程的所有文件复制到当前工作空间中。

3.5 选择合适的工程代码编码方式

代码本质上是文本文件,文本编码的不同,可能导致代码中文注释成为乱码,通常在建立工程时就应注意工程编码,与项目团队的其他成员统一,避免工程导入到对方电脑出现注释乱码。

GBK编码适用于大部分中文场景,但UTF-8兼容性更好

4.2 改变字体大小和颜色

4.3 添加模块窗口

Eclipse的很多插件默认并不显示在主界面中,需要自行添加。

其中,常用模块功能如下:

  Build Target:通过make工具编译工程

  C/C++ Projects:工程管理界面

  Console:控制台,用于打印编译输出信息和调试信息

  OutLine:代码及函数的快速预览类视图

  Problems:编译报错和警告显示窗口

  Project Explorer:工程资源管理器

4.4 常用图标介绍

:增量编译按钮,只编译有改动的文件。

:全部编译,清除所有目标文件,重新执行编译操作。

:跳过所有断点

:新建工程

:新建源代码目录

:新建C源码文件

:开始下载和调试工程

:执行调试任务

:运行外部工具

:块编码模式,列对齐情况下,同时编辑多行文本

:后退,查看代码时很有用

:前进,查看代码时很有用

4.9 编译器选项(STM32CubeIDE)

其他IDE大同小异,凡是与编译器相关的设置,通常都在这里。

4.10 屏蔽错误提示和拼写检查

有些基于Eclipse的IDE代码分析做得并不好,或者由于工程本身原因,会出现一些错误提示,但编译本身并无问题。比如,某些符号无法解析,或者有些宏定义识别不到等,通常会在工中给出提示。这类问题对于强迫症来说无疑是很难受的,此类问题可以通过关闭IDE内置的代码分析功能解决。

将上图中需要关闭的代码分析项关闭即可。

五、工程调试技巧

5.1 查看.elf和.map文件

GNU工具链编译后通常会生成elf文件,其中包含了程序内容、编译时的符号(C变量、C函数、汇编标号等)、调试信息、MCU存储划分和占用情况。但elf文件是二进制文件,无法直接打开,通常需要借助工具链自带的readelf工具才能查看。为了便开发调试, IDE还会把elf中的内容以文本的形式打印,这个文本文件就是map。借助map文件,可以查到变量的存储地址,函数的运行地址,及各个函数和变量的存储占用情况,及各自所属的源文件,map文件通常位于Debug文件夹或者Release文件夹。

图示圈出部分表示笔者工程生成的main函数运行地址为0x01029010,占用大小0x408字节空间,所属文件为ert_main.c

5.2.3 反汇编文件内容格式

通常,从左至右三列依次为:指令运行地址、二进制指令内容、二进制指令对应的汇编指令。

5.3 打断点

Eclipse系列的IDE打断点与KEIL和IAR操作基本一致,都是在代码左边空白处双击。

5.4 查看变量、寄存器、修改变量

选中变量后点击鼠标右键->Add Watch Expression,即可将全局变量加入监测窗口,监视窗口除全局变量外还可以查看其他内容。

变量内容需要暂停后才能显示,暂停期间,可以在显示窗口中输入新值,实时改变程序中的变量内容。

5.5 查看内存

添加内存查看窗口后,可以直接输入地址查看地址对应内容

六、高阶技巧之Git版本管理

6.1 Git简介

Eclipse系列的IDE绝大部分都支持使用GIT进行项目管理和团队合作,通常在构建大型项目时,会有多位成员参与项目代码编写,代码发布前可能存在多个版本,这些因素都会导致代码版本众多,管理不便。GIT就是为了解决这些问题而诞生的一个版本管理工具,GIT可以将每一次提交做增量式记录,代码提交人,提交时间,更改的具体内容,版本之间的差异都可以非常方便的追溯。

配合GIT,可以将项目代码托管到代码仓库中,目前主流的代码仓库如GitHub和Gitee,都支持GIT版本管理。二者区别是,GitHub仅对开源代码提供免费仓库,私有仓库需要付费,且因其服务器在国外,下载和同步较慢。Gitee则是开源中国提供的免费代码托管平台,其面向个人提供免费的私人仓库和开源仓库,项目没有github多,但是速度快,且私有仓库免费,仅作为仓库来说,使用体验非常好,笔者平常用gitee更多一些,gitee的中文名称叫“码云“。

笔者在此教程中以STM32CudeIDE为例,将STM32F0的一个DEMO工程上传至代码仓库,并对工程修改,再次提交推送至仓库,视为一次项目代码更新,并且演示使用git克隆代码仓库并导入IDE。

6.2 下载安装GIT

官方下载链接如下:Git - Downloads,其具有良好的跨平台特性,同时支持三大主流电脑系统。读者根据自身情况下载需要的即可,下载完成后安装即可,安装过程中保持默认选项即可,不需要额外勾选,安装过程此处省略。

6.3 注册并新建代码仓库

代码托管到代码仓库的一大好处就是方便同步和管理,笔者自己的典型使用场景是,下班前在A电脑上完成项目代码提交和推送,回家后通过代码仓库同步代码到家里B电脑。如果是开源代码,还可以方便的共享。

在使用这些功能之前,需要有一个代码仓库平台的账号,并将主机上安装的GIT和远程仓库绑定。绑定过程通过GIT生成的公钥和私钥配对实现,当然,即使不生成公钥私钥也可以通过账号和密码推送访问。

笔者这里推荐国内的码云,请读者注册码云账号后,通过以下码云官方的帮助文档完成GIT的初始化和绑定。

  1. 初次运行 Git 前的配置
  2. 生成/添加SSH公钥

笔者后文的步骤默认读者已经下载安装GIT,并绑定代码仓库。

6.4 新建代码仓库

开始管理一个工程前,需要先在代码托管平台新建一个仓库,

笔者此处演示的是STM32F0的一个简单LIN总线DMEO功能,因此新建仓库名称为:“STM32F0_LINBoard”,仓库创建为私有仓库。

新建仓库成功后,出现以下页面,请复制仓库链接备用,若复制http链接,后续步骤关联远程仓库时,需要输入账号和密码,如果复制ssh链接,因为5.3中已经添加了公钥私钥对,可以免去输入账号密码这一步骤。

6.5 在IDE中初始化仓库

推送仓库前需要在在IDE中初始化本地仓库

6.6 打开GIT管理模块

GIT Staging用来在IDE中进行本地代码提交和推送,默认是关闭的,需要读者自行打开,步骤如下图。

6.7 进行第一次本地提交和推送

按下图所示,将所有改动的文件加入暂存区后,Commit执行本地提交,Commit and Push为执行本地提交且推送到远程仓库,提交前别忘了添加提交信息(笔者此处输入了“第一次提交”)

6.8 添加远程仓库

第一次提交会因为没有关联远程仓库而弹出提示,此时只需要将5.4步骤中复制的远程仓库信息录入,并输入远程仓库的账号和密码,继续执行推送即可。

使用http链接时,需要输入账号和密码,使用ssh链接,则无需输入账号和密码。

6.9 查看远程仓库

此时查看远程仓库,可以看到,代码成功推送给到了远程仓库。

笔者对工程添加一个版本说明,并进行第二次提交推送。

再次查看远程代码仓库,可以看到笔者第二次提交仅修改了一个文件的内容。

6.10 从远程仓库将工程导入IDE

实际工作中,常常需要将自己的代码分析给团队其他成员,此时,若该成员已在项目仓库成员列表中,则可以直接访问远程仓库,导出工程到IDE。

笔者此处新建一个名为TEST的工作空间,将远程代码仓库的工程导入该空间。

1.新建工作空间

2.使用仓库地址从GIT将工程导入IDE

笔者此处的地址依然是代码仓库创建时的地址,http地址和SSH地址都可以

至此,导入成功,工程可以正常编译,笔者此处所列,仅是GIT的基础用法,有兴趣的读者,可以参考码云的帮助文档,进一步学习。

Eclipse系列IDE除了厂商支持的插件以及eclipse的通用插件外,用户还可以在使用过程中,自己添加外部工具,辅助完成工作,例如,运行一些脚本,某些不直接被官方支持的兼容调试工具等。由于这部分内容笔者已经单独撰文详述,此处给出链接,供读者参考,对外部工具使用有兴趣的读者请移步:通过External Tools在STM32CubeIDE下使用DAP-LINK。

八、总结

Eclipse功能强大,涉及细节众多,奈何笔者精力水平有限,暂探索至此,希望对读者有所帮助,未来若有发现,将继续更新。

深入理解工具链-基于Eclipse的嵌入式IDE快速入门相关推荐

  1. 深入理解工具链-自己搭建STM32编程IDE

    目录 一.前言 二.编译器组成与编译流程 2.1 编译流程概述 2.2 Gcc For Arm编译器 2.3 预编译 2.4 编译 2.5 汇编 2.6 链接 2.7 生成HEX镜像 2.8 通过Ma ...

  2. RISC-V 嵌入式 Rust 快速入门,基于 Renode 模拟器和 HiFive1 开发板

    配置开发环境 这里以 Ubuntu 18.04 作为宿主环境,其它 Linux 发行版类似.Windows 环境待更新. 安装标准 Rust 编译器 wget https://cdn.jsdelivr ...

  3. Eclipse快捷键大全(同样适用基于Eclipse开发的IDE)

    为什么80%的码农都做不了架构师?>>>    Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行  Ctrl+Alt+↓ 复制当前行到下一行(复制增 ...

  4. linux 按键驱动中断 rockchip_嵌入式linux快速入门(转载)

    从上图可以知道: ① 组成:嵌入式Linux系统 = bootloader + linux内核 + 根文件系统(里面含有APP). ② bootloader:它的目的是启动内核,去哪读内核?读到哪里? ...

  5. 基于Eclipse的毕业设计题目50例

    基于Eclipse的毕业设计题目1-10题 1.基于Eclipse的嵌入式集成开发环境分析与设计 2.基于Eclipse的核磁共振谱数据处理软件的实现 3.基于Eclipse的嵌入式数字电视开发平台数 ...

  6. 使用Qt学习C语言编程2(加入工具链)

    按下图配置工具链 一定要动手操作,在做的过程中理解工具链的重要性和作用. 在study1_CreatePureCPrj项目中新增一个模块,用于封装led(led\led.h led\led.c) 更改 ...

  7. 概念解释--工具链是什么?

    概念解释-工具链是什么 工具链的字面意思 CMSIS支持的工具链 本文搬运自博客:https://www.cnblogs.com/lvdongjie/p/6835048.html 工具链的字面意思 程 ...

  8. 关于DevOps工具链的探讨

    近日,翰德恩的学友会同学们与翰德恩高级DevOps咨询师.原京东研发效能专家熊志男老师就DevOps工具链展开了探讨. Q: 熊老师好,公司要求我们自研或者基于业界的工具采购DevOps相关工具.您在 ...

  9. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远程 ...

最新文章

  1. 跟我学PPStream局域网共享
  2. linux启动脚本 范本,Linux—微服务启停shell脚本编写模板
  3. matlab人脸追踪,求大神帮助我这个菜鸟解决一下人脸跟踪这个程序的一些问题啊!!...
  4. bat窗口大小设置_DOS处理 CMD提速 BAT恶搞
  5. wxWidgets:wxWidgets 辅助功能示例
  6. Android中ScrollView嵌套WebView
  7. bat 字符串截取操作
  8. 正则表达式五分钟快速复习
  9. 在python中、关于全局变量和局部变量、以下_关于全局变量和局部变量-Python
  10. curl模拟http请求
  11. Stick ------ 剪枝神题
  12. 计算机无法安装小丸工具箱,小丸工具箱
  13. 【JAVA】IOStream
  14. 斯皮尔曼相关系数范围_Spearman Rank(斯皮尔曼等级)相关系数
  15. linux 版本号 笔记本_Linux版ThinkPad笔记本正式亮相(图)
  16. 计算机管理员如何改名,win10修改管理员名称怎么改名_win10本地账户管理员改名如何操作...
  17. UE 在场景或UMG中播放视频
  18. Chrome 75 lazy-loading
  19. python shp文件_对python 读取线的shp文件实例详解
  20. Android开发:开源库集合

热门文章

  1. [附源码]JSP+ssm计算机毕业设计分时租赁共享汽车系统dm1jn【源码、数据库、LW、部署】
  2. 减速器性能测试软件,减速机性能测试台
  3. python且的表示_五种Python 的转义表示法
  4. c编程语言外文翻译及原文,C 语言的预处理[外文翻译]
  5. 【docker】——docker项目中使用phantomjs实现网页快照缩略图
  6. 【IP技术】网络安全防护措施
  7. idc源码kangle_kangle虚拟主机源码(idc虚拟主机源码)
  8. 进销存记账软件十大品牌合集,看看哪一款适合你
  9. 深入理解数据库分片中间件MyCat实现原理
  10. 计算机网络期末备考题(必会,划重点题)