Valkertown Blog

Redirección a el nuevo blog en 5 segundos...

jueves, junio 30, 2005

Finalmente me di mañas para aprender a usar cvs, y me parece genial,
es la primera vez que utilizo una herramienta de estas y hace el llevar
el progreso de un desarrollo mucho más controlado.

Así que en la interface CVS que se encuentra en el proyecto de SourceForge
van a estar los desarrolllos activos, cuando se encuentre alguno de los
proyectos actuales con el nivel de madurez que tiene el proyecto de instrumentación
será publicado como un release.

El repository de CVS:

  • instrumentación tiene un proyecto maduro pero
    sin información adecuada para el montaje en hardware.

  • tools se encuentra una herramienta avr-mem
    para medir el uso de recursos de memoria utilizados por los binarios
    Originalmente este script se encuentra con WinAVR y según recuerdo
    no funcionaba transparentemente en mi shell así que lo modifique
    un poco para que fucnionara, por eso lo publico.
  • testing Aparecen los proyectos o ideas con desarrollo
    más activo.




EOT

sábado, junio 25, 2005

Bien encontre un post apropiado del blog anterior continuando con el desarrollo
de las herramientas.

Para ver los cables de programación en la documentación de UISP
se encuentran los cables soportados.
He probado con exito:

  • dapa que es un cable del puerto paralelo a los pines del micro.
  • xil que es el cable jtag que viene con las boards xilinx, el que probe viene
    con la tarjeta de evaluación de una fpga spartan3, gracias a medrano por la ayuda con el testing con este cable y un atmega16


La mejor forma de utilizar las GNUTools es creando un
Makefile apropiado, que sea fácil de reutilizar.
Este envio cubre este aspecto y como utilizar todas
las herramientas y el wrapper(Makefile) para crear la aplicación
de prueba.


Un archivo Makefile contiene las reglas e instrucciones
requeridas para compilar, en principio esta pensado para
esa tarea, sin embargo la flexibilidad permite que
sea utilizado en otras tareas.

Bien, el programa make cuando se invoca desde la
linea de comando busca el archivo Makefile o makefile en el
directorio actual, también puede ser especificado un
archivo diferente para obtener las reglas.

Sin embargo tener los proyectos separados en directorios
y con su propio Makefile ayuda a organizar el trabajo.

Esta es una cabecera adecuada para iniciar el archivo:

#Cambiar al nombre del proyecto
FILE=proyecto
#Especificar el micro para el cual se va a compilar
MCU=micro
#Especificar el método de programación
CABLE=dapa

#Herramientas de compilación.

CC=avr-gcc
XXD=xxd
OBJCOPY=avr-objcopy
OBJDUMP=avr-objdump


CFLAGS= -g -Wall -mmcu=$(MCU)

all: $(FILE).hex



Luego se especifican las reglas de compilación.

%.o:%.c
<- TAB ->$(CC) -c -o $*.o $(CFLAGS) $(ECOS_GLOBAL_CFLAGS) $<

%.hex: %.elf
$(OBJCOPY) -j .text -j .data -O ihex $< $*.hex
$(OBJDUMP) -h -S $< > $*.listing

%.elf: %.o
$(CC) $(CFLAGS) -o $*.elf -Wl,-Map,$(FILE).map $<


Estas reglas permiten la mayor generalidad pero en ocasiones
no son suficientes y es importante conocer el compilador
para añadir las modificaciones pertinentes.

Por ejemplo muchas veces es deseable distribuir el proyecto
en varios objetos antes de enlazarlos o se han creado
cabeceras .h que su ruta debe ser especificada explícitamente
al compilador.

Los comandos de programación:


load: $(FILE).hex
uisp -dlpt=/dev/parport0 --erase -dprog=$(CABLE)
uisp -dlpt=/dev/parport0 --upload if=$< -dprog=$(CABLE) -v=3 --hash=32


Al final se le indica que debe hacer para limpiar:

clean:
-rm -f $(FILE).hex
-rm -f $(FILE).map
-rm -f $(FILE).o
-rm -f $(FILE).listing


De esta forma solo se debe modificar la cabecera del Makefile para
una gran cantidad de proyectos y los cambios adicionales
se restringen a los proyectos que lo necesiten.

Los micro ATMEGA en general vienen con un reloj interno de ~1Mhz así
para esta aplicación de ejemplo no hace falta más que polarizar
el micro, programador, y un led.

Si se quiere utilizar un reloj diferente es importante leer
sobre los FUSES de estos micros y la documentación
del programador(uisp) sobre como realizar la configuración.


ledtest.c

#include <avr/io.h>
void delay_ms(unsigned short ms)
{
unsigned short dl1, dl2;
dl1 = 50; // Si se utiliza un reloj más veloz, incrementar este valor
while (dl1) {
dl2 = 1000;
while (dl2) {
while ( ms ) ms--;
dl2--;
}
dl1--;
}
}
int main(void)
{
DDRB|=_BV(PB2); // Habilita el Puerto B2 como salida
while (1) {

PORTB^=_BV(PB2); // TOOGLE del LED
delay_ms(500);
}
}




En mi caso se cambia en el makefile:


#Cambiar al nombre del proyecto
FILE=ledtest
#Especificar el micro para el cual se va a compilar
MCU=atmega8535



Es importante recordar que .../avr-elf/bin se debe encontrar en el PATH.


$export PATH=$PATH:.../avr-elf/bin
$setenv PATH $PATH:.../avr-elf/bin



El directorio del proyecto se debe ver algo así ahora:


4.0K Makefile
4.0K avrledtest.c


Compilamos

$make


Es posible que se presente el error de los 8 espacios, reemplace en el
Makefile esos 8 espacios por una tabulación.

Luego el directorio se debe ver:


4.0K Makefile 8.0K ledtest.listing
4.0K ledtest.c 8.0K ledtest.map
4.0K ledtest.hex


Si se quiere programar en el micro el ejemplo

$make load


Los archivos .listing y .map son muy útiles para analizar
el código final generado en assembler por el compilador, aunque
no son necesarios los añadí en el makefile para disponer
de todas las herramientas cuando se necesiten.

Con esto terminan esta serie de envíos, no pretenden ser un reemplazo
a la documentación de cada una de las herramientas, pero si una
guia adecuada.


Omito el esquemático del circuito ya que es bastante simple.

Se resume en:

  1. Alimentar el micro

  2. Led+Resistencia en el puerto B2, 1 Prendido, 0 Apagado

  3. Programador en las lineas adecuadas

  4. Cristal, Opcional




EOT

Great, first release at sourceforge.

En la página del proyecto se encuentra el primer archivo publicado en el proyecto, es el
más simple de todos pero es bastante placentero hacer el anuncio.

En este release:

  • Get Random Line

  • Update Backgrounds

  • Roll

  • My Aterm



Disfruten!


EOT

viernes, junio 24, 2005

Saludos, el proyecto en SourceForgue fue aprobado hoy.

La dirección del proyecto en SF:

YAUCP: Yet Another uController Project.


EOT

miércoles, junio 22, 2005

Sobre el simulavrxx si se utilizan las últimas binutils y el bfd que viene con ellas
este programa llama un segmento de una estructura :

src/avrdevice.cpp

Lineas 122,132
size=sec->_cooked_size;

_cooked_size ya no existe en esta versión de las binutils y supongo que posteriores.
Así que hasta ahora lo que hice fue modificar esta linea por lo que al parecer
es el reemplazo adecuado, según bfd.h

Lineas 122,132
size=sec->size;

Esto ya hizo que la compilación continuara, pero falta ver si realmente funciona :P

Aparentemente me hace falta instalar SWIG para terminar la compilación.

Err. NO VALE LA PENA COMPILAR EL SIMULAVRXX no tiene muchos micros soportados.
Hasta que el desarrollo no avance será mejor apegarse al simulavr-1.2.2

EOT

Finalmente estoy actualizando mis herramientas de trabajo a
versiones más actualizadas.

Intenté compilar los

  • GCC 4.0.0, NOK <- Falla, una lastima.

  • GCC 3.4.4, OK <- Recomendado

  • GCC 3.3.6, OK

  • GCC 3.3.4, OK



El AVR-LIBC 1.2.3 Tiene un pequeño error en common/macros.inc
sin embargo es sencillo de arreglar
Este es el diff:
---------------------------------------------------
39c39,40
<
---
> #ifndef __COMMON_MACROS__
> #define __COMMON_MACROS__
221a223
> #endif
---------------------------------------------------
Para usarlo crear una archivo nuevo con las lineas de
arriba.

[.../avr-libc-1.2.3/]$patch < diff_file

El pregunta por el archivo a parchar y se le indica common/macros.inc

Ya con esto y las instrucciones anteriores se puede compilar e instalar.

Los siguientes programas a compilar son:


  1. SimulAVR, Exito con la versón 0.1.2.2 FLAGS= --prefix=$MYDIR

  2. SimulAVRxxx, Exito con la versión 0.8.005 FLAGS=--prefix=$MYDIR

  3. GDB-6.2, Exito en la compilación, FLAGS=--target=AVR --prefix=$MYDIR



