Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

lunes, 6 de febrero de 2012

Compilando Arduino 1.0 desde shell

Como compilar sketchs de Arduino 1.0 desde la shell de linux sin dificultad ( o intentarlo )

* Requisitos previos

* Entrar al directorio del ejemplo Blink y descargar el fichero makefile

mrgastoso#:~/arduino-1.0/examples/1.Basics/Blink$
mrgastoso#:~/arduino-1.0/examples/1.Basics/Blink$ wget http://shallowsky.com/software/arduino/Makefile-1.0-v7
mrgastoso#:~/arduino-1.0/examples/1.Basics/Blink$ mv Makefile-1.0-v7 Makefile

* Editar el fichero Makefile y cambiar los siguientes parametros:

TARGET = Blink
ARDUINO_DIR = "directorio de arduino 1.0"
ARDUINO_MODEL = atmega328 o "elegir el modelo de arduino, ante la duda mirar en el fichero arduino-1.0/hardware/arduino/boards.txt"
AVR_TOOLS_PATH = /usr/bin "cambiar si se tiene una ruta diferente del toolchain de gcc avr, en mi caso es /usr/local/avr/bin/"

* El script toma como extension del archivo .pde, asi que antes de nada lo renombramos o copiamos

mrgastoso#:~/arduino-1.0/examples/1.Basics/Blink$ cp Blink.ino Blink.pde

* Ejecutar make, y observar como surge la magia


mrgastoso#:~/arduino-1.0/examples/1.Basics/Blink$ make

/usr/local/avr/bin//avr-g++ -c -mmcu=atmega328p -I. -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 applet/Blink.cpp -o applet/Blink.o 
/usr/local/avr/bin//avr-gcc -c -mmcu=atmega328p -I. -gstabs -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os   -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring.c -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring.o 
/usr/local/avr/bin//avr-gcc -c -mmcu=atmega328p -I. -gstabs -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os   -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_analog.c -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_analog.o 
/usr/local/avr/bin//avr-gcc -c -mmcu=atmega328p -I. -gstabs -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os   -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_digital.c -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_digital.o 
/usr/local/avr/bin//avr-gcc -c -mmcu=atmega328p -I. -gstabs -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os   -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_pulse.c -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_pulse.o 
/usr/local/avr/bin//avr-gcc -c -mmcu=atmega328p -I. -gstabs -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os   -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_shift.c -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_shift.o 
/usr/local/avr/bin//avr-gcc -c -mmcu=atmega328p -I. -gstabs -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os   -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WInterrupts.c -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WInterrupts.o 
/usr/local/avr/bin//avr-g++ -c -mmcu=atmega328p -I. -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/HardwareSerial.cpp -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/HardwareSerial.o 
/usr/local/avr/bin//avr-g++ -c -mmcu=atmega328p -I. -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WMath.cpp -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WMath.o 
/usr/local/avr/bin//avr-g++ -c -mmcu=atmega328p -I. -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WString.cpp -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WString.o 
/usr/local/avr/bin//avr-g++ -c -mmcu=atmega328p -I. -DF_CPU=16000000L -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino -I/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/variants/standard    -Os -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -DARDUINO=100 /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/Print.cpp -o /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/Print.o 
/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
/home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/Print.cpp:44:23: warning: '__progmem__' attribute ignored
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_analog.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_digital.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_pulse.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/wiring_shift.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WInterrupts.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/HardwareSerial.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WMath.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/WString.o
/usr/local/avr/bin//avr-ar rcs applet/core.a /home/mrgastoso/Descargas/arduino-1.0//hardware/arduino/cores/arduino/Print.o
/usr/local/avr/bin//avr-gcc -o applet/Blink.elf applet/Blink.o -L. applet/core.a -Os -Wl,--gc-sections -mmcu=atmega328p -lm
/usr/local/avr/bin//avr-objcopy -O ihex -R .eeprom applet/Blink.elf applet/Blink.hex


   text   data    bss    dec    hex filename
      0   1010      0   1010    3f2 applet/Blink.hex

mrgastoso#:~/arduino-1.0/examples/1.Basics/Blink$

Notas: del mismo autor tambien esta la version para arduino-0.22 : http://shallowsky.com/software/arduino/Makefile-0022-v4

- Referencias

sábado, 13 de febrero de 2010

Salicru UPS y NUT en FreeBSD

Recientemente he jubilado mi antiguo sai un MGE Ellipse 600 por un SAI Salicru SPS ONE 900VA



en la caja pone que es compatible con Linux, con su desastroso e infumable programa de gestion Winpower, asi que el reto en cuestion es hacerlo funcionar en Unix con el daemon NUT de http://www.networkupstools.org/

En principio la poca informacion que se puede encontrar sobre el SAI es que es compatible con el protocolo megatec_usb, en principio asi es pero se conoce que hay otro driver que usa ese mismo protocolo mas actualizado y compatible con este SAI, el protocolo blazer_usb que funciona decentemente, aqui unas capturas del funcionamiento:

  • Salida del comando upsc salicru

freenas#
battery.voltage: 13.60
battery.voltage.nominal: 12.0
beeper.status: enabled
driver.name: blazer_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/uhid0
driver.version: 2.4.1
driver.version.internal: 0.03
input.current.nominal: 3.0
input.frequency: 50.1
input.frequency.nominal: 50
input.voltage: 229.1
input.voltage.fault: 229.1
input.voltage.nominal: 230
output.voltage: 229.6
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 42
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665

  • Captura del interface cgi del NUT

Ahora vamos con la configuracion del nut para que funcione el SAI:
  • Configuracion de ups.conf
[salicru]
        driver = blazer_usb
        desc = "FreeBSD NAS"
        port=/dev/uhid0
Los demas ficheros de configuracion estan bien documentados, asi que toca leer.

Para FreeBSD un paso importante para que el usuario por efecto que corre el daemon pueda leer el dispositivo es configurar los siguientes ficheros:

  • Fichero /etc/devfs.rules
[nut_usb=10]
add path 'uhid0' group wheel user uucp mode 0660
  • Fichero /etc/devfs.conf
perm    /dev/usb/*      0660
own     /dev/usb/*      root:uucp
  •  Mensajes al arrancar el daemon
Network UPS Tools - UPS driver controller 2.4.1
Network UPS Tools - Megatec/Q1 protocol USB driver 0.03 (2.4.1)
Supported UPS detected with mustek protocol
Vendor information unavailable
Battery runtime will not be calculated (runtimecal not set)
Starting nut.
Network UPS Tools upsd 2.4.1
listening on port 3493
Connected to UPS [salicru]: blazer_usb-salicru