嵌入式硬件与软件工程师的合作

前言:常言道:工欲善其事,必先利其器。作为一名合格的嵌入式工程师,日常可能需要接触和处理各种奇奇怪怪的问题,这时候一款高适配性的工具将会令工作效率大大提升。作者根据个人的实际使用情况与粉丝的客观感受,为大家推荐几款嵌入式开发常用的软件。希望本篇博客可以让大家学会使用一些新的工具,当然如果读者朋友有其他的好软件推荐也可以在评论区留言!

推荐软件图:

一、Visual Studio Code

VS Code 是一个由微软开发且跨平台的轻量级代码编辑器,全称为 Visual Studio Code。它支持语法高亮、自动补全、重构、查看定义等功能,并且内置了命令行工具和Git版本控制系统。用户可以通过更改主题和键盘快捷方式实现个性化设置,也可以通过扩展程序商店安装扩展来拓展软件功能。

Visual Studio Code 个人感觉最厉害的是其自主性,它可以结合很多差距亦或是编译器进行各式各样的嵌入式研发工作!比如:作者就经常用它进行 Linux 驱动、STM32、ESP8266/32(乐鑫有专门的插件平台)!其中,

Visual Studio Code 的众多插件也是其一大特色!作者这里给大家安利几个插件!

1)、C/C++,这个肯定是必须的。
2)、C/C++ Snippets,即 C/C++重用代码块。
3)、C/C++ Advanced Lint,即 C/C++静态检测 。
4)、Code Runner,即代码运行。
5)、Include AutoComplete,即自动头文件包含。
6)、Rainbow Brackets,彩虹花括号,有助于阅读代码。
7)、One Dark Pro,VSCode 的主题。
8)、GBKtoUTF8,将 GBK 转换为 UTF8。
9)、ARM,即支持 ARM 汇编语法高亮显示。
10)、Chinese(Simplified),即中文环境。
11)、vscode-icons,VSCode 图标插件,主要是资源管理器下各个文件夹的图标。
12)、compareit,比较插件,可以用于比较两个文件的差异。
13)、DeviceTree,设备树语法插件。
14)、TabNine,一款 AI 自动补全插件,强烈推荐,谁用谁知道!

在 Ubuntu 中进行嵌入式开发,VSCode应该更是我们的第一选择。

二、Notepad++

Notepad++ 是 Windows 环境下的一款免费开源的文本编辑器。它功能强大,支持语法高亮显示、多重窗口同步编辑、多国语言和多种编程语言,并且可以加载丰富的插件。Notepad++ 还具有完整的中文接口和 UTF8 技术,适合编写计算机程序代码和制作纯文字说明文件。

下载地址:Download Notepad++ – free – latest version
用户可以通过安装插件来拓展 Notepad++ 的功能,例如代码折叠、代码提示、文档格式化和文档预览等。此外,Notepad++ 还支持自定义宏,可以帮助用户快速执行重复任务或批量修改文本。
总之,Notepad++ 是一款功能丰富、易于使用且具有良好扩展性的文本编辑器,适用于编写各种类型的文本和代码。

三、Visual Studio

不同于 VSCode,Visual Studio 是一个 IDE,我们可以装一个以备不时之需,比如验证C程序或是进行C#程序开发等。一些与嵌入式相关的模拟器也是基于 Visual Studio,作者平时的CUDA代码亦或是科研工作上的C++代码都会使用 Visual Studio 进行验证模拟工作!

除了标准功能外,Visual Studio 还提供了丰富的扩展和插件,以满足不同领域的需求。例如,用户可以通过安装 C++ 扩展来支持 C++ 编程,或者通过安装 Entity Framework 扩展来支持数据访问。

四、Keil uVision

Keil uVision 是一个由 Keil 公司开发的集成开发环境(IDE),用于嵌入式系统的开发和调试。Keil uVision 基于C语言和其他编程语言,支持各种微控制器和处理器,包括STM32、AVR、PIC等。

