深入理解工具链-基于Eclipse的嵌入式IDE快速入门
目录
一、前言
二、鸟瞰各家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作为示例展开介绍,笔者水平有限,无法面面俱到,如果错漏,烦请指出。
三、工程管理
笔者习惯建立一个主工作空间,以及一个备用工作空间,备用空间用于调试测试代码,主工作空间用于发布正式代码,使用上来说,主空间在管理时需要严谨一些,备用空间则可以随意。
3.1 选择和创建新的工作空间
打开IDE的时候会有以下弹窗,可以根据需要新建工作空间或选择已有工作空间。
3.2 同时打开两个工作空间
再次打开IDE,可以选择不同的空间,此时,配合双屏,可以方便的对比两个工程的代码异同。
3.3 切换工作空间
若电脑硬件资源有限,不允许同时开启多个工作空间时,可以从当前工作空间切出,选择其他工作空间。
3.4 导入工程
Eclipse的工程支持不同工作空间互相导入,导入时,可以选择是否将原工程的所有文件复制到当前工作空间中。
3.5 选择合适的工程代码编码方式
代码本质上是文本文件,文本编码的不同,可能导致代码中文注释成为乱码,通常在建立工程时就应注意工程编码,与项目团队的其他成员统一,避免工程导入到对方电脑出现注释乱码。
4.7 开启并行编译
Eclipse的GNU工具链通常开启并行编译的方法如下图所示:
开启并行编译后,对应的编译指令由make all会变成make -j all。
工程名右键->Properties->C/C++ Build->Settings下对应这编译各个阶段的配置,典型的有:
4.9 编译器选项(STM32CubeIDE)
5.2 查看反汇编文件
某些情况下,调试过程中单纯查看C代码无法定位问题,需要借助编译后的汇编指令,此时,可以借助工程的反汇编文件帮助定位问题。
5.2.1 S32DS生成反汇编文件
5.2.2 STM32CubeIDE生成反汇编文件
5.2.3 反汇编文件内容格式
通常,从左至右三列依次为:指令运行地址、二进制指令内容、二进制指令对应的汇编指令。
5.3 打断点
Eclipse系列的IDE打断点与KEIL和IAR操作基本一致,都是在代码左边空白处双击。
5.4 查看变量、寄存器、修改变量
选中变量后点击鼠标右键->Add Watch Expression,即可将全局变量加入监测窗口,监视窗口除全局变量外还可以查看其他内容。
变量内容需要暂停后才能显示,暂停期间,可以在显示窗口中输入新值,实时改变程序中的变量内容。
5.5 查看内存
添加内存查看窗口后,可以直接输入地址查看地址对应内容
六、高阶技巧之Git版本管理
6.1 Git简介
笔者在此教程中以STM32CudeIDE为例,将STM32F0的一个DEMO工程上传至代码仓库,并对工程修改,再次提交推送至仓库,视为一次项目代码更新,并且演示使用git克隆代码仓库并导入IDE。
6.2 下载安装GIT
官方下载链接如下:Git - Downloads,其具有良好的跨平台特性,同时支持三大主流电脑系统。读者根据自身情况下载需要的即可,下载完成后安装即可,安装过程中保持默认选项即可,不需要额外勾选,安装过程此处省略。
6.3 注册并新建代码仓库
代码托管到代码仓库的一大好处就是方便同步和管理,笔者自己的典型使用场景是,下班前在A电脑上完成项目代码提交和推送,回家后通过代码仓库同步代码到家里B电脑。如果是开源代码,还可以方便的共享。
在使用这些功能之前,需要有一个代码仓库平台的账号,并将主机上安装的GIT和远程仓库绑定。绑定过程通过GIT生成的公钥和私钥配对实现,当然,即使不生成公钥私钥也可以通过账号和密码推送访问。
笔者这里推荐国内的码云,请读者注册码云账号后,通过以下码云官方的帮助文档完成GIT的初始化和绑定。
- 初次运行 Git 前的配置
- 生成/添加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功能强大,涉及细节众多,奈何笔者精力水平有限,暂探索至此,希望对读者有所帮助,未来若有发现,将继续更新。
深入理解工具链-基于Eclipse的嵌入式IDE快速入门相关推荐
- 深入理解工具链-自己搭建STM32编程IDE
目录 一.前言 二.编译器组成与编译流程 2.1 编译流程概述 2.2 Gcc For Arm编译器 2.3 预编译 2.4 编译 2.5 汇编 2.6 链接 2.7 生成HEX镜像 2.8 通过Ma ...
- RISC-V 嵌入式 Rust 快速入门,基于 Renode 模拟器和 HiFive1 开发板
配置开发环境 这里以 Ubuntu 18.04 作为宿主环境,其它 Linux 发行版类似.Windows 环境待更新. 安装标准 Rust 编译器 wget https://cdn.jsdelivr ...
- Eclipse快捷键大全(同样适用基于Eclipse开发的IDE)
为什么80%的码农都做不了架构师?>>> Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增 ...
- linux 按键驱动中断 rockchip_嵌入式linux快速入门(转载)
从上图可以知道: ① 组成:嵌入式Linux系统 = bootloader + linux内核 + 根文件系统(里面含有APP). ② bootloader:它的目的是启动内核,去哪读内核?读到哪里? ...
- 基于Eclipse的毕业设计题目50例
基于Eclipse的毕业设计题目1-10题 1.基于Eclipse的嵌入式集成开发环境分析与设计 2.基于Eclipse的核磁共振谱数据处理软件的实现 3.基于Eclipse的嵌入式数字电视开发平台数 ...
- 使用Qt学习C语言编程2(加入工具链)
按下图配置工具链 一定要动手操作,在做的过程中理解工具链的重要性和作用. 在study1_CreatePureCPrj项目中新增一个模块,用于封装led(led\led.h led\led.c) 更改 ...
- 概念解释--工具链是什么?
概念解释-工具链是什么 工具链的字面意思 CMSIS支持的工具链 本文搬运自博客:https://www.cnblogs.com/lvdongjie/p/6835048.html 工具链的字面意思 程 ...
- 关于DevOps工具链的探讨
近日,翰德恩的学友会同学们与翰德恩高级DevOps咨询师.原京东研发效能专家熊志男老师就DevOps工具链展开了探讨. Q: 熊老师好,公司要求我们自研或者基于业界的工具采购DevOps相关工具.您在 ...
- 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远程 ...
最新文章
- 跟我学PPStream局域网共享
- linux启动脚本 范本,Linux—微服务启停shell脚本编写模板
- matlab人脸追踪,求大神帮助我这个菜鸟解决一下人脸跟踪这个程序的一些问题啊!!...
- bat窗口大小设置_DOS处理 CMD提速 BAT恶搞
- wxWidgets:wxWidgets 辅助功能示例
- Android中ScrollView嵌套WebView
- bat 字符串截取操作
- 正则表达式五分钟快速复习
- 在python中、关于全局变量和局部变量、以下_关于全局变量和局部变量-Python
- curl模拟http请求
- Stick ------ 剪枝神题
- 计算机无法安装小丸工具箱,小丸工具箱
- 【JAVA】IOStream
- 斯皮尔曼相关系数范围_Spearman Rank(斯皮尔曼等级)相关系数
- linux 版本号 笔记本_Linux版ThinkPad笔记本正式亮相(图)
- 计算机管理员如何改名,win10修改管理员名称怎么改名_win10本地账户管理员改名如何操作...
- UE 在场景或UMG中播放视频
- Chrome 75 lazy-loading
- python shp文件_对python 读取线的shp文件实例详解
- Android开发:开源库集合
热门文章
- [附源码]JSP+ssm计算机毕业设计分时租赁共享汽车系统dm1jn【源码、数据库、LW、部署】
- 减速器性能测试软件,减速机性能测试台
- python且的表示_五种Python 的转义表示法
- c编程语言外文翻译及原文,C 语言的预处理[外文翻译]
- 【docker】——docker项目中使用phantomjs实现网页快照缩略图
- 【IP技术】网络安全防护措施
- idc源码kangle_kangle虚拟主机源码(idc虚拟主机源码)
- 进销存记账软件十大品牌合集,看看哪一款适合你
- 深入理解数据库分片中间件MyCat实现原理
- 计算机网络期末备考题(必会,划重点题)