lectura 1

Anuncio
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
208006 – Sistemas Embebidos
Act 8: Lección Evalutiva 2
LECTURA 1
El Assembler
Como es sabido los sistemas computacionales requieren instrucciones de manera
secuencial y así que puedan realizar las funciones para las cuales han sido
diseñados, de otra forma serían inservibles. Estas instrucciones de forma
secuencial forman lo que se conoce como programas. Existen diferentes formas
de escribir programas pero independientemente de esto, los dispositivos
semiconductores de procesamiento lo único que comprenden y procesan es el
lenguaje de máquina.
El lenguaje de máquina está conformado por códigos de instrucción que en
esencia son números representados por series binarias, todos los dispositivos de
procesamiento tienen un código de operación (op.code) para cada una de sus
funciones. Como se ha visto anteriormente se sabe que todas las instrucciones
para cualquier lenguaje de máquina tienen por lo menos dos partes; la primera es
el comando u operación en si, que dice al procesador cuál es la función que se va
a realizar. La segunda parte de la instrucción es el operando, que indica al
procesador donde (posición en memoria) hallar o almacenar los datos y otras
instrucciones que serán manipuladas.
Puesto que para el ser humano manejar este tipo de códigos a la hora de realizar
la programación de los dispositivos resultaría extremadamente tedioso se han
desarrollado diferentes técnicas y lenguajes de programación tanto de alto como
de bajo nivel.
El lenguaje ensamblador en un lenguaje de bajo nivel ya que es la representación
más directa de los códigos de instrucción mediante nemónicos, un nemónico es un
vocablo que en lenguaje ensamblador representa un código de instrucción binario,
los nemónicos se emplean para facilitar el aprendizaje, por parte del programador,
de los diferentes códigos que soporta un determinado dispositivo. Toda
programación realizada en lenguaje ensamblador debe ser compilada o traducida
a código de máquina para que el dispositivo pueda entenderla.
Para comprender mejor este concepto se presenta el siguiente ejemplo:
Se tiene el siguiente código de máquina en Binario: 10100110 01100001
(Hexadecimal: 0xA661).La representación equivalente en lenguaje ensamblador
es más fácil de recordar: MOV $61; Esta instrucción significa: cargue el
acumulador con el dato almacenado en la posición 61 de la memoria.
1
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
208006 – Sistemas Embebidos
Act 8: Lección Evalutiva 2
Algunos pros y contras sobre el empleo de este lenguaje se enumeran a
continuación:
Pros:
·Los programas hechos en lenguaje ensamblador son generalmente más rápidos
en su ejecución que los hechos en lenguajes de alto nivel con iguales
funcionalidades. Al programar cuidadosamente en lenguaje ensamblador se
pueden crear programas que se ejecutan de 5 a 10 veces más rápido que con
lenguajes de alto nivel.
·Los programas hechos en lenguaje ensamblador generalmente ocupan menos
espacio de memoria. Un buen programa en lenguaje ensamblador puede ocupar
casi la mitad de espacio que su contraparte en lenguaje de alto nivel.
·Utilizando lenguajes de alto nivel, no es un buen comienzo para aprender sobre
los MCU’s, mas aún, se necesita conocer todas las características de la
arquitectura para poder programar con lenguajes de alto nivel.
·Con el lenguaje ensamblador se pueden crear segmentos de código imposibles
de formar en un lenguaje de alto nivel.
·A medida que se aprenda a programar en assembler se pueden ir creando
librerías de funciones que se pueden añadir a futuros códigos inclusive
implementar en otro tipo de MCU, facilitándose así mucho el trabajo.
·Es bueno conocer el lenguaje ensamblador incluso si se programa en lenguajes
de alto nivel puesto que muchos compiladores permiten la incrustación de código
ensamblador en algún segmento de programa.
Contras:
·Programar en lenguaje ensamblador es difícil de aprender, entender, leer,
escribir, depurar y mantener, por eso surgió la necesidad de los lenguajes
compilados.
·El lenguaje ensamblador no es 100% portable.
·Programar en lenguaje ensamblador toma tiempo.
2
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
208006 – Sistemas Embebidos
Act 8: Lección Evalutiva 2
LECTURA 2
Programación y Puesta en Marcha del HC08
Para programar lo MCU’s de la Familia HC08 de freescale se deben tener en
cuenta diferentes aspectos tanto físicos (hardware) como de software; en la
presente sección se describe estos requerimientos y se presentan opciones
funcionales entre la variedad de posibilidades existentes.
1. Programación de Microcontroladores de la Familia HC08.
Los microcontroladores de la familia HC08 cuentan con un modo de ejecución,
llamado modo usuario, el cual permite el acceso a todos los recursos del sistema
es decir que se pueden manipular características como el acceso a memoria,
manejo de interrupciones, entre otros. También existe un modo de trabajo
especializado en la programación y depuración de los MCU’s conocido como el
Modo Monitor.
1.1. Modo monitor.
El modo monitor es una aplicación desarrollada para la familia de MCU’s de 8 Bits
ubicada en la memoria ROM de los dispositivos, que permite la programación de
aplicaciones en la memoria no volátil así como la depuración simple de los
programas implementados por los desarrolladores, permite la ejecución de
comandos provenientes del PC (Host), tales comandos son empleados para el
acceso a cualquier posición de memoria o para descargar los programas en la
memoria Flash o RAM.
Este programa se ejecuta en modo usuario y se requiere de una serie de
condiciones en algunos de los pines del MCU para activarlo después de un Power
On Reset (POR).Se deben tener en cuenta los siguientes aspectos a la hora de
trabajar en modo monitor:
·Para la comunicación con el PC solo se emplea uno de los pines de E/S, el cual
intercambia su configuración (entrada o salida) mientras emula el protocolo serial
hacia el PC.
·Durante el modo monitor debe existir una señal de reloj externa cuya frecuencia
sea suficiente para que en el MCU se pueda alcanzar la tasa de baudios con la
que se comunica con el PC.
3
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
208006 – Sistemas Embebidos
Act 8: Lección Evalutiva 2
·Muchos de los MCU’s de esta familia deben ser adecuadamente polarizados para
su correcto funcionamiento en modo monitor.
·Algunas características de seguridad son deshabilitadas al entrar en modo
monitor, entre las que se tiene COP (Computer Operation Properly),
SWIInstruction y FLASH Protection.
Cabe aclarar que el modo monitor no es una sustitución de sistemas mas
sofisticados que permiten la completa emulación de los dispositivos, pero si es una
forma económica de interconectar los MCU’s con un PC para el envío de
comandos de manera serial realizando labores de lectura, escritura y depuración
simple en los registros y memoria del MCU.
Para entrar en modo monitor se requiere:
·Un Software adecuado en el PC que se encargue de la comunicación y
programación.
·Un cable serial y un POD (Circuito de Polarización y de soporte para la
comunicación serial) empleados para brindar la polarización y señales adecuadas
así como para la transmisión de comandos desde el PC.
1.2 Modo de Ejecución.
Este es el modo en el cual la CPU ejecuta normalmente el programa almacenado
en la memoria FLASH, teniendo como origen la dirección almacenada en el Vector
de RESET ($FFFE:$FFFF).Para la puesta en marcha de un dispositivo los
requerimientos en hardware son más simples que los necesarios para la
programación
LECTURA 3
Fases de Procesamiento de un Programa en C
A continuación se presentan las diferentes etapas que hacen parte del
procesamiento de un programa en C hasta obtener el código de máquina
correspondiente también conocido como código objeto.
1. El Pre-procesador.
Este es un componente característico de C es decir que no lo poseen otros
lenguajes de programación su tarea es actuar sobre el programa fuente antes que
4
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
208006 – Sistemas Embebidos
Act 8: Lección Evalutiva 2
el compilador, convirtiéndolo en otro archivo fuente “predigerido”. En general las
transformaciones realizadas por el pre-procesador incluyen:
·Eliminación de los comentarios.
·Sustitución se las constantes simbólicas por sus valores reales.
·Inclusión en el archivo fuente el contenido de los archivos declarados con las
sentencias #include <archivo> (a estos archivos se les suele llamar cabeceras)
·Sustituir en el archivo fuente las macros declaradas con sentencias #define (p.e.
#define CIEN 100).
2. El Compilador.
Su misión consiste en traducir a lenguaje de máquina el programa escrito en
lenguaje C, contenido en uno o más archivos fuente entregados por el preprocesador, generando lo que se conoce como un archivo objeto, algunos
compiladores pasan por una fase intermedia en lenguaje ensamblador. También
puede detectar errores durante la compilación presentando un mensaje
dependiendo del error.
3. El enlazador
Un archivo objeto está escrito en código máquina, pero no puede ser ejecutado
por si solo, puesto que le falta código que se encuentra en otros archivos que lo
complementan. El enlazador se encarga de generar un ejecutable binario, a partir
del contenido de los archivos objetos y de diferentes Librerías. Más
específicamente el enlazador toma los archivos de código objeto, generados en
los primeros pasos del proceso de compilación y la información de los demás
recursos necesarios (Librerías), remueve recursos que no son necesarios y enlaza
el código objeto con las librerías utilizadas produciendo finalmente un archivo
ejecutable.
Librerías.
Las Librerías no son mas que funciones precompiladas, que contienen el código
necesario para realizar funciones especificas, a las que el archivo fuente llama.
Estas librerías son realizadas para mantener el lenguaje lo más sencillo posible
pero brindando las herramientas y funciones estándar que cualquier programador
pueda necesitar.
5
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
208006 – Sistemas Embebidos
Act 8: Lección Evalutiva 2
Estas funciones están agrupadas en un conjunto de librerías de código objeto, que
constituyen la llamada librería Estándar. La llamada de estas librerías se realiza
de la misma manera que a cualquier función por lo tanto deben ser declaradas
antes de ser llamadas por el programa, para tal efecto se emplea la sentencia
#include.
Un ejemplo de librería es la llamada ‘stdio’ (Standar Imput/Output) que posee
diferentes funciones tanto para leer como para escribir datos de diferentes
dispositivos periféricos como teclados, unidades de almacenamiento, pantallas,
impresoras, etc.
6
Descargar