附注:我希望答案不是汇编语言。
我的经验是,你必须掌握C语言,汇编语言也有帮助。
除非你在处理非常基础的微控制器(如RS08系列),否则C语言是首选语言。了解C语言,理解诸如volatile和const等功能。还要了解体系结构-什么是高效的,什么不是,CPU可以做什么。这些与“桌面”环境大相径庭。学会热爱stdint.h。
随着项目规模的扩大,您将遇到C++(或受限子集)。
但是,您需要了解CPU以及如何阅读基本汇编语言作为调试工具。如果没有这种技能组合,就无法成为优秀的嵌入式开发人员。
我依然对你听到的“对比”观点感兴趣;虽然使用其他语言是 可能 的,但回答你的问题:
在微控制器编程行业中最常用的语言是什么?
明确的答案是 C,出于我提供的原因。对于任何想要质疑这一论断的人,这里有统计数据(请注意文本中解释的 2004 年之后不同的调查方法)。不过,为了增加备选方案的数量,我曾花两年时间在嵌入式系统上使用 Forth 进行编程,并且我知道还有人在使用它,但它有点小众。
我已经成功地使用了C和C++,但在几乎所有的微控制器项目中,你都需要熟悉目标微控制器的汇编语言。即使只是用于调试底层硬件问题,汇编也是不可或缺的,即使只是粗略的了解。
当从桌面环境转移到微控制器时,我认为最难的事情是几乎所有东西都需要静态分配。除非可能具有外部RAM,否则在微控制器中很少使用malloc/new。
我注意到你还使用了FPGA和Verilog标签,可以看看Altium,他们有一个将C编译成硬件代码的编译器,并与他们的集成环境良好配合。
微控制器最初只能使用汇编语言进行编程,但现在也普遍使用各种高级编程语言来针对微控制器进行编程。这些语言要么专门为此设计,要么是通用编程语言(如C编程语言)的版本。通用编程语言的编译器通常会有一些限制和增强功能,以更好地支持微控制器的独特特性。一些微控制器具有开发某些类型应用程序的环境。微控制器供应商通常会提供免费工具,以便更轻松地采用其硬件。
许多微控制器非常奇怪,以至于它们实际上需要自己的非标准C方言,例如8051的SDCC,这样甚至无法使用标准工具(如代码库或静态分析工具),即使与硬件特性无关的代码也是如此。解释器通常用于隐藏这种低级别的怪癖。
一些微控制器也提供解释器固件。例如,早期微控制器Intel 8052上的BASIC;Zilog Z8上的BASIC和FORTH,以及一些现代设备。通常,这些解释器支持交互式编程。
一些微控制器有模拟器,例如Microchip的MPLAB环境。这些允许开发人员分析微控制器及其程序的行为,如果他们使用实际部件应该是什么样子的。模拟器将显示内部处理器状态以及输出状态,并且允许生成输入信号。虽然一方面大多数模拟器将受到无法模拟系统中其他硬件的限制,但它们可以模拟可能难以在物理实现中随意重现的条件,并且可以是调试和分析问题的最快方法。
您需要了解汇编语言编程。您需要对C和C++有良好的知识。因此,请努力学习这些内容,以便在微控制器编程方面获得更好的专业知识。
还有VHDL不能忘记。
对于微控制器,汇编语言先于C语言出现。在ARM开始进入这个市场之前,编译器很差,存储器和只读存储器非常小。资源不足或者普遍性不足,无法移植代码,因此使用C语言以实现可移植性是没有意义的。
一些微控制器的汇编语言质量欠佳,而ARM正在接管这个市场。用更少的资金、更少的功耗和更小的占地面积,你可以拥有一个具有更多资源的32位处理器。这是非常明智的选择。虽然许多代码仍无法移植,但你可能可以尝试使用C语言。
总之,汇编语言和C语言。如果某公司宣传BASIC或Java等其他语言,请将该公司列入黑名单并继续寻找其它公司。我们曾经历过这种情况,留下了伤疤作为证明。
首先是汇编语言。其次是C语言。
我认为,懂得汇编语言和C语言的人比只懂得C语言的人更优秀。