都说手里只有锤子的人,看什么都像钉子。为正确的工作使用正确的工具对于任何技术职业的有效性和效率都是至关重要的。嵌入式系统开发也不例外。也就是说,直到最近,针对嵌入式开发的工具还缺乏针对桌面、Web 和移动开发人员的开发工具中的改进和现代功能集。此外,对微控制器和 FPGA 进行编程历来需要相当昂贵的硬件编程器/调试器和专有软件许可证。最近对更多开源生态系统(例如,RISC-V 微处理器、Arduino IDE 等)的推动,可以说对许多嵌入式开发工具的稳健性和用户友好性产生了积极影响。
集成开发环境 (IDE):许多开发人员喜欢使用简单的文本编辑器进行编码,尤其是 Linux 上的 Vim 或 Nano。它们是轻量级的,默认情况下几乎可以在每个 Linux 发行版中找到。然而,现代代码编辑器和 IDE 提供了更多的功能,这使得它们对嵌入式开发人员非常有吸引力。此外,许多嵌入式硬件制造商提供特定于其各种微控制器系列的定制 IDE。以制造商为中心的 IDE 提供了许多优势,例如访问外部组件的支持库、多个微控制器的模板以及帮助开发人员开始使用新硬件的示例。
版本控制工具:如果不是连续的,软件开发就什么都不是。此外,很少有单个开发人员开发现代嵌入式系统。或者至少,嵌入式开发人员必须与移动或 Web 开发人员合作,因为嵌入式系统往往是更大软件生态系统的一部分。Git 等版本控制工具提供了在整个开发周期中管理源代码迭代的能力。GitHub 和 GitLab 是两个流行的基于云的源代码和其他设计文件存储库。版本控制、发布管理和错误报告只是使用版本控制工具的部分好处。但是,也有一些缺点。主要是它们已成为网络安全攻击链的一部分,因为开发人员有时会不小心留下用户名、密码、或他们推送到公开可用存储库的提交中的加密密钥。然后,不良行为者会搜索这些存储库以查找该信息并将其整合到他们的恶意软件攻击中。
调试器:从历史上看,调试微控制器意味着昂贵的硬件。在线仿真器 (ICE) 是插入更广泛系统的微控制器插座的设备。它们允许实时执行固件,同时还提供调试功能,例如寄存器和内存访问、条件断点和跟踪缓冲区。更常见且更便宜的是在线调试器 (ICD)。通常,设备位于开发人员工作站和目标微控制器之间,并允许通过在线串行编程 (ICSP) 协议进行调试。某些现代微控制器开发板甚至内置调试 ICSP 硬件,并通过直接连接目标开发板和开发人员工作站的 USB 电缆进行访问。
Linter:当我们写文章或报告时,我们通过拼写和语法检查工具运行最终草稿。linter 是一个类似的概念,但用于源代码。linter 静态地查看源代码(即,在编译之前,而不是在机器代码在目标设备上运行时),并且可以检测由风格错误、配置错误、项目结构错误、库依赖性错误引起的问题。这些错误会影响从可读性到阻止成功编译的任何事情。
GitHub Copilot:几十年来,自动完成一直是许多代码编辑器的一个功能。自动完成通过在开发人员输入源代码时为关键字和变量名称提供实时智能建议来帮助开发人员提高效率。GitHub 的 Copilot 是一种基于 AI 的代码完成工具(Visual Studio Code 的插件),它将自动完成的理念提升到了一个全新的水平。Copilot 将检查开发人员编写的函数名称,并推荐执行该函数所需的全部源代码。例如,假设您编写以下内容:
float calculateVolume
Copilot 将完成函数声明如下:
float calculateVolume(float radius) {
return (4.0/3.0) * PI * radius * radius * radius;
}
Copilot 本质上是一位 AI 同事,他可以通过至少提供函数定义的起点来帮助开发代码。但是,与任何自动化工具一样,它并不能取代人工审查并在必要时更正 Copilot 生成的代码的需要。
HTTP 和 API 检查工具:嵌入式设备(即物联网设备)不通过网络通信的情况越来越少,即使不是互联网本身。不幸的是,Web 应用程序开发人员很可能正在(与嵌入式开发工作)并行创建软件。Postman 等工具允许嵌入式开发人员独立检查和测试 HTTP 请求方法(例如,PUT、POST、GET)和 API 请求并在将它们提交到固件之前。因此,故障排除与嵌入式硬件无关,确保 API 的任何问题都完全是因为 API 本身,而不是固件或嵌入式硬件。
数据包检查工具:虽然面向开发的 HTTP 和 API 检查工具非常适合高级调试,但有时需要在数据包级别进行检查,或者可能需要检查不同的协议,例如 Zigbee。在这些情况下,有必要使用 Wireshark 等数据包检测工具。Wireshark 可以记录和检查许多基于数据包的通信协议。
基于软件的逻辑分析仪:开发人员越来越普遍地使用基于软件的工具来调试他们的设备,而不是摆满笨重的基于硬件的示波器和逻辑分析仪。通常,基于软件的工具通过 USB 电缆连接到个人计算机,界面以桌面应用程序的形式提供。流行的入门级/中级逻辑分析仪是 Saleae 逻辑分析仪。这些基于软件的工具对现场技术人员来说非常有吸引力。通过将传统上基于实验室的分析带到现场,他们可以更有效地检查和排除已部署设备的故障。基于软件的分析器的一个重要优势是,除了支持的默认协议(例如 I2C、SPI、串行)之外,还可以为自定义通信协议编写您自己的协议分析器。
安全外壳 (SSH) 终端客户端:对于运行操作系统并提供 shell 访问以进行远程管理的更强大的嵌入式系统,可能需要通过 SSH 连接到设备以执行特定的维护任务。或者可能需要远程登录多个物联网设备与之通信的服务器,并对后端服务进行更改。无论如何,远程访问系统的能力至关重要,而 Termius 等 SSH 终端客户端使之成为可能。现代客户端中的其他有用功能包括通过单击鼠标创建、存储和运行 bash 代码片段。它们还提供一次访问多个终端的能力。最后,一些客户端还提供安全文件传输 (SFTP) 功能,用于将文件传输到本地计算机或从远程设备传输文件。
审核编辑黄昊宇
-
嵌入式
+关注
关注
5057文章
18964浏览量
301806
发布评论请先 登录
相关推荐
评论