2013-10-24 106 views
0

我最近听说了Linux上的avr-gcc和avr-lib支持,可用于Atmel AVR微控制器(ATmega48/88/168, ATmega16的/ 32)。我也明白,Arduino也使用爱特梅尔的AVR微控制器(我不确定哪一个)。avr-gcc Linux/Windows上的Atmel AVR微控制器Arduino IDE

现在不同的供应商已经设计了自己的产品(使用Atmel AVR uc),其中代码将使用avr-gcc开发,即在Linux平台上开发。同样,Arduino的Windows IDE非常简单,易于编码。

我很困惑哪个平台更有希望 - 学习avr-gcc有什么好处?使用相同的程序哪个更好?我们可以使用avr-gcc编译器开发哪种类型的应用程序?

回答

2

Arduino已经开发出来,所以你可以使用任何你想要编写代码的操作系统,它不会影响你在Arduino上的最终应用。 Linux,OS X和Windows在使用Arduino IDE进行编译和上传时都是平等的,因此您可以选择您喜欢的。例如,我每天都使用OS X和Linux,并获得相同的结果。

它的工作原理是这样的,因为编译代码并将其上载到Arduino所需的工具都存在于Arduino IDE应用程序中。您不需要安装avr-gcc或IDE以外的任何其他设备。 这对初学者来说非常棒,因为您可以立即编写您的应用程序。 为什么它可以无缝工作的另一个原因是因为Arduino uc被引导加载程序烧毁,它可以通过简单的USB电缆从Arduino IDE接受新代码。

如果你想用Arduino IDE编程你自己的uc,你首先需要烧录bootloader,这样你的芯片就像Arduino一样工作,但不是真的和Arduino。 这里是一个教程来做到这一点:http://arduino.cc/en/Tutorial/ArduinoISP

在使用uc之前,你需要检查一个引导程序是否可用这个uc。你可以这样做:board.txt

要记住的另一件事是,当你的项目变得更大时,使用Arduino IDE可能是一个痛苦的脖子,你会想使用像Makefiles和东西的东西你最喜欢的代码编辑器

因此,简而言之,操作系统现在不是重要的部分。但是如果你用更多的工具构建更复杂的项目,我会选择Linux或OS X,因为avr-gcc和co。在这些平台上很容易使用(并且我自己的观点更多地记录)。

编辑:

首先,我要澄清一些概念:

avr-gcc是一个编译器。这是一种将您的代码转换成Arduino微控制器或任何AVR芯片可用/可执行的软件。它基于gcc,一个着名的C/C++开源编译器。所以当你使用avr-gcc时,你只是在使用gcc以及一些特定的实现。

您必须区分两件事情:硬件开发和软件开发。 硬件基本上是“根据你的需要制作你自己的Arduino”。 软件需要知道要写入的硬件并执行所需的操作。它看起来像是鸡还是鸡蛋悖论,但事实并非如此:我会说硬件是第一位的。

所以如果你开始硬件开发,我会建议你先购买一个Arduino来学习这些概念。所有的Arduino代码都是开源的,所以你可以真正尝试理解一切。

AVR芯片被广泛使用,所以一旦你了解了一个,它会更容易尝试和使用不同的。即使您需要更换其他品牌,即使您无法使用avr-gcc,基本操作也是一样的。 但是要开始某个地方,去Arduino! :)

我为我的项目写了一些文档,我用更多的细节解释了一切。它适用于OS X和Linux,但它会给你一个你需要做什么的好主意。

https://github.com/WeAreLeka/moti/blob/master/INSTALL.md

希望它能帮助!

+0

感谢您的详细解答。你能否也请提供我的疑问 - 如果我使用avr-gcc学习编程概念,那么什么类型的程序或者什么类型的应用程序可以开发?我的意思是说,avr-gcc仅用于Atmel的AVR微控制器编程,或者我学习开发其他微控制器/器件应用程序的好处? avr-gcc编译器从嵌入式系统世界的发展角度出名? 使用Arduino IDE我明白我只能编程Arduino?我可以使用它编程任何其他AVR目标处理器吗? – Prakash

+0

@Prakash哇!对不起,我花了近一年的时间回答:(用'avr-gcc'您可以开发[下列MCU类型]的程序(http://www.nongnu.org/avr-libc/user-manual /using_tools.html)。你不能为其他目标编译你的程序,但是一旦你熟悉了这些工具,在没有相同的学习曲线的情况下跳转到新的东西将非常容易。 ) – ladislas

1

从理论上讲,您的编译器选择不应该影响您实际上可以用设备做的事情。一个编译器应该让你访问与另一个相同的设备功能。他们可能会支持略有不同的语言特征,图书馆可能会有所不同。但是,除非编译器被严重破坏,否则您总是可以解决这些差异。

可能看到一个有形的(尽管很小)优势是编译代码的大小和效率。例如,一个编译器可能有更好的优化,这可以提供更简洁的输出。这意味着你可能会在设备上挤出一个更大的程序。差异可能会很小,因为大多数现代编译器都非常好,但它可能足够有用。

除此之外,你真的看着你的工具链的实用性和个人喜好;例如如果你最喜欢的编辑器/ IDE只能在Windows上工作,或者你需要一个只能在Linux上运行的好的调试器等。