使用基于8位和16位微控制器的嵌入式系统,可以更轻松地开发出适合这些非常有限的存储限制的有限资源的软件(对于低端8位微控制器而言可能只有几百个字节的RAM) ,带有2-8 KiB的ROM或EPROM / Flash用于代码存储)。
在这些情况下,像C或汇编语言这样的小语言往往是最常用的开发语言。作为一个非常粗略的相对比较,一个完整的汇编器和C99编译器可以放在单个软盘上,而现代C ++开发系统(带有STL等)则需要多个MiB。
当您在嵌入式环境中查看高端微处理器(高端16位,大多数为32位,很少使用64位)和DSP时,限制会减弱,软件开发可能会占据开发的大部分因此,使用最高效的开发工具是有意义的,其中包括功能更高级的语言,例如具有面向对象的编程(OOP)语言(如C ++)和较新的语言(Java,Perl,Ruby,Python)。
在汇编语言和C语言中,可以预测正在使用多少内存,以便进行空间受限的设计是可行的,但是诸如模板,异常处理和运行时绑定之类的高级功能使无法准确知道所需的内存占用量预先获取标准的C ++程序。我对MISRA C ++(它是C ++的一个子集)了解得不够多,无法对此发表评论。
在嵌入式开发人员的经验中,基于运行字节码的虚拟机的语言(Java,Perl,Python)较不成熟,并且由于这些语言旨在使程序员与特定的硬件隔离,因此也变得更加难以良知。此类嵌入式硬件系统的局限性和局限性。如果不是RAM的GiB,那么对于带有MiB的快速32位处理器(例如ARMv7)来说,这些问题就更少了。
我知道的所有BASIC实现在语言功能上都非常简单,在很大程度上保留了1960年代Dartmouth BASIC的传统。这意味着该语言没有任何复杂的运行时库或异常处理,并且解释器或编译器的编写非常简单,并且文件大小也很小。大多数微控制器至少具有一个可用的BASIC编译器。
我希望能大致概述一下您会发现C和汇编语言主要用于较小或较旧的嵌入式系统的原因,以及较新的中高端嵌入式系统的局限性与传统台式个人计算机之间的微小差异。