Esto es todo, ya con estas compilaciones exitosas solo falta hacer nuevas pruebas con
los desarrollos y seguir trabajando.

Vean los envios anteriores y espero comentarios si alguna información no es clara.


EOT

lunes, junio 20, 2005

Para compilar los sources de las herramientas AVR

Supongo que por lo menos ya se tiene habilidad suficiente
para moverse en un shell, descomprimir e instalar los
programas desde el código fuente.

En resumen para todos los sources los pasos son:


  1. $./configure [FLAGS]

  2. $make

  3. #make install


Notese que # indica que se suele hacer como root, aquí para estas herramientas
no nos interesa tener privilegios pues no es necesario.

  1. export MYDIR=$HOME/cross/avr-elf/ <- Directorio instalación

  2. export PATH=$PATH:$MYDIR/bin <- Es importante, y si se tiene una versión anterior de las herramientas eliminarlas del PATH para evitar conflictos

  3. BinUtils FLAGS=--enable-install-libbfd --target=avr --prefix=$MYDIR --disable-nls
  4. gcc y gcc-g++ se descomprimen en el mismo directorio,
    FLAGS= --target=avr --enable-languages="c,c++" --prefix=$MYDIR --disable-nls

  5. AVRLibc
    $ export PREFIX=$MYDIR
    $ sh -x ./doconf
    $ ./domake
    $[#] ./domake install

  6. UISPFLAGS= --prefix=$MYDIR


Eso es todo, ya con ese segmento compilado e instalado es suficiente para empezar a trabajar
para el GDB los flags de compilación son muy similares a los del GCC, y para el simulavr solo basta el prefix.

UPDATED: Tue Jun 21 09:45:13 COT 2005
UPDATED: Wed Jun 22 08:26:50 COT 2005
EOT

Er... Parece que perdi los archivos del blog anterior, así que, tendre que
volver a escribir algunas partes importantes que existian en el blog anterior.

Parece que en este blog no puedo hacer organización temática de los contenidos y
como los post son usualmente extensos, la información no va a quedar tan disponible como quisiera.

Ahora retomemos las herramientas de los AVR.

Estas son:

  • gcc-3.3.4 Se necesitan los fuentes, puede no ser el 3.3.4 pero es con la que he estado trabajando

  • avr-libc-1.0.4 Los fuentes, creo que entre más nueva la versión mejor se porta

  • UISP Para este definitivamente es mejor obtener la última versión

  • GDB Versión adecuada para la versión de GCC, aún no recuerdo si se pueden utilizar las últimas versiones con independencia del compilador.

  • binutils-2.5.0 Versión recomendada

  • SimulAVR Utilizar la versión más reciente, incluso CVS



Esos son todos, para gcc si se quiere utilizar el soporte limitado para c++, es necesario
tambien el gcc-g++, para la versión de gcc que se descargo.
Todas las versiones estan algo desactualizadas, las que son especificas de AVR es conveniente,
utilizar las versiones CVS.
Para gcc,gdb, y binutils es importante asegurarse que el desarrollo del crosscompiler este ya listo para las versiones, gcc 4.x tiene caracteristicas muy atractivas pero no conozco aún el
estado del crosscompiler para avr y conozco reportes de problemas de compatibilidad con código
de versiones anteriores en los objetivos tradicionales así que aun no es recomendado para quienes
desean comenzar.

El orden de compilación es el siguiente:

  1. BINUTILS

  2. GCC y G++

  3. AVRLibc

  4. GDB

  5. SimulAVR

  6. UISP

  7. DDD Excelente front end para el GDB



Los flags de configuración e instrucciones de instalación quedan por ahora para un
envio posterior, o de tarea :P

UPDATED: Tue Jun 21 09:46:24 COT 2005
EOT

domingo, junio 19, 2005

Saludos a todos.

Este es un HOWTO casí que obligatorio:
How To Become A Hacker
(Este también explica por que no recibo ese título)

Me gusta el logotipo que propone y va a estar disponible en la página como
un enlace a este HOWTO.


Añado de una vez algunos HOWTOS que me parecen muy interesantes para quienes
estan empezando y los ayude a motivarse un poco, o para los que se consideran expertos
confrontar su conocimiento con algunas ideas muy interesantes.

How to be a Programmer
The Art of Unix Programming
Great Hackers
The Jargon File

Bien, ahora tenia guardados un par de links que pienso que son bastante útiles:

Regular Expressions Reference Sheet



Finalmente, me ha gustau bastante este link:
The Python Challenge

Aunque se supone se utilice Python para resolver este reto, paso a paso, solo como
prueba de habilidad vale la pena utilizarlo en cualquier lenguaje.
De hecho las REGEXP son bastante útiles en este reto.


EOT

sábado, junio 18, 2005

Argh!
No lo puedo resistir este link tiene que ser difuminado!

http://www.pwned.nl/ayb/

EOT

Saludos, bien el blog progresa con algunas modificaciones
en el template y una imagen procesada por +Sabbath+
a quien moleste demasiado para hacerla, gracias por la
paciencia.

Bien, en el otro blog se publicaban archivos, como
no tengo aún hosting de archivos no puedo publicar
aquí archivos, quiza arranque un proyecto en sourceforge
para poder publicar archivos, sin embargo
aun me falta organizar los proyectos para
ello.

El trabajo realizado este semestre
se resume en:

Scripts:



  • GRL.pl <- Get Random Line, de un archivo

  • Materm.pl, Un script que envuelve a aterm y utiliza un archivo de colores para colocar distintas transparencias, y ajustar el titulo de la terminal

  • bin2asc,asc2bin,asc2hex,hex2asc Set de scripts de perl que traducen, para los nicks :P

  • rsync_backrounds, script para mantener sincronizados la coleccion de backgrounds con Herulor


Traducción:



  • BRIM, Corrección de la traducción a español y se añadio Español-Colombia explicitamente.Ayuda especial de Herulor


Electronica:



  • Contiki, Bien aprendi a utilizar los protothreads base de este OS

  • Instrumentación, Este proyecto cubre acondicionamiento PT100 e implementación protocolo MODBUS-ASCII sobre RS485, este utiliza los protothreads sobre AVR.

  • Control, Este proyecto fue la base del de instrumentación y ahora le toca retomar todo el trabajo hecho en el de instrumentación, este tambien utiliza los protothreads sobre AVR

  • SDL, GLUt, Para la visualización del proyecto de instrumentación se implemento un pequeño programa en C puro, usando esas librerias, al final funciono bastante bien, puede tomar la información que gráfica por
    RAW-PARPORT, RAW-SERIAL, o MODBUS-ASCII

  • Sobre PIC-Microchip, realice un poco de trabajo, haciendo andar las herramientas GPL bajo Linux.
    Aun estan en una etapa muy primitiva y desde la instalación hubo que recurrir a modificaciones del
    código fuente.


Software:



  • Doxygen, Excelente herramienta para la generación de documentación sobre C, C++, Java, ..., la utilice en todos los proyectos, de alguna forma espero poder mostrar un poco como se utiliza esta herramienta

  • Emacs, Sobre emacs grandes mejoras sobre el uso de este.
    www.emacswiki.org/cgi-bin/wiki Excelente sitio.

  • Vim, Sobre vim tengo la queja aun de la indentación, puede que sea por ignorancia, pero por ahora
    emacs tiene un manejo muy superior de la indentación que vim.

  • Firefox, para este tengo que recomendar estas extensiones: Adblock, Disable Targets for Downloads, SessionSaver(No es muy estable), Download Manager Tweak, GooglePreview, Tabbrowser Preferences, Flashblock

  • Python y Perl siguen ganando en el desarrollo de apliaciones rapidas


Webdevelop:



  • Groupware DivExtensión UNAL, aunque le dedique bastante tiempo a este proyecto fue un fracaso por que no recibi paga alguna como suele suceder :P y finalmente fue abandonado.


WindowManage



  • Fluxbox, Me encanta este manejador de ventanas, aun tiene cosas que me desagradan pero es de lo mejor. Fluxbox 0.9.13 : (c) 2001-2005 Henrik Kinnunen

  • Esetroot, la mejor herramienta para los backgrounds del escritorio y que funcionen bien con
    todos los programas que usan transparencias


Bien, Herulor tiene mucha participación
en la elaboración de muchos de estos
proyectos, sobre todo GRL es completamente
de él.

TODO, Por hacer



  • Encontrar hosting de archivos

  • Mejorar el manejo de este blog, la idea de un blog plano no me agrada

  • Subir Pandesmos, oficialmente, no como ahora en mi maquina

  • Reportar más sobre los proyectos de electronica

  • Subir el contenido del blog anterior

  • Publicar el trabajo realizado sobre FFT y Transformadas Generalizadas de Fourier, y el cambio a kernel digital



Bien eso es todo, un post algo largo y sin corrección.

EOT

jueves, junio 16, 2005

Bueno será volver a comenzar el blog en un server free,
me gustaba más mi dirección anterior.
Bueno como tengo toda la info del blog anterior
la volvere a publicar tan pronto como pueda.


Chaos.

EOT