Suite di programmazione AVR Linux / Mac?


11

Sto programmando e usando Arduinos da un po 'di tempo ormai. Tuttavia sono pronto a passare all'utilizzo dei chip AVR senza il bootloader di Arduino. La mia domanda è: quali sono le risorse per farlo?

Voglio usare Linux / Mac, quindi Winavr è fuori dall'immagine come Avrstudio. Se non esiste una cosa come quella che sono dopo, mi accontenterò di una macchina virtuale Windows. Ma fino a quando non lo so per certo. Quello che voglio è un tipo di IDE che utilizza avr-gcc.

Come bonus a questa domanda qualcuno ha buone risorse per l'apprendimento di C per avr? In particolare, come configurare Makefile ecc. Per i diversi chip?

Risposte:


7

Sono d'accordo con zklapow ma controlla anche la sezione dei progetti su AVR Freaks. È così che ho imparato il giorno prima degli Arduinos. Inoltre, dovrai quasi sicuramente leggere la scheda tecnica del tuo chip per fare qualcosa di utile. Non ci sono belle funzioni che, ad esempio, leggono un pin analogico perché ci sono così tanti parametri che l'ambiente arduino ti nasconde. Lasciate che vi faccia un esempio:

 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
 }

è approssimativamente simile al seguente C (non testato):

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

Certo, ci sono funzioni di ritardo in alcune librerie e ci possono essere funzioni di output in altre, ma abituarsi a scrivere codice in questo modo. L'unico modo in cui puoi sapere cosa significano tutte queste cose PORTB e DDRB è leggere la scheda tecnica. Mi dispiace parlare di questo, ma non abbastanza persone si rendono conto che il foglio dati è una miniera d'oro per informazioni.


Vorrei apportare una correzione al tuo codice, quando imposti DDRB dovresti usare DDRB | = (1 << 6) in modo da non influenzare altri bit.
zklapow,

Inoltre è disponibile una funzione delay_ms (). Ma in generale, in programmi più complessi, di solito non si desidera ritardare la codifica della propria app.
David,

7

Dovresti anche controllare Eclipse per C / C ++ e il plugin AVR-Eclipse. Funziona perfettamente per me, soprattutto con il crosspack. Lo uso da circa un anno e mi piace molto.


Ottieni il plug-in avr-eclipse, si integra perfettamente con avrdude e avr-gcc in modo da finire con un bel IDE su un buon compilatore gratuito.
dren.dk

la configurazione del microcontrollore Eclipse sarà un buon gateway per utilizzare anche i microcontrollori ARM. Un'alternativa molto migliore di ottenere un IDE solo AVR.
Lyncas,

4

Uso anche CrossPack di ObDev . È un ottimo raggruppamento di tutti gli strumenti necessari per scrivere il codice AVR-GCC C. Sono gli stessi strumenti presenti in un'installazione standard di Arduino, quindi a volte ho usato le viscere del sistema di build di Arduino per scrivere un semplice codice AVR-GCC.

Normalmente quando scrivo codice C, l '"IDE" che uso è un editor di testo, comandi da riga di comando e Makefile. Sono solo più efficiente in questo modo. Ho una finestra aperta che è l'editor di testo (emacs), un'altra finestra che è compilation e una terza o quarta che fa un monitor seriale o simile. Ma tutto ciò che può essere fatto in una singola finestra della riga di comando, nel qual caso i comandi assomigliano a:

% emacs foo.c [modifica file]
% make [codice compilazione]
% make flash [carica su chip]
% screen /dev/tty.usbserial 9600 [parla con chip]
... e poi ripetere se necessario ...

Inoltre, potresti voler dare un'occhiata a SmileyMicros.com . Ha scritto un bel libro sulla introduzione alla programmazione AVR GCC basato sulla scheda AVR Butterfly, prima dell'Arduino, e da allora ha aggiornato i suoi esempi per incorporare Arduino. È un bel confronto per vedere come viene eseguita la programmazione AVR C su un chip più complesso di quello di Arduino.



3

Poiché hai utilizzato Arduino, tutto ciò di cui hai bisogno è già installato. Compilo gli schizzi di Arduino dalla riga di comando usando un Makefile. Compilo anche il codice senza il bootloader di Arduino.

Il Makefile che uso per compilare il bootloader di Arduino per le mie schede è su http://wiblocks.luciani.org/docs/app-notes/bootloader.html È possibile modificarlo per compilare il programma anziché il file ATmegaBOOT_xx8.c.

Il mio Makefile viene modificato dal file che ho trovato in questo sito - http://mjo.tc/atelier/2009/02/arduino-cli.html

Mentre rispondevo a questa stessa domanda (proprio ieri;) su Twitter mi sono imbattuto in un makefile su dorbotpdx. Vedi http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

C'è anche uno script di shell ben documentato su http://arkku.com/misc/arduino_make.sh

Probabilmente userei un Makefile piuttosto che uno script di shell. Il collega che ha realizzato questa sceneggiatura ha fatto un ottimo lavoro nel commentare il flusso. È un lavoro uno sguardo solo per capire il flusso.


