Páginas

sábado, 24 de diciembre de 2011

Ho-Ho-Ho

Esto de estar de vacaciones es una maravilla, menuda semanita me estoy pegando... :-D Para empezar, estoy viendo a un monton de gente que hacia tiempo que no veia (ayer mismo a una antigua compañera de clase que resulta que tambien le gusta ir a las conferencias de Software Libre :-D ), los examenes no me han ido del todo mal (especialmente Sistemas Operativos, que por un error a la hora de corregir las practicas he pasado de un 3 a un 9.1 :-D ), y encima no solo le he estado dando caña al proyecto sino que cuando les pase a mis colegas de AlcorconWireless el enlace a mi anterior entrada al blog contando en que iba a consistir el proyecto el comentario que ha soltado uno es mitico:
Piraña se nos ha hecho mayor. Yo ya no me meto con él que me da sopas con honda XD
Respect!
Epic Win!!! :-D Y ademas, otro dice que se apunta, asi que podre acelerarlo un poco mas :-D Tambien me han dicho que se ve mal el texto con el fondo tan oscuro, a ver si cuando tenga tiempo lo arreglo...

Pero bueno, al turron (y no a las 4 tabletas que me he comprado esta tarde de oferta en el Dia :-P ): los cambios que le he metido a Gaia realmente han sido numerosos, y la verdad que esta quedando una base muy buena para continuar con el desarrollo mas adelante. Para empezar, he estado estandarizando muchas funciones y poniendolas en comun entre Gaia y Uranus, lo cual teniendo en cuenta que ahora se contruyen como dos librerias estaticas por separado (en prevision a que mas adelante Uranus sea un ejecutable independiente) me esta sirviendo para hacerme una stdlib bastante cuca y quizas tambien para en el futuro poder usar newlib, que siempre sera mejor que desarrollar mi propia libreria estandar (aunque no es tan dificil como parece...), y ademas todo apunta a que va a ser la unica manera que voy a tener para poder usar memoria dinamica, porque el tema de la paginacion se me resiente y parece que el tutorial que estaba siguiendo ya solo existe en la cache de Google... :-/ Lo cual no es malo, porque buscando alternativas he descubierto que aunque con no excesivo exito, si ha habido intentos (algunos incluso formales) de hacer una API estandar para drivers, lo cual me viene bastante interesante... :-) Tambien es cierto que lo estoy procrastinando bastante por el respeto que me impone, pero al menos me sirve para avanzar en otros aspectos :-)

Pero lo mas importante sin lugar a dudas, ¡los eventos ya funcionan! :-D Por el momento de forma muy rustica y simple por no tener memoria dinamica y estar corriendo todo en espacio de kernel, pero al menos demuestran que el concepto y la arquitectura funcionan. Ademas, el diccionario de tamaño estatico que me he hecho me ha quedado chulisimo, para que luego vayan y me suspendan Estructura de Datos por no saber Pascal... :-P Por el momento solo tengo un evento registrado, "putchar", que es llamado desde prinf(), pero lo registra y lo recoge el driver de la VGA sin problemas, pero teniendo en cuenta que printf() esta dentro de la stdlib por el momento vamos bien :-) Tambien he implementado un pequeño driver para el teclado, pero es mas bien simbolico ya que lo unico que hace es enviar lo que escribe a la pantalla enviando el evento de "putchar" igualmente, luego no se registra ni nada. Por el momento se estan registrando los IRQs directamente, asi que cuando ya haga que pasen por el gestor de eventos ya me pondre a hacer algo serio, ya que tambien tendre que definir el formato de los eventos y eso puede variar mucho, asi que prefiero no hacer demasiado que luego tenga que tirar a la basura.

Y luego por ultimo en el dia de hoy despues de la paliza que me pegue ayer a patear calles pues me he tirado todo el dia en casita limpiando y organizando el proyecto como dije antes, separando cada parte, unificando librerias... dejandolo preciosista :-D Tambien he estado experimentando ahora que se compilan Gaia y Uranus por separado en que la interfaz de las syscalls sea la misma que en nativo, pero el linker se ha quejado diciendo que los simbolos estan duplicados (lo cual es obvio, idiota de mi). Mañana vere si consigo hacer algo al respecto con algun flag al compilar o algo, que seguro que hay alguna solucion... ;-)