电子工程师的编程语言

电器工程 微控制器 编程 C C++
2022-01-03 03:11:37

我是一名电子和通信工程专业的学生,​​在上大学之前,我一直对编程和计算机应用感兴趣。我一直专注于设计 Windows 应用程序和学习它的技术,但现在,我觉得这在我的领域中毫无用处……我不必学习计算机科学和开发软件的所有知识!(我说得对吗?)

我知道 VB .Net、C# 和 C++。我的假期有很多时间,所以我想以编程方式更深入地研究“电子领域”。那么,您建议学习或关注什么?

我想要那些用于编程微控制器和其他集成电路的语言。C++ 够用还是我也应该掌握 C?请告诉我你的想法。

4个回答

是的,几乎可以肯定,尽可能多地学习使用 C 是一个很好的举措(C++ 将为您提供一个有用的起点,尽管正如leftaroundabout 所指出的那样,仍然有很多东西需要学习,尤其是小型嵌入式系统编码之间的差异与为 Windows 之类的东西编写相比),因为它无处不在。

大多数低于特定尺寸的微控制器(例如 PIC、AVR、MSP430 等)使用 C(或汇编程序),因为有许多高质量(免费和 $$ 版本 - 例如许多商业编译器基于免费的 GCC 编译器)可用的 C 编译器.
您确实会获得其他语言,例如出色的 JAL for PIC(原作者 Wouter Van Ooijen,他是这里的成员)、PICBASIC、Ada 变体,但由于它的受欢迎程度和可用编译器的数量,我会说 C 是首选语言对于大多数。虽然这当然并不意味着它是最好的语言,但使用最流行的语言具有明显的优势(文档、支持、可移植性、协作等)
对于像许多 ARM 变体这样更复杂和更大的 32 位 micro C++ 和其他可用的编译器。

我会直接跳进去拿几个开发板开始编码。您可以选择像 PIC16F 这样的低端 8 位微控制器(Microchip Direct 上有许多入门套件)
像 PIC24 这样的中端 16 位微控制器,以及某种 C/C++/嵌入式 linux ARM - STM32F4 ARM Cortex M4 Discovery 是一款非常便宜的开发板,可能值得一试。
在可编程逻辑和硬件描述语言(HDL - 最大的两个是 Verilog 和 VHDL)方面,从 Diglent 或类似产品中获取 FPGA 或 CPLD 开发板可能也是值得的。

如果您不想等待开发板,您可以下载 MPLAB 或 MPLABX 并使用出色的模拟器来尝试 PIC 开发。其他工具也是如此,例如您可以免费下载 Xilinx ISE Webpack 并试用 HDL 和可编程逻辑设计。

学习 C,获得便宜的微控制器开发板,如 MSP430 或 ARM Cortex,至少编写和加载一些 C 程序。

我拥有计算机科学学位和软件开发背景,主要是用于游戏的 C++ 编程,现在是 iOS 游戏和应用程序,但我的上一份工作是半专业的 EE 工作,开始为 ARM Cortex M3 系统进行大量固件编程,最后我学习了如何做一些基本的电路设计和电路板布局,并设计了几个简单的电路板。所以我基本上不得不面对使用最好的编程语言来桥接硬件/软件设计的问题,作为一个负责两端的人。

C 绝对是您需要了解的语言。对于使用 C++ 编程并且实际上不必将自己限制在 C 的功能集上的人来说,说“这是同一件事”很容易,但事实并非如此。尤其是 C++ 发展和收集特性的方式,以及主流 C++ 程序员使用这些特性的方式,与 C++ 应用程序相比,在相当大的 C 应用程序上工作确实是完全不同的事情。您的固件 SDK 将是一堆 C 库,任何适合 MCU 的其他东西都是 C 库,任何在 MCU 上有意义的操作系统都将用 C 语言编写,等等。

