Archive

Posts Tagged ‘Proyectos’

Xenomai, Slax y Linux Kernel 2.6.22.1 Parte 1

August 27th, 2007

La tarea consiste en mezclar una distribución “Live” de GNU/linux en conjunto con un kernel reciente y especialmente parchado y configurado para tiempo real. La idea básicamente es proveer un sistema base para desplieges de los sistemas embebidos en producción. La principal ventaja de utilizar esta aproximación es que el sistema de desarrollo y el sistema final son practicamente identicos, ya que todo el desarrollo se realiza sobre Slackware, y el despliegue se realiza sobre Slax.

Ahora la tarea no resulta sencilla, Slax 5.1.8 utiliza un kernel 2.6.16.x y queremos utilizar un kernel 2.6.22.1, esto implica vivir con los serios cambios que se dieron en las series 2.6.20 y 2.6.21. Ahora el núcleo de Slax y su excelente sistema de paquetes .mo radica en dos parches adicionales para el kernel vanilla: Squashfs+lzma y unionfs.

Tanto Squashfs+lzma y unionfs son el pilar central de Slax, estos dos sistemas de archivos proveen un rendimiento y flexibilidad excelentes a Slax. Y por la experiencia del CIF, no tengo queja alguna aún sobre su estabilidad.

Xenomai por su parte requiere del parche de ipipe de adeos y provee tambien su propio set de parches.

Con esto quedan definidos todos los elementos que se requieren para preparar un kernel capaz de tener tiempo real provisto por Xenomai y que puede ser utilizado por Slax. Desafortunadamente la tarea no es trivial y la explicaré en la segunda parte.

Eso es todo por ahora, quizá adicione a esta parte luego que carajos es cada parche y programa que mencione aquí.

EOP

Enlaces y noticias , , , , , , ,

Nuevo xmms2-osd

July 19th, 2007

Ya hace un rato salio Slackware 12 y resulta ser toda una innovación que traiga un kernel 2.6 desde la instalación además de un Xorg modular, bastante agradable, tambien un mejor soporte para configurar NTP.

Desafortunadamente Patrick decidio usar Amarok en vez de xmms para manejar su colección de musica y yo me quede sin xmms en mi instalación base. Esta vez aproveche para probar de nuevo xmms2 que realmente me gusta su aproximación, ya que maneja excelentemente las colecciones y multiples listas de reproducción pero anteriormente habia sufrido con el tamaño de mi colección. Esta vez parece que la ha aguantado y en este momento lo estoy usando activamente.

Esto implicaque mi antiguo proyecto xmms2-osd debe renacer y practicamente lo he reescrito, ahora utiliza pygtk y pycairo para hacer el osd y se ve bastante bien, además de poderlo usar con beryl,xcompmgr etc…

xmms2-osd screenshot

Aún tiene algunos bugs conocidos, como siempre lidiar con archivos que estan mal “taggiados” y el propio xmms2 aún falla con algunos de mis archivos que usan utf-8 completo. En fin, xmms2 por ahora ha reemplazado satisfactoriamente el viejo xmms aunque extraño el tema de Invader Zim y no tengo programa aún que satisfaga los comandos de busqueda y queue de xmms. Si no encuentro tendre que hacerlo.

Pueden ver el nuevo xmms2-osd en su página de gna.

Enlaces y noticias , , , , , , ,

Creando un sitio para Valkertown

June 15th, 2007

Bueno he empezado la creacion de un sitio estático para
Valkertown cosa que me agrada
mucho.

Para manejar y escribir el contenido estoy utilizando emacs-muse, y
hasta ahora ha resultado genial, todo funciona perfectamente y se
publican todos los cambios automaticamente utilizando tramp.

El CSS de esa página esta autorizado por sabbath y dure un rato escogiendolo
me gusta por lo simple y no creo que llegue a estar tan cargado de imagenes
como el blog.

En los proximos dias voy a cambiar el banner del blog. El de roma no duro
tanto y este de venecia se ha apoderado del espacio. Creo que el proximo
será de Pizza o Mexico, ya veremos…

Eso es todo por ahora.

EOT

Enlaces y noticias , , , ,

USB y Tiempo Real

May 17th, 2007

Bueno, aunque no he terminado con el desarrolo sobre USB, dejo escritas ya las
conclusiones.

Antes de empezar con las conclusiones hago una pequeña introduccion al problema.