Non sono riuscito a far funzionare arduino_make.sh con OSX 10.6 perché 'awk -v' non funziona come previsto su OSX e lo usa ovunque.
terrazza

La sua domanda non riguardava Arduino, ma l'uso di avr-gcc e avrdude su Linux
dren.dk

2

Ho trovato IDE CodeLite (www.codelite.org) bello e completo; tuttavia, per programmare i microchip AVR è necessario creare il proprio Makefile.

Puoi provare BeRTOS Wizard , che creerà un progetto BeRTOS e i relativi Makefile, che potrai quindi utilizzare con CodeLite. Per far lampeggiare il bersaglio, basta usare "make flash" e il gioco è fatto. Lavoriamo su Linux quotidianamente, se hai ulteriori domande, inseriscile nella mailing list. Disclaimer: sono uno sviluppatore BeRTOS.

Cordiali saluti, Luca


Disclaimer a parte, CodeLite è un ottimo strumento. Non è necessario utilizzare "make flash" se si configura CodeLite per funzionare con il proprio sistema di generazione. Code :: Blocks ha un potenziale simile.
Kevin Vermeer,

2

Se hai installato Macports puoi semplicemente eseguire:

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

e dovresti essere pronto per partire.


2

Se chiedi al tuo sistema di pacchetti di installare avr-libc, questo dovrebbe darti tutto ciò di cui hai bisogno. Uso emacs come IDE, quindi, guarda il nome utente.

Se vuoi un template makefile, dai un'occhiata a uno dei miei progetti su github, ad esempio https://github.com/unixbigot/pir-lite

In quel repository avr-tmpl.mk è una libreria di makefile standard (non scritta da me). Lo includi dal tuo makefile principale e devi solo definire quale chip hai, la velocità di clock e i tuoi file. Ne ho una copia e la includo da tutti i miei makefile di progetto.

"make program" chiamerà avrdude per scaricare il codice. Il makefile stampa anche le dimensioni del codice alla fine, quindi sai quanto spazio ti rimane.


0

Ho programmato il mio "vecchio" Duemanilove "come ISP con l'aiuto di questo articolo: http://arduino.cc/en/Tutorial/ArduinoISP Funziona ugualmente bene con ATtiny: http://hlt.media.mit.edu/? p = 1.229

Intendiamoci, quando si utilizza Arduino IDE 0022, è necessario aggiornare lo sketch ArduinoISP a una versione più recente, a causa della prevenzione dello spam ho spostato quel link ai commenti qui sotto.

Ho fatto la programmazione in un editor di testo (vi) e compilato usando avr-gcc come descritto nell'articolo mit.edu che ho collegato.


la prevenzione dello spam mi ha fatto menzionare il link al recente ArduinoISP dai commenti:: code.google.com/p/mega-isp/downloads/…
jippie

0

Ehi amico, puoi ancora usare avrstudio in Ubuntu. Pensando come puoi farlo .....

La risposta è semplicemente installare l'applicazione wine ed eseguire quei software Windows con wine.

Avr studio, proteus ... anche i giochi di Windows possono essere eseguiti in Ubuntu con Wine.

Non devi nemmeno fare casini con i makefile blah blah. (Basta installare con wine e iniziare).

Ci sono molti siti per iniziare con avr MCU come extremeelectronics, tutorial AVR ecc. Basta dare una ricerca su Google.

Dirò in dettaglio come installare avrstudio 4 in wine poiché avrstudio 5 e 6 non funzionano con esso, ma è possibile utilizzare Virtual Box in Linux per eseguire anche AVR Stud 5 e 6 con Windows su Virtual Box.

  1. Apri il centro software Ubuntu e digita wine nella ricerca, quindi installalo.

  2. Quindi ottenere l'installazione per avrstudio4 e inoltre è necessario installare win avr

    prova questi link per

un. 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%22ffiles% 2F & use_mirror = kaz

3.Aprire la cartella in cui si trova l'installazione di AS (avr studio 4), quindi fare clic con il tasto destro del mouse e quindi aprirlo con "Windows Wine Program Loader" o "un'applicazione Wine".

4. Quindi devi fare clic sui pulsanti successivi come faresti in Windows.

5.In seguito installa nuovamente win avr in modo simile con wine (vai nella configurazione win avr ....).

6. Scarica il classico indicatore di menu dal centro software Ubuntu. Lo scoprirai in soli cinque minuti.

7.Dal menu classico -> vino -> Programmi -> strumenti avr

il sesto passaggio è un passaggio aggiuntivo in modo da non dover fare confusione con l'opzione eseguibile avrstudio4 nella cartella wine.


Questa risposta sarebbe più utile se contenesse dettagli / collegamenti su come eseguirlo in Wine. L'ultimo Atmel Studio si basa su Microsoft Visual Studio che credo non funzioni bene con Wine, ma potrei sbagliarmi.
PeterJ,

Ho modificato la risposta @PeterJ
Jasser il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.