Programación de código reubicable

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Configuración de Control
A REA DE TECNOLOGIA ELECTRONICA U NIVERSIDAD DE O VIEDO LECCION 5 – ARQUITECTURA INTERNA DE LOS PIC - 1F.F. LINERA ARQUITECTURA BASICA. CARACTERISTICA.
Fundamentos de Diseño de Software INFT.1
CLASE 4 EL ENSAMBLADOR.
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
EQUIPO ·# 3 SISTEMAS OPERATIVOS
Andrés Cruz Campo Edinson Lozada Thomas. * Es una técnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones físicas de igual.
Introducción a la Programación
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Tipos de Datos Abstractos Modularidad
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
INFORMATICA I Arreglos 1 CLASE 17.
Informática II Prof. Dr. Gustavo Patiño MJ
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
COMPUTACION 2009 C lase 11 9/17/2014 Computación - Fac. Ingeniería - UNMDP2 Paradigma de programación estructurada  La programación estructurada trata.
Alejandro Ledezma Milanez Sonia Lizbeth Hernández Martinez Zaira Samara Chavez Hernandez Gilberto Saduj Castañeda Garcia.
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.

Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tema 10: Gestión de Memoria
Microcontroladores PIC16F84A.
Semana 5 Subprogramas..
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Clase 10: Estructuras de datos y arreglos.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Asignación de Espacio No Contiguo
Administración de Memoria
Unidad II Introducción a la programación en C++
Organización de la memoria RAM, registros especiales y registros generales.
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006.
Informática Ingeniería en Electrónica y Automática Industrial
Programación en C para electrónicos
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Bibliotecas Nacen a partir de la necesidad de la compilación por módulos. Lo cual consiste en separar el programa principal de aquellas funciones que se.
Programación Básica con “NQC” Pedro F. Toledo Universidad Técnica Federico Santa María Departamento de Electrónica.
Elementos básicos del lenguaje
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Aplicaciones Web de Servidor
TEMA 2: DIAGRAMAS DE FLUJO
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Bases de Datos.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 15/08/2006.
Modelo de 3 capas.
Metodología de la programación
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Declaraciones. 1 Nombres de identificadores Identificador: – Nombres usados para referirse a las variables, identificar funciones o etiquetas definidos.
UNIDAD V Bibliotecas de Funciones L.I. & M.S.C. OSCAR RAMÍREZ CORTÉS PROGRAMACIÓN DE SISTEMAS.
PROGRAMACIÓN ESTRUCTURADA LOS DIAGRAMAS DE ESTADO
2.2.2 S EGMENTACIÓN Jorge Javier Camacho Cortés. Samuel Gallegos Gómez. Dunia Andrea González Corona.
INTERFAZ DE ACCESS  Access es un sistema gestor de bases de datos relacionales (SGBD). Una base de datos suele definirse como un conjunto de información.
Lenguaje de programación c
FUNDAMENTOS DE PROGRAMACION
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
MEMORIA DINÁMICA.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Transcripción de la presentación:

Programación de código reubicable

Programación ubicada Tenemos que decidir en qué direcciones de memoria vamos a situar nuestro código (directiva org obligatoria) Tenemos que decidir y gestionar el limitado espacio de direcciones de memoria de datos Tenemos que construir el programa en un único módulo Aunque el uso de la directiva ‘ include’ puede dar una apariencia de modularidad

Programación ubicada Añadir código obliga a un proceso de integración que evite conflictos por repetición de símbolos solapamiento de direcciones de localización de código uso múltiple (y no previsto) de la misma localización de memoria El código desarrollado es difícilmente utilizable por otra persona (o le implica un trabajo de análisis antes de incluirlo en su propio código)

Código reubicable No se localiza el código hasta el mismo momento de creación del archivo objeto El programador deja en manos del programa linkador la gestión de la memoria de datos (declaración de variables) Podemos distribuir el código en varios módulos modificables y compilables separadamente. Algunos de estos módulos pueden ser librerías ya precompiladas

Código reubicable El proceso de añadir código es mucho más simple al liberarnos de la localización Los símbolos definidos en cada módulo son independientes (y por lo tanto su coincidencia no genera conflictos) El linkador gestiona las variables del conjunto de los módulos liberando al programador de la tarea Cada módulo es creado con una interfaz de uso que facilita su reutilización.