Para las aplicaciones de tiempo real se requiere, primero , que todas las operaciones se
realizen en intervalos determinados con minimas varaciones; segundo, una fiabilidad de la
informacion tan cercano al 100% como sea posible, pero la aplicacion puede ser un poco más
tolerante a errores. Para el caso del USB lo que se desea es transmitir ya sea bloques
asincronicos o rafagas constantes. Por ejemplo, adquisición de señales analogicas y
decisiones de control sensibles al retardo.

Hoy en dia los puertos serie y paralelo de los computadores personales se han ido
reemplazando con puertos USB que son mucho más flexibles y veloces. Las velocidades de
transferencia logradas con dispositivos USB y los bajos costos llevan a pensar en su viab
lidad en los sistemas de tiempo real.

Creo que una de las primeras conclusiones que puedo sacar es que si pretende hacer
desarrollo de aplicaciones de adquisición en windows se enfrenta a el peor de los casos en
cuanto a latencia y versatilidad; El motivo es simple, USB no esta diseñado para
aplicaciones de tiempo real, todos los modos de transmisión presentan alguna
caracteristica que va en contra de los requerimientos del tiempo real.

Si el desarrollo se realiza en Linux, existe la posiblidad de modificar los controladores
del “HOST USB” y establecer un mecanismo para transferencias de tiempo real.

Esto no quiere decir que no se puedan realizar aplicaciones de tiempo real sobre el USB,
sin embargo estas probablemente quedan restringidas a 1 “endpoint” de tipo
interrupción. Para USB “full-speed” el ancho de banda maximo se impone en 64kB/s. Se
supone que tiene un intervalo de 1ms entre paquetes de 64B, sin embargo esto no es cierto,
la realidad es mucho peor (debo incluir estas mediciones).

Existe la posibilidad de utilizar varios enpoints de tipo interrupción para incrementar el
AB. Sin embargo no existe mecanismo alguno para asegurar la secuencia en la que se envian
los paquetes.

El modo “isochronous” para transmitir los datos a pesar de asegurar AB y transferencias
estables, detecta errores pero no los corrige. En USB un paquete marcado como erroneo
significa de 8 a 1024 Bytes perdidos, además de tener tendencia a los errores tipo burst.
Un código de corrección de errores e interleaving son supremamente utiles en este
caso(Incremento exagerado de la distancia en el “data-path” y consumo de ciclos de
proceso).

La única solucion viable para obtener el maximo AB del USB y tener caracteristicas
deseables para un sistema de tiempo real sobre USB requiere de una modificacion del
“HOST-USB” y seguramente romper el estandart. Realizar una implementación seria de esto
esta fuera de mi alcance en este momento, no tengo el tiempo ni motivación suficiente para
solucionar este problema.

Considerando alternativas como Firewire, este tiene caracteristicas muy superiores de AB,
pero el diseño es muy similar al USB.

Bueno estas son las caracteristicas con las que se encuentra la primera vez que se trab ja
con el USB, y la conclusión más grande: Es posible hacer tiempo real con el USB, se tiene
un diseño que va en contra de las necesidades y esto genera complejidad extra y asi mismo
requerimientos y consideraciones adicionales, pero es lo suficientemente flexible y un
gran AB. Es muy importante tener en cuenta que la latencia minima posible es 1ms, las
transferencias se realizan en paquetes grandes de bytes y si se quiere utilizar en
aplicaciones de tiempo real el AB efectivo será muy inferior al disponible.

Eso es todo, como va para el blog, si alguien le resulta interesante y tiene algún
comentario o pregunta estaré encantado de responderlo.

EOP

Enlaces y noticias , , , ,

Wordpress 2.2 y Bandicoot 0.3a

May 16th, 2007

Actualice el software del blog a Wordpress 2.2.

Se supone es la última versión y corrige muchos defectos, aunque no
uso tanto wordpress como para darme cuenta.

Para Bandicoot, he publicado una
nueva entrega la 0.3a, esta corrige un problema con el manejo de las
variables globales en diferentes versiones de python.

EOM

Enlaces y noticias , , , ,

Actualizacion Bandicoot

May 7th, 2007

Hoy he actualizado el codigo, las descargas y la pagina web de
Bandicoot, este proyecto ha sido de gran ayuda para mi y algunos de
mis colegas, gracias a su insistencia decidi hacer esta actualización.

Bandicoot home

En esta versión corregi el bug de nombres que no cambian, basicamente
cuando el nuevo nombre era una expresión regular que coincidia con el
nombre original el programa decidia no hacer el cambio de nombre.

