首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么芯片控制语言选择

为什么芯片控制语言选择
EN

Stack Overflow用户
提问于 2010-07-18 13:43:39
回答 8查看 608关注 0票数 3

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

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

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-07-21 06:42:06

它以三种可能的方式“依赖于芯片”:

  1. 一些非常受限制的体系结构不适合C++,或者至少C++提供了不适合这种体系结构的构造,因此与C相比没有好处。大多数8位设备属于这一类,但绝不是全部;例如,我见过在MegaAVR上实现的有用的C++代码。
  2. 一些设备不被C++编译器支持。例如,Microchip的dsPIC/PIC24编译器仅使用C语言(第三方工具可能支持C++ )。
  3. 芯片体系结构是专门为特定语言设计的;例如,INMOS Transputers总是运行OCCAM。

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

难道不能在其他地方编码和编译它,然后在编译状态下直接将它烧录到芯片上吗?

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

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

了解其中的一些内容:

票数 4
EN

Stack Overflow用户

发布于 2010-07-18 13:49:08

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

票数 6
EN

Stack Overflow用户

发布于 2010-07-18 13:49:07

是的,有许多体系结构都有C编译器,但C++编译器没有。您选择的处理器越小、功能越少,这种情况发生的可能性就越大。

对于嵌入式开发,正如您所说,您几乎总是在“其他地方”编译代码,然后将其发送到芯片执行/调试。为与编译器本身不同的架构编译代码的过程称为“交叉编译”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3274463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档