0

我最近听说了有关 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 编译器开发什么类型的应用程序?

4

2 回答 2

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

希望能帮助到你!

于 2013-10-24T09:14:15.010 回答
1

从理论上讲,您的编译器选择不应该影响您可以对设备实际执行的操作。一个编译器应该允许您访问与另一个编译器相同的设备功能。它们可能支持略有不同的语言功能,并且库可能略有不同。但是,除非编译器严重损坏,否则您始终可以解决这些差异。

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

除此之外,你真的在​​看你的工具链的实用性和个人偏好;例如,如果您最喜欢的编辑器/IDE 仅适用于 Windows,或者您需要一个仅适用于 Linux 的良好调试器等。

于 2013-10-24T09:17:38.943 回答