¿Suite de programación AVR para Linux / Mac?

11

He estado codificando y usando Arduinos desde hace bastante tiempo. Sin embargo, estoy listo para usar chips AVR sin el cargador de arranque arduino. Mi pregunta es ¿cuáles son los recursos para hacer esto?

Quiero usar linux / mac para que winavr esté fuera de la imagen al igual que avrstudio. Si no existe lo que soy después, me conformaré con una máquina virtual de Windows. Pero hasta que esté seguro. Lo que quiero es algún tipo de IDE que use avr-gcc.

Como beneficio adicional a esta pregunta, ¿alguien tiene buenos recursos para aprender C para avr? ¿Específicamente cómo configurar Makefiles, etc. para los diferentes chips?

ril3y
fuente

Respuestas:

7

Estoy de acuerdo con zklapow pero también reviso la sección de proyectos en AVR Freaks. Así aprendí en el día anterior a los arduinos. Además, es casi seguro que tendrá que leer la hoja de datos de su chip para hacer algo útil. No hay funciones agradables que, por ejemplo, lean un pin analógico porque hay tantos parámetros que el entorno arduino te oculta. Dejame darte un ejemplo:

 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
 }

es más o menos similar al siguiente C (no probado):

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, hay funciones de retraso en algunas bibliotecas y puede haber funciones de salida en otras, pero acostúmbrese a escribir código como este. La única forma de saber qué significan todas estas cosas de PORTB y DDRB es leer la hoja de datos. Lamento hablar sobre esto, pero no hay suficientes personas que se den cuenta de que la hoja de datos es una mina de oro para obtener información.

Jeremy
fuente
Haría una corrección a su código, cuando configure DDRB debe usar DDRB | = (1 << 6) para no afectar a otros bits.
zklapow
También hay una función delay_ms () disponible. Pero, en general, en los programas más complejos, por lo general, no desea tener demoras en la codificación de su aplicación.
davr
7

También debe consultar Eclipse para C / C ++ y el complemento AVR-Eclipse. Funciona perfectamente para mí, especialmente con crosspack. Lo uso desde hace aproximadamente un año y realmente me gusta.

Materia interactiva
fuente
Obtenga el complemento avr-eclipse, se integra muy bien con avrdude y avr-gcc para que termine con un buen IDE además de un buen compilador gratuito.
dren.dk
la configuración del microcontrolador Eclipse será una buena puerta de entrada para usar microcontroladores ARM también. Una alternativa mucho mejor que obtener un IDE solo de AVR.
lyncas
4

También uso CrossPack de ObDev . Es un excelente paquete de todas las herramientas necesarias para escribir el código AVR-GCC C. Son las mismas herramientas presentes en una instalación estándar de Arduino, por lo que a veces he usado las agallas del sistema de construcción Arduino para escribir código AVR-GCC simple.

Normalmente cuando escribo código C, el "IDE" que uso es un editor de texto, comandos de línea de comandos y Makefiles. Solo soy más eficiente de esa manera. Tengo una ventana abierta que es el editor de texto (emacs), otra ventana que es compilación, y una tercera o cuarta que está haciendo un monitor en serie o similar. Pero todo eso se puede hacer en una sola ventana de línea de comandos, en cuyo caso los comandos se parecen a:

% emacs foo.c [editar archivo]
% make [código de compilación]
% make flash [subir al chip]
% screen /dev/tty.usbserial 9600 [hablar con chip]
... y luego repita según sea necesario ...

Además, es posible que desee visitar SmileyMicros.com . Escribió un libro realmente agradable sobre la introducción de la programación AVR GCC basada en la placa AVR Butterfly, antes del Arduino, y desde entonces ha estado actualizando sus ejemplos para incorporar Arduino. Es una buena comparación para ver cómo se realiza la programación AVR C en un chip más complejo que el de Arduino.

todbot
fuente
3

Como has estado usando Arduino, todo lo que necesitas ya está instalado. Recopilo bocetos de Arduino desde la línea de comandos usando un Makefile. También compilo código sin el gestor de arranque Arduino.

El Makefile que uso para compilar el gestor de arranque Arduino para mis tableros está en http://wiblocks.luciani.org/docs/app-notes/bootloader.html. Puede modificarlo para compilar su programa en lugar del archivo ATmegaBOOT_xx8.c.

Mi Makefile está modificado del archivo que encontré en este sitio: http://mjo.tc/atelier/2009/02/arduino-cli.html

Mientras respondía esta misma pregunta (ayer mismo) en Twitter me encontré con un archivo MAKE en dorbotpdx. Ver http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

También hay un script de shell bien documentado en http://arkku.com/misc/arduino_make.sh

Probablemente usaría un Makefile en lugar de un script de shell. El compañero que hizo este script ha hecho un excelente trabajo al comentar el flujo. Es trabajar un vistazo solo para entender el flujo.

