Linux / Windows Arduino IDE 上的 avr-gcc Atmel AVR 微控制器
Posted
技术标签:
【中文标题】Linux / Windows Arduino IDE 上的 avr-gcc Atmel AVR 微控制器【英文标题】:avr-gcc Atmel AVR microncontrollers on Linux / Windows Arduino IDE 【发布时间】:2013-10-24 08:33:20 【问题描述】:我最近听说了有关 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 编译器开发什么类型的应用程序?
【问题讨论】:
【参考方案1】: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 可能会让人头疼,您需要使用 Makefile 之类的东西以及您最喜欢的代码编辑器。
所以简而言之,操作系统现在不是重要的部分。但是,如果您使用更多工具构建更复杂的项目,我会使用 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
希望对你有帮助!
【讨论】:
感谢您的详细回答。您能否详细说明我的疑问 - 如果我使用 avr-gcc 学习编程概念,那么可以开发什么类型的程序或什么类型的应用程序?我的意思是 avr-gcc 仅用于编程 Atmel 的 AVR 微控制器,还是我受益于学习为其他微控制器/设备开发应用程序?从嵌入式系统开发的角度来看,avr-gcc 编译器是否出名?使用 Arduino IDE 我知道我只能对 Arduino 进行编程?我可以用它来编程任何其他 AVR 目标处理器吗? @Prakash 哇!很抱歉,我花了将近一年的时间来回答 :( 使用avr-gcc
,您可以为following MCU types 开发程序。您将无法为其他目标编译程序,但是一旦您熟悉了工具,如果没有相同的学习曲线,就很容易跳到新事物。希望这会有所帮助!:)【参考方案2】:
理论上,您选择的编译器不应影响您对设备的实际操作。一个编译器应该让您访问与另一个编译器相同的设备功能。它们可能支持略有不同的语言功能,并且库可能略有不同。但是,除非编译器严重损坏,否则您始终可以解决这些差异。
您可能看到明显(尽管很小)优势的一个领域是编译代码的大小和效率。例如,一个编译器可能有更好的优化,可以提供更简洁的输出。这意味着您可以将一个稍微大一点的程序压缩到设备上。差异可能很小,因为大多数现代编译器都非常好,但可能就足够有用了。
除此之外,您真正关注的是工具链的实用性和个人偏好;例如如果您最喜欢的编辑器/IDE 仅适用于 Windows,或者您需要一个仅适用于 Linux 的良好调试器等。
【讨论】:
以上是关于Linux / Windows Arduino IDE 上的 avr-gcc Atmel AVR 微控制器的主要内容,如果未能解决你的问题,请参考以下文章
Arduino上位机调试工具:Windows Remote Arduino