Corregi el paquete para slackware, ahora si trae el “binario”.

Eso es todo por ahora, debo actualizar un poco, YAuCP, pero aun no
tengo mucho que actualizar, quiza el crosscompiler para AVR, espero
hacerlo pronto.

EOP

Enlaces y noticias , ,

AT90USB128, Update

April 19th, 2007

Que demonios hace el NYET_ENABLED, NYET_DISABLED, en el código de ejemplo de ATMEL parece hacer algo, pero no aparece en ningun datasheet, es más aparece como reservado y sugiere no meterse con estos bits. No es algo muy agradable…

Enlaces y noticias , , ,

Dos excelentes fuentes de documentación para Drivers Linux y USB

February 6th, 2007

Voy a realizar una pequeña reseña de dos documentos sumamente utiles para el desarrollo de drivers USB para Linux.

Linux Device Drivers, Third Edition

Este libro es uno de aquellos que no se pueden omitir como referencia en cada desarrollo, contiene casi todo lo que se necesita saber para crear drivers de toda clase, con un estilo muy particular.

El libro presenta la documentación necesaria para crear las tres clases principales de dispositivos en linux, character, block y net. Así como los mecanismos necesarios para registrar memoria, manejar dispositivos USB y PCI, enumeración mayor/minor automatica(nuevo para Kernel 2.6).

En general el libro destaca por presentar una fuente de información de las particularidades de los últimos cambios en la linea 2.6 del kernel de linux, y un gran número de valiosos consejos muy útiles para escribir drivers mucho más limpios y eficientes.

Programming Guide for Linux USB Device Drivers

Este segundo libro se trata más de una referencia particular a los drivers USB; contiene la información concreta de la implementación de dispositivos de carácteres y presenta una información más detallada sobre las diferentes formas de realizar transferencias en el USB.

EOP

Enlaces y noticias , , , ,

Probando las nuevas cosas…

January 24th, 2007

Bueno, como la gracia de mudarse a hosting propio es la comodidad de poner lo que quiciese y en especial muchos plugins para wordpress que me parecen divertidos.

Primero el tag html blockquote; no se trata de nada nuevo, es solo algo que hace parte del tema y de alguna forma tenia ganas de poner.

Chapter 1
The story so far:
In the beginning the Universe was created. This has made a lot
of people very angry and been widely regarded as a bad move.

Luego, el syntax highliter, este me parecio bastante bonito, soporta c, php,python,asm,perl etc.. unos ejemplitos:

  1.  
  2. int main(void){
  3.     printf("Hello World!");
  4.     return 0;
  5. }
  6.  

Y desde mi amadisimo NameChanger:

  1.  
  2. class replacer(UserDict):
  3.     def __init__(self,ruleset=None):
  4.         UserDict.__init__(self)
  5.         if ruleset:                                          
  6.             self.add_rule(ruleset)
  7.  
  8.     def add_rule(self,ruleset=None):
  9.         temp=re.match(r"^\/(.*)\/(.*)\/([giI]{0,2})$",ruleset)
  10.         if not temp:
  11.             parser.error("Incomplete pattern, not in the form ///[igI]")
  12.         frm=temp.group(1)
  13.         to=temp.group(2)
  14.  

Bueno, en el “sidebar” que en realidad esta ahora en el footer, esta un shoutbox para conversaciones esporadicas y mensajes que no tengan que ver nada con el blog, esta en AJAX y me parece muy bonita la idea, aun me tocaria modificarlo un poco para integrarlo más al tema del blog

Finalmente el ultimo set de plugins vienen con los comentarios, akismet para validación de los comentarios y AJAX Comments para hacer la interface de los comentarios aun más agradable.

Como un extra el blog ahora es XHTML1.0 Transitional, es una gran mejora con respecto a blogsome, el tema desgraciadamente por los arreglos para IE el CSS no cumple con las especificación del W3C.

EOP

Enlaces y noticias ,

AVR Wiki

December 21st, 2006

Parece que compilar el gcc 4.1.1 es algo molesto, sin embargo existe el AVR-Wiki con instrucciones bastante agradables de como compilar e incluso un script para compilar todo el tool chain.

Por mi parte prefiero hacer todo a mano, pero pues es una bonita alternativa.

Dos set de parches importantes para utilizar el AT90USB128:

http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files/
http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-binutils/files/

EOT

Enlaces y noticias , , , ,