Monday, April 16, 2007

Tesis.

Bueno, en el almuerzo se me ocurrio la idea que podria ser mi tesis (ojala algun dia decida bien que hacer). Siguiendo con la idea del anterior post, seria asi:

En gumstix se correria pistachio, en el cual se correria un Framework de Control, el cual estaria previamente diseñado , modelado con UML y verificado con B-Method, y para la configuracion del control se tendria que especificar en UML.
Se tendria algo asi:

* Una aplicacion en la cual se diseñarian los componentes del sistema: Actuadores, Sensores, y el control como tal. La salida de este seria un modelo en UML.

* Este modelo se le pasaria al Framework en Pistachio el cual lo implementaria y se comunicaria con los sensores y los actuadores.

* El Framework se diseña en UML y se verificaria en B-Method, si algo falla ya seria problema de la arquitectura del Gumstix.

* Se pondria a prueba en el control de algun sistema complejo de controlar.

Eso seria todo.

Sunday, April 15, 2007

Tesis

Bueno no hay GSoC para mi, entonces vuelvo con mi tesis, pensandolo bien, creo que voy a redirigir mi tesis, tengo puntos en lso cuales quiero trabajar:

* Control digital en Tiempo-Real
* Redes neuronales.
* Pistachio
* Alguna implementacion en Gumstix.

Hasta ahora no se bien que sera. Pero si se unen las partes seria correr pistachio en Gumstix, y encima correr un Framework de Tiempo Real para el control de "Algo" y ojala que con Redes Neuronales.

Tuesday, March 27, 2007

GSoC

Bueno, le tire al GSoC, con lo que fue el principio de la idea de construir un sistema distribuido a partir de sistemas embebidos junto con Torres, hace como 2 años.
Al principio la idea era Inferno ( por el styx) , pero creo que limbo asusta. Seria bueno que se diera lo del GSoC, depronto saldria una implementacion de styx para pistachio. (Cumpliendo las obligaciones con el mes de marzo)

Sunday, January 28, 2007

Corriendo wombat

