har*_*rry 13 c embedded microcontroller
我正在进入微控制器编程并且听到了截然不同的观点.微控制器编程在业界最常用的语言是什么?这是你在自己的工作中使用的吗?如果没有,为什么不呢?
PS:我希望答案不是汇编语言.
Yan*_*min 13
除非您正在处理非常简单的微控制器(如RS08系列),否则C是迄今为止的首选语言.了解C,了解volatile和const等功能.还要了解架构 - 什么是高效的,什么不是,CPU能做什么.这些与"桌面"环境有很大不同.学会爱stdint.h.
随着项目的扩展,您将遇到C++(或受限制的子集).
但是,您需要了解CPU以及如何将基本程序集作为调试工具阅读.没有这种技能,你就无法成为优秀的嵌入式开发人员.
Cli*_*ord 12
你听到了什么'对比'的观点?在某种程度上,它将取决于微控制器和应用程序.但是C几乎适用于所有架构(我不愿意说所有,但可能是你将遇到的所有内容); 所以在这一点上,学习C会给你最大的报道.
对于所有体系结构,汇编程序和C编译器的可用性几乎是给定的.对于32位和大多数16位架构,C++也将可用.我遇到的值得注意的例外是Microchip的PIC24/dsPIC器件,Microchip自己的基于GNU的编译器不支持C++(尽管第三方编译器可能会这样做).
虽然有用于8位微控制器的C++编译器,但C++在这些平台上并不普遍,而且编译器通常是完整语言的子集.对于通常使用8位的应用程序的类型(或更具体地说,大小),C++可能是有用的但不是在更大的应用程序上,因此C通常是足够的.
嵌入式系统中有很多关于C++的神话 ; 虽然语言大于C并且具有可能损害系统性能或容量的结构,但您只需为使用C++的内容付费.但是当然如果你使用的只是C子集,那么C在任何情况下都是足够的.
关于C(和C++)的观点是它是一种系统级语言; 它将在你的微处理器上运行,没有额外的支持,只需一个非常简单的运行时启动来初始化处理器(可能还有外部SDRAM),初始化静态数据,建立堆栈,以及在C++调用静态构造函数的情况下.这就是为什么与目标特定的汇编程序一起,它用于构建操作系统和内核 - 它不需要运行操作系统或内核本身.
我建议它可能取决于微控制器的原因之一是,例如它是一个带有几Mb外部SDRAM的ARM9,至少说4Mb Flash(通常也是外部 - 内存占用大量的芯片空间)那么你可以运行一个"重量级"操作系统,如Linux,WinCE或Symbian,甚至是大型RTOS,如QNX或VxWorks.然后你选择的语言(一旦你的操作系统工作),将受到操作系统的影响,但对于实时应用程序,C和C++仍将占主导地位(或者经常在军事,航空电子和一些传输应用程序中使用Ada).
对于中型应用程序 - 几百KB的代码和数据空间 - 可以在.NET-Micro平台上运行C#; 然而,几年前,我在英国的嵌入式系统展上,就在它发布之后,我就参加了这个展示.当我问"但是它是实时的"这个问题时,被告知,"你不需要WinCE吗",很多观众都有喘气和呻吟,有些人不再浪费时间了然后(包括我).
所以我仍然对你所听到的"对比"意见感兴趣; 因为虽然可以使用其他语言; 你的问题的答案:
微控制器编程在业界最常用的语言是什么?
那么肯定的答案是C; 由于我给出的原因.对于那些可能选择对此主张进行争论的人来说,这里有统计数据(请注意2004年后文中解释的不同调查方法).然而,为了增加替代品的集合,我曾经在Forth上花了两年时间在嵌入式系统上编程,我知道人们仍在使用它,但它有点像利基.
关于汇编程序: