24
Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Embed Size (px)

Citation preview

Page 1: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Secciones y SegmentosSTARTUP

Ing. Lionel Hendryk - 2010

Page 2: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Sistemas Embebidos

• Arquitectura similar a una computadora.

• Características operativas mucho más simples y específicas.

• Estrecha relación entre hardware y software.

• Ej: Balanzas Electrónicas

Sistema de Inyección electrónica

Controladores digitales de procesos

Page 3: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Comparativa PC vs. SE

PC SE

Operación dependiente de los programas que se carguen.

No es necesario la carga de ningún programa, ya que su uso es específico.

Programación independiente del hardware.

Fuerte dependencia en sus circuitos y programación con la función prevista para el sistema.

Sistema Operativo (hace transparente al programador los recursos).

No posee sistema operativo.

Page 4: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Lenguaje de Programación

• Lenguaje más cercano a los dispositivos físicos y al uP -> ASSEMBLER.

• Control completo del sistema.• Lógica rudimentaria y carente de

estructura, lo que hace muy dificultosa su documentación y normalización.

• Relación excluyente con el uP lo que implica una difícil migración de soluciones a diferente hardware.

Page 5: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Secciones

• La organización de tipos de datos y código es importante cuando se necesita diseñar un SE (Hardware y Software).

• Concepto Clásico de Memoria: Recurso Lineal.

• Concepto Actual: Recurso compartido, escaso, virtual y de compleja manipulación.

Page 6: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

La Sección

• La sección implementa un modelo lineal (al estilo clásico) y representa un componente mínimo que permite generar diferentes modelos de memoria, lineales y no lineales (paginados y/o segmentados).

Page 7: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Aspectos de Diseño

• Tipos heterogéneos de memoria.

• Interfaz con lenguajes de alto nivel.

• Portabilidad y reusabilidad del código.

• Orden y documentación de los módulos de programa.

Page 8: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Definición y nomenclatura

Si bien la denominación más neutral sería la de “secciones”, por tratarse de porciones de memoria lineal que componen un sistema mayor, ocurre que cuando seleccionamosuna familia de microprocesadores y nos disponemos a implementar esta idea de organización lógica, encontramos una fuerte influencia de los recursos de que dispone elhardware para manejar las secciones.En el caso de la Figura 1 sería normal llamar a las secciones, páginas.

Page 9: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Definición y nomenclatura

Si en cambio tratamos con una máquina cuyo diseño pretende separar su organización lógica de la física utilizando segmentación, veremos que los compiladores se refieren a las secciones llamándolas “segmentos”, abarcando también demanera limitada las posibilidades de las secciones.

Page 10: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Directivas del compilador - Segmentos

Haciendo una interpretación simplificada, podemos decir que la función de un compilador es interpretar un listado de instrucciones, escrito en un lenguaje determinado de programación, y generar una secuencia de códigos binarios ejecutables por el microprocesador.

La incorporación de definiciones de segmentos en los programas fuente, hace que el compilador genere distintas listas binarias, cada una de las cuales tiene asociado un nombre y mantiene un contador de direcciones como referencia de acumulación de elementos.

Page 11: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Directiva SEGMENT

Page 12: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Directiva EXTRNEl contenido de _TEXT y _DATA define su tipo como segmentos de código y datos respectivamente, sin embargo el ensamblador no define que estossegmentos sean apuntados durante la ejecución del programa por los registros CS y DS.

Debemos notar que la asignación de valor al segmento de código, siempre implica una alteración del flujo del programa, por lo que no puede hacerse mediante una instrucción “MOV”.

Page 13: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Interfaces con lenguajes de alto nivel

La mayoría de los compiladores de lenguajes de alto nivel generan como producto intermedio de la compilación, un programa en ASSEMBLER que luego es procesado por un ensamblador.

En la generación de este producto, el compilador realiza un gran número de definiciones respecto de la organización de la memoria, el manejo de lassecciones o segmentos, las estructura de datos y el intercambio de parámetros en las llamadas a funciones, que es necesario conocer si pretendemos combinar módulos en ASSEMBLER con lenguajes de alto nivel.

Page 14: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Programa en C

/* Define x como variable global */

long x = 7338;

/* Encabeza la función principal de C */

int main() { long a ; /* Define a como variable local */

a = x + 1; /* Opera y asigna valor */

return 0; /* Termina el programa sin error */

}

Page 15: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010
Page 16: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Linkeado del modulo _DATA

Page 17: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Linkeado del modulo _TEXT

Page 18: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

START UP

• Luego de conectada la alimentación, muchos elementos de hardware y software necesitan ser configurados para su correcto funcionamiento, razón por la cual marcaremos una diferencia entre la iniciación del sistema y su operación.

• Luego del RESET cualquier microprocesador inicia la ejecución de instrucciones desde una dirección físicamente fija en la memoria, habitualmente con las interrupciones enmascaradas.

Page 19: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Definición de la Pila

• Una de las acciones prioritarias para habilitar la mayoría de las capacidades operativas del sistema es definir la pila. En la familia 80xxx esto implica asignarle valor a dos registros, el SP (puntero de pila) y el SS (segmento de pila), para que apunten a un rango de direcciones del mapa físico de memoria donde se encuentre RAM.

• Como en la mayoría de los microprocesadores, la pila crece en el sentido de las direcciones decrecientes de memoria, este es otro ejemplo donde debemos diferenciar el concepto lógico, del físico, en el modelo de memoria.

Page 20: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

La Pila

La pila implementa un procedimiento secuencial de reserva de memoria, su organización es de tipo FIFO, pero admite acceso indexado sobre el espacio ocupado, utilizando un registro índice o base de pila BP.

Esta modalidad de implementación facilita la optimización del uso de la memoria, pero arrastra una dificultad relacionada con la imposibilidad de predecir exactamente cuanta memoria ocupará la pila.

Page 21: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Inicialización de la Pila

Es necesario destacar una característica de la definición de la pila en la familia INTEL 80xxx. Debido al direccionamiento segmentado, para ubicar una dirección física de memoria es necesario darle valor a dos registros (segmento y desplazamiento), en el caso particular de los punteros de pila, esta es una situación de riesgo, ya que entre las dos asignaciones los punteros están inconsistentes.Para salvar este problema el microprocesador “fusiona” la instrucción siguiente a una asignación de SS e impide que cualquier interrupción (incluso la NMI) divida las instrucciones.

Page 22: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Vectores de Interrupción

• La familia INTEL 80xxx obtiene la dirección de todas los servicios de interrupciones mediante una tabla de 256 vectores FAR (segmento y desplazamiento) ubicada al principio del mapa físico de direcciones.

¿ Donde ubicar los vectores, en ROM o en RAM ?

Page 23: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Inicialización de Variables

• Copia del segmento _DATA y _BSS de ROM a RAM.

• Asegurar que el contenido de _BSS sean todos ¨0¨ antes de que el programa principal reciba el control.

• Apuntarlos con DS para que puedan usarse como variables.

Page 24: Secciones y Segmentos STARTUP Ing. Lionel Hendryk - 2010

Esqueleto de segmentos STARTUP