Linux / Mac AVR编程套件?


11

我已经编码和使用Arduino已有相当一段时间了。但是,我已经准备好使用没有arduino引导程序的直接AVR芯片。我的问题是这样做的资源是什么?

我想使用linux / mac,所以winavr和avrstudio一样是无法显示的。如果没有我想要的东西,那么我将购买Windows虚拟机。但是直到我确定为止。我想要的是某种使用avr-gcc的IDE。

作为这个问题的补充,有人有任何好的资源可以学习Avr的C语言吗?具体来说,如何为各种不同的芯片配置Makefiles等?

Answers:


7

我同意zklapow,但也可以查看有关AVR Freaks的项目部分。这就是我在arduinos之前的一天所学到的。此外,几乎可以肯定,您必须阅读芯片的数据表才能完成所有有用的事情。没有很好的功能,例如读入模拟引脚,因为其中有太多参数,而arduino环境对您隐藏了。让我举一个例子:

 int ledPin =  13;    // LED connected to digital pin 13
 // The setup() method runs once, when the sketch starts
 void setup()   {                
   // initialize the digital pin as an output:
   pinMode(ledPin, OUTPUT);     
 }
 // the loop() method runs over and over again,
 // as long as the Arduino has power
 void loop()                     
 {
   digitalWrite(ledPin, HIGH);   // set the LED on
   delay(1000);                  // wait for a second
   digitalWrite(ledPin, LOW);    // set the LED off
   delay(1000);                  // wait for a second
 }

大致类似于以下C(未经测试):

int main(void) {
    // I just randomly picked pin 6 on PORTB, this may not be the same on an arduino
    DDRB = (1<<6); // set pin to output in data direction register
    int i; // have to do this outside the for loop because of C standard

    while(1) {
        PORTB |= (1<<6); // send pin 6 high and leave other pins in their current state
        for (i=0; i<10000; i++); // delay

        PORTB &= ~(1<<6); // send pin 6 low
        for (i=0; i<10000; i++); // delay
    }
}

当然,某些库中有延迟函数,而其他库中可能有输出函数,但是习惯于编写这样的代码。您可能知道所有PORTB和DDRB内容的唯一方法是阅读数据表。对此我深感抱歉,但没有足够的人意识到数据表是提供信息的金矿。


我将对您的代码进行一次更正,当您设置DDRB时,应使用DDRB | =(1 << 6),以免影响其他位。
zklapow 2010年

还有一个delay_ms()函数可用。但通常,在更复杂的程序中,您通常不希望对应用程序进行硬编码延迟。
davr 2010年

7

您还应该签出Eclipse for C / C ++AVR-Eclipse插件。对我来说完美无缺,尤其是在使用背包时。我使用它大约一年了,我真的很喜欢它。


获取avr-eclipse插件,它与avrdude和avr-gcc很好地集成在一起,因此您最终会在一个免费的编译器之上获得一个不错的IDE。
dren.dk 2011年

Eclipse微控制器设置也将是使用ARM微控制器的良好门户。比获得仅AVR的IDE更好的选择。
lyncas

4

我也使用ObDev的CrossPack。它是编写AVR-GCC C代码所需的所有工具的很好的捆绑。它们与标准Arduino安装中存在的工具相同,因此有时我会使用Arduino构建系统的勇气来编写普通的AVR-GCC代码。

通常,当我编写C代码时,我使用的“ IDE”是文本编辑器,命令行命令和Makefile。这样我才更有效率。我打开了一个窗口,它是文本编辑器(emacs),另一个窗口是编译窗口,第三个或第四个窗口是串行监视器或类似程序。但是所有这些操作都可以在单个命令行窗口中完成,在这种情况下,命令看起来像:

%emacs foo.c [编辑文件]
%make [编译代码]
%使闪存[上传到芯片]
%screen /dev/tty.usbserial 9600 [与芯片交谈]
...然后根据需要重复...

另外,您可能想查看SmileyMicros.com。他在Arduino之前就基于AVR Butterfly板写了一本关于AVR GCC入门编程的非常不错的书,并且此后一直在更新他的示例以结合Arduino。比较一下AVR C编程是如何在比Arduino中更复杂的芯片上完成的,这是一个很好的比较。



3

由于您一直在使用Arduino,因此您已经安装了所需的一切。我使用Makefile从命令行编译Arduino草图。我还编译没有Arduino引导程序的代码。

我用于为我的主板编译Arduino引导加载程序的Makefile位于http://wiblocks.luciani.org/docs/app-notes/bootloader.html。 您可以对其进行修改以编译程序,而不是ATmegaBOOT_xx8.c文件。

我的Makefile是从在此站点上找到的文件中修改的-http: //mjo.tc/atelier/2009/02/arduino-cli.html

在Twitter上回答相同的问题时(昨天),我在dorbotpdx上遇到了一个makefile。参见http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

http://arkku.com/misc/arduino_make.sh上还有一个文档齐全的shell脚本

我可能会使用Makefile而不是Shell脚本。做这个脚本的人在评论流程方面做得非常出色。只是为了了解流程而已。


我无法使arduino_make.sh在OSX 10.6上工作,因为'awk -v'在OSX上无法按预期工作,并且他在所有地方都使用它。
露台

他的问题不是关于Arduino,而是关于在Linux上使用avr-gcc和
avrdude

2

我发现CodeLite(www.codelite.org)IDE不错且功能齐全。仍然,要对AVR微芯片进行编程,您需要创建自己的Makefile。

您可以尝试使用BeRTOS向导,它将创建一个BeRTOS项目和相关的Makefile,然后可以将它们与CodeLite一起使用。要闪烁目标,只需使用“ make flash”即可。我们每天都在Linux上工作,如果您还有其他问题,请在邮件列表中发布。免责声明:我是BeRTOS开发人员。

最好的问候,卢卡


除了免责声明,CodeLite是一个很棒的工具。如果将CodeLite配置为与构建系统一起使用,则不必使用“ make flash”。代码::块具有类似的潜力。
凯文·维米尔

2

如果您安装了Macports,则可以简单地运行:

$ sudo port install avr-binutils avr-gcc avr-libc avrdude 

并且您应该准备出发。


2

如果您要求软件包系统安装avr-libc,则应该可以满足您的所有需求。我使用emacs作为我的IDE,因为,请参见用户名。

如果您想要模板makefile,请查看我在github上的一个项目,例如 https://github.com/unixbigot/pir-lite

在那个仓库中,avr-tmpl.mk是一个现成的makefile库(不是我写的)。您可以从主makefile中包含它,而只需定义具有的芯片,时钟速度和文件。我有一个副本,并将其包含在我所有的项目makefile中。

“制作程序”将调用avrdude下载代码。makefile还会在末尾打印出代码大小,因此您知道还剩多少空间。


0

我在本文的帮助下将“旧的” Dumanilove”编程为ISP:http ://arduino.cc/en/Tutorial/ArduinoISP在ATtiny的帮助下, 它同样可以很好地工作:http//hlt.media.mit.edu/? p = 1229

请注意,使用Arduino IDE 0022时,由于防止垃圾邮件,您需要将ArduinoISP草图升级到最新版本,我将该链接移至以下评论。

我在文本编辑器(vi)中进行了编程,并按照我链接的mit.edu文章中的说明使用avr-gcc进行了编译。


防止垃圾邮件让我提从评论的链接最近ArduinoISP:code.google.com/p/mega-isp/downloads/...
jippie

0

嗨,老兄,您仍然可以在ubuntu中使用avrstudio。思考您该怎么做.....

答案是只安装wine应用程序,然后用wine运行那些Windows软件。

Avr studio,proteus ...甚至Windows游戏也可以在Ubuntu酒中运行。

您甚至不必弄乱makefiles等等。(只需安装wine并开始使用)。

有许多网站可以使用avr MCU入门,例如Extremeelectronics,AVR教程等。只需在Google上进行搜索即可。

我将详细介绍如何在酒中安装avrstudio 4,因为avrstudio 5和6不能使用它,但是您可以使用linux中的虚拟盒甚至在虚拟盒上带有Windows的情况下运行avr stud 5和6。

  1. 打开Ubuntu软件中心,在搜索中键入wine,然后安装它。

  2. 然后获得avrstudio4的安装程序,并且您还需要安装win avr

    试试这些链接

一个。avr Studio 4 http://mycomsats.com/blogs/download-atmel-avr-studio-4-free/

b。赢avr http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download?use_mirror=kaz&r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fwinavr%2Ffiles% 2F&use_mirror = kaz

3.打开用于AS(Avr Studio 4)的安装程序所在的文件夹,然后右键单击,然后使用“ windows wine program loader”或“ wine application”将其打开。

4.然后,您需要单击下一个按钮,就像在Windows中一样。

5,然后再次与wine同样安装win avr(进入win avr设置....)。

6.从ubuntu软件中心下载经典菜单指示器。您将在五分钟之内了解它。

7,从经典菜单->葡萄酒->程序-> AVR工具

第六步是一个额外的步骤,因此您不必弄混avrstudio4可执行文件选项在wine文件夹中的位置。


如果它包含有关如何在Wine下运行它的详细信息/链接,则此答案将更有用。最新的Atmel Studio基于Microsoft Visual Studio,我认为它在Wine下不能很好地工作,但我可能会错。
PeterJ 2014年

我已经编辑了答案@PeterJ
Jasser
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.