Homogeneización de código Con el propósito de homogeneizar lo más posible el lenguaje de programación utilizado con los PIC es conveniente utilizar los recursos estándares: #include ”p16f84.inc” Aquí se definen todos los símbolos estándares del pic. Su uso dota a nuestro código de un carácter más homogéneo uso de mayúsculas para nombrar los registros estándares

Directiva CODE Se sustituye la directiva ORG por la directiva CODE goto inicio Continua CODE inicio movlw 56h

Directiva CODE CODE no requiere especificar la dirección de ubicación pero es posible hacerlo y en el caso de la dirección cero es necesario. Cada sección CODE es localizada por separado si hay más de una sección CODE en un módulo debe tener nombre el nombre por defecto de una única sección CODE es .code

Localización en RAM Se reserva espacio para cada variable a manejar. Las reservas se agrupan en secciones según el tipo de variable. Las mismas secciones en diferentes módulos son tratadas conjuntamente aunque cada una de ellas ubicadas por separado

Sección UDATA Datos no inicializados. Se reserva espacio para cada variable Una sola sección UDATA en cada módulo de nombre .udata Si hay varias, cada sección debe llevar un nombre UDATA V RES 1 SigV RES 1 V1 RES 1 SigV1 RES 1 V2 RES 1 SigV2 RES 1 DUMB RES 1 Oper RES 1

Sección UDATA_OVR UDATA overlayed o solapada. Se refiere a que variables en diferentes secciones (o la misma) UDATA_OVR pueden compartir la misma dirección de memoria. Se utilizará para definir variables temporales de uso muy localizado

Sección UDATA_SHR UDATA shared o compartido. Localiza estas variables en los bancos solapados de memoria. Podría permitir una compartición selectiva de variables entre programas En el pic16f84 los dos únicos bancos de memoria de datos están en realidad solapados, así que esta especificación es redundante

Sección IDATA Se declaran variables inicializadas. La inicialización de variables es un proceso complicado. Recuérdese que la memoria de programas y la de datos están separadas. La sección IDATA provoca que el linkador cree código de inicialización que luego debe ser leído por un programa de inicialización

Directiva GLOBAL Una vez que hemos creado un módulo debemos crear su interfaz. La interfaz son las variables y las etiquetas (puntos de entrada a rutinas) que son accesibles desde el exterior CODE .... retardo movlw 56h GLOBAL retardo

Directiva EXTERN Para que un módulo pueda acceder a los símbolos definidos en otro módulo, debe declararlos previamente EXTERN retardo CODE .... call rertardo

Directiva BANKSEL Al utilizar las variable ignoramos en qué bancos han sido declaradas ¿qué bits activar de: STATUS(RP0,RP1,IRP)? BANKSEL lo soluciona EXTERN variable CODE ... BANKSEL variable movwf variable el lincador, conociendo la localización de variable genera bsf STATUS (RP0, RP1,IRP) según corresponda

Directiva PAGESEL Al utilizar etiquetas, también se ignora dónde han sido localizadas El PC tiene 13 bits, pero en CALL sólo caben 11 EXTERN etiqueta CODE ... PAGESEL etiqueta call etiqueta el lincador, conociendo la localización de etiqueta modifica convenientemente PCLATH

Generar un ejecutable Primero hay que editar el proyecto En las Node Properties...

Generar un ejecutable Cambiar el Language Tool a MPLINK Incluir en Additional Command Line Options el archivo de comandos de linkado: lnk16f84.lkr

Generar un ejecutable Añadir los archivos de los módulos También aquí se pueden incluir librerías precompiladas

Generar un ejecutable Finalmente se trabaja como hasta ahora: Make: compila sólo los módulos modificados desde la última ejecución de este comando y general el ejecutable Build All: compila nuevamente todos los módulos y genera el ejecutable Build Node: compila el módulo enfocado

Librerías Las librerías son archivos que contienen módulos ya compilados. Al utilizar una librería, el linkador únicamente enlaza aquellos módulos de la librería que son efectivamente utilizados Para crear una librería basta tener un conjunto de módulos compilados (creados naturalmente en código reubicable) e invocar al programa mplib [/q/(ctdrx) librería (modulo1,modulo2... ModuloN)