为什么芯片控制语言可供选择

coo*_*per 3 c c++ embedded verilog

我之前已经问过这个问题,我应该学习嵌入式开发的语言.大多数嵌入式工程师表示c和c ++是必须的,但也指出它取决于芯片.

有人可以澄清吗?这是编译器问题还是什么?芯片是否有自己的特定编译器(如ac编译器或c ++编译器),这就是为什么你必须使用编译器知道的语言?是不是可以在其他地方编码和编译它,然后直接在其编译状态下将其刻录到芯片?(我想我听到一个熟人说出这个效果)

我不确定这是如何工作的,显然我不太了解嵌入式系统或它们如何工作.对于那些知道的人来说,这可能是一个简单的答案.

Mat*_*hen 6

可能,他们意味着一些工具链不支持C++.是的,许多芯片和电路板都带有自己的工具链.不同的处理器具有不同的指令集,这意味着不同的编译器(或更具体地说是不同的后端).这并不意味着你总是要重新学习一切.其中许多都是基于GCC(通常被认为是最多移植的编译器).最终的可执行文件/图像格式也各不相同,因此您需要特定的链接器.最有可能的是,您将在"常规"计算机上(交叉)编译芯片,然后将其刻录到芯片上.但是,这并不意味着您可以使用针对桌面操作系统的典型编译器和链接器.


Cli*_*ord 5

它以三种可能的方式“取决于芯片”:

  1. 一些非常受限的体系结构不适合 C++,或者至少 C++ 提供了不适合此类体系结构的构造,因此与 C 相比没有任何优势。大多数 8 位设备属于此类,但绝不是全部;例如,我见过在 MegaAVR 上实现的有用的 C++ 代码。

  2. C++ 编译器不支持某些设备。例如,Microchip 的 dsPIC/PIC24 编译器仅支持 C(第三方工具可能支持 C++)。

  3. 芯片架构是专门针对特定语言而设计的;例如,INMOS 晶片机总是运行 OCCAM。

除了 C、C++ 之外,其他可能的语言还有汇编程序、Forth、Ada、Pascal 等,但 C 几乎无处不在;很少有芯片供应商会在没有 C 编译器的情况下发布新的架构或设备。对于其他语言,您通常必须等到第三方决定开发一种语言,而对于利基架构来说,这种等待可能是永远的。

是不是可以在别处编码编译,然后直接以编译状态烧录到芯片上?

这就是所谓的交叉编译或交叉开发,是嵌入式系统常用的开发方法。大多数嵌入式系统缺乏操作系统、文件系统、性能和内存资源来自行托管编译器,并且大多数开发人员希望在熟悉的面向用户的桌面操作系统中享受带有 IDE、调试器等的复杂开发环境。

我不确定这是如何工作的,因为显然我不太了解嵌入式系统或它们是如何工作的。

了解其中的一些最新信息: