Suite de programação Linux / Mac AVR?

11

Estou codificando e usando o Arduinos há algum tempo. No entanto, estou pronto para começar a usar chips AVR diretos sem o carregador de inicialização do arduino. Minha pergunta é quais são os recursos para fazer isso?

Eu quero usar linux / mac, para que o winavr esteja fora de cena e o avrstudio. Se não houver o que eu sou depois, aceitarei uma máquina virtual do Windows. Mas até que eu tenha certeza. O que eu quero é algum tipo de IDE que use avr-gcc.

Como um bônus para esta pergunta, alguém tem bons recursos para aprender C para avr? Especificamente, como configurar Makefiles etc para os vários chips diferentes?

ril3y
fonte

Respostas:

7

Concordo com o zklapow, mas verifique também a seção de projetos no AVR Freaks. Foi assim que aprendi no dia anterior aos arduinos. Além disso, você quase certamente precisará ler a folha de dados do seu chip para obter qualquer coisa útil. Não há funções agradáveis ​​que, por exemplo, leiam um pino analógico porque existem muitos parâmetros que o ambiente do arduino esconde de você. Deixe-me lhe dar um exemplo:

 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
 }

é aproximadamente semelhante ao seguinte C (não testado):

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
    }
}

Claro, existem funções de atraso em algumas bibliotecas e pode haver funções de saída em outras, mas acostume-se a escrever códigos como este. A única maneira de saber o que significa esse material PORTB e DDRB é ler a folha de dados. Lamento falar sobre isso, mas poucas pessoas percebem que a folha de dados é uma mina de ouro para obter informações.

Jeremy
fonte
Eu faria uma correção no seu código, quando você definir DDRB, deverá usar DDRB | = (1 << 6) para não afetar outros bits.
Zklapow
Também há uma função delay_ms () disponível. Mas, em geral, em programas mais complexos, geralmente você não deseja atrasos na codificação do aplicativo.
davr 12/01
7

Você também deve verificar o Eclipse para C / C ++ e o plug-in AVR-Eclipse. Funciona perfeitamente para mim, especialmente com o crosspack. Eu uso há cerca de um ano e eu realmente gosto.

Interactive Matter
fonte
Obtenha o plugin avr-eclipse, ele se integra perfeitamente ao avrdude e ao avr-gcc, para que você tenha um bom IDE no topo de um bom compilador gratuito.
dren.dk
a configuração do microcontrolador Eclipse também será um bom gateway para o uso de microcontroladores ARM. Alternativa muito melhor do que obter um IDE somente para AVR.
Lyncas
4

Eu uso o CrossPack do ObDev também. É um ótimo pacote de todas as ferramentas necessárias para escrever o código C do AVR-GCC. Eles são as mesmas ferramentas presentes em uma instalação padrão do Arduino, então, às vezes, eu usei a coragem do sistema de compilação do Arduino para escrever código simples do AVR-GCC.

Normalmente, quando escrevo código C, o "IDE" que utilizo é um editor de texto, comandos de linha de comando e Makefiles. Eu sou apenas mais eficiente assim. Eu tenho uma janela aberta que é o editor de texto (emacs), outra janela que é compilação e uma terceira ou quarta que faz monitor serial ou similar. Mas tudo isso pode ser feito em uma única janela da linha de comando; nesse caso, os comandos se parecem com:

% emacs foo.c [editar arquivo]
% make [código de compilação]
% faz flash [upload para chip]
% screen /dev/tty.usbserial 9600 [fale com o chip]
... e repita conforme necessário ...

Além disso, você pode conferir o SmileyMicros.com . Ele escreveu um livro muito bom sobre a introdução da programação do AVR GCC com base no quadro AVR Butterfly, antes do Arduino, e desde então atualiza seus exemplos para incorporar o Arduino. É uma boa comparação para ver como a programação do AVR C é feita em um chip mais complexo que o do Arduino.

todbot
fonte
3

Como você usa o Arduino, tudo o que você precisa já está instalado. Eu compilo esboços do Arduino a partir da linha de comando usando um Makefile. Também compilo código sem o gerenciador de inicialização do Arduino.

O Makefile que eu uso para compilar o carregador de inicialização do Arduino para minhas placas está em http://wiblocks.luciani.org/docs/app-notes/bootloader.html Você pode modificá-lo para compilar seu programa em vez do arquivo ATmegaBOOT_xx8.c.

Meu Makefile foi modificado a partir do arquivo que encontrei neste site - http://mjo.tc/atelier/2009/02/arduino-cli.html

Enquanto respondia a mesma pergunta (ontem) no twitter, me deparei com um makefile no dorbotpdx. Veja http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

Há também um script de shell bem documentado em http://arkku.com/misc/arduino_make.sh

Eu provavelmente usaria um Makefile em vez de um script de shell. O sujeito que fez esse script fez um excelente trabalho ao comentar o fluxo. É um trabalho apenas para entender o fluxo.

jluciani
fonte
Não consegui fazer o arduino_make.sh funcionar com o OSX 10.6 porque 'awk -v' não funciona como esperado no OSX e ele o usa em qualquer lugar.
terrace
Sua pergunta não era sobre Arduino, mas sobre o uso avr-gcc e avrdude no Linux
dren.dk
2

Achei o CodeLite (www.codelite.org) IDE agradável e completo; Ainda assim, para programar microchips AVR, você precisa criar seu próprio Makefile.

Você pode experimentar o BeRTOS Wizard , que criará um projeto BeRTOS e Makefiles relacionados, que você poderá usar com o CodeLite. Para piscar seu alvo, basta usar "make flash" e pronto. Trabalhamos no Linux diariamente, se você tiver alguma dúvida, poste-os na lista de discussão. Isenção de responsabilidade: Sou desenvolvedor do BeRTOS.

Atenciosamente, Luca

Luca Ottaviano
fonte
Isenção de lado, o CodeLite é uma ótima ferramenta. Você não precisa usar 'make flash' se configurar o CodeLite para funcionar com seu sistema de compilação. Code :: Blocks tem potencial semelhante.
Kevin Vermeer
2

Se você possui o Macports instalado, basta executar:

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

e você deve estar pronto para ir.

trondd
fonte
2

Se você solicitar ao seu sistema de pacotes para instalar o avr-libc, isso deverá fornecer tudo o que você precisa. Eu uso o emacs como meu IDE, porque bem, veja o nome de usuário.

Se você quiser um makefile de modelo, dê uma olhada em um dos meus projetos no github, por exemplo, https://github.com/unixbigot/pir-lite

Nesse repositório, avr-tmpl.mk é uma biblioteca de makefile pronta para uso (não escrita por mim). Você o inclui no seu makefile principal e só precisa definir qual chip possui, a velocidade do relógio e seus arquivos. Eu tenho uma cópia e a incluo de todos os makefiles do meu projeto.

"make program" chamará avrdude para baixar o código. O makefile também imprime o tamanho do código no final, para que você saiba quanto espaço resta.

Christopher Biggs
fonte
0

Programei meu 'antigo' Duemanilove 'como ISP com a ajuda deste artigo: http://arduino.cc/en/Tutorial/ArduinoISP Funciona igualmente bem com o ATtiny's: http://hlt.media.mit.edu/? p = 1229

Lembre-se de que, ao usar o Arduino IDE 0022, é necessário atualizar o esboço do ArduinoISP para uma versão mais recente, devido à prevenção de spam, mudei esse link para os comentários abaixo.

Fiz a programação em um editor de texto (vi) e compilei usando o avr-gcc, conforme descrito no artigo mit.edu que vinculei.

jippie
fonte
prevenção de spam fez-me mencionar o link para o recente ArduinoISP a partir dos comentários:: code.google.com/p/mega-isp/downloads/...
jippie
0

Ei cara, você ainda pode usar o avrstudio no ubuntu. Pensando como você pode fazer isso ...

A resposta é apenas instalar o aplicativo wine e executar os softwares windows com wine.

Avr studio, proteus ... até jogos do windows podem ser executados no ubuntu com vinho.

Você não precisa nem mexer com os makefiles blá blá. (Basta instalar com o vinho e começar).

Existem muitos sites para começar a usar os avr MCUs, como extremos eletrônicos, tutoriais sobre AVR etc. Basta fazer uma pesquisa no google.

Vou explicar em detalhes como instalar o avrstudio 4 no wine, já que o avrstudio 5 e 6 não funciona com ele, mas você pode usar a caixa virtual no linux para executar até o avr stud 5 e 6 com janelas na caixa virtual.

  1. Abra o centro de software Ubuntu, digite wine na pesquisa e instale-o.

  2. Em seguida, obtenha a configuração para avrstudio4 e você também precisa instalar o win avr

    tente estes links para

uma. avr studio 4 http://mycomsats.com/blogs/download-atmel-avr-studio-4-free/

b. win 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.Abra a pasta onde está a configuração do AS (avr studio 4) e clique com o botão direito do mouse e abra-a com "windows wine program loader" ou "a wine application".

4.Então você precisa clicar nos próximos botões, como faria no Windows.

5.Em seguida, instale o win avr da mesma forma com o wine (entre na configuração do win avr ....).

6. Baixe o indicador de menu clássico do ubuntu software center. Você saberá disso em apenas cinco minutos.

7.No menu clássico -> vinho -> Programas -> avr tools

o sexto passo é um passo extra, para que você não precise mexer com o local onde a opção executável avrstudio4 está na pasta wine.

Jasser
fonte
Essa resposta seria mais útil se contivesse detalhes / links sobre como executá-la no Wine. O Atmel Studio mais recente é baseado no Microsoft Visual Studio, que acredito não funcionar bem no Wine, mas posso estar errado.
precisa
Eu editei a resposta @PeterJ
Jasser