我相信广大的嵌入式工程师没有一个不认识上述界面吧,我们接触最多的 STM32 开发通常用得就是该 IDE 。当然,大家一直诟病的是 Keil uVision 的 UI 界面太丑了!MDK6 其实也即将面世,根据作者的了解貌似 ui 设计依旧没有太大的改善,MDK6 貌似更像一个集合体!

Keil uVision 的主要功能包括代码编辑、编译、调试和仿真等。其中,代码编辑器支持语法高亮、代码折叠、自动补全等功能,可以帮助开发人员快速编写代码。编译功能可以将源代码编译成可执行文件或库,以便在目标设备上运行。调试功能可以帮助开发人员调试和测试代码,包括单步执行、断点设置、变量监视等功能。仿真功能可以模拟目标设备的运行环境,以便测试代码的正确性和可靠性。

五、STM32CubeMX

STM32CubeMX 是一个由 ST 意法半导体公司开发的图形化工具,用于配置和初始化 STM32 微控制器,并生成 C 代码。它提供了一个直观的可视化界面,可以帮助开发人员快速配置和设置微控制器的各种外设、引脚和时钟。

STM32CubeMX 可以直接生成 HAL 库的 STM32 配置程序,极大地方便了个人开发者对于 STM32 系列开发板的使用。熟悉作者本人的应该知道,作者很多项目都是以 HAL 库作为教学的。HAL 库的学习好处是很多的,首先意法半导体已经停止对很多开发板的标准库的维护。其次,FreeRTOS 等 RTOS 对 HAL 库直接提供了接口 API 函数,方便开发移植!

作者有话:HAL 库是未来低代码量,高封装的趋势。但是,HAL 库本身也存在很多缺点,代码效率低,代码冗余等!而且,CubeMX 主要是针对。

六、VMWare Workstation

VMware Workstation 是一款功能强大的虚拟机软件,它可以在一台计算机上模拟多个操作系统和应用程序的环境。

嵌入式工程往往需要进行交叉编译的工作,即在 x86 的架构上编译出 ARM 架构的代码。这种操作往往需要我们在 Linux 系统下进行!考虑到大家办公需求,大部分工程师还是 window 作为日常操作系统的。所以,VMware Workstation 极大的方便了我们日常生活中的开发!当然,ROS 等使用也都是需要依赖 VMware Workstation 下的 Ubuntu 的。

七、QT Creator

Qt Creator 是一个跨平台的集成开发环境(IDE),专门用于开发基于 Qt 框架的 C++ 应用程序。它是由 Qt Company 提供的免费开源工具,适用于 Windows、Linux 和 macOS 等操作系统。

QT 可以算是嵌入式工程师中比较庞大的分支,属于嵌入式应用层的开发。与 QT 类似的 ui 开发平台还有很多!但是,QT可以说是目前比较常见且成熟的!C++ 功底还行的读者朋友可以往这方面发展发展,薪资待遇都是很不错的!

当然,QT 也可以用来进行简单的 C++ 入门学习仿真使用!

八、MobaXterm

MobaXterm 我愿称为最强串口调试助手!!!

MobaXterm 是一款功能强大的远程终端模拟器,适用于 Windows 和 Linux 操作系统。它提供了一个集成的远程终端和 X 服务器,可以连接各种类型的远程主机,包括SSH、FTP、Telnet等。关键是它还是免费的。串口或者SSH等协议通信时候,终端平台是可以进行复制粘贴的,这实在是泰酷辣!!!!

作者目前基本 Linux 系统的调试,树莓派4B,jeston nano等系列高级板子都是使用它作为终端控制和调试的,体验感真的是非常棒的!!!相比于收费的 SecureCRT ,它真的是宝藏软件!

九、Vofa+

