我最近听说过关于Linux的avr-gcc和avr-lib支持,可用于开发Atmel AVR微控制器(ATmega48 / 88/168,ATmega16 / 32)的代码。我也明白Arduino也使用Atmel的AVR微控制器(我不确定哪一个)。
现在不同的供应商已经设计了他们自己的产品(使用Atmel AVR uc),其中代码将使用avr-gcc开发,即在Linux平台上。同样的问题,Arduino的Windows IDE更加简单易用。
我对哪个平台更有前途感到困惑 - 学习avr-gcc有什么好处?使用相同的程序编程哪个更好?我们可以使用avr-gcc编译器开发什么类型的应用程序?
答案 0 :(得分:2)
Arduino已经开发出来,因此您可以使用任何想要编写代码的操作系统,它不会影响您在Arduino上的最终应用程序。 Linux,OS X,Windows在使用Arduino IDE进行编译和上传方面都是相同的,因此您可以选择自己喜欢的。例如,我每天都使用OS X和Linux,结果相同。
它的工作方式是这样的,因为编译代码并将其上传到Arduino所需的工具都存在于Arduino IDE应用程序中。除了IDE之外,您不需要安装avr-gcc或其他任何东西。 这对初学者来说非常棒,因为您可以立即编写应用程序代码。 它无缝运行的另一个原因是因为Arduino uc被一个引导加载程序烧毁,它能够通过简单的USB电缆接受来自Arduino IDE的新代码。
如果您想使用Arduino IDE编程自己的uc,首先需要刻录引导加载程序,以便您的芯片像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
希望它有所帮助!
答案 1 :(得分:1)
理论上,您的编译器选择不应影响您可以对设备实际执行的操作。一个编译器应该允许您访问与另一个相同的设备功能。它们可能支持稍微不同的语言功能,并且库可能会有所不同。但是,除非编译器严重损坏,否则您始终可以解决这些差异。
您可能看到有形(虽然很小)优势的一个方面是编译代码的大小和效率。例如,一个编译器可能具有更好的优化,这可以提供更简洁的输出。这意味着您可以将更大的程序压缩到设备上。差异可能很小,因为大多数现代编译器都相当不错,但它可能足够有用。
除此之外,您真正关注工具链的实用性和个人喜好;例如如果您最喜欢的编辑器/ IDE仅适用于Windows,或者您需要一个仅适用于Linux等的良好调试器。