Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Arduino-lite core alternativo para Arduino

Ir abajo

Arduino-lite core alternativo para Arduino Empty Arduino-lite core alternativo para Arduino

Mensaje por Pikitin Dom 15 Abr 2012 - 20:48

Arduino-lite es un core alternativo para Arduino, orientado a apliciones que necesiten más velocidad y/o ejecutables mas pequeños.
Sustituye algunas de las funciones arduino por macros, como digitalWrite por DIGITAL_WRITE, que pasan de generar varias decenas de instrucciones a sólo un par de ellas o sólo una en el mejor caso.

La diferencia en tamaño puede ser apreciable en según que casos, por ejemplo el blinkled de los ejemplos arduino pasa de unos 1400 bytes a unos 700.

Pero donde realmente se nota es en velocidad cuando se hace uso intensivo de escritura/lectura de pines, por ejemplo imprimir un bitmap en un glcd Nokia 5110 (84x48) con Arduino original tarda unos 90 ms y con el lite unos 10 ms.
La diferencia está en que con arduino-lite puedes mantener 20 FPS y todavía te sobran 40 ms por frame para hacer captura de datos, muchos cálculos o lo que sea, por ejemplo para hacer un osciloscopio sencillo. Mientras que con arduino esto se hace imposible.



Uso en Linux desde linea de comandos:

El arduino-lite se puede usar directamente desde consola, para usarlo en Linux hay que cambiar algunas cosillas del makefile:

Archivo: arduino-lite/scripts/mak_avr_def.inc

diff -w mak_avr_def-Linux.inc mak_avr_def.inc

20,25c20,25
< REMOVE := rm -f
< MV := mv -f
< MKDIR := mkdir -p
< SED := sed
< FIND := find
> REMOVE := $(TOOL_ROOT)/win32/posix/rm -f
> MV := $(TOOL_ROOT)/win32/posix/mv -f
> MKDIR := $(TOOL_ROOT)/win32/posix/mkdir -p
> SED := $(TOOL_ROOT)/win32/posix/sed
> FIND := $(TOOL_ROOT)/win32/posix/find
> DIRNAME := $(TOOL_ROOT)/win32/posix/dirname

27c27
> AVRDUDE := $(TOOL_ROOT)/win32/avrdude-arduino.exe

50c50
>AVR_TOOLS_PATH = $(WINAVR_HOME)/bin

110,116c110,116
< CC = avr-gcc
< CXX = avr-g++
< OBJCOPY = avr-objcopy
< OBJDUMP = avr-objdump
< AR = avr-ar
< SIZE = avr-size
> NM = avr-nm
> CC = $(AVR_TOOLS_PATH)/avr-gcc
> CXX = $(AVR_TOOLS_PATH)/avr-g++
> OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy
> OBJDUMP = $(AVR_TOOLS_PATH)/avr-objdump
> AR = $(AVR_TOOLS_PATH)/avr-ar
> SIZE = $(AVR_TOOLS_PATH)/avr-size
> NM = $(AVR_TOOLS_PATH)/avr-nm



Integración en IDE Arduino:

Arduino-lite también se puede usar desde la IDE Arduino, en arduino 0.22 es muy sencillo:

En principio valdría con copiar y pegar (sobreescribiendo) los archivos de arduino-lite/src/core a arduino/hardware/arduino/cores/arduino
, pero así se pierde la posiblidad de compilar sketches arduino normales.
Para mantener la IDE con sus capacidades originales se puede crear otro "core".
Lo voy a llamar "lite" pero se le puede poner el nombre que sea:

Crear la carpeta: arduino/hardware/arduino/cores/lite

Copiar los archivos de arduino/hardware/arduino/cores/arduino a la carpeta creada.

Copy&paste (sobreescribiendo) los archivos de arduino-lite/src/core a la carpeta creada.Ya tenemos el nuevo core, ahora para compilar con el hay que crear nuevos "boards", para ello editar arduino/hardware/arduino/boards.txt, copiar la entrada de la placa que queremos usar con lite y cambiar el nombre y core, por ejemplo para mega1280:

Código:
##############################################################

megalite.name=Arduino Mega (ATmega1280) LITE

megalite.upload.protocol=arduino
megalite.upload.maximum_size=126976
megalite.upload.speed=57600

megalite.bootloader.low_fuses=0xFF
megalite.bootloader.high_fuses=0xDA
megalite.bootloader.extended_fuses=0xF5
megalite.bootloader.path=atmega
megalite.bootloader.file=ATmegaBOOT_168_atmega1280.hex
megalite.bootloader.unlock_bits=0x3F
megalite.bootloader.lock_bits=0x0F

megalite.build.mcu=atmega1280
megalite.build.f_cpu=16000000L
megalite.build.core=lite

##############################################################

Ahora nos aprece una nueva placa en la lista: "Arduino Mega (ATmega1280) LITE"
Elegimos esa para compilar codigo que use arduino-lite.

En arduino 1.0 basicamente es lo mismo, pero hay que cambiar algunas cosas más, igual otro día lo explico.


Más información:
http://www.robopeak.net/blog/?p=131
http://www.robopeak.net/blog/?p=151

Manual:
http://www.robopeak.net/blog/?p=185

Descarga:
http://code.google.com/p/arduino-lite/

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.