也就是说,由于许多 MCU 工具链最终都使用 GCC 作为编译器,如果您使用的是体面的 MCU 系列,您几乎肯定会拥有可用的 C++ 编译器。但是你必须非常小心你使用的功能,尤其是标准库中的东西,因为很容易得到一个太大而无法安装在你的设备上的二进制文件。我认为在嵌入式设备上使用 C++ 是一个很好的案例,C++ 有很多不错的特性,它们有一些垃圾或没有大小或速度损失,你只需要知道你在做什么并编写这样的代码就巧妙的功能使用而言,C 风格比 STL 更进一步。

不要太在意那些说你可以在带有正确嵌入式解释器的 MCU 上使用 Lua 或 Python 的人等等。没错,我已经做到了,而且很有趣,但目前更多的是用于玩具项目和出现在 Hack a Day 上的东西。我认为我们会看到更多这样的事情,因为摩尔定律被无情地应用于即使是最小的处理器,这发生在过去有很多汇编的游戏中,然后他们用 C 和 C++ 坚持了更长时间比其他人都快,现在一切都如此之快,开发人员的生产力是如此重要,以至于许多开发都是使用嵌入式高级语言或完全使用高级语言完成的。即便如此,您还需要几年的时间才能看到公司招聘具有 Python 和 Lua 背景的固件程序员。

也不要在组装上花费太多时间。熟悉这些概念还不错,但如果有汇编编程的话,您不太可能会发现自己做很多事情。就像游戏和嵌入式的这种传统智慧一样,它是“很高兴知道”的组装,经常被那些实际上不在这些领域工作的人重复。但实际上,你永远不可能编写任何程序集,如果你这样做,它可能只是几行用于优化或硬件的东西,你只是没有 API (但你会在你写了一个包含几行汇编的代码之后)。我曾参与过几款游戏,并且该板/固件设计项目以及我为商业项目编写的装配线总数可能只有十几岁。它'

我同意其他所有人的观点,即您需要非常胜任 C 语言。

我还建议学习至少一种汇编语言。这样做会让你成为一个更好的 C 程序员。您需要知道幕后发生的事情,这在嵌入式世界中比在 PC 世界中更真实。

了解您的 C 生成的汇编程序将使您在速度和紧凑性方面编写更优化的 C。更快的代码意味着:

  • 您可以使用更慢更便宜的 MCU 并削弱竞争对手。
  • 您可以调低时钟频率以提高 EMC 合规性。
  • 在低功耗应用中,MCU 可以在睡眠中花费更多时间,从而直接延长电池寿命。

更紧凑的代码意味着您可以使用更便宜且内存更少的 MCU。或者有更多功能的空间。


您可能考虑学习的另一种语言是Verilog这是一种硬件描述语言,它与 C 完全不同,不仅在外观上,而且在功能上。Verilog 将为利用非常强大的芯片(如Cypress PSoC3 和 5 )开辟道路。它是一个带有模拟和数字可重新编程硬件的微控制器,它可以让你做一些其他任何 MCU 都很难做到的令人惊奇的事情。您还可以进行FPGA设计。

作为一名在国防行业工作了 8 年的 MSEE,我可以告诉您,了解如何在LabVIEW(一种图形化、严格类型化的数据流语言)中进行良好的编程意味着您永远不会缺少工作。

LabVIEW最初是作为硬件工程师的编程语言,您可以从代码看起来非常像电路图的事实中看出这一点。然而,在过去的 25 年里,LabVIEW 已经发展成为一种成熟的、功能丰富的语言,支持面向对象和多线程。事实上,我认为没有其他编程语言(基于文本或其他)比 LabVIEW 更容易编写多线程应用程序。这在很大程度上是由于它的数据流范式。随着 CPU 内核数量的不断增加,LabVIEW 作为通用语言将变得越来越重要。

了解 LabVIEW 的另一个好处是,您只需使用LabVIEW FPGA 模块对 FPGA 进行编程,该模块将获取您的 LabVIEW 代码并在后台将其转换为 VHDL,然后再将其传递给 Xilinx 编译器。您还可以使用您的 LabVIEW 技能,通过使用 VxWorks 或 Phar Lap的LabVIEW 实时模块过渡到实时代​​码编程。

注意:我是一名经过认证的 LabVIEW 开发人员。

在此处输入图像描述