Bueno, despues de bajarme y utilizar un poco Fiasco, hice lo mismo con el paquete de Pistachio que estan trabajando en NICTA y UNSW, junto con Iguana y Wombat.
Lo que hice fue bajarme del svn todos los paquetes necesarios. En esta pagina muestran como bajarse los paquetes (http://www.ertos.nicta.com.au/software/baz-howto.pml) y para poder compilarlo toca hacerlo con un cross-compiler, no sirve el gcc normalcito, me baje este de nicta (http://www.ertos.nicta.com.au/downloads/i686-gcc-3.3.4-glibc-2.3.3-2006-06-02.tar.gz)
y posicionado en la carpeta donde estan todos los archivos ejecuto los siguiente:
tools/scons.py machine=pc99 toolprefix="i686-unknown-linux-gnu-" simulate
y listo, empiezan a compilarse todas las partes necesarias, pistachio, iguana, y wombat, y queda una imagen build/c.img que se corre automatica en qemu.
Una muestra:

Sunday, January 21, 2007

Tuesday, January 09, 2007

Saturday, December 30, 2006

De como compilar Fiasco.

Comence a compilar Fiasco, lo que hice fue seguir las instrucciones en http://os.inf.tu-dresden.de/fiasco/use.html.
1) Me baje los modulos grub l4 dde hello l4env dope preprocess de el cvs.
2) En el directorio l4 ejecuto lo siguiente:
make O=../build_user config
(lo dejo como esta)
make O=../build_user all
(Espero como 20 minutos y sale un error de sed, para arreglarlo toca entrar a l4/tool/gcc-wrap/Makefile y cambiar a:

$(VERBOSE)sed '\
s,@system@,$(SYSTEM),g;\
s,@ar@,$(AR),g;\
s,@nm@,$(NM),g;\
s,@ranlib@,$(RANLIB),g;\
s,@cc@,$(CC_$(DEFAULT_ARCH)),g;\
s,@cxx@,$(CXX_$(DEFAULT_ARCH)),g;\
s,@l4dir@,$(absfilename $(L4DIR)),g;\
s,@dropsdir@,$(DROPS_STDDIR),g;\
s,@compilerincdir@,$(GCCDIR_$(DEFAULT_ARCH))/include,g;\
s,@libgcc@,$(GCCLIB_$(DEFAULT_ARCH)),g;\
s,@libgcc_eh@,$(GCCLIB_EH_$(DEFAULT_ARCH)),g;\
s,@default_system@,$(DEFAULT_SYSTEM),g;\
s,@default_arch@,$(DEFAULT_ARCH),g;\
s,@default_cpu@,$(call PROCESS_SYSTEM, 's/[^-_]*_\([^-]*\).*/\1/p'),g;\
s,@default_l4api@,$(call PROCESS_SYSTEM, 's/.*-\(.*\)/\1/p'),g;\
' $< > $@.new


por:

$(VERBOSE)sed 's,@system@,$(SYSTEM),g;s,@ar@,$(AR),g;s,@nm@,$(NM),g;s,@ranlib@,$(RANLIB),g;s,@cc@,$(CC_$(DEFAULT_ARCH)),g;s,@cxx@,$(CXX_$(DEFAULT_ARCH)),g;s,@l4dir@,$(absfilename $(L4DIR)),g;s,@dropsdir@,$(DROPS_STDDIR),g;s,@compilerincdir@,$(GCCDIR_$(DEFAULT_ARCH))/include,g;s,@libgcc@,$(GCCLIB_$(DEFAULT_ARCH)),g;s,@libgcc_eh@,$(GCCLIB_EH_$(DEFAULT_ARCH)),g;s,@default_system@,$(DEFAULT_SYSTEM),g;s,@default_arch@,$(DEFAULT_ARCH),g;s,@default_cpu@,$(call PROCESS_SYSTEM, 's/[^-_]*_\([^-]*\).*/\1/p'),g;s,@default_l4api@,$(call PROCESS_SYSTEM, 's/.*-\(.*\)/\1/p'),g;' $< > $@.new

No se por que mi sed no puede con las instrucciones separadas en lineas con un \,pero se arregla el problema. Luego lo dejo otra vez compilando, y me da tiempo de salir, comprar dos libros (Calicalabozo de Andrés Caicedo, y La Despedida de Milan Kundera) , comer algo y cuando vuelvo la maquina esta en un error porque no tenia instalado el doxygen, lo instalo y vuelvo a compilar, me da tiempo de organizar los libros que tengo por leer (Calicalabozo, La despedida, Despues del Hombre de Gonzalo Arango, Gato o soledad en la lluvia de Amílcar Osorio, y El libro Negro de Orhan Pamuk), tambien juego un poco en el Wii de mi hermanito, el control es loquisimo, funciona basicamente con acelerometros. por lo que no es necesario jugar parado y moverse como loco, sino tambien sentado, la parte de infrarrojos funciona siempre y cuando no le caiga sol al sensor (pense que eso solo nos pasaba en los carritos que nos ponian a hacer en la universidad) sino se enloquece, pero casi siempre esta en lugar cerrado entonces no es problema, y me imagino que funciona con conceptos de vision esteroscopica; termino de jugar y sigue compilando, me como un postre y espero, luego sale un error porque no encuentra el comando fig2dev y me toca instalar el transfig, y comienzo de nuevo, al ratico (doy gracias que no toca compilar de nuevo lo que ya ha compilado) sale un error: no puede copiar el archivo building.tex en una carpeta, ¿¿bug del Makefile de Fiasco?? el Makefile hace ejecutar el comando, con respuesta:

cp building.tex drops-building.tex
cp: cannot stat `building.tex': No such file or directory


Lo que pasa es que el Makefile entra en el directorio de trabajo, build-user/doc/.... e intenta copiar el archivo desde esa misma carpeta y hay no esta, esta en el directorio l4/doc/building-howto, solo es copiarlo de esta posicion a build_user/doc/building-howto/ y comenzar de nuevo a compilar, y ya si termina, ¡mas largo que la primera instalada de Xfree86 fue esto!.

Ahora entro en la carpeta l4/kernel/fiasco, corro el comando:

make BUILDDIR=../../../build-kernel
cd ../../../build-kernel
make menuconfig
(lo dejo como esta)
make
(Espero mientras veo Carnivale, esta buena la serie)


Sigo los pasos de la pagina para iniciarlo, un poco distinto (pa correrlo en vmware desde una imagen de un floppy) pero en esencia lo mismo.
Y listo, tengo al buen Fiasco corriendo en una maquina virtual.

Monday, December 18, 2006

Distribuyendo mi carga

Rafa, para responder a tu comentario decidi hacer 2 cosas, comenzar a bajarme el Fiasco del cvs (y no seguir jugando con esa version de Fiasco que tenia desde hace mucho), y copiar y pegar el comentario en un nedit, separarlo por espacios y abordarlo linea por linea.

1. Middleware DICE, lenguaje de IDL y generador de stub y skeleton para los servicios de userspace.

Fiasco: http://os.inf.tu-dresden.de/DICE/
Pistachio: http://www.l4ka.org/projects/idl4/
NICTA: http://ertos.nicta.com.au/software/kenge/magpie/latest/

En Fiasco van en la version 3.1.0 (Nov/2006) y en Pistachio en la 1.0.0 (2003), y el de Nicta en la 1.0 (Dic/2004) , no he trabajado con ninguna de las tres, entonces no tengo nada que decir.

2. Codigo en C++ en el kernel. Bien organizado y con un preprocesador modificado que hace el codigo aun mas limpio.

En pistachio tambien esta en C++, ahora, lo del preprocesador, no creo que exista en pistachio, y no se hasta que punto sea una gran ventaja, confio plenamente en cpp.

3. Device Driver Environment: Entorno que permite reutilizar todos los drivers de Linux en L4

Fiasco: http://os.inf.tu-dresden.de/l4env/ (no encontre pagina de DDE)
Pistachio: http://www.l4ka.org/projects/virtualization/drivers.php

He leido un poco la forma como lo implementaron en Pistachio y me convence, aunque deberia leerlo mas a fondo.

4. El Build System es demasiado poderoso y organizado. Hace checkout del CVS y veras lo que te digo

Nunca he construido Fiasco del todo, solo he usado una imagen que habia en la pagina, y fue hace un buen rato.
Pistachio lo he compilado varias veces,y he construido aplicaciones de prueba, y si es un poco complicado, pero si uno sigue las ayudas no se pierde. (de hecho ayer recompile desde cero lo del CVS y no tuve problema).

En cuanto a bajarlo del CVS, en esas ando como desde hace 2 horas y nada que baja, ojala algun dia baje.


Uno de los aspectos que mas me hacen pensar en Pistachio:
http://ertos.nicta.com.au/press/051124_L4_Qualcomm_vfinal.pdf

Plataformas soportadas:
Fiasco:
  * IA32 (Intel, AMD and compatible CPUs, i486 and above)
* ARM (SA1110 and PXA)
* UX (Linux usermode emulation of Fiasco/L4
Pistachio:
  • Alpha (21164, 21264)
  • AMD64 (Opteron 242, Simics)
  • ARM (SA1100, XScale, ARM925T)
  • IA32 (Pentium and higher)
  • IA64 (Itanium1, Itanium2, Ski)
  • MIPS 64bit (R4000, R5000)
  • PowerPC 32bit (IBM 750)
  • PowerPC 64bit (Power3, Power4)
  • ((((Pronto M68K jeje))))
Al fin de cuentas, tal parece que ambos tiran para el mismo lado, pero me interesa mas pistachio, por muchas cosas, entre unas el hecho que lo sigan trabajando en UNSW y en NICTA en Australia.

Aun asi, voy a comenzar a trabajar tambien en Fiasco, para ver bien cual se acomoda mejor a lo que estoy buscando.

Pero si me tenes un puestico en Dresden me paso de una a Fiasco, y volvemos a Fiasco "El uKernel".

Sunday, December 17, 2006

Volviendo a pistachio

Me estoy bajando el codigo fuente de pistachio, hace un buen rato que no lo veia, y ya ni podia entender mi enredo de idrectorios, asi, que va a tocar casi desde cero. La idea seria:
1) Lograr controlar una tarjeta de red con pistachio. Primero voy a intentar con el codigo para el stack tcp/ip que viene con OSKIT, aunque igual creo que lo primero es manipular la tarjeta a bajo nivel a mano, y luego conectar esto con el oskit.
2) Hacer una aplicacion cliente/servidor entre pistachios
3) Entender bien el concepto de hilo en pistachio, la generacion de los mismos, y cuales son y para que sirven los hilos basicos de pistachio.

(Esta semana tengo que llamar a averiguar acerca del precio de las tarjetas de las CPLDs)

Saturday, November 25, 2006

Buscando un foco

Bueno, no se porque busco un foco, habiendo luz ambiente, pero bueno, parece ser necesario para poder terminar haciendo algo, la cosa es la siguiente, el fin ultimo de un computador es resolver problemas, pero el meollo esta en que hay ciertos problemas que no se pueden resolver, y hay otros problemas que aunque se pueden resolver, es inutil esperar una respuesta por parte de un computador actual, entonces la cuestion radica en cambiar por completo el como se construiria el modelo matematico del sistema que quiero desarrollar, no puedo basarme en un modelo que siga a turing, pues este se basa en un modelo secuencial de calculo en el cual para resolver un problema se siguen unos pasos en donde cada paso depende de el anterior, y no es posible realizar todos los pasos en un mismo momento, de esto salen otros problemas, los problemas indistribuibles, no se bien si estos problemas se puede resolver con una maquina cuantica de calculo, pero es claro que con una maquina determinista y con un orden secuencial de calculo, no se pueden resolver ciertos problemas, la idea seria poder ya sea escoger que problemas quisiera poder resolver, o lograr demostrar cuales problemas puede resolver un sistema como el que tengo pensado.

Monday, October 30, 2006

Thursday, October 19, 2006

Que es un computador?

He estado leyendo acerca de teoria de conjuntos para poder lograr a entender bien el B-Method y en general los metodos de demostracion, tambien algo de teoria de automatas. Me gustario poder comenzar a trabajar con la definicion formal de una maquina de Turing, y a partir de ella llegar al porque es necesario todas las tecnicas que se utilizan actualmente en la implementacion de los computadores.

Basicamente una maquina de turing es un automata que tiene contacto con un medio de almacenamiento. (http://www.warthman.com/ex-turing.htm)

Una buena lectura seria el "On Computable Numbers, with an Application to the Entscheidungsproblem".

Sunday, October 15, 2006

Una correccion a la tarjeta de la CPLD

V1.1

















Saturday, October 14, 2006

B-Method

Existe una tesis donde hacen un trabajo con el B-Method para demostrar que pistachio esta bien diseñado ( "A Formal Model of the L4 u-kernel API Using the B Method") 2.

Acerca del B-Method.

Para instalar el BToolKit:
http://www.csse.monash.edu.au/courseware/cse4213/2006/resources/linuxInstall.html

Un resumen.
http://www.csse.monash.edu.au/courseware/cse4213/2006/resources/B-summary.pdf

Interoperabilidad de componentes.
http://www.iist.unu.edu/newrh/III/1/docs/techreports/report333/P05.pdf


Bueno, buscare mas documentacion que me sirva, la idea seria poder usar esa herramienta en el paso de volver pistachio distribuido.

Board para la CPLD y el UltraISR

Bueno, por fin termine la version 0.0.01 Beta de la tarjeta para hacer pruebas con la cpld 39K200, y tambien el UltraISR para poder programarlas, toca ver cuanto me cobran por las tarjetas.







Bueno, falta revisar bien esto, y ver si le puedo hacer mejoras.

Wednesday, October 04, 2006

Sunday, October 01, 2006

UltraISR

Casi que no lo encuentro, pero al fin encontre el documento para hacer un UltraISR, para poder programar las CPLD's de Cypress:
http://www2.mta.ac.il/~flaxer/edu/course/vhdl/isrdesign.pdf

Ahora puedo hacer pruebas con las cpld's, la cosa es conseguir la plata para hacer las tarjetas para las cpld's.