jump to navigation

Nueva versión 0.1.9 3 enero, 2007

Posted by pjmicrocontroladores in Información general, Lanzamiento de versión.
trackback

Como ya comenté el siguiente hito era usar la memoria completa dejando de lado el error con las call_used. Pues pocas horas después de decirlo encontré por donde iban los tiros y ya está solucionado. El problema es que en una primera instancia el error parecía provenir de las funciones que indicaban en que registros pasar y recibir los argumentos de una función. Al usar funciones sin argumentos descubrí que el error iba justo después de que GCC encontrará los registros adecuados, en la formación de la insn de llamada a funciones. Al usar un general_operand para recoger la dirección de la llamada se permitían construcciones invalidas que, si bien deberían hacer fallar al compilador en la etapa de generación, el fallo (el conocido violación de segmento) se producía en la segunda pasada de optimización cse2, anulando esta pasada pude observar el fallo en la salida y al corregirlo restringiendo las posibles direcciones puedo decir por fin adiós al error. Para mí se quedan las horas de navidad gastadas en esto…

Bueno, de todas formas sigo como dije para permitir que un programa pueda acceder a toda la memoria del dispositivo. Para ello se ha pensado crear cuatro estructuras para los cuatro bancos que tengan dos variables una que indique el espacio total disponible y otra el espacio usado. En la llamada de una función se tomarán el espacio necesario para la ejecución de la misma y se asignará dinámicamente. Los cuatro bancos serán del mayor tamaño posible una vez desquitada la información de registros, memoria de programa y pila. Realmente una vez discernida la idea, no parece difícil de implementar.

Para la memoria dinámica, se necesitará construir una estructura que mantenga los bloques asignados, libere la misma y optimice los huecos. Todo esto queda para una versión posterior a la futura 1.0, dado que no veo utilidad real en usar una memoria asignada dinámicamente en un PIC por la alta perdida de espacio en RAM que representa. Realmente con los bancos explicados del párrafo anterior la asignación dinámica se puede hacer por software.

Me despido hasta (creo) el domingo donde tendré la versión 0.2 con acceso al total de la memoria. Saludos.

Anuncios

Comentarios»

No comments yet — be the first.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: