我之前已经问过这个问题,我应该学习什么语言来进行嵌入式开发。大多数嵌入式工程师说c和c++是必须的,但也指出这取决于芯片。
有人能澄清一下吗?这是一个编译器问题还是什么?芯片是否自带特定的编译器(如c编译器或c++编译器),这就是为什么你必须使用编译器知道的语言?难道不能在其他地方编码和编译它,然后在编译状态下直接将它烧录到芯片上吗?(我想我听到一位熟人这样说过)
我不确定这是如何工作的,因为很明显我不太了解嵌入式系统或它们是如何工作的。对于那些知道的人来说,这可能是一个简单的答案。
发布于 2010-07-21 06:42:06
它以三种可能的方式“依赖于芯片”:
除了C、C++之外,其他的可能性还有汇编语言、Forth、Ada、Pascal和许多其他语言,但C语言几乎无处不在;很少有芯片供应商会在没有C编译器的情况下发布新的体系结构或设备。对于其他语言,您通常必须等到第三方决定开发一种语言,而这种等待可能是永远的利基架构。
难道不能在其他地方编码和编译它,然后在编译状态下直接将它烧录到芯片上吗?
这就是所谓的交叉编译或交叉开发,这是嵌入式系统常用的开发方法。大多数嵌入式系统缺乏操作系统、文件、性能和内存资源来自托管编译器,并且大多数开发人员希望在熟悉的面向用户的桌面操作系统中使用IDE、调试器等复杂的开发环境。
我不确定这是如何工作的,因为很明显我不太了解嵌入式系统或它们是如何工作的。
了解其中的一些内容:
发布于 2010-07-18 13:49:08
也许,这意味着一些工具链不支持C++。是的,许多芯片和电路板都有自己的工具链。不同的处理器有不同的指令集,这意味着不同的编译器(或者更具体地说是不同的后端)。这并不意味着你总是要重新学习所有的东西。其中很多都是基于GCC (通常被认为是移植最多的编译器)的。最终的可执行文件/图像格式也各不相同,因此您需要一个特定的链接器。最有可能的是,您将在一台“常规”计算机上(交叉)编译芯片,然后将其烧录到芯片上。然而,这并不意味着您可以使用针对桌面操作系统的典型编译器和链接器。
发布于 2010-07-18 13:49:07
是的,有许多体系结构都有C编译器,但C++编译器没有。您选择的处理器越小、功能越少,这种情况发生的可能性就越大。
对于嵌入式开发,正如您所说,您几乎总是在“其他地方”编译代码,然后将其发送到芯片执行/调试。为与编译器本身不同的架构编译代码的过程称为“交叉编译”。
https://stackoverflow.com/questions/3274463
复制相似问题