从代码编辑到调试:嵌入式工程师必知的16款开发工具
从代码编辑到调试:嵌入式工程师必知的16款开发工具
对于嵌入式工程师来说,选择合适的工具可以极大地提高工作效率。本文将为大家推荐几款常用的嵌入式开发软件工具,从代码编辑器到集成开发环境,从虚拟机到调试工具,应有尽有。
Visual Studio Code
Visual Studio Code(简称VS Code)是一个由微软开发的跨平台轻量级代码编辑器,支持语法高亮、自动补全、重构、查看定义等功能,并且内置了命令行工具和Git版本控制系统。用户可以通过更改主题和键盘快捷方式实现个性化设置,也可以通过扩展程序商店安装扩展来拓展软件功能。
VS Code最强大的地方在于其高度的可扩展性。例如,通过安装以下插件,可以显著提升开发效率:
- C/C++:支持C/C++语言开发
- C/C++ Snippets:提供C/C++代码片段
- C/C++ Advanced Lint:C/C++静态代码分析
- Code Runner:代码运行功能
- Include AutoComplete:自动完成头文件包含
- Rainbow Brackets:彩虹括号,便于代码阅读
- One Dark Pro:主题样式
- GBKtoUTF8:GBK转UTF8编码
- ARM:支持ARM汇编语法高亮
- Chinese(Simplified):中文环境支持
- vscode-icons:文件夹图标插件
- compareit:文件比较插件
- DeviceTree:设备树语法支持
- TabNine:AI自动补全插件
在Ubuntu环境下进行嵌入式开发时,VS Code更是首选工具。
Notepad++
Notepad++是Windows环境下的一款免费开源文本编辑器。它功能强大,支持语法高亮显示、多重窗口同步编辑、多国语言和多种编程语言,并且可以加载丰富的插件。Notepad++还具有完整的中文接口和UTF8技术,适合编写计算机程序代码和制作纯文字说明文件。
用户可以通过安装插件来拓展Notepad++的功能,例如代码折叠、代码提示、文档格式化和文档预览等。此外,Notepad++还支持自定义宏,可以帮助用户快速执行重复任务或批量修改文本。
总之,Notepad++是一款功能丰富、易于使用且具有良好扩展性的文本编辑器,适用于编写各种类型的文本和代码。
Visual Studio
不同于VS Code,Visual Studio是一个完整的集成开发环境(IDE)。它可以用于各种开发任务,如验证C程序、C#程序开发等。一些与嵌入式相关的模拟器也是基于Visual Studio的。例如,作者平时的CUDA代码和科研工作中的C++代码都会使用Visual Studio进行验证和模拟工作。
Visual Studio提供了丰富的扩展和插件,以满足不同领域的需求。例如,用户可以通过安装C++扩展来支持C++编程,或者通过安装Entity Framework扩展来支持数据访问。
Keil uVision
Keil uVision是由Keil公司开发的集成开发环境(IDE),主要用于嵌入式系统的开发和调试。它基于C语言和其他编程语言,支持各种微控制器和处理器,包括STM32、AVR、PIC等。
Keil uVision的主要功能包括代码编辑、编译、调试和仿真等。其中,代码编辑器支持语法高亮、代码折叠、自动补全等功能,可以帮助开发人员快速编写代码。编译功能可以将源代码编译成可执行文件或库,以便在目标设备上运行。调试功能可以帮助开发人员调试和测试代码,包括单步执行、断点设置、变量监视等功能。仿真功能可以模拟目标设备的运行环境,以便测试代码的正确性和可靠性。
STM32CubeMX
STM32CubeMX是ST意法半导体公司开发的图形化工具,用于配置和初始化STM32微控制器,并生成C代码。它提供了一个直观的可视化界面,可以帮助开发人员快速配置和设置微控制器的各种外设、引脚和时钟。
STM32CubeMX可以直接生成HAL库的STM32配置程序,极大地方便了个人开发者使用STM32系列开发板。HAL库的学习有很多优势,例如意法半导体已经停止对很多开发板的标准库的维护。此外,FreeRTOS等RTOS对HAL库直接提供了接口API函数,方便开发移植。
虽然HAL库存在代码效率低、代码冗余等缺点,但它仍然是目前低代码量、高封装趋势下的主流选择。
VMware Workstation
VMware Workstation是一款功能强大的虚拟机软件,可以在一台计算机上模拟多个操作系统和应用程序的环境。嵌入式工程往往需要进行交叉编译的工作,即在x86架构上编译出ARM架构的代码。这种操作通常需要在Linux系统下进行,而大多数工程师日常使用的是Windows系统。因此,VMware Workstation极大地方便了日常工作中的开发需求。此外,ROS等工具也通常需要在Ubuntu系统下运行。
Qt Creator
Qt Creator是一个跨平台的集成开发环境(IDE),专门用于开发基于Qt框架的C++应用程序。它由Qt Company提供,是免费开源工具,支持Windows、Linux和macOS等操作系统。
Qt开发是嵌入式工程师中一个较大的分支,属于嵌入式应用层的开发。Qt框架提供了丰富的UI开发功能,且代码封装性好,开发效率高。与Qt类似的UI开发平台还有很多,但Qt是目前比较常见且成熟的解决方案。对于C++基础较好的开发者来说,这是一个很有前景的发展方向。
Qt Creator也可以用于简单的C++入门学习和仿真使用。
MobaXterm
MobaXterm是一款功能强大的远程终端模拟器,适用于Windows和Linux操作系统。它提供了一个集成的远程终端和X服务器,可以连接各种类型的远程主机,包括SSH、FTP、Telnet等。其最大的优点是免费,并且支持复制粘贴功能,非常适合串口或SSH等协议的通信调试。
作者目前基本使用MobaXterm进行Linux系统、树莓派4B、jeston nano等高级开发板的终端控制和调试,体验感非常好。相比于收费的SecureCRT,MobaXterm是一个宝藏软件。
VOFA+
VOFA+是一款直观、灵活、强大的插件驱动型上位机,在电气、自动化、嵌入式、物联网、机器人等领域都有广泛应用。VOFA+的名字来源于电气领域的基础单位:Volt(伏特)、Ohm(欧姆)、Fala(法拉)、Ampere(安培),这些单位的首字母共同构成了VOFA+的名字。
简单来说,VOFA+是一款支持数字动图化的上位机,可以直观地展示实时数据变化。它也是免费的,并且通过丰富的插件满足嵌入式工程师的实际调试需求。
Arduino IDE
Arduino IDE是为Arduino板提供的集成开发环境(IDE)。它是一个简单易用的工具,可以帮助开发人员编写、编辑、上传和调试基于Arduino的交互式电子产品。如今,Arduino IDE已经完全适配ESP8266/32的开发需求,并提供了丰富的使用案例和Arduino库函数。
部分工程师可能认为ESP系列开发板仅适用于物联网等简单应用,其实不然。根据与MIT、NJUST等国内外高校的交流发现,很多高校已经将传统的STM32教学改为了ESP32教学。同时,乐鑫公司在轻量化边缘计算方面表现出色,预计未来ESP32系列将有更广阔的应用前景。
Logic
Logic是一种数字逻辑电路的建模和分析工具,可以帮助用户设计和验证各种数字电路,包括组合逻辑电路、时序逻辑电路和状态机等。
Logic这款工具在颜值和功能方面表现出色,但价格较高。幸运的是,存在一些性价比高的替代方案。
uniapp
uniapp是一个基于Vue.js的跨平台前端应用开发框架,允许开发者使用一套代码发布到iOS、Android、Web(响应式)等多个平台。它还支持各种小程序和快应用平台,使开发者能够灵活应对不同的应用场景。
uniapp的优势在于拥有自己的社区,组件丰富,开发难度低,使得非专职APP开发人员也能快速上手开发自己的应用。
Beyond Compare
Beyond Compare是一个综合的比较工具,可以用于比较文本、文件夹、文件等,帮助用户快速准确地找到差异和相似之处。它支持多种比较方式,包括文本比较、文件夹比较、文件比较等,可以用于管理源代码、保持文件夹同步、比较程序输出结果以及检查光盘备份的精确度。
Linux驱动工程师在学习新开发板驱动时,通常需要使用Beyond Compare进行旧驱动代码的对比,以便快速发现改动之处,这些改动往往是日后开发的重点关注对象。
Git
Git是一个分布式版本控制系统,用于跟踪和管理项目的变更。它由Linus Torvalds于2005年发起并开发,现在已成为开源项目并被广泛使用。使用Git,开发者可以在本地存储项目的版本历史记录,并将其与远程仓库进行同步,以便与其他团队成员共享和协作。它还提供了许多命令和工具,如git init、git add、git commit、git push和git pull等,使得开发者可以轻松地管理他们的代码库。
总之,Git是一个强大的工具,可以帮助开发者更有效地管理和协作,同时提供了更好的灵活性和可扩展性。
Tracealyzer
Tracealyzer的主要特点包括:
- 实时跟踪:可以实时跟踪系统的运行时行为,包括任务执行、中断、定时器和事件等。
- 调试和故障排除:可以捕获系统中的错误和异常,并提供详细的信息和堆栈跟踪,帮助开发人员调试和解决故障。
- 可视化报告:生成详细的可视化报告,包括任务和事件的时间线、性能指标图表和堆栈跟踪等。这些报告可以帮助开发人员更好地理解系统行为并制定优化策略。
- 跨平台支持:支持多种嵌入式平台,包括基于Windows、Linux和实时操作系统的嵌入式设备。
PyCharm
PyCharm是一种专门用于开发Python应用程序的集成开发环境(IDE)。它是一个功能强大的工具,提供了许多功能和特性,以帮助开发者提高效率和创建高质量的Python代码。
Matlab
Matlab是一种用于数学计算和工程应用的编程语言和交互式环境。它由MathWorks公司开发,是一种广泛使用的科学计算语言和工具,应用于科学、工程、金融等多个领域。虽然很多工程师认为Matlab主要用于科研和仿真,但实际上,我们可以通过Matlab的.m语言程序转换成C语言,实现在MCU中运行高级控制算法。此外,图像滤波算法等也可以在Matlab中进行预演,然后再编写相应的C语言代码进行移植实现。