jluciani
fuente
No pude hacer que arduino_make.sh funcionara con OSX 10.6 porque 'awk -v' no funciona como se esperaba en OSX y lo usa en todas partes.
terraza
Su pregunta no era sobre Arduino, sino sobre el uso de avr-gcc y avrdude en Linux
dren.dk
2

Encontré CodeLite (www.codelite.org) IDE agradable y con todas las funciones; aún así, para programar microchips AVR necesitas crear tu propio Makefile.

Puede probar el Asistente BeRTOS , que creará un proyecto BeRTOS y Makefiles relacionados, que luego puede usar con CodeLite. Para flashear tu objetivo, solo usa "make flash" y listo. Trabajamos en Linux a diario, si tiene más preguntas, publíquelas en la lista de correo. Descargo de responsabilidad: soy un desarrollador de BeRTOS.

Saludos cordiales, Luca

Luca Ottaviano
fuente
Dejando de lado el descargo de responsabilidad, CodeLite es una gran herramienta. No tiene que usar 'make flash' si configura CodeLite para que funcione con su sistema de compilación. Code :: Blocks tiene un potencial similar.
Kevin Vermeer
2

Si tiene Macports instalado, simplemente puede ejecutar:

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

y deberías estar listo para partir.

trondd
fuente
2

Si le pide a su sistema de paquetes que instale avr-libc, eso debería darle todo lo que necesita. Yo uso emacs como mi IDE, porque bueno, ver nombre de usuario.

Si desea un archivo make de plantilla, eche un vistazo a uno de mis proyectos en github, por ejemplo, https://github.com/unixbigot/pir-lite

En ese repositorio, avr-tmpl.mk es una biblioteca de archivos MAKE (no escrita por mí). Lo incluye desde su archivo MAKE principal y solo tiene que definir qué chip tiene, la velocidad del reloj y sus archivos. Tengo una copia y la incluyo de todos los archivos make de mi proyecto.

"make program" llamará a avrdude para descargar el código. El archivo MAKE también imprime el tamaño del código al final, para que sepa cuánto espacio le queda.

Christopher Biggs
fuente
0

Programé mi 'viejo' Duemanilove 'como ISP con la ayuda de este artículo: http://arduino.cc/en/Tutorial/ArduinoISP ¿ Funciona igualmente bien con ATtiny: http://hlt.media.mit.edu/? p = 1229

Eso sí, cuando use Arduino IDE 0022, debe actualizar el boceto ArduinoISP a una versión más reciente, debido a la prevención de spam, moví ese enlace a los comentarios a continuación.

Hice la programación en un editor de texto (vi) y compilé usando avr-gcc como se describe en el artículo mit.edu que vinculé.

jippie
fuente
la prevención de spam me hizo mencionar el enlace al reciente ArduinoISP de los comentarios: code.google.com/p/mega-isp/downloads/…
jippie
0

Hola amigo, todavía puedes usar avrstudio en ubuntu. Pensando cómo puedes hacer eso .....

La respuesta es simplemente instalar la aplicación wine y ejecutar esos softwares de windows con wine.

Avr studio, proteus ... incluso los juegos de windows se pueden ejecutar en ubuntu con wine.

Ni siquiera tiene que meterse con los makefiles bla, bla, bla (simplemente instálelo con wine y comience).

Hay muchos sitios para comenzar con los MCU de avr, como extremeelectronics, tutoriales AVR, etc. Simplemente haga una búsqueda en google.

Le diré en detalle cómo instalar avrstudio 4 en wine ya que avrstudio 5 y 6 no funcionan con él, pero puede usar virtual box en linux para ejecutar incluso avr stud 5 y 6 con windows en virtual box.

  1. Abra el centro de software de Ubuntu y escriba wine en la búsqueda y luego instálelo.

  2. Luego obtenga la configuración para avrstudio4 y también necesita instalar win avr

    prueba estos enlaces para

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

si. 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 y use_mirror = kaz

3. Abra la carpeta donde está la configuración de AS (avr studio 4) y luego haga clic derecho y luego ábralo con "Windows Wine Program Loader" o "una aplicación de vino".

4. Luego debe hacer clic en los siguientes botones como lo haría en Windows.

5. Luego, vuelva a instalar win avr de manera similar con wine (vaya a la configuración de win avr ...).

6. Descargue el indicador de menú clásico del centro de software ubuntu. Lo sabrás en solo cinco minutos.

7.Desde el menú clásico -> vino -> Programas -> herramientas avr

el sexto paso es un paso adicional para que no tenga que meterse con dónde está la opción ejecutable avrstudio4 en la carpeta del vino.

Jasser
fuente
Esta respuesta sería más útil si contuviera detalles / enlaces sobre cómo ejecutarla en Wine. El último Atmel Studio se basa en Microsoft Visual Studio, que creo que no funciona bien con Wine, pero podría estar equivocado.
PeterJ
He editado la respuesta @PeterJ
Jasser