VOFA+ 是一款直观、灵活、强大的插件驱动高自由度的上位机,在与电气打交道的领域里,如自动化、嵌入式、物联网、机器人等,都能看到 VOFA+ 的身影。VOFA+ 的名字来源于:Volt/伏特、Ohm/欧姆、Fala/法拉、Ampere/安培,是电气领域的基础单位,与他们的发明者——4位电子物理学领域的科学巨人,分别同名。他们的首字母共同构成了 VOFA+ 的名字。

Vofa+ 简单来说就是一款支持数字动图化的上位机,可以用于直观了解实时的数据变化。它也是免费的,同时丰富的插件也将助力嵌入式工程师实际调试需求!

VOFA+推荐学习博客:http://t.csdn.cn/Qyma8

十、Arduino IDE

Arduino IDE 是一款为 Arduino 板提供支持的集成开发环境(IDE)。它是一个简单易用的工具,可以帮助开发人员编写、编辑、上传和调试基于Arduino的交互式电子产品。如今,Arduino IDE 已经完全适配 ESP8266/32 的开发需求,IDE 提供了丰富的使用案例与 arduino 的库函数!

部分工程师可能认为 ESP 系列开发板属于纯玩具,亦或是顶多搞搞物联网,其实非也!根据博主与 MIT 、NJUST 等众多国内外高校同仁了解到:目前,很多高校都将传统的 STM32 教学改为了 ESP32 教学!同时,乐鑫公司在轻量化边缘计算方面甚至优秀!!!时代在奔流不息,相信乐鑫的ESP32系列以后大放异彩!

十一、Logic

Logic 是一种数字逻辑电路的建模和分析工具,它可以帮助用户设计和验证各种数字电路,包括组合逻辑电路、时序逻辑电路和状态机等。

逻辑分析仪是嵌入式工程非常常见的检测工具,逻辑分析仪有很多。但是,Logic 这款颜值和功能都非常耐打!!!奈何价格太贵,不过幸好存在神秘的东方力量!!!

十二、uniapp

uniapp 是一个基于 Vue.js 开发跨平台前端应用的框架,允许开发者使用一套代码,发布到iOS、Android、Web(响应式)等多个平台。它支持各种小程序、快应用等多个平台,使开发者能够更灵活地应对不同的应用场景。

uniapp的优势在于:拥有自己的社区,组件丰富,开发难度低。使得非专职 APP 开发人员可以快速上手开发属于自己的 APP 使用!

uniapp官网:uni-app快速上手 | uni-app官网 (dcloud.net.cn)

十三、Beyond Compare

Beyond Compare 是一个综合的比较工具,可以用于比较文本、文件夹、文件等,帮助用户快速、准确地找到差异和相似之处。它支持多种比较方式,包括文本比较、文件夹比较、文件比较等,可以用于管理原始档、保持资料夹同步、比对程式的输出结果、以及检查所烧入光碟备份的精确度。

Linux 驱动工程师在学习新的开发板驱动时候,往往就需要使用 Beyond Compare 进行老旧驱动代码的对比。这样,可以快速发现改动了那些地方,而这些地方则是日后开发需要重点关注的!

Beyond Compare 官网:下载 | Beyond Compare 中文官方网站 (beyondcomparepro.com)

十四、Git

Git 是一个分布式版本控制系统,用于跟踪和管理项目的变更。它是由 Linus Torvalds 于2005年发起并开发的,现在已成为开源项目并被广泛使用。使用 Git,开发者可以在本地存储项目的版本历史记录,并将其与远程仓库进行同步,以便与其他团队成员共享和协作。它还提供了许多命令和工具,如 git init、git add、git commit、git push和 git pull等,使得开发者可以轻松地管理他们的代码库。

总之,Git是一个强大的工具,可以帮助开发者更有效地管理和协作,同时提供了更好的灵活性和可扩展性。

十五、Tracealyzer

Tracealyzer 是一个用于实时跟踪和分析嵌入式系统的工具。它是由 MathWorks 公司开发的,旨在帮助开发人员更好地了解和优化他们的嵌入式系统性能。Tracealyzer 通过实时跟踪系统的运行时行为和事件,提供了对嵌入式系统的深入分析。它可以帮助开发人员识别性能瓶颈、调试问题和优化系统性能。

Tracealyzer的主要特点包括:
1、实时跟踪:Tracealyzer可以实时跟踪系统的运行时行为,包括任务执行、中断、定时器和事件等。
2、性能分析:Tracealyzer可以分析系统的性能指标,如响应时间、延迟和吞吐量等。它可以帮助开发人员识别性能瓶颈和优化机会。
3、调试和故障排除:Tracealyzer可以捕获系统中的错误和异常,并提供详细的信息和堆栈跟踪,帮助开发人员调试和解决故障。
4、可视化报告:Tracealyzer生成详细的可视化报告,包括任务和事件的时间线、性能指标图表和堆栈跟踪等。这些报告可以帮助开发人员更好地理解系统行为并制定优化策略。
5、跨平台支持:Tracealyzer支持多种嵌入式平台,包括基于Windows、Linux和实时操作系统的嵌入式设备。

十六、PyCharm

PyCharm 是一种集成开发环境(IDE),专门用于开发 Python 应用程序。它是一个功能强大的工具,提供了许多功能和特性,以帮助开发者提高效率和创建高质量的 Python 代码。

如今大火的人工智能 AI 技术,譬如:目标检测,自然语言识别等大都需要进行 Python 神经网络的训练。这往往需要借助 Python 的 IDE ,PyCharm 是如今非常主流的人工智能开发平台!嵌入式 AI 工程师往往需要在 PyCharm 进行网络模型的训练,之后再进行部署 AI 板子!

十七、Matlab

Matlab 是一种用于数学计算和工程应用的编程语言和交互式环境。它由 MathWorks 公司开发,是一种广泛使用的科学计算语言和工具,用于各种领域,如科学、工程、金融等。可能大部分工程师认为 Matlab 是科研工具,只能仿真模拟!其实,我们可以通过 matlab 的 .m 语言程序转成 C 语言从而在 MCU 中运行一些高级控制算法!

包括图像的滤波算法,也可以在 Matlab 中做预演,之后再编写对应的 C 语言进行移植实现!

Matlab 官网:MATLAB – 技术计算语言 产品信息 (mathworks.cn)

嵌入式软件工程师和嵌入式硬件工程师的区别:
什么是嵌入式工程师?在我们生活中离不开电子产品,大件的比如冰箱、空调、洗衣机,到小件的比如音箱、剃须刀等。要设计这些电子产品除了外观设计之外还有一些核心的部件就是电路板,电路板根据不同的产品形态是不同的,比如冰箱的电路板就和电视的不一样。设计这个电路板的工程师就是电子工程师。板子设计出来了,但是还不能使用,我们需要给板子注入灵魂,这时候就需要软件工程师了。比如我们按下剃须刀的开机按钮剃须刀就启动电机转动了,在按一次剃须刀就关闭了。这部分的功能是怎么实现的呢,这个就是用软件控制的。我们可以用电路板比喻为人的身体,软件就是人的大脑,大脑可以控制人的躯体工作,软件就是控制电路板实现电子产品的功能。

总结
由此嵌入式工程师就分为两个分支,嵌入式软件工程师和嵌入式硬件工程师。嵌入式软件工程师负责代码的编写。嵌入式硬件工程师负责硬件的设计。两种工程师所需要掌握的知识是不同的。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_27809619/article/details/132125079

可以看得出来嵌入式软件工程师和嵌入式硬件工程师的学习内容是很不一样的,我发现我学习的硬件不如硬件工程师多,软件不如软件工程师多,这样我就比较菜,而且时间花的可能还比较多。所以我应该要更加专业,因为我甚至不是计算机专业的,而且还学习了很多管理方面的知识,导致我什么都知道,但是没有一个专业的,不过我的时间花的确是最多,受到的效果不好。

物联沃分享整理
物联沃-IOTWORD物联网 » 嵌入式硬件与软件工程师的合作

发表评论