You are on page 1of 195

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA


CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
PROGRAMA DE INGENIERIA ELECTRONICA






208006 SISTEMAS EMBEBIDOS
OSCAR IVAN VALDERRAMA ARIAS
(Director Nacional)

JUAN CARLOS VESGA FERREIRA
Acreditador





SOGAMOSO
Diciembre de 2009

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

ASPECTOS DE PROPIEDAD INTELECTUAL Y VERSIONAMIENTO

El presente mdulo fue diseado en el ao 2008 por el Ing. Armando
Portela Duarte, docente de la UNAD, y ubicado en el CEAD de Barranquilla, el Ing.
Portela es Ingeniero Electrnico.
El presente mdulo ha tenido una actualizacin, echa en el ao 2009 por el
Ing. OSCAR IVAN VALDERRAMA ARIAS, quien ha sido tutor de la UNAD en el
CEAD SOGAMOSO, desde ao 2005 y que se desempea actualmente como
director del cuso a nivel nacional.
Este mismo ao el Ing. JUAN CARLOS VESGA FERREIRA, tutor del CEAD
Bucaramanga, Coordinador Nacional Tecnologa e Ingeniera en
Telecomunicaciones, apoy el proceso de revisin de estilo del mdulo y dio
aportes disciplinares, didcticos y pedaggicos en el proceso de acreditacin de
material didctico desarrollado en el mes de ENERO de 2010.




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

INTRODUCCIN

El presente curso sobre sistemas embebidos se trata de un curso metodolgico al
cual le han sido asignados 3 crditos que de acuerdo al sistema de crditos
acadmicos, consistente en 144 horas de trabajo acadmico: 96 horas promedio
de estudio independiente y 48 horas promedio de acompaamiento tutorial
enmarcadas en un campo de formacin disciplinario en reas de la ingeniera
bsica.

Con el curso se pretende que los estudiantes se adentren en el mundo de los
sistemas embebidos analizando sus caractersticas y capacidades, concentrando
el estudio en las herramientas de desarrollo tanto software como hardware
inherentes a este tipo de sistemas de manera que se familiaricen con los procesos
de diseo, programacin y desarrollo de sistemas autnomos.

Los sistemas embebidos conforman un rea de la electrnica en continuo
crecimiento y desarrollo, debido a la creciente demanda de sistemas autnomos y
aplicaciones inteligentes. Cada da son fabricados millones de circuitos
integrados, microprocesadores, microcontroladores etc. que a su vez sern
empleados en la fabricacin de productos y equipos en una variedad de sectores
como por ejemplo aplicaciones militares, electrodomsticos, juguetes, en la
industria, el transporte, etc. La importancia de este curso radica en que se brindan
las herramientas al estudiante para que maneje de manera suficiente el diseo y
desarrollo de aplicaciones empleando estos dispositivos teniendo en cuenta que
da a da se requiere cada vez ms de nuevas aplicaciones autnomas especficas
o la mejora continua de las existentes.

El curso de divide en tres unidades didcticas; 1 Unidad: Conceptos Generales
sobre Sistemas Embebidos, en esta se realizar una introduccin general sobre
los sistemas embebidos y sus principales caractersticas enfocando el estudio a
los microcontroladores 68HC08 de FreeScale (Motorola); 2 Unidad: Desarrollo de
Software para Sistemas Embebidos, en esta unidad se sentarn las bases para la
programacin de sistemas embebidos empleando tanto lenguajes de
programacin de bajo (assembler) como de alto nivel enfocando el estudio al
lenguaje de programacin C; 3 Unidad: Sistemas Operativos Orientados a
Sistemas Embebidos, en esta unidad final se analizan los conceptos referentes a
sistemas operativos y su aplicacin en sistemas embebidos enfocndose en el
sistema operativo embebed Linux.
Para el desarrollo del curso se proceder a introducir, a travs de la plataforma,
los conceptos y problemticas que se plantean al trabajar con sistemas
embebidos, el estudiante se encargar de analizar y ampliar estos contenidos con
una visin crtica durante su tiempo de estudio independiente de manera que

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

cualquier duda que resulte de este ejercicio pueda ser disipada por el tutor a
travs de foros y cesiones de Chat previamente definidas. Debido a la naturaleza
de los contenidos se realizarn una serie de actividades y talleres tanto
individuales como en grupo, en los que se plantean problemticas que sean
susceptibles de ser resueltas con el empleo de los sistemas embebidos en
conjuncin con la aplicacin prctica de los contenidos vistos, obteniendo as una
aplicacin funcional. La evaluacin de los contenidos depender de la activa
participacin de los estudiantes en las diferentes actividades planteadas sumada a
las calificaciones automticas de revisin de conceptos realizadas en lnea.

Las temticas planteadas en el presente curso a manera introductoria son de gran
relevancia puesto que los desarrollos que incluyen sistemas embebidos se
encuentran a la orden del da en cualquier tipo de aplicacin por lo tanto
conforman un rea de la electrnica muy interesante para enfocar estudios ms
profundos.




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

INDICE DE CONTENIDO
Unidad Captulos Lecciones
1. Conceptos
generales sobre
sistemas embebidos
1. Introduccin a los
sistemas embebidos
1. Definicin e Historia
2. Importancia y reas de
aplicacin
3. Caractersticas
4. Preconceptos
5. Fases de diseo
2. Componentes principales
de un sistema embebido
6. Diagrama de bloques de
un sistema embebido.
7. Entradas: Sensores,
muestreadores y
conversores A/D.
8. Comunicacin
9. Unidades de
Procesamiento y Memoria
10. Salidas y conversores
D/A
3. Unidades centrales de
procesamiento
11. Componentes de una
CPU
12. Arquitecturas ms
comunes
13. Comparacin de los
dispositivos ms comunes
14. Microcontroladores HC08
15. Microprocesadores
ColdFire y tarjetas de
desarrollo




2. Desarrollo de
software para
sistemas embebidos
4. Introduccin a la
programacin de sistemas
embebidos
1. Diagramas de flujo
2. Programacin en lenguaje
Ensamblador (Assembler)
3. Notaciones y sintaxis
4. Tipos de instrucciones
5. Escribiendo un pequeo
programa
5. Prcticas bsicas y
aplicaciones
6. Programacin y puesta en
marcha
7. Modo de ejecucin

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

8. Desarrollo de tarjeta de
programacin universal
9. Software
10. Software Code Warrior
6. Introduccin a la
programacin en C y
microcontrolador HC08
11.Generalidades de C
12. Fases de procesamiento
de un programa en C
13. Ejemplos de manejo de
mdulos del HC08
14. Programacin en
Assembler del HC08
15. Programacin en C del
HC08
3. Sistemas operativos
orientados a sistemas
embebidos
7. Visin general
1. Consideraciones sobre el
hardware
2. Conceptos generales
sobre sistemas operativos
3. Componentes del sistema
operativo
4. Arranque de un programa
5. Memoria virtual
8. Sistema operativo
embedded Linux
6. Visin general
7. Tipos de sistemas que
utilizan Linux embebido
8. Arquitectura genrica de
un sistema con Linux
embebido
9. Caractersticas del kernel
de Linux
10. Arranque del sistema
9. Implementacin de
embedded Linux
11. Metodologa de diseo e
implementacin
12. uCLinux
13. Pasos bsicos para
comenzar con uCLinux
14. Trminos relacionados
15. Primeros pasos con
uCLinux

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

LISTADO DE TABLAS



UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

LISTADO DE GRFICOS Y FIGURAS


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

UNIDAD 1
Nombre de la Unidad Conceptos generales sobre sistemas embebidos
Introduccin Estudio y discusin de algunos temas y conceptos
relacionados con sistemas embebidos.
Justificacin Al estudiante del curso de sistemas embebidos es
necesario introducirlo en los conceptos bsicos de los
sistemas embebidos.
Intencionalidades
Formativas
- Reconocer los conceptos bsicos de los sistemas
embebidos
- Reconocer los componentes bsicos
- Reconocer los elementos bsicos de la unidades
centrales de procesamiento
Denominacin de
captulos
1. Introduccin a los sistemas embebidos
2. Componentes principales de un sistema embebido
3. Unidades centrales de procesamiento

CAPITULO 1: INTRODUCCIN A LOS SISTEMAS EMBEBIDOS
Leccin 1: Definicin e Historia.
Los sistemas embebidos son sistemas computacionales aplicados, posiblemente
compuestos tambin por otro tipo de elementos mecnicos i/o electromecnicos,
aunque estn constituidos por la unin hardware software, se diferencian de
otros sistemas como por ejemplo los computadores personales por el hecho de
estar diseados para cumplir funciones especficas. Es decir, un sistema
embebido puede pensarse como: Un sistema cuya funcin principal no es
computacional, pero independientemente de esto es controlado por un
computador embebido en su interior
1
se entiende por embebido o empotrado
como oculto por tanto estos dispositivos de cmputo no son visibles ni
programables por el usuario final. Otro autor define el trmino con simpleza: un
sistema embebido es un computador oculto en el interior de otro producto
2
.

A pesar de que se pueden tomar como ciertos los enunciados del prrafo
anterior, es complicado sentar una definicin definitiva para los sistemas
embebidos, puesto que gracias al constante desarrollo tecnolgico que ha influido
en el aumento de las prestaciones de los diferentes circuitos integrados y a su vez
en el incremento del nivel de integracin y complejidad cada vez en espacios ms
reducidos, sumando esto a la disminucin de los costos de implementacin por
economas de escala, se hace posible en la actualidad la existencia de pequeos
computadores (PDAs, celulares, etc) que pueden realizar una gran cantidad de
aplicaciones y que por ser dispositivos integrados de tamao reducido podran

1
Wilmshurst Tim. Designing Embedded Systems with PIC Microcontrollers. Elsevier, 2007. p 3.
2
Sutter Ed. Embedded Systems Firmware Demystified. CMP Books. 2002. p 2.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

tambin ser clasificados como sistemas embebidos. Aunque existen discrepancias
entre diferentes autores en incluir o no este tipo de dispositivos en la clasificacin
de sistemas embebidos.

Se observa que los microcontroladores de 8 bits dominan la mayora de las
aplicaciones. Un microcontrolador es el ncleo de un sistema electrnico verstil,
de bajo coste y reducido tamao que es capaz de detectar las seales de entrada
y generar las salidas de un determinado equipo, sistema o instrumento. Los
microcontroladores por su reducido tamao y costo adems del hecho de que son
los dispositivos semiconductores ms abundantes de todos en la actualidad,
permiten la fcil implantacin de sistemas con inteligencia distribuida a lo largo
de sistemas ms complejos.

Durante los aos 30 y 40s los primeros computadores fueron dedicados a tareas
muy definidas, adems eran mquinas extremadamente grandes, costosas y
complicadas, tanto en implementacin como en funcionamiento en comparacin
de las prestaciones, tamao y costo de los computadores actuales. Con el
transcurrir de los tiempos conceptos como Computadoras, Controladores Lgicos
Programables (PLC), etc. fueron evolucionando de los arreglos de dispositivos
electromecnicos secuenciados tradicionales, pasando por mquinas basadas en
tubos de vaco, llegando a sistemas ms modernos y funcionales basados en
tecnologas de cmputo desarrolladas a partir de los avances en dispositivos de
estado slido.
Figura 1. Vista superficial de un circuito integrado.





UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El desarrollo de los sistemas embebidos tiene sus races en la invencin del
circuito integrado, el desarrollo constante en el campo de la electrnica digital ha
dado lugar a dispositivos cada vez ms complejos. Entre ellos los
microprocesadores y los microcontroladores, ncleos principales de cualquier
sistema embebido.

La historia de los microcontroladores inicia en el ao 1969, un equipo de
ingenieros japoneses de la compaa BUSICOM lleg a Estados Unidos con una
idea, ellos deseaban usar para sus proyectos menos circuitos integrados de los
que se usaban en las calculadoras. La proposicin se hizo a la compaa INTEL.
La solucin propuesta presuma el desarrollo de circuito integrado cuyo
funcionamiento sera determinado por un programa almacenado en el mismo
dispositivo. Eso significaba que la configuracin sera ms simple, pero que
requerira mucho ms memoria de lo que requera el proyecto que propusieron los
ingenieros japoneses.

Despus de un tiempo, aunque los ingenieros japoneses probaron soluciones ms
sencillas, la idea propuesta por INTEL termino por ser implementada, entonces
nace primer microprocesador. Para transformar esta idea en un producto ya
fabricado, transcurrieron slo 9 meses para lograr el xito. INTEL obtuvo los
derechos para vender este "bloque integrado" en 1971. Primero, compraron la
licencia de la compaa BUSICOM, que no tena idea del tesoro que posean.
Durante ese ao, apareci en el mercado un microprocesador que se llam 4004,
este fue el primer microprocesador de 4 bits con velocidad de 6 000 operaciones
por segundo.

No mucho tiempo despus de eso, la compaa americana CTC pidi a INTEL y a
la Texas Instruments que hiciera un microprocesador de 8 bits. Aunque despus a
CTC no le interes mas la idea, Intel y Texas Instruments siguieron trabajando en
el microprocesador logrando primero de abril de 1972 desarrollar el
microprocesador de 8 bits apareciendo en el mercado con el nombre de 8008.
Poda direccionar 16 Kb de memoria, con un set de 45 instrucciones y una
velocidad de 300.000 operaciones por segundo. Este microprocesador es el
predecesor de todos los microprocesadores de hoy. Intel mantuvo sus desarrollos
y saco al mercado el procesador de 8 bits bajo el nombre 8080, el cual poda
direccionar 64Kb de memoria, con 75 instrucciones, a un precio de 360 dlls por
unidad.

En otra compaa americana, Motorola, comprendieron rpidamente lo que estaba
sucediendo, as que ellos sacaron al mercado su microprocesador de 8 bits, el
6800 y junto con el procesador, Motorola fue la primera compaa en hacer otros
perifricos como el 6820 y el 6850. En ese momento muchas compaas
reconocieron importancia de los microprocesadores y empezaron sus propios
desarrollos.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Un evento muy importante tuvo lugar en la historia de microprocesadores en una
exhibicin de WESCON en 1795 en Estados Unidos. La Tecnologa MOS anunci
que estaba comercializando los microprocesadores 6501 y 6502 a 25 dlls. cada
uno, y que los compradores podran adquirirlos inmediatamente. Esto era tan
extraordinario, que algunas personas creyeron que era una estafa, considerando
que los competidores estaban vendiendo el 8080 y el 6800 a 179 dlls. cada uno.
Intel y Motorola bajaron sus precios en el primer da de la exhibicin como una
respuesta a su competidor, 69.95 por microprocesador.

Motorola reclama a la Tecnologa de MOS el haberles copiado su 6800. La
Tecnologa MOS suspende la fabricacin del 6501, pero siguen produciendo el
6502. Los 6502 eran microprocesadores de 8 bits, 56 instrucciones y la capacidad
de direccionar 64Kb de memoria directamente. Para reducir el costo, el 6502 se
vuelve muy popular, as que se instala en las computadoras tales como: KIM-1,
Apple I, Apple II, Atari, Comodore, Acorn, Oric, Galeb, Orao, Ultra, y muchas otras.
Y muy pronto aparecieron varios fabricantes del 6502 (Rockwell, Sznertek, GTE,
NCR, Ricoh, y Comodore quienes toman la Tecnologa MOS) el cual estaba en su
momento de apogeo y se venda a una velocidad de 15 millones de procesadores
por ao. Otros, sin embargo, no se rindieron. Federico Faggin deja Intel, y
empieza su propio Zilog Inc.

En 1976, Zilog anuncia el Z80. Durante la fabricacin de este microprocesador,
Faggin toma una decisin giratoria. Sabiendo que ya se han desarrollado muchos
programas para 8080, Faggin sabia que muchos se quedaran fieles a ese
microprocesador. As que decide disear un nuevo procesador que pueda ser
compatible con 8080, o que sea capaz de desarrollar todos los programas que ya
se haban escrito para el 8080. Adems de estas caractersticas, se agregaron
muchas otras para que el Z80 fuera un microprocesador muy poderoso. Poda
direccionar 64 Kb de memoria, tena 176 instrucciones, un gran nmero de
registros, una opcin para refresco de memoria dinmica de la RAM, mayor
velocidad de trabajo etc. El Z80 fue un gran xito y todos cambiaron del 8080 al
Z80. Puede decirse que el Z80 fue el microprocesador comercializado ms exitoso
de ese tiempo. Adems de Zilog, tambin aparecieron otros nuevos fabricantes
como Mostek, NEC, SHARP, y SGS. Z80 estaba en el corazn de muchas
computadoras como en Spectrum, Partner, TRS703, Z-3 etc.

En 1976, INTEL propone una versin mejorada del microprocesador de 8 bits, al
cual nombr 8085. Sin embargo, el Z80 era tan bueno que Intel perdi la batalla.
Aunque ms procesadores aparecan en el mercado (6809, 2650, SC/MP etc.), ya
todo estaba decidido. Ya no haba grandes mejoras departe de los fabricantes
para hacer algo nuevo, as que el 6502 y el Z80 junto con el 6800 permanecieron
como los representantes principales de los microprocesadores de 8 bits de ese
tiempo.

Con los avances hechos en microprocesadores se logr desarrollar computadoras
cada vez ms poderosas verstiles y econmicas lo cual adems despert el

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

inters en desarrollar sistemas computacionales aplicados a unas pocas tareas
especficas que agregaran eficiencia y economa a multitud de aplicaciones
especficas por ejemplo los controles por inyeccin electrnica para motores de
gasolina que redujeron en gran medida las emisiones de contaminantes. Fue
posible entonces construir equipos electrnicos que incluan adems unos pocos
circuitos accesorios y un software implementado.

Los diseos electrnicos comenzaron a ser mucho ms pequeos y simplificados,
los diseadores de equipos electrnicos podan realizar mayor cantidad de tareas
en menos tiempo y el tamao de los equipos se redujo considerablemente; sin
embargo, despus de cierto tiempo apareci una nueva tecnologa, llamada
microcontrolador que simplifico aun mas el diseo electrnico, al incluir en un
mismo encapsulado el ncleo microprocesador, la memoria y las entradas/salidas.
Un microcontrolador cuesta mucho menos que un circuito equivalente construido a
partir de circuitos integrados comunes y adems es muy sencillo agregar o
modificar las prestaciones de un dispositivo construido con base en un
microcontrolador simplemente modificando su programa, sin tener que
reconfigurar la electrnica del sistema.

El desarrollo de microcontroladores lo inici la Texas Instruments al realizar su
modelo TMS1000 (1971) diseado para propsitos de control y automatizacin,
fue el primer computador en un chip puesto que combinaba la existencia de un
MCU (Micro-computer Unit) con otro tipo de dispositivos de soporte como
memorias RAM, ROM, contadores, temporizadores e interfaces de entrada/salida
todos integrados en un solo chip de silicio.

Figura 2. Primera familia de microcontrolador TMS 1000.




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

En 1976 Intel introdujo la familia de microcontroladores MCS-48 de 8 bits que
fueron los primeros microcontroladores que ganaron fama y un uso bastante
extendido, fueron integrados en teclados de computadoras personales. Despus
de 4 aos de continua investigacin y desarrollo surge el Intel 8051, un
microcontrolador de 8 bits con memoria EPROM integrada muy comercial,
surgiendo tambin la familia de Motorola 68HCXX y una serie de fabricantes
incursionaron en el mercado con diferentes familias de microcontroladores, entre
las que se encentran: Hitachi 630x, Zilog Z8, Fairchild F8 (3850), Toshiba TLCS-
47, NEC V25, MOS Technology 6500.
Por otro lado en los aos 70s tambin surgen los denominado circuitos o arreglos
de lgica programable que paralelamente son desarrollados como respuesta a la
necesidad de implementacin de circuitos de propsito especifico en aplicaciones
de sistemas embebidos. Dado a los alcances del curso la investigacin sobre este
tipo de dispositivos se deja a criterio del estudiante.
Leccin 2: Importancia y reas de aplicacin.
Los sistemas embebidos son considerados como el rea de aplicacin de mayor
importancia de la tecnologa de la informacin en el transcurso de los aos
venideros gracias a esta expectativa que ha venido creciendo alrededor de estos
sistemas, surge un trmino conocido como la era post-PC, ste denota el hecho
de que en el futuro los computadores personales estndares se convertirn en los
sistemas hardware menos dominantes. Los desarrollos en software y hardware
sern empleados cada vez en sistema ms pequeos en muchos casos invisibles
al usuario en el orden de facilitar al mximo el empleo de los diferentes productos.

En la actualidad el nmero de microprocesadores embebidos en un producto
determinado excede la cantidad de los que se pueden encontrar en computador
personal, se espera que esta tendencia contine en incremento a tal punto que se
predice a manera de ley de Moore, que para muchos productos en el rea de
electrnica de consumo la cantidad de cdigo empleado ser doblada cada dos
aos. [Vaandrager, 1998]
3
.
Este aumento vertiginoso tanto de aplicaciones como en complejidad para los
sistemas embebidos resulta en necesidades de diseo de tecnologas que
soporten el desarrollo de los mismos. Por ejemplo aun es necesaria la mejora
continua tanto de los lenguajes de programacin como de las diferentes
herramientas de desarrollo, desarrollar tcnicas de diseo e implementacin ms
ptimas enfocadas en soportar las constantes variaciones y mejoras que se
requieren en las diferentes aplicaciones.


3
Marwedel Peter. Embedded System Design. Springer. 2006. p 9.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

La intencionalidad es entonces que el estudiante se empape de los conceptos y
tcnicas actuales que envuelven el desarrollo de sistemas embebidos para que
entre a detectar las falencias y posibles mejoras que puedan ser aportadas en la
optimizacin del diseo y desarrollo de estos sistemas.

Las aplicaciones de los sistemas embebidos se pueden clasificar bsicamente en
los siguientes sectores:

Audio, Automotor, comunicaciones (alambricas y mviles), computadores y
perifricos, control de movimiento, edificios inteligentes, electrnica de consumo,
Industrial, imagen y video, Medico, Militar y aero-espacial, procesamiento digital de
seales, robtica, seguridad, sistemas de autenticacin, sistemas de propsito
general y miscelneo.

Se deja la tarea para los estudiantes la investigacin de ejemplos de aplicaciones
especficas para los diferentes sectores.
Leccin 3: Caractersticas.
Los sistemas embebidos son en su mayora sistemas reactivos es decir que su
funcionamiento depende de la continua interaccin con un determinado ambiente
el cual determina las posibles respuestas del sistema, para tal efecto se emplean
determinados sensores o transductores que miden variables fsicas y son
convertidas en seales estndar que puedan ser entendidas por el sistema ante
las cuales realizan algn tipo de respuesta empleando distintos tipos de
actuadores dependiendo de la aplicacin. Entre las diferentes caractersticas que
pueden poseer tenemos:

Confiabilidad:

Una de las principales caractersticas que deben cumplir los sistemas embebidos
es la confiabilidad, la implementacin de un sistema confiable debe ser
considerada desde un comienzo, no puede dejarse en segundo plano,
dependiendo de la aplicacin este aspecto puede llegar a ser primordial, por
ejemplo en aplicaciones aero-espaciales o mdicas es imperante la necesidad de
evitar el porcentaje de fallas al mximo. La confiabilidad de un sistema embebido
se mide analizando los siguientes aspectos:

- Confiabilidad en el tiempo (Reliability): mide la probabilidad de que el
sistema trabaje correctamente en un instante dado que funciona en el
instante t = 0.
- Mantenibilidad, (Maintainability): probabilidad que el sistema vuelva a
trabajar correctamente d unidades de tiempo despus de una falla.
- Disponibilidad (Availability): probabilidad que el sistema est funcionando
en el tiempo t, para que esto se d la confiabilidad y mantenibilidad deben
ser altas.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Seguridad personal: es la propiedad en la que dado el caso de una falla, el
sistema no causar dao.
Seguridad informtica: comunicacin efectiva, confidencial y autenticada
(encriptacin).

Eficiencia:

Otra caracterstica que deben cumplir los sistemas embebidos es la eficiencia en
diferentes aspectos como en el manejo de la energa suministrada, tamao
reducido del dispositivo, tamao reducido del cdigo que gobierna el sistema,
minimizacin del peso, y sobre todo reducir los costos para su produccin masiva.

Tiempo Real:

El trmino tiempo real se refiere a la reaccin inmediata del sistema ante
estmulos externos predefinidos ya sea que provengan del objeto de control o
mediante interfaces de usuario. Donde se entiende por inmediato a un lapso de
tiempo lo suficientemente corto como para que se d el correcto funcionamiento
del sistema, una reaccin correcta pero tarda no es aceptable. Existen las
llamadas restricciones de tiempo real duras (Hard restriction) en las que su
incumplimiento puede resultar en catstrofe. Otro tipo de restriccin de tiempo se
puede considerar como blanda (Soft restriction).
Interfaces de usuario:

La mayora de los sistemas embebidos poseen alguna manera de interactuar con
el usuario como pantallas grficas, botones, teclados alfanumricos, sensores, etc.
Leccin 4: Preconceptos.
Para abordar la temtica del presente curso el estudiante de ingeniera electrnica
debe manejar previamente una serie de conceptos que ha aprendido durante el
transcurso de su carrera, entre los cuales tenemos:

- Nociones Matemticas y Fsicas.
- Electrnica Anloga.
- Sistemas Digitales.
- Informtica y Nociones de Programacin.
Leccin 5: Fases de diseo.
Existen diferentes formas de abordar el diseo y desarrollo de sistemas
embebidos, es importante seguir ciertas pautas de trabajo y tener en cuenta
factores muy diversos para que el diseo pueda terminarse a tiempo y funcione

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

correctamente, por razones prcticas se observar un enfoque general que puede
ser aplicado en el desarrollo de cualquier sistema embebido. Para tal efecto se
parte analizando la siguiente figura.
Figura 3. Diagrama de flujo general para el diseo de sistemas embebidos.


La metodologa desplegada en la figura 3 se encuentra dividida en cuatro fases
principales que van desde la concepcin de la idea hasta el funcionamiento final
del dispositivo diseado y sientan las bases para:

- Disear un dispositivo libre de defectos de manufactura, que funciona de
manera adecuada y se integra con el sistema.
- Disear el dispositivo de manera eficiente, sin malgastar recursos ni tiempo.
- Planificar el diseo de manera eficiente, crear un cronograma razonable y
asignar los recursos necesarios para las diferentes tareas de manera
ordenada.

Toda actividad de diseo comienza con la identificacin y especificacin de una
problemtica a resolver tomando en consideracin los requerimientos software y

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

hardware, esta especificacin es muy importante para definir bien los lmites de lo
que se quiere implementar. A partir de la especificacin se puede definir una
arquitectura con los diferentes componentes que implementan cada funcin del
sistema. Para el diseo se debe definir el funcionamiento de cada uno de esos
componentes.

Una especificacin completa debera comprender los siguientes puntos:

- Diagrama en bloques del sistema externo, que muestra como y donde
encaja el dispositivo dentro de un sistema completo.
- Diagrama de bloques interno que muestra los principales bloques
funcionales del dispositivo a implementar.
- Descripcin de las entradas/salidas, incluyendo, interfaces lgicas,
elctricas, de adquisicin y protocolos de comunicacin.
- Estimaciones de tiempos que se deben cumplir, incluyendo tiempos de
"setup" y "hold" para las entradas/salidas y frecuencias de reloj.
- Estimacin de la del dispositivo dependiendo del nmero de elementos
electrnicos necesarios para su implementacin.
- Especificacin fsica del dispositivo. Tamao, empaquetamiento,
conectores, etc.
- Estimacin del consumo de potencia del dispositivo.
- Precio estimado del dispositivo.
- Procedimientos definiendo el banco de pruebas para la verificacin y
validacin para el dispositivo.

Despus de escribir las especificaciones es importante hacer una revisin con
todos los miembros del equipo. De esta revisin podrn surgir aspectos relevantes
que no fueron tenidos en cuenta individualmente incorporndolos a las
especificaciones. La especificacin tambin incluye la metodologa de verificacin
del dispositivo o banco de pruebas. Estas muchas veces se dejan para el final del
proyecto y no se definen ni llevan a cabo de manera adecuada.

La especificacin es un documento que se presta para ser modificado de acuerdo
con los cambios de requerimientos y a medida que se tiene ms informacin sobre
el proyecto. Una vez que se escribe la especificacin se puede utilizar para
seleccionar componentes y tecnologas que se utilizarn para el proyecto.

El proceso de diseo es en general un ciclo, e incluye varios pasos intermedios
como la verificacin del diseo que engloba varios pasos menores, y al revisar
pueden surgir detalles que obligan a volver a realizar pasos anteriores.
Dependiendo del dispositivo y tecnologa utilizada, pero en general se siguen los
siguientes pasos:

Simulacin: es en general un proceso continuo, ya que al simular se pueden
encontrar problemas que hacen volver sobre el diseo y hacer cambios. Las
simulaciones se hacen sobre pequeas partes del sistema y sobre el sistema

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

completo. Se debe llevar a cabo una simulacin funcional, pero tambin puede
incluir simulaciones de temporizado, consumo de potencia y otros parmetros.
Revisin: En este paso se revisan los resultados de la simulacin y se analiza el
comportamiento del dispositivo.

Una vez que se ha quedado satisfecho con el comportamiento del diseo en las
simulaciones se lleva a cabo la implementacin fsica final del dispositivo. En este
punto se verifica la implementacin fsica para asegurarse que su funcionamiento
coincide con las simulaciones hechas anteriormente. En este paso se deben
tambin evaluar los tiempos, consumo de potencia y cualquier otro parmetro de
importancia.

Si todos los pasos se siguieron correctamente la revisin final debera ser solo una
formalidad. Se verifica que el dispositivo est listo para ser entregado o integrado
a un sistema dado.

La integracin y verificacin en el contexto del sistema general es muy importante.
Si los pasos se siguieron correctamente, cualquier modificacin que surja de esta
integracin ser en general pequea y no requerir grandes cambios. Cualquier
problema o falla que se encuentre debe documentarse y ser analizada as como
los diseos en s tanto del hardware como del software del dispositivo, para poder
hacer mejoras y/o correcciones en una prxima versin del dispositivo a partir de
esta completa documentacin.













UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

CAPITULO 2: COMPONENTES PRINCIPALES DE UN SISTEMA EMBEBIDO
Leccin 6: Diagrama de bloques de un sistema embebido.
Figura 4. Diagrama de bloques de un sistema embebido, Editado de (Designing
Embedded HW)

Los sistemas embebidos ms sencillos emplean microcontroladores como
elemento de procesamiento con la ventaja de que el procesador incorpora muchas
de las caractersticas y funcionalidades de un computador en un solo integrado, en
la figura 4 se presenta un sistema embebido genrico. La diferencia radica en las
capacidades de estos dispositivos puesto que su CPU (Unidad Central de
Proceso) es mas reducida, poseen una cantidad menor de memoria tanto RAM
como ROM y algunos elementos de Entrada Salida (E/S) que pueden ser
observados en la figura como bloques o subsistemas, stos le agregan las
funcionalidades requeridas al procesador para diversidad de aplicaciones. Ver
figura 4.

A continuacin se analizan rpidamente los diferentes componentes de la figura 4,
para luego entrar a describir de manera mas profunda cada uno de los bloques.
Para comenzar tenemos los dispositivos de E/S (I/O Input-Output en Ingles), los
ms comunes son los puertos de E/S digital, normalmente llamados de propsito
general o GPIO (General Purpose I/O), estos puertos se pueden configurar por
software, pin por pin, como entradas o salidas digitales, como entradas se suelen
emplear para leer el estado de interruptores, pulsadores o leer estados digitales de
otro dispositivo. Como Salidas stos pueden ser empleados para encender o
apagar rels u otros dispositivos o para transportar un estado lgico a otros
dispositivos. Usados conjuntamente tanto entradas como salidas se puede
sintetizar e implementar un protocolo dado para comunicarse con otro integrado.
La mayora de los microcontroladores poseen otros subsistemas aparte del los
puertos de E/S pero tienen la caracterstica de poder ser convertidos al puertos

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

GPIO si las funcionalidades de estos subsistemas no son requeridas, este hecho
aade gran versatilidad para el uso de microcontroladores en una aplicacin dada.

En la figura 4 se observan tambin un bloque con entradas anlogas permitiendo
recibir y muestrear seales provenientes de sensores que miden seales de
diferentes tipos, para propsitos de grabacin o simplemente se puede monitorear
seales de voltaje para asegurar el correcto desempeo de un sistema.

Los puertos seriales habilitan al dispositivo para interconectarse con un
computador personal, un mdem, otro sistema embebido o de pronto con una red,
existen formas especializadas de comunicacin serial conocidas como SPI i I2C,
que proveen una manera simple de expandir las capacidades y funcionalidades de
los microcontroladores, a travs de stas se puede interconectar perifricos como
relojes/calendarios, memorias externas, sensores con interfaces digitales entre
otras.

Los contadores y temporizadores son utilizados para generar interrupciones
internas, regular intervalos para diferentes tareas que se puedan estar ejecutando,
generar seales de reloj para controlar la operacin y sincronizacin de
dispositivos externos, pulsos de control para motores, alternativamente tambin
pueden ser utilizados para contar pulsos provinentes de otros dispositivos.
Algunos dispositivos incluyen tambin interfaces de red como puertos USB,
Ethernet o CAN.

Los microcontroladores ms completos tambin incluyen buses de datos trayendo
los buses de direcciones internas para el control y manejo de datos hacia el
mundo exterior, esa funcionalidad le agrega al microcontrolador una gran
versatilidad para la interconexin de una vasta variedad de posibles perifricos de
manera muy similar a lo que lo hara un procesador convencional.

Existe una amplia variedad de microcontroladores (en el orden de los miles,
provenientes de docenas de fabricantes), con capacidades y subsistemas que
varan dependiendo de la aplicacin para la cual sern empleados.
Leccin 7: Entradas: Sensores, muestreadores y conversores A/D.
Los dispositivos de entrada de los sistemas embebidos juegan un papel primordial
para agregar la funcionalidad requerida ya que gracias a estos el dispositivo de
procesamiento puede entrar a interactuar con el mundo exterior mediante la
obtencin de las diferentes seales y datos empleados para su procesamiento y
posterior respuesta o seal de salida.

1. Sensores:
Son dispositivos que al interactuar con alguna variable fsica normalmente
generan una seal anloga continua proporcional a la magnitud de la variable

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

medida, aunque existen tambin sensores que entregan informacin digital. Los
sensores pueden ser diseados para medir virtualmente cualquier variable fsica,
peso, aceleracin, corriente elctrica, diferencias de potencial, temperatura
presin, proximidad, movimiento, sensores para medir variables en sustancias
qumicas, entre muchos otros.

El diseo y desarrollo de sensores de diversos tipos en las ltimas dcadas a
posibilitado en gran medida el desarrollo de sistemas inteligentes en muchos
infinidad campos.

2. Muestreadores:

El termino computador digital implica que ste trabaja en el dominio de tiempo
discreto, esto quiere decir que solo puede procesar informacin discreta en
instantes de tiempo definidos, por lo tanto para que un procesador pueda
manipular seales provenientes de un sensor que entrega informacin
continuamente (seales anlogas) primero debe convertirse estas seales en el
domino del tiempo continuo al dominio de tiempo discreto, ste es el propsito de
los muestreadores, en la fig. 5 se presenta un ejemplo tpico de un circuito para
este propsito y la correspondiente seal muestreada.

Figura 5. Circuito de muestreo.

Como se aprecia en la figura el circuito consta esencialmente de un transistor en
cuya base es aplicada una determinada seal de reloj y un condensador. El
transistor bsicamente acta como un interruptor que permite que el condensador
se cargue con el valor del voltaje de entrada Ve (seal anloga) en instantes
definidos por la seal de reloj, el voltaje en el condensador permanecer
virtualmente sin cambio hasta que el interruptor sea serrado de nuevo. Los
valores almacenados en el condensador se pueden considerar como un elemento
discreto de valores Vx generados a partir de la seal de entrada Ve.

Para que esto sea posible se debe asegurar que el circuito tenga la caracterstica
de poder cambiar el valor de la carga del condensador casi de manera
instantnea, en la prctica lo que ocurre es que el transistor demora un tiempo
suficiente para que el condensador se cargue o descargue y la carga en el
condensador corresponder al voltaje promedio de entrada durante este periodo.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

3. Conversores A/D:

Siguiendo con el esquema de trabajo digital se tiene que una vez se han tomado
muestras de la seal de entrada en tiempos discretos, estas seales pueden
tomar infinidad de valores en un determinado rango, es decir siguen siendo
seales anlogas, el paso a seguir es convertir los valores anlogos de entrada a
valores discretos, esta tarea es realizada por los conversores A/D (Anlogo a
Digital).

La conversin a digital se realiza en dos fases: cuantizacin y codificacin.
Durante la primera se toma la seal muestreada y a cada uno de los diferentes
niveles o variaciones de voltajes que contiene la seal analgica original se asigna
un valor o nivel de voltaje discreto que depende de la resolucin (porcin ms
pequea de seal que produce un cambio apreciable en la salida) del conversor,
en este punto la seal pasa a tomar valores discretos en un rango definido de
valores, aproximados a los de la seal original, el valor cuantificado se codifica en
binario en una palabra digital, cuyo nmero de bits depende de las lneas de salida
del conversor A/D.

Existen diferentes mtodos de conversin A/D que varan dependiendo de la
velocidad y la resolucin requerida a continuacin se expondr dos esquemas de
conversin representativos para comprender los mecanismos de conversin. Una
conversin A/D directa es realizada empleando un conversor A/D FLASH (FLASH
A/D Converter), ste est conformado por un arreglo de comparadores, cada uno
de los cuales tienen dos entradas (+ y -). Si el voltaje en la entrada positiva excede
el voltaje de referencia en la entrada negativa, la salida de dicho comparador
corresponder con un valor lgico 1 en caso contrario o cualquier otro caso el
valor a la salida del comparador ser 0 Ver fig. 6.

Figura 6. Esquema del Conversor A/D FLASH.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Se observa de la figura 6 que el valor de referencia de cada una de las entradas (-
) de los comparadores corresponde a un divisor de voltaje a partir de un valor de
referencia estndar, ste enmarca el rango de los posibles valores de entrada que
el conversor puede codificar. El codificador genera valores digitales
correspondientes a la entrada Vx identificando la salida 1 ms significativa,
siendo el caso en que Vx > Vref, el mximo valor de salida posible independiente
de que tanto excede Vx a Vref en magnitud.

En el caso de que Vx es menor que Vref pero mayor que
4
3 Vref, entonces el
comparador mas significativo (el de mas arriba) genera un 0 a la salida y el
siguiente si generar un 1 entonces el codificador entregar el valor digital para el
segundo valor mas largo del conversor y as sucesivamente.
Otro esquema de conversin utilizado es el llamado conversor de aproximaciones
sucesivas, el proceso de conversin para este tipo de convertidores se basa en la
realizacin de comparaciones sucesivas de manera descendente, hasta que se
encuentra la combinacin que iguala la tensin entregada por el D/A y la de
entrada, consiste como se puede apreciar en la figura 7 en un comparador en
cuya terminal positiva se encuentra la seal de entrada Vx, en esencia el
funcionamiento de este conversor es la de generar valores binarios en el bloque
lgico de control almacenndolos en el registro de aproximaciones sucesivas, la
operacin inicia asignando 1 al bit mas significativo de este registro y a los dems
se les asigna 0, este valor se introduce al conversor Digital/Anlogo (D/A) para
generar un nivel de voltaje anlogo correspondiente al valor binario generado, este
voltaje es enviado terminal negativo del comparador.

Figura 7. Esquema del Conversor de Aproximaciones Sucesivas. (editado de
embedded system design)

Si la magnitud de Vx es mayor que la de la seal generada en el conversor D/A se
conserva el valor 1 en el registro ms significativo, de otra forma se asigna a este
bit un valor 0, este proceso se repite con el siguiente bit y as sucesivamente.
Las ventajas de este esquema es la eficiencia del Hardware, la desventaja es la
velocidad puesto que la identificacin de cada valor de entrada (Vx) no es

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

instantnea, puesto que para cada valor se requiere que el conversor realice una
serie de aproximaciones antes de encontrar el valor adecuado.
Leccin 8: Comunicacin.
Los diferentes datos manejados en un sistema embebido deben estar disponibles
para ser comunicados a travs de diferentes canales, los canales son entidades
abstractas caracterizadas por propiedades esenciales de los sistemas de
comunicacin como la capacidad mxima de transferencia de informacin y
parmetros de ruido, existen adems tcnicas y teoras de comunicaciones que se
emplean para hallar la probabilidad de errores en la comunicacin pero estos son
temas de otro curso.

Para que exista la comunicacin se requiere de un medio fsico por el cual se
propagara la informacin entre los que se tienen medios cableados, medios
pticos (Fibra ptica), medios inalmbricos (medios de radiofrecuencia, infrarrojos,
etc.).

1. Requerimientos:

Existe una variedad de requerimientos para que se d la comunicacin entre
sistemas embebidos entre los que se tienen los siguientes:

Comportamiento en tiempo real:

En muchas de las aplicaciones es imperante la comunicacin inmediata entre los
sistemas como en el caso de procesos industriales de control y automatizacin en
cambio existen otras en las que no es tan primordial este hecho como en el caso
del Ethernet.

Eficiencia:

Este requerimiento tiene su sentido econmico en la implementacin de la
comunicacin entre diferentes sistemas embebidos por lo tanto es necesario el
desarrollo de diseos eficientes para la conexin de diferentes componentes de un
sistema de control y sus componentes externos.

Ancho de banda apropiado:

Los requerimientos de ancho de banda pueden variar dependiendo de la
aplicacin no obstante normalmente es importante evitar al mximo retrasos en la
comunicacin, no obstante se debe evitar hacer demasiado costoso el sistema
implementado.

Robustez:


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Dependiendo de la aplicacin los sistemas embebidos pueden encontrarse en
ambientes con temperaturas elevadas e interferencias electromagnticas, los
sistemas deben poseer la suficiente robustez para mantener una comunicacin
confiable.

Tolerancia a Fallas:

Es necesario que los sistemas se recuperen de fallas de comunicacin de forma
rpida, deben existir mecanismos para reintentar la comunicacin en caso de
fallas, no es aceptable el reinicio del sistema como en el caso de los
computadores.

Privacidad:

Este requerimiento se realiza en caso de que se necesite privacidad en la
comunicacin, para tal efecto existen diferentes tcnicas de encriptacin.

2. Mtodos de transmisin cableada.

Estos mtodos son empleados para lograr la suficiente robustez elctrica de las
seales transmitidas entre los diferentes integrados de un sistema dado, uno de
los mtodos es conocido como sealizacin de terminal simple (single-ended
signaling) o asimtrica, en ste las seales se propagan a travs de un solo cable
(ver figura 8).

Figura 8. Sealizacin de terminal simple o asimtrica.


El otro terminal se conecta a un nivel de referencia, normalmente se conecta a
tierra; las seales que llevan la informacin estn representadas por diferencias de
potencial con respecto a la referencia. La ventaja de ste mtodo es que una sola
referencia sirve para diferentes seales asimtricas, la principal desventaja es la
susceptibilidad al ruido externo, la informacin puede ser fcilmente afectada por
interferencias de tipo electromagntico.

Otro mtodo se conoce como sealizacin diferencial o simtrica, en ste se
requiere un par de hilos por cada seal (ver figura 9).

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Figura 9. Sealizacin diferencial o simtrica (editado de embedded system
design).


La seal es codificada de manera que si el voltaje del primer hilo al llegar al
comparador es positivo con respecto al segundo entonces se trata de un 1 en
caso contrario se trata de un 0. Normalmente cada par de hilos viene entorchado,
es decir, cada par se entrelaza para mantener estable las propiedades elctricas a
lo largo de toda la longitud de los hilos, reduciendo as, las interferencias creadas
por elementos adyacentes.

Algunas ventajas de este mtodo de transmisin consisten en que el ruido
normalmente se aade de igual forma a ambos hilos y es eliminado casi en su
totalidad en la entrada del comparador, adems el valor lgico de la seal solo
depende de la polaridad, no de la magnitud, ya que esta puede variar por factores
como la distancia y la resistencia del hilo y este hecho no afecta la seal
decodificada, no se requiere la existencia de tierras comunes puesto que se trata
de seales diferenciales por lo tanto para comunicar grandes cantidades de
dispositivos por este mtodo no es necesario implementar tierras de mayor
calidad.

La sealizacin diferencial es empleada por ejemplo en la implementacin de
redes basadas en Ethernet.
Leccin 9: Unidades de procesamiento y Memorias.
Unidades de procesamiento

Para abordar el tema de procesamiento de informacin se tendrn en cuenta los
ASIC (Aplication-Specific Integrated Circuit), los dispositivos de lgica programable
y los procesadores. Estas tecnologas presentan un desempeo distinto hablando
del nmero de operaciones que pueden desempear con respecto a su consumo
de energa, siendo primeros en desempeo los ASIC, los segundos son los
dispositivos de lgica programable y por ltimo los procesadores, en contra
prestacin los procesadores son los ms flexibles en lo que a programacin
software se trata, los dispositivos de lgica programable presentan cierta
flexibilidad y los ASIC no son nada flexibles.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

1. ASIC (Aplication-Specific Integrated Circuit)

Los ASICs son circuitos diseados y desarrollados para aplicaciones especficas
por lo tanto una vez desarrollados no pueden ser modificados, a diferencia de
otros dispositivos como los microcontroladores concebidos para propsitos de uso
general, un ejemplo de este tipo de dispositivos puede ser un integrado diseado
especficamente para manejar la modulacin en un telfono celular.

Los ASICs son costosos tanto de disear como de fabricar pero si la aplicacin
requiere un uso realmente eficiente de la energa, procesamiento a una velocidad
superior y adems si el mercado se encuentra dispuesto a afrontar los costos o el
producto final se presta para ser vendido en grandes producciones entonces se
justifica su empleo.

Con los avances en la miniaturizacin y en las herramientas de diseo, la
complejidad mxima, y por ende la funcionalidad, en un ASIC ha crecido desde
5.000 puertas lgicas a ms de 100 millones. Los ASIC modernos a menudo
incluyen procesadores de 32-bit, bloques de memoria RAM, ROM, EEPROM y
Flash, as como otros tipos de mdulos. Este tipo de ASIC frecuentemente es
llamado Sistema en un Chip, o SoC (System on a Chip), por sus siglas en ingls.
Los diseadores de ASIC digitales usan lenguajes descriptores de hardware
(HDL), tales como VERILOG o VHDL, para describir la funcionalidad de estos
dispositivos

2. Dispositivos de Lgica programable.
Existen aplicaciones en donde no se justifica el costo de emplear ASICs, por el
costo de desarrollo o por la existencia de un mercado reducido para dicha
aplicacin, aunque tampoco es suficiente el empleo de aplicaciones basadas en
software (Microprocesadores), por velocidad o consumo de energa. Los
dispositivos de lgica programable representan una buena solucin, si los
algoritmos son implementados de manera eficiente las aplicaciones desarrolladas
pueden llegar a ser tan rpidas como un ASIC, La gran diferencia radica en que la
funcionalidad de stos puede cambiar por medio de la reprogramacin del
dispositivo.

Gracias a las caractersticas intrnsecas de los dispositivos de lgica programable,
stos se pueden emplear en aplicaciones de prototipado rpido, permitiendo los
correspondientes ciclos de diseo, prueba y depuracin, obteniendo as un
dispositivo que se comportar de forma similar al sistema final, as no cumpla con
los requisitos de espacio y consumo de potencia deseables, normalmente estos
prototipos se toman como punto de partida para desarrollar aplicaciones finales.

3. Procesadores.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

La ventaja principal de estos dispositivos es su flexibilidad, ya que el
comportamiento del sistema embebido puede cambiarse por completo solo
cambiando el software que rige el sistema, estos cambios se realizan con la
intencin de corregir errores de diseo, realizar actualizaciones, mejoras o aadir
funciones al sistema. En esencia es esta la razn de la gran popularidad de estos
dispositivos.

Los procesadores para sistemas embebidos deben ser eficientes, no se necesita
que su set de instrucciones sea compatible con el de un procesador para PC de
hecho se trata de arquitecturas diferentes, por lo tanto manejan un set de
instrucciones mas reducido, a continuacin se analizan las diferentes
caractersticas que deben tenerse en cuenta para lograr la eficiencia.

Eficiente manejo de la energa: para tal efecto las diferentes variedades de
procesadores abordan el tema empleando diversas tcnicas en las que se tiene en
cuenta la operacin del sistema, es pues como el sistema puede pasar a modos
de bajo consumo suspendiendo la operacin de relojes internos, bloqueando las
salidas o suspendiendo por completo las actividades internas, dado el caso de que
el procesador entre en periodos de inactividad o marcha lenta.

Tamao de Cdigo: es muy importante minimizar el tamao del cdigo de los
programas que gobiernan el funcionamiento del procesador por el hecho de que
los procesadores para sistemas embebidos generalmente no cuentan con discos
duros y adems la capacidad de las memorias con las que se cuenta normalmente
es reducida, tambin hay que tener en cuenta que cada comando y ciclo de
ejecucin extra requiere un consumo de potencia y como se vio en anteriormente
es necesario mantener un consumo eficiente de energa.

Tiempo de ejecucin eficiente: dependiendo de la aplicacin se puede requerir que
el sistema embebido ejecute alguna funcin con limitantes de tiempo extremas sin
la necesidad de emplear elevadas frecuencias de operacin, para tal motivo las
arquitecturas pueden ser optimizadas para ciertas aplicaciones, como en el caso
de los DSP (Digital Signal Processor). O se puede ir ms all y desarrollar lo que
se conoce como procesadores de sets de instrucciones especficos. ASIPs
(Application Specific Instruction Set Processor).
Memorias.
Las memorias son dispositivos electrnicos empleados para almacenar
informacin (datos) y software (programas) con las que el dispositivo de
procesamiento interacta. Contienen en su interior una tabla que almacena
informacin en cada uno de sus compartimentos.

1. Funcionamiento.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Como toda tabla, es preciso saber dos de sus dimensiones: el tamao de cada
uno de sus elementos y el nmero de elementos de los que dispone.
Normalmente, las memorias convencionales almacenan la informacin en
elementos de tamao 1 byte (8 bits). Por lo tanto una memoria se puede ver como
una tabla que contiene un determinado nmero de bytes. Los elementos de esta
tabla estn numerados con nmeros naturales comenzando por el cero. El nmero
correspondiente a cada una de los elementos se denomina direccin de memoria
y se suele representar de forma abreviada por el smbolo @. Al conjunto de
nmeros que representan las direcciones de una memoria se le denomina su
espacio de direcciones. A manera de ejemplo, la figura 10 ilustra la estructura,
contenido y direcciones de una memoria RAM.

Figura 10. Estructura de la memoria RAM.


Una computadora de 8 bits con 10 lneas de direccin ve a la memoria como una
columna continua de 1024 ( 2 a la 10) valores de 8 bits. La direccin de la primer
posicin de memoria es 00 0000 0000 (2) y la de la ltima es 11 1111 1111 (2). La
direccin de diez bits se expresa normalmente como dos nmeros de 8 bits que se
vuelcan en cuatro dgitos hexadecimales. En notacin hexadecimal, el rango de
estas direcciones va desde $0000 a $03FF.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El acceso a los datos internos de la memoria viene determinado por el tamao de
sus celdas o elementos. Tal y como est estructurada, la memoria no ofrece
acceso directo a cualquiera de sus bits, sino que es preciso primero obtener un
byte y posteriormente acceder al bit pertinente. Los procesadores incluyen en su
lenguaje mquina las instrucciones necesarias para poder manipular los bits de un
byte. Si se quiere, por tanto cambiar un bit de un byte de memoria se debe leer el
byte entero, utilizar instrucciones para cambiar su valor, y escribirlo de nuevo en
memoria.

El tamao de la memoria se mide en mltiplos que no siguen las reglas
convencionales de multiplicacin por potencias de 10 sino por potencias de 2. As,
un kilobyte son 210 bytes o 1024 bytes. Las unidades de medida del tamao de
memoria as como sus exponentes y los prefijos de su nomenclatura se presentan
en la Tabla 1.

Tabla 1. Unidades de almacenamiento de informacin en bytes
Prefijo Smbolo Potencia
kilo K 2
10

mega M 2
20

giga G 2
30

tera T 2
40

peta P 2
50

exa E 2
60

zetta Z 2
70

yotta Y 2
80


Los chips de memoria pueden ser organizados de dos formas o esquemas por
palabras o por bits. En el esquema de organizacin por palabras se almacenan
por completo nibbles (4 bits), bytes (8 bits), o palabras de un tamao determinado
son almacenadas en un mismo componente, mientras que en el esquema de
organizacin por bits, cada bit de una palabra dada se encuentra localizado en un
dispositivo distinto. (ver figura 11)

Figura 11. Dispositivos organizados por bits de 8x1 y organizados por palabras
de 8x8.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


Internamente las memorias son implementadas por un conjunto de transistores
diseados de tal forma que pueden almacenar informacin. La unidad responsable
de almacenar un bit de informacin se denomina celda. Un chip de memoria no
es ms que un circuito que contiene un determinado nmero de celdas en cuyo
interior se almacena un bit.

EL funcionamiento de la memoria es similar al mtodo utilizado para ordenar la
correspondencia en una oficina postal, a cada byte o palabra de datos se le es
asignada una direccin nica y a cada direccin corresponde un solo espacio de
almacenamiento en la memoria. El proceso para almacenar la informacin en la
memoria se da de la siguiente forma: la unidad de procesamiento enva al
dispositivo la direccin para los datos, el controlador de la memoria encuentra la
ubicacin adecuada, por ltimo, el procesador enva los datos a escribir en dicha
direccin o posicin de memoria.

La lectura de la informacin se realiza mediante un proceso semejante: El
procesador enva a la memoria la direccin de los datos solicitados, El controlador
de la memoria encuentra los bits de informacin contenidos en dicha direccin,
posteriormente los enva al bus de datos al procesador. (ver figura 12). Adems
de los buses de direccin y datos el procesador debe notificar a la memoria el tipo
de operacin que se va a realizar, para tal efecto deben aadirse las
correspondientes lneas de control que dependen del tipo de memoria y de la
implementacin realizada.

Figura 12. Esquema de conexin Unidad de Procesamiento Memoria

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


Normalmente las memorias se encuentran disponibles con la interfase paralela
estndar (bus de datos y direcciones), tambin se pueden encontrar en interfaces
seriales, existe una variedad de dispositivos que cuentan con interfaces como la
I2C (Inter-IC) o la interfaz SPI (Serial Peripheral Interface) que son protocolos
estndar empleados para la comunicacin con diferentes dispositivos, este tema
ser tratado en captulos posteriores.

2. Almacenamiento de datos.

La estructura que ofrece la memoria normalmente es la organizacin de sus
elementos en bytes. Por tanto, para almacenar los datos que manipula un
procesador es imprescindible saber de antemano su tamao. El tamao de
algunos datos bsicos viene definido por la arquitectura del propio procesador. Por
ejemplo, el lenguaje mquina de algunas arquitecturas contiene instrucciones
mquina para operar enteros de 32 bits. Esto no quiere decir que el procesador no
pueda manejar enteros de otros tamaos, sino que el dispositivo manipular estos
de forma mucho ms rpida y eficiente. Nmeros de otros tamaos pueden ser
manipulados igualmente pero con un costo mayor en tiempo de ejecucin.

Los lenguajes de programacin de alto nivel como Java, C o C++ definen un
conjunto de datos denominados bsicos y un conjunto de mecanismos para
definir datos complejos en base a ellos. Como los programas escritos en estos
lenguajes deben ejecutar en diferentes equipos con diferentes procesadores, es
difcil definir el tamao de los datos tal que se ajuste a todos ellos. El compilador
se encarga de transformar las operaciones escritas en lenguaje de alto nivel en las
instrucciones ms adecuadas para manipular los datos en el procesador
pertinente. La tabla 2 muestra los tipos de datos bsicos definidos en C y C++ as
como su tamao.

Tabla 2. Tipos de datos bsicos en el lenguaje C y C++

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Tipo
Tam.
Bits
Dgitos de
precisin
Rango
Min Max
Bool 8 0 0 1
Char 8 2 -128 127
signed char 8 2 -128 127
unsigned
char
8 2 0 255
short int 16 4 -32,768 32,767
unsigned
short int
16 4 0 65,535
Int 32 9 -2,147,483,648 2,147,483,647
unsigned
int
32 9 0 4,294,967,295
long int 32 9 -2,147,483,648 2,147,483,647
unsigned
long int
32 9 0 4,294,967,295
long long
int
64 18 -9,223,372,036,854,775,808 9,223,372,036,854,775,807
unsigned
long long
int
64 18 0 18,446,744,073,709,551,615
float 32 6 1.17549e-38 3.40282e+38
double 64 15 2.22507e-308 1.79769e+308
long double 96 18 3.3621e-4932 1.18973e+4932

La regla para almacenar datos en memoria es utilizar tantos bytes como sean
necesarios a partir de una direccin de memoria. En adelante, la posicin a partir
de la cual est almacenado un dato se denominar su direccin de memoria. De
forma anloga, cuando se dice que un dato est en una posicin de memoria lo

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

que significa es que est almacenado en esa posicin y las siguientes que se
precisen.

3. Mtodos de direccionamiento.

Generalmente (aunque no necesariamente) una instruccin consta de una parte
de operacin y una de direccin, la parte de direccin puede contener la direccin
de un operando utilizado en la ejecucin de la instruccin. En otras ocasiones la
parte direccin de la instruccin puede no contener la direccin donde se
encuentra el operando, sino otra direccin donde se encuentra la direccin del
operando. En los diferentes sistemas se emplea una amplia gama de modos de
direccionamiento de los que se consideran algunos a continuacin:

- DIRECTO. El operando se encuentra en alguno de los registros internos de
la CPU o en la memoria principal. En el direccionamiento directo, la
instruccin indica el registro o la direccin de memoria absoluta que
contiene el operando o donde se debe almacenar el resultado de una
operacin.

- INDIRECTO. El operando se encuentra en la memoria principal del sistema.
La direccin de memoria de este operando no es dada directamente por la
instruccin, sin embargo, sta informa del registro o posicin de memoria
donde se encuentra almacenada la direccin del operando. En algunos
procesadores, se soportan operaciones tales como post-incremento, post-
decremento, pre-incremento, pre-decremento en el valor almacenado en el
registro de direcciones o en la memoria que contiene la direccin del
operando.

- RELATIVO. En este caso el operando est en memoria principal, es decir,
por fuera de la CPU. La direccin del operando ha de ser calculada como la
suma del contenido de cierto registro con un valor de desplazamiento.
Normalmente el registro acta como apuntador. El valor del desplazamiento
va en el formato de instruccin como un valor constante. En el
direccionamiento relativo la parte direccin de la instruccin contiene el
nmero N. En memoria la direccin del operando se encuentra sumando el
numero N al nmero del contador del programa.

- INDEXADO. Permite tomar un registro interno que le ser sumado al
registro base para calcular la direccin de memoria donde se encuentra el
operando. Algunas CPUs permiten tener un valor de desplazamiento, el
cual est almacenado en el formato de instruccin. En el direccionamiento
indexado como en el relativo, la parte direccin de la instruccin contiene
un nmero N que puede ser positivo o negativo. Sin embargo para utilizar el
direccionamiento indexado, el computador debe estar equipado con un
registro especial empleado para permitir direccionamiento indexado, y

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

denominado naturalmente registro ndice. La posicin de memoria donde se
localiza el operando se encuentra mediante la suma I + N.

- REGISTRO INDIRECTO. Algunos computadores que incorporan la facultad
del direccionamiento de registro indirecto tienen un registro especial, a
menudo llamado registro (P). Este registro contiene la direccin de memoria
del operando. Una instruccin que invoque realmente direccionamiento de
registro indirecto no tiene bits significativos en su parte direccin. En lugar
de ello, la instruccin completa se incluye en los bits asignados a la parte
de operacin de la instruccin. Una instruccin tpica que use un registro de
direccionamiento indirecto debera especificar "cargar" el acumulador con el
operando localizado en la direccin de memoria dada en el registro (p).

- INMEDIATO. En el direccionamiento inmediato, la parte de direccin de la
instruccin contiene no la direccin del operando sino el mismo operando.
Se usa cuando el operando es un valor constante. El tamao o cantidad de
bits para este operando depende de la cantidad reservada en el formato de
instruccin.

- INHERENTE. Ordinariamente una direccin que es parte de una instruccin
se refiere a una posicin de memoria. Cuando una instruccin indica una
fuente o un destino de datos y no se direcciona especficamente, ya no se
hace referencia a la posicin de memoria, se dice que la instruccin tiene
una direccin inherente.
Leccin 10: Salidas y Conversores D/A.
Para las salidas de los sistema embebidos se emplean dispositivos tanto anlogos
como digitales, para el caso de dispositivos anlogos, las salidas digitales deben
pasar primero por los correspondientes conversores Digital a Anlogos (D/A).
Entre los elementos de salida que normalmente son empleados en sistemas
embebidos tenemos:

1. Elementos de Visualizacin.

Estos son de gran importancia para los sistemas embebidos, son empleados para
desplegar informacin relevante al usuario, dependiendo de la aplicacin pueden
desplegar seales medidas, operaciones, servir de interfaz para la programacin
de determinados dispositivos, entre otros.

Existe una gran variedad de dispositivos de visualizacin gracias al continuo
desarrollo tecnolgico en esta rea, los ms comunes son los displays de 7
segmentos o alfanumricos fabricados a partir de leds, Tambin se encuentra en
el mercado matrices de leds displays de cristal lquido, llegando a desarrollarse
pantallas tctiles que pueden servir para interactuar directamente con el sistema,
los ltimos desarrollos e investigaciones en el tema han arrojado una nueva

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

tecnologa conocida como displays orgnicos, a diferencia de tecnologas como
LCD que requieren de luz trasera o Backlight, stos generan su propia iluminacin.

2. Dispositivos electromecnicos.

Estos son actuadores que modifican su entorno, puede tratarse de relays,
motores, electroimanes, cerraduras electromecnicas, electro-vlvulas, bobinas,
servomecanismos etc. En muchos casos las seales de control hacia este tipo de
dispositivos debe pasar por una etapa de potencia para evitar el deterioro del
dispositivo de control.
Conversores D/A.
Un conversor Digital a Anlogo se encarga, como su nombre lo dice, de convertir
seales digitales en seales analgicas (Corriente Voltaje o carga elctrica).
Todos los conversores D/A poseen entradas digitales provinentes de buses de
microprocesadores, SPI o I
2
C, y pueden proveer uno o ms canales de salidas
anlogas.

Este tipo de conversores se utiliza en reproductores de sonido de todo tipo, dado
que actualmente las seales de audio son almacenadas en forma digital (por
ejemplo, MP3 y CDs), y para ser escuchadas a travs de los parlantes, los datos
se deben convertir a una seal analgica. Los conversores digital-analgico
tambin se pueden encontrar en reproductores de CD, reproductores de msica
digital, tarjetas de sonidos de PC, etc.

Como se trata del proceso inverso a la conversin A/D se puede pensar en los
valores digitales discretos a la entrada de conversor, como nmeros obtenidos a
partir de un proceso de muestreo, que se actualizan constantemente en intervalos
determinados por la correspondiente frecuenta de muestreo, obtenindose a la
salida del conversor voltajes (normalmente) que son una funcin lineal de dichos
nmeros de entrada. Dado que a cada instante se actualizan los nmeros, la
salida del conversor se mantiene constante entre conversiones, cambiando
automticamente el voltaje dependiendo del valor digital de cada entrada, esta
operacin genera una seal constante por partes (ver figura 13).

Figura 13. Seal de salida de un conversor D/A.







UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Por su puesto la seal reconstruida no posee las mismas caractersticas en el
dominio de la frecuencia que la seal original. Los conversores Digital a Anlogo
(D/A) no son dispositivos muy complejos, entre la variedad de esquemas que
existen para la conversin D/A a continuacin se expone uno de los ms
comunes. En la figura 14 se puede observar el esquema de un conversor D/A
bsico de 4 bits.

Figura 14. Conversor D/A.


Este conversor consta de una red de resistencias conectadas a la entrada
negativa de un amplificador operacional configurado como sumador, la tensin de
referencia es introducida por medio de diferentes conmutadores de entrada los
cuales se cierran dependiendo del valor de la entrada digital. Es de tener en
cuenta que los valores de las resistencias varan desde la del bit ms significativo
que es la de menor valor, doblndose por cada bit hasta llegar al bit menos
significativo, LSB (Less Significant Bit).

El incremento en la tensin de salida del conversor D/A se presenta por la accin
que tienen las resistencias de las entradas sobre la resistencia de realimentacin
del circuito amplificador; la tarea de la red de resistencias es asignar niveles de
voltaje adecuados a la entrada del amplificador. La accin del amplificador
operacional es graduar o ajustar la tensin analgica de salida de acuerdo con
una tabla de correspondencia definida para el conversor, teniendo en cuenta
obviamente el valor de las entradas binarias y la configuracin de la red de
resistencias.

Para que este conversor D/A sea preciso hay que tener en cuenta que:

Los valores de resistencia deben ser bastantes precisos.
La tensin de alimentacin tambin debe ser precisa.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

CAPITULO 3: UNIDADES CENTRALES DE PROCESAMIENTO

En el presente captulo se analizarn diferentes unidades o ncleos de
procesamiento y sus componentes, con la intencin de llegar a obtener un
entendimiento bsico de las estructuras que forman parte de las diversas
arquitecturas disponibles para as compararlas, justificando el enfoque del curso al
emplear de microcontroladores en especial los HC08 de Motorola como
dispositivos para la correspondiente asimilacin y aterrizaje del bagaje terico
adquirido en los primeros captulos, tambin para la realizacin de las diferentes
prcticas del presente curso.
Leccin 11: Componentes de una CPU.
En la siguiente figura se presenta un diagrama de bloques simple para una unidad
de procesamiento en el que se puede apreciar los diferentes componentes que
sern explicados de una forma ms amplia a lo largo del presente capitulo.

Figura 15. Diagrama de bloques simple de una unidad de procesamiento.


1. Unidad Aritmtico Lgica
La Unidad Aritmtico-Lgica (UAL) o ALU (Arithmetic and Logical Unit) como su
nombre lo indica es la encargada de realizar operaciones aritmticas y lgicas
sobre operandos que provienen de la memoria principal y que pueden estar

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

almacenados de forma temporal en algunos de los registros de diversos
propsitos que hacen parte de la propia unidad.
Existen deferentes tipos de ALU dependiendo de la aplicacin para la cual se
encuentran especializadas; las hay especializadas en operaciones con nmeros
enteros o en operaciones con nmeros en punto flotante, entre otros.

2. Registros.

Un registro es una memoria de alta velocidad y poca capacidad, integrada al
microprocesador, que generalmente permite guardar y acceder a valores muy
utilizados en operaciones matemticas. Los registros son la manera ms rpida
que tiene un sistema de almacenar datos, su capacidad se mide generalmente por
el nmero de bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro
de 32 bits". Generalmente son implementados en un banco de registros,
antiguamente se usaban flip flops individuales, memoria SRAM u formas de
almacenamiento aun ms primitivas.

Los registros pueden ser directamente indexados como operandos de una
instruccin, como esta definido en el set de instrucciones. Tambin existen
muchos otros registros que son empleados con propsitos especficos, por
ejemplo el contador de programa.

2.1. Tipos de registros.

Registros de datos: son empleados para guardar nmeros enteros. En algunas
computadoras antiguas, exista un nico registro donde se guardaba toda la
informacin, llamado acumulador.

Registros de memoria: se emplean para guardar exclusivamente direcciones de
memoria. Eran muy usados en la arquitectura Harvard, ya que muchas veces las
direcciones tenan un tamao de palabra distinto que los datos.

- Registros de propsito general GPRs: (General Purpose Registers) pueden
guardar tanto datos como direcciones. Son fundamentales en la
arquitectura Von Neumann. La mayora de dispositivitos modernos usa
GPRs.
- Registros de punto flotante: se empelan para guardar datos en formato de
punto flotante.
- Registros constantes: tienen valores creados por hardware de solo lectura.
- Registros de propsito especfico guardan informacin especfica del
estado del sistema, como el puntero de pila, el registro de estado, el
contador de programa, el registro de instruccin, entre otros.

3. Unidad de Control

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

La unidad de control es la parte de la unidad de procesamiento encargada de leer
las instrucciones en lenguaje de mquina almacenadas en la memoria principal,
adems genera las seales de control necesarias para el manejo y coordinacin
del resto de las unidades funcionales de un determinado sistema con el fin de
ejecutar las instrucciones ledas. La unidad de control est conformada por:

- Contador de programa o PC (Program Counter): es un registro interno del
microprocesador en el que se almacena la direccin de la instruccin que
se est ejecutando. De esta manera, la unidad de procesamiento conoce
cul es la siguiente instruccin que debe ejecutar. El PC va
incrementndose dependiendo del tamao de las instrucciones, esto se
mide en espacios de memoria y puede aumentar valores como 1, 2, 3,
tambin puede pasar que la instruccin que se ejecute en ese instante
cambie el flujo del programa, saltando a otra direccin distinta.

- Registro de instruccin: Al igual que el PC, el registro de instruccin forma
parte de la unidad de control y contiene la instruccin que se est
ejecutando en cada momento.

- Decodificador de instrucciones: Se encarga de decodificar la instruccin
para interpretar el tipo de instruccin a ejecutar que se encuentra en el
registro de instruccin, las instrucciones pueden ser de suma,
multiplicacin, comparacin, entre otros.

- Reloj Interno: Seal de reloj a una frecuencia especfica que marca cada
ciclo de ejecucin del procesador, este junto con otros elementos que
dependen de la arquitectura le proporcionan la velocidad caracterstica a
cada dispositivo.

- Secuenciador: Encargada de generar seales de control para la ejecucin
de una instruccin que se ha decodificado previamente y comparado con
las instrucciones disponibles de la CPU que se encuentran almacenadas en
una Memoria ROM de la misma CPU.

4. Unidad de Ejecucin o Datapath
Es un elemento de la CPU que realiza operaciones y clculos invocados por
programas en ejecucin. A menudo posee su propia unidad de control, registros y
otros componentes, tales como una unidad aritmtico-lgica, tambien puede
poseer una unidad de punto flotante. Es comn que las CPUs modernas incluyan
mltiples unidades de ejecucin, el arreglo ms simple es utilizar una para
manejar la interfase de memoria (administracin del bus) y otras para realizar
deferentes clculos.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

5. Memorias.
Existe una variedad de memorias y es posible que exista una combinacin de
diferentes tipos de estas en un mismo sistema, dependiendo de las diversas
caractersticas que pueda presentar una memoria se analizan a continuacin los
diferentes tipos disponibles:

5.1. RAM (Random Access Memory):

Las memorias de acceso aleatorio normalmente son las memorias de trabajo de
los computadores, donde el procesador puede fcilmente almacenar datos
temporalmente, la lectura/escritura en este tipo de memorias se puede hacer en
cualquier posicin, es decir, el acceso a cualquier registro para lectura/escritura
implica el mismo tiempo y no depende de lecturas/escrituras previas.
Generalmente son voltiles, esto quiere decir que los datos almacenados durante
el funcionamiento del computador se borrarn al des-energizar o apagar el
sistema.

Existen dos categoras de RAM las estticas (SRAM) y las dinmicas (DRAM); las
estticas emplean pares de compuertas lgicas para almacenar cada bit de datos
son las ms rpidas, funcionan con una circuitera de soporte simple y tienen un
consumo de energa relativamente bajo. Debido a su baja capacidad se requiere
implementar mayor cantidad de chips dependiendo de la aplicacin. Si un
computador personal moderno fuese construido con base en este tipo de memoria
aunque sera bastante rpido resultara de un tamao considerable y demasiado
costoso.

Figura 16. Memoria SRAM (Static Random Acces Memory ).


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


DRAM utiliza arreglos de lo que en esencia son la combinacin de un capacitor y
un transistor, juntos forman una celda (que representa un bit). El capacitor
almacena el bit de informacin (0 cuando esta descargado o 1 cuando esta
cargado) mientras que el transistor acta como switch, esto permite "leer" el
capacitor o cambiar su estado (de 0 a 1 o viceversa). La desventaja es que la
carga se almacena por un periodo reducido antes de empezar a descargarse, es
por esto que se necesita refrescar constantemente los datos en intervalos en el
orden de los milisegundos, este hecho hace que se requiera un soporte adicional
para este tipo de memorias adems retraza al microprocesador en el acceso de
los datos.
Figura 17. Memoria DRAM (Dynamic Random Acces Memory ).


A pesar de esto las memorias dinmicas poseen una gran capacidad de
almacenamiento, existe una gran variedad de subespecies de este tipo de
memorias. Acceder a los datos de estas memorias mediante un microcontrolador
generalmente no es viable y ciertamente no es prctico. Para tal efecto hay
microprocesadores que poseen soporte para la conexin de RAM dinmico o se
puede valer de integrados diseados para cumplir esta funcin de manera muy
simple.
Los tipos de DRAM que se encuentran actualmente son:

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


- Fast Page Mode DRAM: La idea es tener procesos de lectura/escritura
sucesivos en la misma fila sin tener que realizar por cada lectura/escritura
un procesamiento de la fila como se hace con las anteriores memorias
DRAM.
- Extended Data Out (EDO) DRAM: Es similar a la anterior con una
caracterstica adicional, la cual permite que un nuevo ciclo de acceso pueda
ser iniciado mientras se mantiene el dato en la salida del ciclo anterior. Esto
mejora en un 5% la eficiencia de estas memorias.
- Synchronous Dynamic RAM (SDRAM): Las memorias vistas hasta el
momento tienen una interfaz de comunicacin asncrona con los dems
perifricos, incluyendo la CPU. Una memoria sincrnica, trabajar con el
reloj del bus del sistema, resultando esto ms eficiente. Por cada pulso de
reloj en el bus, se realiza internamente una operacin en la memoria. Estas
memorias se conocen con referencias como PC66, PC100 y PC133, donde
el nmero representa la frecuencia del reloj del bus.
- Double Data Rate SDRAM (DDR-SDRAM): La memoria anterior utiliza la
seal de reloj para realizar las diferentes operaciones. Estas operaciones
se dan cuando existe una transicin de bajo a alto en la seal de reloj
solamente, es decir, en un flanco de subida. La idea de DDR es realizar
operaciones tanto estimuladas por la transicin bajo a alto como por la
transicin alto a bajo, es decir, en flancos de subida y bajada, permitiendo
que con la misma seal de reloj, se puedan realizar el doble de
operaciones. Se sigue trabajando con frecuencias de bus de 100, 133, 166
y 200, donde la frecuencia efectiva ser 200, 266, 333, 400
respectivamente, por eso el nombre de DDR200, DDR266, DDR333 y
DDR400. En un computador que tiene un bus de datos de 64bits, la tasa de
transferencia en bytes estar dada por 2x(frecuencia_bus)x8 teniendo
velocidades de 1600Mbytes/seg, 2133Mbytes/seg, 2667Mbytes/seg y
3200MBytes/seg para memorias DDR200, DDR266, DDR333 y DDR400
respectivamente.
- Otras memorias disponibles son el RAMBUS DRAM, Video RAM, SGRAM,
PSRAM.

5.2. Memoria Cach.

Muchos microprocesadores incluyen en su interior o tienen acceso a lo que se
conoce como cach de datos, se trata de un tipo de memoria que est ubicada
entre el procesador y la memoria RAM y se emplea para almacenar datos que se
utilizan frecuentemente as como algunas instrucciones que sern ejecutadas se
para agilizar este proceso. Normalmente el cach se implementa en memorias
estticas de alta velocidad y su funcin principal es ayudar a compensar la lentitud
de las DRAM para darle velocidad al sistema.

5.3. ROM (Read Only Memory).

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Las memorias ROM son OTP (One Time Programmable) es decir solo pueden ser
programadas una sola vez, este tipo de memorias no son voltiles puesto que no
requieren la existencia de alimentacin para retener los datos, normalmente son
ms lentas que las memorias RAM. Muchos microcontroladores contienen
memoria ROM integrada al chip este hecho reduce los elementos requeridos para
desarrollar sistemas embebidos simplificndose tambin su diseo.
El propsito principal de la ROM en un sistema dado es el de mantener el cdigo
necesario y en algunos casos datos que se requiere que estn presentes al
arrancar o iniciar un sistema dado. Dicho software generalmente conocido como
firmware es simplemente un programa de computador que se encuentra embebido
en un sistema y contiene la aplicacin que hace funcional al sistema, por ejemplo
en un computador el firmware que se encuentra en la BIOS (Basic Input/output
System) normalmente implementado en memorias ROM, contiene el cdigo
necesario que se encarga de inicializar todos los dispositivos de E/S a un estado
conocido. Los fabricantes de computadores normalmente las emplean en sistemas
de soporte o placas madre en los que el firmware es estable y se presenta la
ventaja de reducir los costos de produccin.
Figura 18. Memoria ROM (Read Only Memory).

Las memorias ROM en esencia son fabricadas a partir de grandes arreglos de
diodos como se puede apreciar en la figura 18, el estado inicial de la memoria es
como si todos sus elementos de almacenamiento se encontrasen en 1s, cada
byte se leer como 0xFF, el proceso para cargar la informacin en la memoria se
conoce como quemar la ROM por el hecho de que consiste en suministrar la

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

corriente suficiente en los diodos apropiados para volarlos o quemarlos
entonces se crearn ceros en estas posiciones.
5.4. PROM (Programmable Read-Only Memory).
Muy similares a las ROM con la diferencia de que se trata del mismo arreglo de
diodos pero a cada diodo es conectado en serie un fusible que ser el elemento
fundido en el proceso de quemado.

Figura 19. Esquema de los componentes internos de las Memorias PROM
(Programmable Read Only Memory).



5.5. EPROM (Erasable Programmable Read-Only Memory).
Las OTP-ROMs son buenas para la produccin en masa de productos
completamente terminados pero en etapas de diseo y depuracin resultan un
desperdicio puesto que a cada cambio realizado se requerira quemar una nueva
memoria y desechar otra. Para tal efecto las memorias EPROM presentan la
caracterstica que pueden ser borradas mediante el efecto de la incidencia de
rayos ultravioleta sobre la superficie del integrado gracias a una ventana ubicada
en el chip (ver figura 20), su desventaja radica en la necesidad de remover el
integrado de su ubicacin en el sistema para borrar su contenido, adems este
proceso demora muchos minutos dependiendo del dispositivo, luego hay que
volver a quemar el dispositivo y volver a probar el funcionamiento del circuito,
resultando este proceso en tiempos muy lentos de depuracin de errores.
Figura 20. Memoria EPROM (Erasable Programmable Read Only Memory).



UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Tanto las memorias EPROM como sus predecesoras OTP son raramente
utilizadas en la actualidad adems sus capacidades normalmente no exceden 1
Mb.
5.6. EEPROM (Electrically Erasable Programmable Read-Only Memory).
Las memorias de solo lectura elctricamente borrables tambin conocidas como
E2PROM son dispositivos que pueden ser borrados y programados en circuito
(in-circuit) es decir en la posicin en que estn implementadas su capacidad es
significativamente menor que la ROM estndar (tpicamente algunos Kb) por lo
tanto no estn habilitadas para almacenar firmware. En lugar de esto se emplean
normalmente para almacenar parmetros y datos que deben ser retenidos en los
sistemas durante los tiempos de apagado.
Comnmente los microcontroladores incorporan pequeas memorias EEPROM
para almacenar diferentes parmetros, esto es de gran utilidad en sistemas
embebidos y puede ser empleado para almacenar parmetros de configuracin,
direcciones de red, nmeros seriales, etc.

5.7. Memorias FLASH.
Es la tecnologa ROM mas actualizada y es la dominante en el mercado actual,
poseen caractersticas de reprogramacin como la EEPROM y la gran capacidad
de la ROM, Tambin son conocidos como FLASH-ROM o FLASH-RAM pero
siendo rigurosos no pertenece a ninguno de estos grupos.
Las memorias FLASH almacenan informacin en arreglos de celdas de memoria
hechos a partir de transistores de compuerta flotante stos tienen la capacidad de
almacenar pequeas cargas durante periodos extendidos de tiempo as no exista
una fuente de energa. Las memorias FLASH internamente se encuentran
divididas por sectores que pueden ser borrados y programados sin afectar el
contenido de los dems, normalmente para que un sector sea escrito primero
debe ser borrado a diferencia de las RAM que pueden ser sobre-escritas por lo
tanto no pueden ser de acceso aleatorio.
Las celdas de memoria tradicionales single-level cell (SLC) manejan un solo nivel
es decir que solo pueden almacenar un bit de informacin, algunas mejoras se
han implementado obteniendo lo que se conoce como multi-level cell (MLC) estas
pueden almacenar mas de 1 bit por celda seleccionando entre mltiples niveles de
carga aplicada a las compuertas flotantes de dichas celdas.

Figura 21. Memoria FLASH

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS



5.8. MMU (Memmory Management Unit).
Es un dispositivo empleado para el manejo y acceso a memoria de datos que son
requeridos por el procesador, entre sus funciones se encuentran la traduccin de
direcciones virtuales a direcciones fsicas, proteccin de la memoria, control del
cach y administracin de los buses tanto de datos como de direcciones.

6. Bus de datos, direcciones y control.
En una arquitectura dada, el bus es el conjunto de conductores elctricos en forma
de pistas metlicas impresas sobre una tarjeta, por donde circulan las seales que
corresponden a los datos binarios del lenguaje mquina con que opera la unidad
de procesamiento. Son los encargados de las transferencias internas de datos en
un sistema en funcionamiento. En un bus todos los nodos reciben los datos
aunque stos se dirijan a nodos especficos, los nodos a los que no van dirigidos
los datos simplemente ignoran dichos datos.

Hay tres clases de buses: Bus de Datos, Bus de Direcciones y Bus de Control. El
primero mueve los datos entre los dispositivos perifricos del sistema, en un
computador por ejemplo hay dispositivos de entrada como el Teclado, el Escner,
el Ratn, etc.; de salida como la Impresora, el Monitor o la tarjeta de Sonido; y de
Almacenamiento como el Disco Duro, el Diskette o la Memoria-Flash. El Bus de
Direcciones, por otra parte, est vinculado al bloque de Control de la CPU para
tomar y colocar datos en el Sub-sistema de Memoria durante la ejecucin de los
procesos de cmputo. El Bus de Control transporta seales de estado de las
operaciones efectuadas por el CPU con las dems unidades.

El nmero de pistas dedicado a cada uno de los buses est relacionado con el
ancho de canal. Ancho de canal se refiere a la cantidad de bits que pueden ser

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

transferidos al mismo tiempo, es decir, al nmero de lneas disponibles para mover
datos, controlar dispositivos o direccionar memoria. Una CPU como el MC68000
usa 24 lneas (24 bits) para direccionar la memoria y 16 lneas (16 bits) para
mover datos entre la CPU y la memoria. Es decir, se tiene un ancho de canal de
direcciones de 24 bits y un ancho de canal de datos de 16 bits.

Un bus de datos con n bits, implica que n bits pueden ser transferidos al mismo
tiempo, es decir, en paralelo. Con lo anterior, el procesador MC68000 podr mover
16 bits a la vez (equivalente a 2 bytes 1 word) El ancho de canal establece
tambin el valor mnimo y mximo que se puede enviar o transferir al tiempo.
Para el bus de direcciones, el "ancho de canal" explica la cantidad de ubicaciones
o direcciones diferentes que el microprocesador puede alcanzar. Si se tiene una
cantidad m de bits o lneas de direcciones, la cantidad de ubicaciones resulta de
elevar 2 a la m potencia. "2" porque son dos las seales binarias, los bits 1 y 0; y
"m potencia" porque las m pistas del bus de direcciones son, en un instante dado,
un conjunto de m bits.

En el MC68000 se puede tener una cantidad de posiciones de memoria
direccionables de: 224 = 16777216. Al nmero de direcciones que la CPU puede
emplear se le conoce con el nombre de espacio de direcciones de la CPU.
Leccin 12: Arquitecturas ms Comunes.
La arquitectura de un sistema embebido es una abstraccin del dispositivo, esto
significa que se trata de una generalizacin del sistema que normalmente no
detalla informacin de implementacin ni cdigos fuente o diseos de hardware, a
nivel de arquitectura los componentes software y hardware son representados por
elementos ya sea internos o externos al sistema embebido que describen
comportamientos propiedades e interacciones que se pueden dar entre los
diferentes elementos. Dentro del trmino arquitectura se engloban aspectos como
formato de instruccin, modos de direccionamiento, conjunto de instrucciones,
entre otros.
La informacin a nivel de arquitectura es representada como estructuras, una
estructura es una representacin que contiene un conjunto de informacin de
diversos elementos, propiedades e interacciones, podra decirse que se trata de
una especie de imagen que enmarca el hardware y el software durante el diseo
y/o puesta en marcha, dadas unas condiciones y un grupo de elementos. Puesto
que es complicado recoger en una sola imagen toda la complejidad de un sistema,
la arquitectura de un sistema embebido normalmente est conformada por ms de
una estructura que inherentemente se encuentran relacionadas unas con otras.
Todo sistema embebido cuenta con los siguientes componentes:

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Una Unidad Central de Procesamiento (CPU) encargada de procesar la
informacin.
- Memoria para el almacenamiento de Instrucciones y Datos que sern
procesados por la CPU.
- Medios de comunicacin entre la CPU y la memoria (Buses de
Direcciones, Datos y Control).
- Medios de comunicacin entre la CPU y el mundo exterior (Buses de
Direcciones, Datos y Control).

La forma en que estos elementos estn conectados vienen definidos por las
denominadas arquitecturas Von Neumann y Harvard.

1. Arquitectura Von Neumann.
La arquitectura Von Neumann debe a su nombre al conocido matemtico John
Von Neumann, que propuso el concepto de programa almacenado. La idea
principal de esta arquitectura es el empleo del mismo dispositivo de
almacenamiento tanto para las instrucciones como para los datos. Los sistemas
con la arquitectura Von Neumann constan de cinco partes: La unidad aritmtico-
lgica o ALU, la unidad de control, la memoria, dispositivo de entrada/salida y el
bus de datos que proporciona un medio de transporte de los datos entre las
distintas partes.

Un dispositivo con arquitectura Von Neumann realiza o emula los siguientes pasos
secuencialmente:

- Al encender el sistema se llama la instruccin desde la memoria en la
direccin indicada por el contador de programa y la guarda en el registro de
instruccin.
- Se aumenta el contador de programa dependiendo de la longitud de la
instruccin para apuntar a la siguiente.
- Se decodifica la instruccin mediante la unidad de control. sta se encarga
de coordinar el resto de componentes del ordenador para realizar una
funcin determinada.
- Se ejecuta la instruccin. sta puede cambiar el valor del contador del
programa, permitiendo as operaciones repetitivas. El contador puede
cambiar tambin cuando se cumpla cierta condicin aritmtica, haciendo
que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier
grado de complejidad, mediante la aritmtica y lgica anteriores. Luego,
vuelve a ejecutarse el primer paso.

Hoy en da, la mayora de ordenadores estn basados en esta arquitectura,
aunque pueden incluir otros dispositivos adicionales, (por ejemplo, para gestionar
las interrupciones de dispositivos externos como ratn, teclado, etc).


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

2. Arquitectura Harvard.
A diferencia de la arquitectura Von Neuman, la Harvard se caracteriza por la
existencia de dispositivos de almacenamiento diferentes para programas y para
datos, el trmino proviene de la computadora Harvard Mark I, que almacenaba las
instrucciones en cintas perforadas y los datos en interruptores. La idea es la
existencia de dos buses de datos distintos, uno que controla el acceso a la
memoria donde se almacenan las instrucciones que son ejecutadas por la unidad
de procesamiento y el otro que sirve para acceder a los datos u operandos de
dichas instrucciones.

Una ventaja de esta arquitectura sobre la Von Neumann radica en el empleo de
memorias de acceso de alta velocidad (SRAM) utilizadas como cach tanto para
datos como para instrucciones para mejorar le eficiencia del acceso a estos por
parte del procesador. Por otro lado, tiene el inconveniente de tener que dividir la
cantidad de cach entre los dos, por lo que funciona mejor slo cuando la
frecuencia de lectura de instrucciones y de datos es aproximadamente la misma.
Esta arquitectura suele utilizarse en DSPs.
3. Arquitectura de la CPU.

Referida propiamente al diseo de la CPU. Normalmente este diseo se basa en
la filosofa CISC (Complex Instruction Set Computer) o RISC (Reduce Instruction
Set Computer). Antes de entrar en detalle de estas filosofas de diseo, conviene
ver algunas definiciones previas.
3.1. Formato de Instrucciones.

Cada procesador puede realizar muchas operaciones con datos que se
encuentran en la memoria. Ellos tienen un conjunto de instrucciones ISA
(Instruction Set Architecture), las cuales sirven para indicarle la realizacin de una
determinada operacin. El procesador toma de la memoria un cdigo que le indica
la operacin a realizar, adems de tomar de all otros cdigos que le indican de
donde tomar los operandos y ms. A este conjunto de cdigos se le denomina
formato de instruccin.
Cada formato de instruccin incluye:

- Operacin a realizar, contenida en un cdigo denominado OpCode (Cdigo
de Operacin).
- Longitud de la instruccin.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Registro o direccin de memoria donde se encuentran los datos. (Modo de
direccionamiento a usar).
- Extensiones en el formato de instruccin que sirven para o Colocar valores
de desplazamiento. o Indicar extensiones en el modo de direccionamiento.
o Colocar valores inmediatos o direcciones absolutas.

3.2. Conjunto de Instrucciones.

Un conjunto de instrucciones, repertorio de instrucciones o arquitectura del
conjunto de instrucciones (ISA) es una especificacin que detalla las instrucciones
que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos
los comandos implementados por un diseo particular de una CPU. El trmino
describe los aspectos del procesador generalmente visibles a un programador,
incluyendo los tipos de datos nativos, las instrucciones, los registros, la
arquitectura de memoria y las interrupciones, entre otros aspectos.
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para
distinguir este conjunto de caractersticas de la microarquitectura, que son los
elementos y tcnicas que se emplean para implementar el conjunto de
instrucciones. Entre estos elementos se encuentran las microinstrucciones y los
sistemas de cach.
Procesadores con diferentes diseos internos pueden compartir un conjunto de
instrucciones; por ejemplo el Intel Pentium y AMD Athlon implementan versiones
casi idnticas del conjunto de instrucciones x86, pero tiene diseos internos
completamente distintos.

3.3. Modos de direccionamiento.

Mecanismo que permite conocer la ubicacin de un dato o instruccin, es decir, le
dice a la CPU como obtener la direccin efectiva (E.A. = Effective Address) donde
se encuentra el operando. Se definen los siguientes parmetros dentro del modo
de direccionamiento:
- Objeto: dato o instruccin que se desea direccionar.
- Una CPU dispone de varios modos de direccionamiento.
- Objetivos de los modos de direccionamiento:
o Reducir el espacio ocupado en memoria por las instrucciones.
o Permitir la reubicacin del cdigo.
o Facilitar el manejo de las estructuras de datos.

3.3.1. Modos de direccionamiento en las instrucciones.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Los operandos y el resultado de una instruccin son accedidos a travs de los
modos de Direccionamiento que la CPU posee. Algunos campos del formato de
instruccin, contienen informacin acerca del modo de direccionamiento empleado
para conocer la E.A. del operando. En la seccin 2.6.1 se explicaron los diferentes
mtodos de direccionamiento de las direcciones por lo que a continuacin solo
sern nombrados a manera de repaso: inmediato, directo, indirecto, relativo,
indexado.
3.4. Filosofa CISC de diseo de CPUs.
Del ingls Complex Instruction Set Computer. Conjunto de microprocesadores
cuyo conjunto de instrucciones se caracteriza por ser muy amplio y permitir
operaciones complejas entre operandos situados en la memoria o en los registros
internos, en contraposicin a la arquitectura RISC.
Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en
la actualidad, la mayora de los sistemas CISC de alto rendimiento implementan
un sistema que convierte dichas instrucciones complejas en varias instrucciones
simples del tipo RISC, llamadas generalmente microinstrucciones.

Los CISC pertenecen a la primera corriente de construccin de procesadores,
antes del desarrollo de los RISC. Ejemplos de ellos son: Motorola 68000, Zilog
Z80 y toda la familia Intel x86 usada en la mayora de ordenadores personales del
planeta. Hay que hacer notar, sin embargo que la utilizacin del trmino CISC
comenz tras la aparicin de los procesadores RISC como nomenclatura
despectiva por parte de los defensores/creadores de stos ltimos.

3.5. Filosofa RISC de diseo de CPUs.
En arquitectura computacional, RISC del ingls Reduced Instruction Set Computer
(Computadora de Conjunto de Instrucciones Reducido). Tipo de
microprocesadores con las siguientes caractersticas fundamentales:

- Instrucciones de tamaos fijos y presentadas en un reducido nmero de
formatos (modos de direccionamiento simples).
- Slo las instrucciones de carga y almacenamiento acceden a memoria por
datos.
- Adems, estos procesadores suelen disponer de muchos registros de
propsito general.

El objetivo de disear mquinas con esta arquitectura es posibilitar la
segmentacin y el paralelismo en la ejecucin de instrucciones y reducir los
accesos a memoria. Las mquinas RISC protagonizan la tendencia actual de

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

construccin de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM... son
ejemplos de algunos de stos.

RISC es una filosofa de diseo de CPU para computadora que esta a favor de
conjuntos de instrucciones pequeos y simples que toman menor tiempo para
ejecutarse. El tipo de procesador ms comnmente utilizado en equipos de
escritorio, el x86, est basado en CISC en lugar de RISC, aunque las versiones
ms nuevas traducen instrucciones basadas en CISC x86 a instrucciones ms
simples basadas en RISC para uso interno antes de su ejecucin.
La idea fue inspirada por el hecho de que muchas de las caractersticas que eran
incluidas en los diseos tradicionales de CPU para aumentar la velocidad estaban
siendo ignoradas por los programas que eran ejecutados en ellas. Adems, la
velocidad del procesador en relacin con la memoria de la computadora que
acceda era cada vez ms alta. Esto conllev a la aparicin de numerosas
tcnicas para reducir el procesamiento dentro del CPU, as como de reducir el
nmero total de accesos a memoria.
Leccin 13: Comparacin de los dispositivos ms comunes.

A la hora de escoger un dispositivo para desarrollar una determinada aplicacin se
deben tener en cuenta diferentes aspectos que incluyen la revisin de
requerimientos tcnicos, presupuestos, etc. La idea es seleccionar un dispositivo
que rena todas las caractersticas que un diseo requiera sin necesidad de
emplear dispositivos sobredimensionados para dicha aplicacin. Para facilitar este
hecho a continuacin se presentan las caractersticas, ventajas y desventajas que
representan los diferentes dispositivos.

1. Arreglos de Compuertas Programables.
Para definir este tipo de dispositivos se puede pensar en un hardware que es
configurado para ser convertido en un sistema digital especfico, describiendo su
arquitectura mediante un lenguaje de programacin de alto nivel.

Existe una amplia variedad de este tipo de dispositivos entre los que se
encuentran: PLAs (Program Logic Arrays), PAL (Programmable Array Logic),
GALs (Generic Logic Arrays), FPGA (Field Programmable Gate Arrays).
El hardware configurable puede consistir en arreglos mltiples de compuertas
AND de entrada configuradas para alimentar arreglos mltiples de compuertas OR
esto permite la implementacin de complejos circuitos de lgica combinacional
utilizando la representacin estndar en productos de sumas. Muchos de estos
dispositivos programables adems estn habilitados para la implementacin de
circuitos secuenciales puesto que contienen bloques con flip-flops. Para diseos

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

mucho ms avanzados las PFGA pueden ser programadas con algoritmos
extremadamente complejos en el desarrollo de aplicaciones especficas,
normalmente estos sistemas digitales complejos son programados empleando
VHDL (Verilog Hardware Descriptive Language), como su nombre lo dice se trata
de un lenguaje de programacin de alto nivel empleado para la descripcin de
este tipo de hardware.
Aunque son dispositivos que presentan grandes ventajas y funcionalidades, los
sistemas de desarrollo son un poco costosos sumado al hecho de que sera
sobredimensionado utilizar este tipo de dispositivos en aplicaciones pequeas que
no requieran una cantidad importante de procesamiento o que no requiera una
cantidad muy grande de pines de entrada/salida.

2. Microprocesadores:

Los microprocesadores son conocidos por ser los principales circuitos integrados
en el interior de los computadores personales, empleados normalmente para
resolver una amplia cantidad de tareas. Los microprocesadores interpretan las
diferentes instrucciones y procesa los datos contenidos en los programas de los
computadores, adems se encargan de coordinar las diferentes funciones internas
de los PC, manejo de memoria, manejo de puertos y perifricos, de realizar los
diferentes cmputos requeridos, etc. El microprocesador por si solo no maneja
todo el funcionamiento de un PC, se requiere la existencia de una serie de
integrados a los que entrega instrucciones para que estos se encarguen de
ejecutar acciones dependiendo de su funcin en el sistema.

Desde la aparicin de los microcontroladores se emplean en menor medida en
sistemas embebidos teniendo en cuenta los costos puesto que se requeriran una
serie extra de integrados por ejemplo memorias, conversores A/D, etc, para
obtener la misma funcionalidad de los microcontroladores.

3. Procesadores digitales de Seal (DSPs):

Como su nombre lo indica, un DSP (Digital Signal Processor) es empleado cuando
se requiere realizar complejos anlisis de seales en volmenes considerables y
en tiempos reducidos, tambin manejan procesamiento de informacin en punto
flotante de manera eficiente, un ejemplo de este tipo de aplicaciones es el
procesamiento y acondicionamiento de seales de audio en telefona celular.
Para efectos del curso este tipo de dispositivos son demasiado
sobredimensionados puesto que las aplicaciones que se realizarn a manera de
prcticas y proyectos no requieren toda la velocidad ni el volumen de
procesamiento que un dispositivo de estos puede brindar.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

4. Microcontroladores:

Un microcontrolador (MCU) es un sistema con varios de los subsistemas que
posee un computador, integrados en un solo chip, entre los que se encuentran
puertos de entrada/salida, sistemas de temporizacin, memorias, una unidad
aritmetico-lgica (ALU) que provee la capacidad de realizar operaciones
aritmticas y lgicas as como la generacin de seales de control. Normalmente,
un microcontrolador se considera como un computador integrado en un solo chip
pero con unas prestaciones bastante reducidas, siendo ste optimizado para
aplicaciones especficas, son empleados cuando se requiere una moderada
cantidad de inteligencia local para una determinada aplicacin, aunque es posible
realizar operaciones en punto flotante con un microcontrolador, est mejor
calificado para trabajar con nmeros enteros.
Dependiendo de la casa fabricante y de la familia a la que pertenecen los
componentes de los microcontroladores pueden variar, donde por familia se
entiende como grupos de MCUs que se especializan en aplicaciones de diferente
complejidad, entre los elementos que contiene un MCU ms comunes se tiene:

- Unidad central de procesamiento o CPU. Normalmente con unas
prestaciones muy reducidas a las de un procesador tradicional.
- Memoria tanto de programa como de datos. La cantidad es muy reducida
pero suficiente para manejar una aplicacin especfica. Se incluye memoria
RAM, EPROM, EEPROM y/o FLASH.
- Generador de reloj para el funcionamiento y sincrona de todo el MCU.
- Perifricos de E/S tales como:
o Puertos de Entrada/Salida.
o Lneas de interrupcin externa.
o Conversores A/D y D/A.
o Generadores de base de tiempo.
o Comunicacin serial mediante protocolos UART, SPI, I2C, USB,
CAN, LIN, etc.
o Temporizadores de propsito especfico, captura de eventos y
generadores de seal PWM.
o Controladores de LCD grficos y de caracteres.

Como se puede observar, los microcontroladores son los dispositivos mas
completos y mejor dimensionados para el desarrollo de sistemas embebidos de
propsitos especficos que no requieran mayor cantidad de procesamiento. Por lo
tanto desempean un papel importante para el desarrollo del presente curso
puesto que forman la base de partida para el entendimiento general de los
diferentes dispositivos y sistemas digitales vistos hasta ahora.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

5. Mezcla de procesamiento con microcontrolador y FPGA:

Debido a que es importante poner en una balanza la complejidad del diseo a
implementar y el hecho de escoger la tecnologa mas adecuada para una
aplicacin dada, no siempre escoger una sola tecnologa es la mejor opcin. Las
tendencias actuales en diseos digitales es la de utilizar mezclas como en el caso
de el acople de una FPGA con un microcontrolador.
Leccin 14: Microcontroladores HC08

El 68HC08 tambin conocido como HC08 es una familia de microcontroladores de
8 bits de la casa fabricante Freescale (compaa creada a partir de la divisin de
semiconductores de Motorola en 2004). Su arquitectura es Von Neumann, es decir
con un solo bloque de memoria.
Los HC08 son microcontroladores de propsito general, cada miembro de esta
familia cuenta con una CPU comn que controla diferentes perifricos, facilitando
con ello el diseo de aplicaciones. Entre los perifricos internos que cuentan
estos microcontroladores estn: conversores anlogos-digitales, mdulo de control
de tiempos y sistemas de comunicacin como SPI, IC, USB o SCI o UART entre
otros.

Freescale implement mejoras a esta familia de microcontroladores resultando la
familia HCS08 que ofrece mejoras en algunas de las instrucciones y agrega otras
nuevas, adems en esta mejora los programas que corren en los
microcontroladores pueden ser corregidos empleando un puerto dedicado llamado
BDM (Backgound Debug Module) , que mejora la versatilidad y amplia la gama de
aplicaciones posibles. Existen infinidad de entornos de desarrollo tanto pagos
como libres, para compilar programas realizados en assembler existe un
compilador gratuito de la firma P&E Micro, para compilar en C los compiladores
ms utilizados son Freescale Codewarrior (licenciado) o SDCC, un proyecto muy
interesante y funcional que permite compilar cdigo escrito en C para mltiples
plataformas de microcontroladores.

1. Arquitectura.
En la figura 22 se observa los dispositivos de la familia HC08 presentan muchos
de los elementos ya vistos a lo largo de esta unidad otros sern explicados mas
adelante; por el momento basados en la figura 22 solo sern enumeradas las
caractersticas generales que presentan esta familia de dispositivos.

Figura 22: Esquema de componentes de la arquitectura de la familia HC08.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


- Control de estado del sitema: (SIM:System Integration Module).
o Modos de bajo consumo (Wait, Stop ).
o LVI (Low Voltaje Inhibit), monitor de VDD Bajo.
o COP(Computer Operating Properly), perro guardian o Watch Dog.
o Deteccin de Cdigo de operacin ilegal.
o Deteccin de direccionamiento no vlido.
o POR: Power On Reset.
o Control de reset interno o externo.
o Retardo de encendido temporizado.
o Control de interrupciones y prioridades.

- Memoria:
o Mapeada en su totalidad en un nico espacio.
o Indiferencia para guardar datos y programa en cualquier espacio.
o Modo de bajo consumo para almacenamiento en RAM.
o Flash y EEPROM programables internamente.
o 10.000 ciclos de escritura y borrado.
o 10 Aos de retencin de datos.

- Temporizacin:
o Temporizadores (Timers) de 16 bits multicanal y multifuncin.
Entradas de captura.
Salidas por comparacin.
Salidas PWM.
o Generadores de base de tiempos para aplicaciones en tiempo real.
o Mdulo PLL para trabajar con cristales de baja frecuencia:
Reduccin de EMI (Electro-Magnetic Interference).
Control de consumo.
o Opcionalmente versiones con reloj interno (minimizacin de
elementos de montaje).

- Comunicaciones:
o UART 7, 8, 9 Bits velocidad programable y deteccin de errores.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

o Interfase serie sincrnica SPI hasta 4 MHz (Fbus/2).
o USB a 1.5Mbps.
o Soporte de Bus CAN.
o Buffers de transmisin/recepcin.

- Entradas y Salidas:
o Conversores A/D de 8/10 bits de aproximaciones sucesivas.
o Puertos de E/S Configurables.
o Pines independientes configurables.
Pull/ups internos activos/desactivos.
o Interfaz para teclado externo por interrupcin, funcin Wake-up.

A continuacin se entra a analizar deferentes aspectos de la arquitectura de los
microcontroladores de la familia HC08:

2. Temporizacin.
Una fuente de reloj de alta frecuencia (tpicamente derivada de un cristal
conectado al MCU) se usa para controlar las secuencias de instrucciones de la
CPU. La mayora de los HC08 incluyen un circuito PLL en su interior cuya funcin
es generar frecuencias mas grandes a partir de la frecuencia del cristal, los MCUs
tpicos dividen la frecuencia base del cristal por dos o ms para obtener un reloj de
frecuencia de bus.

Cada lectura o escritura de memoria toma un perodo (ciclo) de la frecuencia de
bus, por ejemplo, con un cristal de 4 MHz dividido por 2 obtiene la frecuencia
interna de reloj del procesador de frecuencia de bus de 500 nS. La mayora de las
instrucciones toman de dos a cinco de estos periodos; como resultado , la CPU es
capaz de ejecutar ms de 500.000 instrucciones por segundo.

3. Funcionamiento interno de la CPU.
Todos los MCUs de la familia HC08 incluyen en su interior la CPU08 como unidad
central de proceso, la diferencia entre los dispositivos de esta familia radica en la
cantidad de memoria y los perifricos disponibles.
La CPU08 bsicamente est dividida en dos bloques principales: Unidad de
Control y Unidad de Ejecucin. La primera contiene una mquina de estados finita
con lgica de sincronizacin y control. Las salidas de sta controlan la segunda
unidad, la cual contiene una ALU, registros y una interfaz hacia el bus de datos y
direcciones.

Internamente, la CPU utiliza cuatro fases de reloj para conformar lo que se
denomina un ciclo de ejecucin de la CPU o simplemente ciclo de bus, el cual
tiene un periodo igual al periodo de la frecuencia del bus, siendo 4 veces el

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

periodo del cristal/oscilador externo. La frecuencia de bus es la frecuencia del
cristal, oscilador externo o la salida del mdulo PLL dividido por 4.



Donde CGMXCLK hace referencia a la frecuencia de entrada al mdulo, la cual
proviene directamente del oscilador/cristal externo. CGMVCLK es la frecuencia
generada por el mdulo PLL en los MCUs que disponen de l.

4. Consideraciones sobre la pila de la CPU08.
La pila del sistema es una zona de memoria RAM direccionada por el puntero de
pila o SP, la cual sirve para almacenar informacin temporalmente. El SP siempre
est apuntando a una direccin libre de la pila o stack.

La CPU utiliza la pila para:

- Almacenar el contenido del PC cuando se hace un llamado a subrutina
(BSR o JSR) con el fin de poder retornar cuando ella finalice, es decir,
cuando se encuentre la instruccin RTS (Return of Subrutine).
- Almacenar el contenido del PC y varios de los registros del modelo de
programacin cuando se produce una interrupcin de manera que se pueda
retomar la ejecucin del programa en donde sta se present. La
finalizacin de una subrutina de atencin a interrupcin se da cuando se
ejecuta la instruccin RTI (Return of Interrupt).

Adicionalmente, el programador puede utilizar la pila para:

- Almacenar informacin temporal cuando est realizando operaciones
aritmticas.
- Enviar parmetros a las subrutinas.
- Retornar parmetros desde una subrutina.

La CPU08 ofrece un conjunto de instrucciones que permiten manipular el puntero
de pila SP con el fin de poder colocar/tomar datos en/desde la pila, incluso, el
programador en cualquier momento podr reubicar la posicin del SP haciendo
uso de la instruccin TXS (transferir H:X a SP). Por compatibilidad con la familia
HC05 el puntero de pila arranca en la direccin de memoria $00FF.

La pila en la CPU08 trabaja como una memoria LIFO (Last Imput First Output)
(ltimo en entrar primero en salir) siendo necesario tener presente este concepto a
todo momento.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

5. Mapa de Memoria del 68HC08
Para la familia HC08 el mapa de memoria se puede apreciar en la figura 23, se
puede apreciar que comienza con los registros de los perifricos (64 bytes),
seguido del espacio para la RAM, despus existe un espacio no utilizable por el
usuario empleado para realizar verificaciones de direcciones ilegales, luego sigue
el espacio para la memoria ROM o FLASH, finalmente siguen otros registros de
propsitos especficos (ver figura 23).
Figura 23: Mapa de memoria para la familia 68HC08.

6. Juego de instrucciones.
La familia 68HC05 posee un juego de instrucciones de 85 elementos, sobre esta
base trabaja tambin la familia 68HC08 pero aadiendo 28 instrucciones que
complementan a las bsicas para aadir mayor funcionalidad y eficiencia a estos
dispositivos; por el momento se presentan las instrucciones en la Tabla 3 para que
el estudiante se familiarice con los nombres y su funcionalidad general sin entrar a
especificar su sintaxis y funcionalidad especfica, se resaltan en rojo las
instrucciones aadidas a la familia 68HC08.

Tabla 3: Juego de instrucciones de la familia 68HC08:
Transferencia de Datos LDA, LDX, STA, STX, TAX, TXA, LDHX, MOV,
PSHA, PSHH, PSHX,PULA, PULH, PULX, STHX

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Aritmticas ADD, ADC, SUB, SUBC, MUL, DAA, DIV
Manipulacin de Datos INCA, INCX, INC, DECA, DECX, DEC, CLR, NEGA,
NEGX, NEG, AIS, AIX, CLRH
Rotacin y
Desplazamiento
ROLA, ROLX, ROL, RORA, RORX, ROR, LSLA,
LSLX, LSL, LSRA, LSRX, LSR, ASRA, ASRX, ASR
Manipulacin de bits BSET, BCLR
Lgicas AND, ORA, EOR, COMA, COMX, COM, NSA
Comparacin CMP, CPX, BIT, TSTA,TSTX, TST, BRCLR, BRSET,
CPHX
Salto condicional BRA, BRN, BSR, BHI, BLO, BHS, BLS, BPL, BMI,
BEQ, BNE, BCC, BCS, BHC, BHCC, BHCS, BMC,
BMS, BIL, BIH, BGE, BGT, BLE, BLT, CBEQ,
CBEQA, CBEQX, DBNZ.
Salto incondicional JMP, JSR, RTS
De Control SEC, CLC, SEI, CLI, SWI, RTI, RSP, NOP, WAIT,
STOP, TAP,TPA, TSX, TXS

A lo largo del curso se explicarn la sintaxis y funcionalidad de algunas de las
instrucciones a manera de ejemplo, es tarea del estudiante buscar en las hojas de
datos y en documentos de la red la manera de utilizar las dems instrucciones
para conocer su funcionalidad y que tenga las bases adecuadas en caso de que
requiera utilizarlas de forma ptima en sus prcticas. El manual de referencia de la
CPU HC08 detalla claramente cada una de las instrucciones que soporta, otra
buena opcin es el Juego de instrucciones del HC08 [19] con explicacin
detallada, sintaxis y ejemplos de programacin.

7. Modelo de programacin.
El modelo de programacin de la CPU del HC08 es similar al de su predecesor el
68HC05 agregando algunas mejoras (ver figura 24), tambin este modelo es
comn a toda la familia independientemente de la cantidad de recursos que posea
un dispositivo determinado.

Figura 24. Modelo de programacin de la familia de microcontroladores 68HC08.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


A continuacin se explica el uso de cada uno de los registros del la figura 24:
Acumulador (A): es un registro de 8 bit de propsito general empleado por la
CPU para mantener operandos y resultados de operaciones aritmticas y lgicas.
Registro ndice (H:X): es un registro de 16 bits empleado para los modos de
direccionamiento indexados en el espacio de memoria de 64 Kb de la CPU,
tambin puede ser utilizado como acumulador auxiliar. Se diferencia la parte alta
o byte de de mayor peso (H) de la parte baja o byte de menor peso (X) puesto que
existen diferentes comandos y operaciones para manipular cada una. En las
instrucciones indexadas, el registro X provee un valor de 8 bits que es sumado a la
direccin base provista por la instruccin para crear una direccin efectiva. El
valor provisto por la instruccin puede ser de 0, 1 2 bytes de largo.
Apuntador de Pila o Stack Pointer (SP): es un registro de 16 bits que contiene la
direccin de la RAM referida a la posicin libre de la pila del sistema (stack) mas
adelante de ahondara en ste. Despus de resetear el sistema el SP es cargado
con un valor de $00FF. Cuando un dato es almacenado en la pila, la direccin del
registro SP es decrementa, caso contrario ocurre cuando se toma un dato de la
pila. El SP siempre apunta a una posicin libre de la RAM.

Contador de Programa (PC): Es un registro de 16 bits que contiene la direccin
de la siguiente instruccin a ser ejecutada, normalmente la direccin contenida en
el PC se incrementa automticamente cada vez que se busca una instruccin en
memoria, a excepcin de casos como saltos absolutos o relativos, condicional,
incondicional o subrutina, en los que se carga en el PC la direccin donde el flujo
de programa debe continuar su ejecucin. Durante el Reset, el contador de
programa (PC) se carga con la direccin contenida en el "Reset Vector" que para
el MC68HC908 se encuentra en la posicin $FFFE y $FFFF. La direccin

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

contenida en el vector, es la direccin de la primera instruccin a ser ejecutada
despus de salir del estado de RESET.

Registro de Cdigo de Condicin (CCR): tambin conocido registro de estado
de la CPU, es un registro de 8 bits que contiene una mscara de interrupciones y
adems almacena 5 indicadores de estado que reflejan el resultado de alguna
operacin previa hecha por la CPU. Algunas instrucciones usan a los bits de
estado para tomar decisiones simples dependiendo de su estado.

Las banderas de este registro se pueden apreciar de la figura 24 y son:

Bit de Desbordamiento u Overflow (V): Bandera que indica el desbordamiento
en complemento a dos del resultado de la ltima operacin mediante un 1 lgico.
Bit de Acarreo Medio (H): Esta bandera es empleada en operaciones aritmticas
con nmeros decimales codificados en binario o BCD y es afectada por las
operaciones suma ADD o ADE. El bit H se pone en 1 cuando se produce un
acarreo del dgito hexadecimal de menos peso en los bits 3-0 al dgito de ms
peso en bits 7-4. Luego de la suma binaria de dos valores de 2 dgitos BCD, este
bit de semi-acarreo es parte de la informacin necesaria para volver el resultado a
un valor BCD vlido.
Bit de Mscara de Interrupcin (I): Este bit no es una bandera de estado, es un
bit de mscara de interrupcin que deshabilita todas las fuentes de interrupcin
enmascarables cuando el bit I est en uno. Las interrupciones estn habilitadas
cuando este bit est en cero. Cuando cualquier interrupcin ocurre, el bit I pasa
automticamente a uno luego de haber salvado los diferentes registros en la pila,
pero antes el vector de interrupcin es buscado. Si una interrupcin interna ocurre
mientras el bit I est en uno, la interrupcin es almacenada y procesada luego que
el bit I se ponga en cero; de esta manera, no se pierde ninguna interrupcin (IRQ)
que se presente cuando el bit est en uno. Luego de haber atendido a una
interrupcin, la instruccin retorno desde una interrupcin (RTI) provocar que los
registros recuperen sus valores previos. Normalmente, el bit I permanecera en
cero luego que fuese ejecutada la instruccin RTI. Luego de cualquier reset, el bit I
estar en uno y slo podr llevrselo a cero por medio de una instruccin.
Bit de Negativo (N): El bit N se pone en 1 cuando el resultado de la ltima
operacin aritmtica, lgica o de manipulacin de datos es negativo. Para los
valores signados segn la convencin de complemento a dos, se considera que
un nmero es negativo si el bit ms significativo es un uno.
El bit de Cero (Z): El bit Z se pone en 1 cuando el resultado de la ltima
operacin aritmtica, lgica o de manipulacin de datos es cero. Una operacin de

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

comparacin resta un valor desde la posicin de memoria que est siendo
evaluada. Si los valores son iguales antes de la comparacin, el bit Z se pondr en
uno.
Bit de Acarreo/Prstamo (C): El bit C es usado para indicar si ha habido o no
acarreo de una suma o pedido de prstamo como resultado de una resta. Las
instrucciones de desplazamiento y rotacin operan sobre y a travs del bit C para
facilitar operaciones de desplazamiento de mltiples bytes. El bit C es adems
afectado durante las instrucciones de evaluacin de bit y de bifurcacin.
8. Modos de direccionamiento.
La velocidad de cualquier sistema computacional radica en la habilidad de dicho
sistema para acceder datos e instrucciones en la memoria, esta capacidad la
brindan los diferentes modos de direccionamiento aprendidos. Cada variante de
los modos de direccionamiento debe tener un nico cdigo de operacin (op-code)
de instruccin. A continuacin se presentan los diferentes modos de
direccionamiento bsicos con su correspondiente ejemplo para aclarar su
funcionamiento:
- Inherente: este tipo de instrucciones no tienen operando puesto que ste se
define en el op-code de 8 bits. Por ejemplo si se quiere borrar el
acumulador se emplea la instruccin CLRA, que es una instruccin de un
solo ciclo para el HC08.

- Inmediato: las instrucciones que manejan direccionamiento inmediato
tienen dos operandos que siguen inmediatamente al op-code de 8 o 16 bits.
Por ejemplo la instruccin LDA #20 es una instruccin de 2 bytes que
carga el acumulador con el nmero 20 en dos siclos de reloj.

- Directo; stas no poseen la direccin de 8 bits del operando que sigue
inmediatamente al op-code, por lo tanto acceden directamente a los
primeros 256 bytes de la memoria (pgina directa o pgina cero). Por
ejemplo la instruccin LDA $40 carga el acumulador con el dato
almacenado en la posicin nmero 40 de la memoria, es una instruccin
de dos bytes y se ejecuta en tres ciclos de reloj.

- Extendido: stas proporcionan direccionamiento absoluto a cualquier
posicin de los 64Kb del mapa de memoria sin paginar, el op-code requiere
tres bytes mas dos de la direccin del operando. Ejemplo LDA $4000.

- Relativo: es empleado por las instrucciones de bifurcacin condicional, si la
condicin de bifurcacin es verdad el controlador de programa se agrega al
byte con signo que sigue inmediatamente al op-code de bifurcacin
obtenindose un rango de bifurcacin de -128 a +127 bytes, la

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

instrucciones de salto o salto a subrutina se pueden usar para mover el
contador de programa a cualquier posicin del mapa de memoria. Ejemplo
BIL LOOP.

- Indexado: este tipo de direccionamiento es clave para direccionar tablas y
estructuras similares de datos de manera eficiente, los modos bsicos para
el direccionamiento indexado son: indexado sin offset por ejemplo LDA ,X,
indexado con offset de 8 bits, por ejemplo LDA $40,X e indexado con offset
de 16 bits, ejemplo LDA $4000,X. El indexado sin offset se conoce en la
mayora de arquitecturas como el direccionamiento del puntero indirecto.

Hasta ahora estos modos de direccionamiento son compartidos por las familias 05
y 08 a continuacin se presentan los modos agregados para la familia HC08:

- Indexado: puede ser sin offset con incremento posterior o con offset de 8
bits con decremento posterior, son modos de direccionamiento indexado
con post-incremento automtico del puntero de ndice, por ejemplo:

o Indexado sin offset con incremento posterior:
CBEQ X+, Label.
o Indexado con offset de 8 bits con incremento posterior:
CBEQ $50,X+, Label.
- Stack Pointer: es un tipo de direccionamiento relativo del puntero de pila,
puede ser con offset de 8 bits o con offset de 16 bits. Su trabajo es similar
al modo indexado pero empleando el Stack Pointer en lugar del registro
ndice, Por ejemplo:

o Stack Pointer con offset de 8 bits: STA $10,SP.

o Stack Pointer con offset de 16 bits: STA $1000,SP.

- Mover de Memoria a Memoria: Para este fin se emplea el comando MOV
para mover los datos directamente sin emplear el acumulador, existen
diferentes formas en las que se puede ejecutar esta instruccin
dependiendo del modo de origen y el modo de destino:

o Inmediato a directo, por ejemplo:
MOV #20,$40

o Indexado a directo con incremento posterior, por ejemplo:
MOV X+, SCDR
o Directo a indexado con incremento posterior, por ejemplo:
MOV SCDR, X+

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Se puede tomar por ejemplo la instruccin ADD, sta toma un operando de
memoria y lo suma con el valor del registro A. En la Tabla 4 se observa que para
diferentes modos de direccionamiento el cdigo de operacin es diferente.
Siempre, en un cdigo de mquina, el primer (o primeros) byte es el cdigo de
operacin, seguido de los bytes complementarios como informacin para el modo
de direccionamiento empleado:
Tabla 4. Ejemplo de diferentes modos de direccionamiento con el comando ADD
Instruccin Modo de
direccionamiento
OpCode Adicin Cdigo de
Mquina
ADD #$45 Inmediato AB 1 AB45
ADD $50 Directo BB 1 BB50
ADD $FE00 Extendido CB 2 CBFE00
ADD ,X Indexado FB 0 FB
ADD $45,X Indexado, offset 8 bits EB 1 EB45
ADD $79F4,X Indexado, offset 16 bits DB 2 DB79F4
ADD $30,SP StackPointer, offset 8 bits 9EEB 1 9EEB30
ADD
$A47B,SP
StackPointer, offset 16
bits
9EDB 2 9EDBA47B

En la Gua Didctica del 68HC08 [20] que se encuentra en Internet (en espaol)
se pueden encontrar diferentes ejemplos de implementacin de los modos de
direccionamiento con su correspondiente explicacin detallada.

9. Reset, fuentes de interrupcin y enmascaramiento.
La CPU del microcontrolador ejecuta instrucciones de manera secuencial, sin
embargo, en muchas aplicaciones es necesario ejecutar un conjunto de
instrucciones en respuesta a una peticin hecha por algn perifrico, la cual,
normalmente se hace de manera asncrona con el programa que se est
ejecutando. El Reset y las interrupciones son excepciones propias de la CPU08.
Al conjunto de instrucciones que se deben ejecutar en respuesta a una peticin de
este tipo se denomina subrutina de atencin a la excepcin, la cual es llamada por
la CPU despus de detectar la excepcin o evento.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El reset es un mecanismo empleado para forzar al sistema del microcontrolador a
ir a un punto de partida conocido (direccin de memoria) de igual manera los
dispositivos de entrada y salida y en general todos los perifricos de un sistema
pasan a un estado inicial despus de un reset.

Las siguientes acciones internas ocurren como resultado de cualquier reset del
MCU:

1) Todos los registros de direccin de datos se colocan en cero (como
entradas).
2) El puntero a la pila (SP) es forzado a $00FF.
3) El bit I del CCR se pone en uno inhibiendo a las interrupciones
enmascarables.
4) El latch de interrupciones externas es borrado.
5) El latch de STOP es borrado.
6) El latch de WAIT es borrado.

Cuando el sistema de computadora sale de reset, el contador de programa se
carga con el contenido de las posiciones de memoria ms altas; el valor que se
encuentra en la segunda ms alta se carga en el byte ms significativo del PC y el
valor que se encuentra en la mas alta se carga en el byte menos significativo del
PC. Esto se denomina bsqueda del vector de reset.
En este punto la CPU comenzar la bsqueda y ejecucin de instrucciones,
comenzando por la direccin almacenada en el vector de reset.

Las siguientes condiciones pueden causar que el MCO se resetee:

- Externamente, una seal de entrada activa baja en el pin RESET.
- Internamente, al encender la fuente de alimentacin (POR: Power On
Reset).
- Internamente, expiracin de tiempo del cronmetro de vigilancia del
comportamiento apropiado de la computadora (COP: Computer Operating
Properly o Watchdog Timed Out).
- Un intento de ejecutar una instruccin desde una direccin ilegal.

9.1. Pin de Reset.

Un pulsador o un circuito externo pueden conectarse a este pin para permitir el
reset manual del sistema.

9.2. Reset al encender la Fuente de Alimentacin (Power-On Reset).


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El reset al encender la fuente de alimentacin ocurre al detectarse una transicin
positiva sobre VDD. Su uso es estrictamente para la condicin de encendido y no
podr utilizarse para detectar cadas de la tensin de la fuente de alimentacin.
Podr usarse un circuito inhibidor de baja tensin (LVI) para detectar cadas de la
fuente.

El circuito de power-on provee una demora de 4064 ciclos desde el momento en
que el oscilador se ha activado. Si el pin de /RESET exterior permanece en bajo al
expirar el tiempo de los 4064 ciclos de demora, el procesador permanecer en la
condicin de reset hasta que /RESET se coloque en alto.

9.3. Reset por Watchdog Timer.

El sistema de cronmetro de vigilancia del comportamiento apropiado de la
computadora (COP) se propone detectar errores de programas. Cuando se activa
el COP es responsabilidad del programa evitar que un cronmetro de vigilancia
que corre libremente llegue al final de su cuenta. Si llega a completar su cuenta,
sera una indicacin de que el programa no ha sido ejecutado por un largo perodo
de tiempo en la secuencia deseada; entonces se inicia el reset del sistema.
Un bit de control del registro (no voltil) mscara de opciones (MOR) puede usarse
para habilitar o deshabilitar el reset del COP. Si el COP es habilitado, la adecuada
operacin del programa debe peridicamente escribir un cero en el bit COPC del
registro de control COPR.

9.4. Reset por Acceso a Direccin Ilegal.

Si el programa es escrito incorrectamente, es posible que la CPU intente saltar o
bifurcar a una direccin en la que no haya memoria. Si esto sucede, la CPU podra
continuar leyendo datos (resultando ser valores impredecibles) e intentara actuar
en consecuencia si se tratase de programa. Estas instrucciones sin sentido
pueden provocar que la CPU escriba datos inesperados en memoria o registros
diseccionados inesperados. Esta situacin se llama desbocamiento.

El MCU posee un circuito detector de direcciones ilegales para evitar la condicin
de desbocamiento. Si la CPU trata de buscar una instruccin de una direccin que
no pertenece a la EPROM ($0300 - $07CF, $07F0 - $07FF), ni a la ROM de
prueba interna ($07EE - $07EF), se genera un reset que obliga al programa a
comenzar nuevamente.

9.5. Interrupciones.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Son a veces usadas para interrumpir el procesamiento normal para responder a
algn evento inusual. El MCU puede ser interrumpido por las siguientes fuentes de
interrupcin:

- Un 0 lgico aplicado al pin de interrupcin externa (IRQ).
- Un 0 lgico aplicado a cualquier pin PA3 - PA0 (si la funcin del puerto de
interrupcin es habilitada).
- Un pedido de desborde (overflow TOF) o interrupcin de tiempo real (RTIF)
desde el sistema de temporizacin por programa (SWI).
- La instruccin de interrupcin por programa (SWI).

Si una interrupcin se produce mientras la CPU est ejecutando una instruccin,
sta ser completada antes que la CPU responda al pedido de interrupcin. Las
interrupciones pueden ser inhibidas en conjunto poniendo un uno en el bit I del
CCR o bien individualmente, poniendo ceros en los bits de control de habilitacin
de cada fuente de interrupcin. El reset fuerza el bit I a uno y a cero a todos los
bits de habilitacin de interrupciones locales a fin de prevenir interrupciones
durante el proceso de inicializacin. Cuando el bit I est en uno, ninguna
interrupcin (excepto SWI) es reconocida. Aunque pueda registrarse a la fuente de
interrupcin su pedido no ser atendido hasta que el bit I se ponga en cero.
9.6. Interrupciones Externas.

Las interrupciones externas proceden del pin IRQ o de los bits 3 - 0 del port A, si el
puerto A se ha configurado como puerto de interrupciones. La sensibilidad del pin
IRQ es programable. Disponemos de disparo slo sensible a un flanco o bien
sensible a flanco descendente y nivel. Se emplea un bit del registro mscara de
opciones (MOR) para configurar la sensibilidad del pin IRQ. El pin IRQ es activo
bajo y las interrupciones del puerto A son activas en alto.

Los microcontroladores a veces incluyen sistemas perifricos dentro de su mismo
chip que pueden generar interrupciones a la CPU. El sistema de temporizacin
del MCU es un ejemplo de este tipo de perifricos. Las interrupciones internas
trabajan del mismo modo que las externas excepto por que hay vectores de
interrupcin separados para cada sistema perifrico incluido en el circuito
integrado.

9.7. Interrupciones por Programa (SWI).

La interrupcin por programa es una instruccin ejecutable. La accin de la
instruccin SWI es similar a la de una interrupcin (bit I) del CCR.

10. Caractersticas elctricas.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

A continuacin se presenta una tabla con el resumen de las caractersticas
elctricas absolutas del los MCOs de la familia HC08, para informacin detallada y
especfica de las caractersticas elctricas y trmicas de estos dispositivos,
remitirse a la hoja de datos (data-sheet) del dispositivo de inters.
Tabla 5: Caractersticas Mximas de los dispositivos de la familia HC08.

Caracterstica Smbolo Valor Unidad
Fuente de Voltaje V
DD
-0.3 a 6.0 V
Voltaje de Entrada
Todos los pines (excepto
IRQ1)
Pin de IRQ1

V
IN

V
SS
-0.3 a V
DD
+0.3

V
SS
-0.3 a 8.5

V
Corriente Mxima por Pin
(Excepto V
DD
y V
SS
)
I 25 mA
Corriente Mxima de Salida
para V
SS

I
MVSS
100 mA
Corriente Mxima de Salida
para V
DD

I
MVDD
100 mA
Temperatura de
Almacenamiento
T
STG
-55 a 150 C
Leccin 15: Microprocesadores ColdFire y tarjetas de desarrollo.
A manera de informacin se analizan las caractersticas de este dispositivo en
caso de algn inters por parte del estudiante para realizar alguno de sus
proyectos. Coldfire es una familia de microprocesadores de la casa fabricante de
semiconductores FreeScale, La arquitectura Coldfire esta diseada para abordar
aplicaciones avanzadas tanto en el rea industrial como aplicaciones generales de
consumo. Est presente desde hace 15 aos en el mercado y representa una de
las familias de procesadores de 32 bits ms extensas que se encuentra en
continua investigacin y desarrollo de nuevos dispositivos, posee variedad de

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

opciones de conectividad. El tamao del ncleo es lo suficientemente reducido
para permitir la alta integracin de memoria y perifricos. Adems su conjunto de
instrucciones de longitud variable le permite una optimizacin de cdigo nativo sin
sacrificar de ningn modo las prestaciones del procesador.
Los mdulos MAC y el ms avanzado EMAC forman parte del ncleo de los
procesadores de la familia Coldfire V2/V3/V4, proporcionando soporte para
algoritmos de procesado digital de seal. Los mdulos MAC/EMAC son una
extensin del multiplicador bsico contenido en otras arquitecturas de 32 bits. El
objetivo de esta extensin hardware es proporcionar la ejecucin nativa de
operaciones de procesado digital lo ms rpido y eficientemente posible dentro de
los lmites establecidos por la aplicacin.
La arquitectura Coldfire no fue diseada para procesado digital de alta velocidad,
pero del mismo modo un DSP de altas prestaciones podra ser excesivo dentro de
muchas aplicaciones embebidas. Coldfire con la adicin del mdulo MAC/EMAC
ocupa el lugar intermedio entre velocidad, complejidad de diseo y funcionalidad.
Los microprocesadores Coldfire son bastante empleados para aplicaciones de
sistemas embebidos porque adems de la economa y la facilidad en su
programacin, representa ventajas en su empleo como la existencia de
herramientas software y fcil acceso a soporte online, documentacin e infinidad
de libreras con aplicaciones en diversas reas.
Tarjetas de desarrollo.

Las tarjetas de desarrollo son sistemas integrados cuya razn de ser es brindar al
usuario, llmese estudiante, ingeniero o desarrollador, las herramientas
necesarias para disear y desarrollar aplicaciones. Normalmente una tarjeta de
desarrollo es una placa de circuito impreso en la que se han implementado
diferentes componentes de uso comn a la hora de desarrollar un sistema
embebido adems de la electrnica de soporte para programar el dispositivo.

La ventaja de emplear este tipo de trajetas de desarrollo radica en el hecho de que
se cuenta con un hardware de propsito general que brinda el acceso a los
diferentes perifricos del MCU entonces el desarrollo se reduce a la programacin
adecuada del dispositivo evitandose la realizacin de gran parte del hardware en
cada proyecto de diseo.

Entre los componentes que se pueden encontrar en una tarjeta de desarrollo
estn:

- Interfaces visuales como displays de 7 segmentos, Leds o LCD.
- Dispositivos externos para almacenamiento de datos (memorias).

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Integrados para manejo de temporizacin (relojes).
- Fuentes de alimentacin regulada.
- Dispositivos de entrada como Swiches pulsadores o teclados.
- Interfaces y conectores para la comunicacin manejando diferentes
protocolos (USB, RS232, Ethernet, etc.)
- Conectores que habilitan el acceso a los diferentes puertos de E/S del
microcontrolador.
- Elementos de salida de potencia como Reles, Dirvers para motores, etc.

En la siguiente figura se presenta un ejemplo de tarjeta de desarrollo:

Figura 25: ejemplo de tarjeta de desarrollo.


ACTIVIDADES DE AUTOEVALUACIN DE LA UNIDAD
- Que es un sistema embebido?
- Cul es la importancia y la aplicacin de un sistema embebido?
- Cules son las fases de diseo de un sistema embebido?
- Cules son los componentes principales de un sistema embebido?
- Cules son los componentes de una CPU?
- Cules son las caractersticas de un microcontrolador HC08?

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

BIBILIOGRAFA:
[1] BARRETT Steven F, Pack Daniel J.Microcontrollers Fundamentals for
Engineers and Scientists. Morgan & Claypool. 2006.
[2] NOERGAARD Tammy. Embedded Systems Architecture. Newnes. 2005.
[3] MARWEDEL Peter. Embedded System Design. Springer. 2006.
[4] CATSOULIS John. Designing Embedded Hardware. O'Reilly. 2005.
[5] ZURELL Kira.(2000). C Programming for Embedded Systems. R&D Books.
[6] BARR Michael. Programming Embedded Systems in C and GNU
Development. OReilly. 2006.
[7] P. RAGHAVAN, Amol Lad, Sriram Neelakandan. Embedded Linux System
Design and Development. Auerbach Publications. 2006.
LINKS
[8] www.freescale.com
[9] http://www.cosmic-software.com/products.php
[10] http://www.uclinux.org/ports/coldfire/
[11] http://www.processorexpert.com/
[12] http://www.embedded.com
[13] http://www.bairesrobotics.com.ar/data/guia68hc08.pdf
[14] http://gem.win.co.nz/mario/hc08/
[15] http://akimpech.izt.uam.mx/Web_jr/ami.htm
[16] http://www.it.uc3m.es/ttao/html/index.html
[17] http://www.lasalle.edu.co/csi_cursos/informatica/teoria/ (Glosario)
[18] http://www.depeca.uah.es/wwwnueva/docencia/ITI-
EI/sd/index.htm#documentos
[19] www.bairesrobotics.com.ar/data/instrucc0508.pdf
[20] www.bairesrobotics.com.ar/data/guia68hc08.pdf

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

UNIDAD 2
Nombre de la Unidad Desarrollo de software para sistemas embebidos
Introduccin Ya conocidos los conceptos bsicos de los sistemas
embebidos se debe conocer el cmo se desarrolla
software para dichos sistemas
Justificacin Introducir al estudiante del curso en el desarrollo de
software para sistemas embebidos
Intencionalidades
Formativas
- Introducir al estudiante en la programacin de
sistemas embebidos
- Reconocer el lenguaje programacin Assembler
- Introducir al estudiante en el desarrollo de
aplicaciones en sistemas embebidos
- Desarrollar una tarjeta de programacin universal
- Introducir al estudiante en la programacin de
sistemas embebidos en C
- Introducir al estudiante en la programacin del
microcontrolador HC08
Denominacin de
captulos
4. Introduccin a la programacin de sistemas embebidos
5. Prcticas bsicas y aplicaciones
6. Introduccin a la programacin en C y microcontrolador
HC08

CAPITULO 4: INTRODUCCIN A LA PROGRAMACIN DE SISTEMAS
EMBEBIDOS.

En el presente captulo se presenta la forma de planear y escribir programas para
sistemas embebidos, partiendo desde la concepcin misma de la funcionalidad
que realizar el dispositivo a disear, se aprender a desarrollar diagramas de
flujo y a partir de estos, realizar la programacin correspondiente en lenguaje
assembler.
Leccin 1: Diagramas de Flujo.
Un diagrama de flujo es la representacin grfica de los pasos o etapas de un
proceso describiendo las secuencias en interacciones de dicho proceso en un
algoritmo, esta representacin se basa en el empleo de diferentes smbolos que
representan operaciones especficas, normalmente dichas operaciones se
interconectan con flechas indicando una secuencia de operacin, es por tanto que
se conocen como diagramas de flujo, son tiles en programacin puesto que
representan de manera grfica y simple de leer los algoritmos y operaciones que
se requiere implementar en un sistema computacional cualquiera, sirviendo as
como medio de planificacin para escribir programas.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Para evitar ambigedades al momento de descifrar un diagrama de flujo, se han
estandarizado los smbolos que en este tipo de representaciones se emplean
sumado a una serie de reglas y recomendaciones (norma ISO 5807), a
continuacin se enumeran los smbolos ms comunes y una explicacin se su
funcionalidad, ver figura 26:

- Ovalo: Normalmente se emplea para indicar el inicio o el fin de un proceso
o algoritmo. En su interior se sitan materiales, informacin o acciones para
comenzar el proceso o para mostrar el resultado en el final del mismo
- Flecha: Indica el sentido y trayectoria del proceso de informacin o tarea.
- Rectngulo: Es el smbolo ms comnmente utilizado. Se usa para
representar un evento que ocurre de forma automtica y del cual
generalmente se sigue una secuencia determinada.
- Rombo: Se utiliza para representar una condicin. Normalmente el flujo de
informacin entra por arriba y sale por un lado si la condicin se cumple o
sale por el lado opuesto si la condicin no se cumple. El rombo adems
especifica que hay un salto o bifurcacin.
- Romboide: en su interior generalmente se sita informacin de apoyo
necesaria para realizar una actividad.
- Crculo: Representa un punto de conexin entre procesos. Se utiliza
cuando es necesario dividir un diagrama de flujo en varias partes, por
ejemplo por razones de espacio o simplicidad. Una referencia debe darse
dentro para distinguirlo de otros. La mayora de las veces se utilizan
nmeros en los mismos.

Ciertas reglas que hay que tener en cuenta a la hora de realizar diagramas de flujo
pueden ser las siguientes:

- Debe existir siempre un camino que permite llegar a una solucin
(finalizacin del algoritmo).
- Solo debe existir un nico inicio del proceso.
- Nombrar o etiquetar correctamente los procesos para evitar confusiones.
- Solo debe existir un nico punto de fin para el flujo de proceso, salvo el
caso de bifurcaciones a partir de rombos.
- Se deben evitar los ciclos infinitos que bloqueen el programa y las entradas
que no presentan salidas.
- Evitar elementos de generacin espontnea, es decir salidas que no son
generadas a partir de una entrada, generalmente son situaciones errneas.

Figura 26. Figuras empleadas en los diagramas de flujo.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS



Ejemplo: realizar el diagrama de flujo para una rutina de retrazo de 100 ms.

Figura 27. Diagrama de flujo para una rutina de retrazo de 100 ms.



Como se observa en la figura 27 un simple ejemplo de cmo realizar un diagrama
de flujo para un proceso muy empleado en programacin de microcontroladores
como lo es una rutina de retardo, la idea general de este diagrama de flujo es
representar un pedazo de cdigo que realice la funcionalidad requerida, para tal
efecto se inicia un contador que se decrementa de uno en uno hasta que dicho
contador sea cero, el valor con el que se inicia el contador depende del tiempo de
espera que pueda ser implementado en el dispositivo, por ejemplo si dicho tiempo

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

de espera es de 2 ms, entonces el contador se inicia en 50 as al realizar las
iteraciones requeridas para decrementar este valor a cero, la rutina finaliza una
vez se cumple el retrazo requerido. Se puede observar tambin que en el bloque
con forma de rombo es donde se toma la decisin de finalizar o no el programa.

Leccin 2: Programacin en Lenguaje Ensamblador (Assembler).

El lenguaje ensamblador marca un buen punto de partida para el estudiante
puesto que representa un estudio profundo de cualquier microcontrolador tanto en
su estructura como en su juego de instrucciones, brindando las bases suficientes
para adentrarse en el mundo de la programacin y desarrollo de aplicaciones con
los microcontroladores.

Es recomendable tener presente el manual de referencia CPU08RM.pdf que
puede bajarse de la pgina del fabricante de los MCUs (www.freescale.com). En
l se puede encontrar toda la informacin relevante para reforzar algunos de los
temas analizados durante el curso como el modelo de programacin,
instrucciones, modos de direccionamiento, etc. adems se encuentran ejemplos
sobre el uso de algunas instrucciones.

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
diseados, de otra forma seran 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 mquina.

El lenguaje de mquina est conformado por cdigos de instruccin que en
esencia son nmeros representados por series binarias, todos los dispositivos de
procesamiento tienen un cdigo de operacin (op.code) para cada una de sus
funciones. Como se ha visto anteriormente se sabe que todas las instrucciones
para cualquier lenguaje de mquina tienen por lo menos dos partes; la primera es
el comando u operacin en si, que dice al procesador cul es la funcin que se va
a realizar. La segunda parte de la instruccin es el operando, que indica al
procesador donde (posicin en memoria) hallar o almacenar los datos y otras
instrucciones que sern manipuladas.

Puesto que para el ser humano manejar este tipo de cdigos a la hora de realizar
la programacin de los dispositivos resultara extremadamente tedioso se han
desarrollado diferentes tcnicas y lenguajes de programacin tanto de alto como
de bajo nivel.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El lenguaje ensamblador en un lenguaje de bajo nivel ya que es la representacin
ms directa de los cdigos de instruccin mediante nemnicos, un nemnico es un
vocablo que en lenguaje ensamblador representa un cdigo de instruccin binario,
los nemnicos se emplean para facilitar el aprendizaje, por parte del programador,
de los diferentes cdigos que soporta un determinado dispositivo. Toda
programacin realizada en lenguaje ensamblador debe ser compilada o traducida
a cdigo de mquina para que el dispositivo pueda entenderla.

Para comprender mejor este concepto se presenta el siguiente ejemplo:

Se tiene el siguiente cdigo de mquina en Binario: 10100110 01100001
(Hexadecimal: 0xA661). La representacin equivalente en lenguaje ensamblador
es ms fcil de recordar: MOV $61; Esta instruccin significa: cargue el
acumulador con el dato almacenado en la posicin 61 de la memoria.
Algunos pros y contras sobre el empleo de este lenguaje se enumeran a
continuacin:

Pros:

- Los programas hechos en lenguaje ensamblador son generalmente ms
rpidos en su ejecucin 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
ms rpido 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 MCUs, mas an, se necesita conocer todas las caractersticas de
la arquitectura para poder programar con lenguajes de alto nivel.

- Con el lenguaje ensamblador se pueden crear segmentos de cdigo
imposibles de formar en un lenguaje de alto nivel.

- A medida que se aprenda a programar en assembler se pueden ir creando
libreras de funciones que se pueden aadir a futuros cdigos inclusive
implementar en otro tipo de MCU, facilitndose 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
incrustacin de cdigo ensamblador en algn segmento de programa.

Contras:

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Programar en lenguaje ensamblador es difcil 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.

Leccin 3: Notaciones y sintaxis.

Todos los programas en assembler son creados en un editor de texto cualquiera
producindose un archivo de texto siguiendo algunas reglas y notaciones, para
empezar en las siguientes tablas se presentan las notaciones de los diferentes
registros de la CPU y los bits del registro de cdigo de condicin:

Tabla 6. Notacin de los registros del MCU.

Notacin Registro Tamao del registro
A Acumulador 8
CCR Reg. de condicin 8
H:X Reg. Indice 16
SP Puntero de Pila 16
PC Contador de Programa 16

Tabla 7. Notacin de los Bits del CCR.

Notacin Descripcin
H Acarreo Medio, Bit 4
I Mscara de Interrupcin, Bit 3
N Bandera de Negativo, Bit 2
Z Bandera de Cero, Bit 1
C Bandera de acarreo, Bit 0

A continuacin se realizan ciertas definiciones relevantes a la hora de escribir
programas en assembler:

Lneas de comentario:

Son empleadas por el usuario para documentar el programa que se encuentra
desarrollando, sirven para que en futuras ocasiones pueda comprender que se ha
realizado o en caso de que otra persona entre a analizar el programa. Las lneas
de comentario no deben afectar la programacin a la hora de compilar, por lo tanto
para que el compilador las identifique se debe anteponer punto y coma (;) o un
asterisco en la parte mas izquierda de la lnea de texto.

Ejemplo:


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

******************************************************************
* Este es un comentario *
******************************************************************
;Este tambin es un comentario.

LDA NUM1 ; Este tambin es un comentario.

Etiquetas:

Tambin conocidas como identificadores, son nombres para constantes, variables,
direcciones y subrutinas definidos por el programador, los nombres pueden
contener letras maysculas y minsculas tambin pueden tener nmeros pero no
pueden tener signos de puntuacin ni tener ms de 10 caracteres. Los nombres
son sensibles a diferencias entre maysculas y minsculas; por ejemplo PuertoA y
puertoA son dos etiquetas diferentes.

Las etiquetas se definen colocndose en la parte ms hacia la izquierda de la
lnea de cdigo; el ensamblador le asigna internamente un valor igual a la
direccin actual, es importante no definir las etiquetas ms de una vez, de lo
contrario el ensamblador registrar un error. La direccin de la memoria se va
actualizando a medida que se van ocupando los bytes ya sea para programa o
almacenamiento de datos.

Otra forma de definir etiquetas es empleando la directiva EQU asignando entonces
el valor que se encuentra en la columna de parmetros, en este caso el espacio
de memoria actual permanece invariable.

Ejemplo:

FLASH EQU $EE00
Ten EQU 10

Expresiones Matemticas:

El lenguaje ensamblador tiene un desempeo limitado en el campo de las
expresiones matemticas, solo una operacin es permitida por expresin, para
escribir expresiones se debe tener en cuenta que el operador debe estar
separado de los parmetros por espacios en blanco. Los operadores vlidos son:
suma (+), resta (-), multiplicacin (x), divisin (/) y mdulo (%).

Las anteriores operaciones aritmticas son llevadas a cabo por el ensamblador en
el momento de compilar un cdigo, es decir, el resultado de las expresiones es
convertido directamente en un valor constante o una direccin de memoria. Una
aplicacin de las expresiones puede ser el acceso a un parmetro de varios
bytes, por ejemplo, si se supone que NUM es una variable est declarada como

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

de 4 bytes, para acceder cada byte individualmente se empleara NUM, NUM + 1,
NUM + 2, NUM + 3.

Ejemplo:

NUM DS 4 ; Se reserva 4 Bytes para NUM.
LDA NUM + 3 ; Se carga el LSB en el Acumulador.
LDA NUM ; Se carga el MSB en el Acumulador.

Es de tener en cuenta que el ensamblador asigna el primer byte para el byte ms
significativo (MSB), seguido por los menos significativos.

Para evitar confusiones por parte del estudiante a la hora de escribir cdigo en
assembler a continuacin se resumen las convenciones que se emplean a la hora
de escribir la programacin en assembler.

- Cualquier texto que se encuentre despus de un smbolo (;) es considerado
como un comentario.
- Un asterisco en la posicin ms hacia la izquierda define toda la lnea como
un comentario.
- Las instrucciones del juego de instrucciones de la CPU pueden ser escritas
en maysculas o minsculas.
- Todas las etiquetas son sensibles a las maysculas, no pueden tener ms
de 10 caracteres ni signos de puntuacin.
- La definicin de las etiquetas debe hacerse en la parte ms hacia la
izquierda de una lnea de cdigo, el uso de dos puntos (:) despus de una
etiqueta es opcional.
- Las operaciones o directivas deben ir precedidas de un espacio en blanco o
TAB horizontal.
- Los parmetros de las instrucciones deben ir separados por espacios en
blanco, comas o TABs horizontales.
- El direccionamiento inmediato se especifica al emplear el smbolo #
precediendo un parmetro constante.
- Las constantes Binarias son precedidas por el smbolo %.
- Las constantes Hexadecimales son precedidas por el smbolo $.
- Los nmeros sern decimales excepto los que son precedidos por % o $.
- Las expresiones matemticas se restringen a una sola operacin y puede
ser +, -, x, / y %.
- Las operaciones matemticas deben separarse de los parmetros por
espacios en blanco.
- Si al final de un registro se coloca una letra H o L significa que se trata de la
parte alta o baja correspondientemente, es decir los 8 bits mas significativo
(parte alta) o los 8 menos significativos (parte baja).
- Una letra n inmediatamente despus de un registro indica la posicin o bit
n de dicho registro.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Leccin 4: Tipos de Instrucciones.

En esta seccin se analizarn los diferentes tipos de instrucciones que poseen los
MCUs de la familia HC08 describiendo sus caractersticas y funcionalidades,
queda como tarea para el estudiante revisar la sintaxis y funcionamiento
especfico de las instrucciones que emplee en sus prcticas enfatizando el estudio
en las banderas que afecta una determinada instruccin y como puede emplearse
este hecho para los propsitos y funcionalidad de los programas que se desean
desarrollar.

1. Instrucciones de transferencia.

Las instrucciones de transferencia o movimiento de datos que se pueden observar
en la tabla 3 de la seccin 3.4.6 se encargan de realizar movimiento de datos
entre los diferentes registros y memorias del MCU, esto se realiza ya que durante
la ejecucin de un programa, los operandos y las direcciones se encuentran en la
memoria mientras que el procesador no sabe nada de las operaciones que va a
realizar, por lo tanto la funcin de un programa es la de cargar los datos y
direcciones necesarios para que se realicen las tareas que de debe cumplir el
MCU para las cuales ha sido realizado el programa.

El movimiento de datos se puede realizar de 3 maneras diferentes:

1. De un registro del procesador a la memoria.
2. De la memoria a los registros del procesador
3. De un registro del procesador a otro registro del procesador.

Entre las instrucciones de transferencia de datos existen:

Instrucciones de Carga: Son las encargadas del movimiento de datos desde la
memoria a los registros del procesador, se realiza una operacin de entrada de
datos mediante la lectura desde la memoria y posterior carga de uno o ms bytes
en el correspondiente registro del procesador, las instrucciones que copian dos
bytes siguen la convencin de cargar el dato ms significativo primero.

Entre las instrucciones de carga se tienen: LDA, LDX, LDHX.

Instrucciones de Almacenamiento: Son responsables del movimiento de datos
desde los registros del procesador a memoria, se realiza una operacin de salida
de los datos de los registros mediante la lectura desde el registro del procesador y
posterior carga de uno o ms bytes en la posicin de la memoria correspondiente.

Entre las instrucciones de almacenamiento se tienen: STA, STHX, STX.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Instrucciones de transferencia: Se encargan del movimiento de datos de un
registro del procesador a otro, entre las instrucciones de transferencia se tienen:
TAX, TXA.

2. Instrucciones Aritmticas.

Se trata de un sub-grupo de instrucciones que emplean la unidad aritmtico-lgica
para realizar operaciones aritmticas empleando como parmetros los contenidos
tanto del acumulador como de alguna posicin de la memoria, el resultado de
dichas operaciones realizadas se almacenan en el acumulador o en la posicin de
memoria dependiendo de lo estipulado por la instruccin. Entre las instrucciones
aritmticas existen:
Instrucciones de Suma: Encargadas de sumar el contenido del acumulador con
los contenidos en alguna posicin de memoria o registro, los datos son guardados
en el acumulador. Entre las instrucciones de suma se tienen ADC, ADD.

Instrucciones de Resta: Encargadas de restar el contenido del acumulador con
los contenidos en alguna posicin de memoria o registro, los datos son guardados
en el acumulador. Entre las instrucciones de resta se tienen: SUB, SUC.

Multiplicacin (MUL): Esta instruccin multiplica los 8 bits del registro ndice (X)
por los ocho bits del acumulador, obtenindose un nmero de 16 bits sin signo
encadenando el registro ndice con el acumulador, despus de la operacin X
contiene los bits mas significativos del resultado de 16 bits.

Divisin (DIV): Esta instruccin divide un nmero de 16 bits sin signo (dividendo)
contenido entre los registros encadenados H (ndice parte alta) y el acumulador,
entre un nmero de 8 bits (divisor) contenido en X (ndice parte baja). El cociente
se almacena en el acumulador y el divisor queda inalterado.

3. Instrucciones de Manipulacin de Datos.

Son empleadas para realizar alguna operacin fija o estndar sobre un dato
determinado, entre este tipo de instrucciones existen:

Instrucciones de Incremento: Son una clase especial de instrucciones de
adicin, su funcin es incrementar en una unidad el operando sobrescribiendo
ste con el resultado de la operacin. Entre las instrucciones de incremento se
tienen: INCA, INCX, INC.

Instrucciones de Decremento: Son una clase especial de instrucciones de resta,
su funcin es decrementar en una unidad el operando sobrescribiendo ste con el
resultado de la operacin. Entre las instrucciones de incremento se tienen: DECA,
DECX, DEC.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Instrucciones de Negacin: Estas instrucciones cambian en signo de un dato
que se encuentre en el acumulador o en una determinada posicin de memoria,
este cambio de signo se realiza empleando la operacin de negacin binaria en
complemento a dos. Especficamente estas instrucciones lo que hacen es restarle
el operando a cero sobrescribiendo ste con el resultado. Entre las instrucciones
de negacin se tienen: NEGA, NEGX, NEG.

4. Instrucciones de Rotacin y Desplazamiento.

La familia HC08 soporta varios tipos de operaciones de rotacin y desplazamiento
de datos, tanto del tipo aritmtico como del tipo lgico, las operaciones de
desplazamiento estn basadas en los principios de funcionamiento de los registros
de desplazamiento, en donde los datos se mueven bit por bit hacia la derecha
(hacia el LSB) o hacia la izquierda (hacia el MBS).

El desplazamiento lgico consiste en la introduccin de un 0 en alguno de los
extremos de la palabra (dato) empujando al resto de los bits una posicin hacia la
direccin contraria (ver figura 28.). Por otro lado el desplazamiento aritmtico es
similar al lgico con la excepcin de que cuando el desplazamiento es hacia la
derecha (hacia el LSB) el signo se mantiene, es decir, en lugar de introducir un 0
se realiza una copia del bit de signo (MSB) la cual es introducida para realizar el
desplazamiento, mantenindose as el signo (ver figura 28.).

La rotacin de datos en una forma especial de desplazamiento, cuando se realiza
lo que ocurre es que el dato a la salida del desplazamiento es retroalimentado a la
entrada del registro, la rotacin puede ser en ambos sentidos.

Figura 28. Formas de Rotacin y desplazamiento en la familia HC08.




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Entre las instrucciones de rotacin y desplazamiento se tienen: ROLA, ROLX,
ROL, RORA, RORX, ROR, LSLA, LSLX, LSL, LSRA, LSRX, LSR, ASRA, ASRX,
ASR.

5. Instrucciones lgicas:

Se trata de un sub-grupo de instrucciones que emplean la unidad aritmtico-lgica
para realizar operaciones lgicas empleando como parmetros los contenidos
tanto del acumulador como de alguna posicin de la memoria, el resultado de
dichas operaciones realizadas se almacenan en el acumulador o en la posicin de
memoria dependiendo de lo estipulado por la instruccin. Entre las instrucciones
lgicas se tienen: AND, ORA, EOR, COMA, COMX, COM, NSA.

6. Instrucciones de Comparacin.

Son un grupo especial de instrucciones que solamente afectan la bandera de
estados (reg. CCR), ningn dato es modificado por estas instrucciones puesto que
nicamente su funcin es la de comparar dos nmeros y modificar las banderas
de estado dependiendo de la relacin que exista entre stos. Estas instrucciones
son usadas exclusivamente en conjunto con las instrucciones de bifurcacin
condicional como preparacin para una bifurcacin condicional.

Dados dos nmeros A y B; La comparacin entre estos se realiza mediante una
sustraccin puesto que al restar dos nmeros se puede conocer si A > B, si el
resultado de A B es un nmero positivo, o si son iguales si A B = 0, o si A < B
si el resultado de A - B es un nmero negativo.

La diferencia de las instrucciones de comparacin con respecto de la resta comn
radica en el hecho de que los operandos no son modificados como en el caso de
la resta que carga el resultado en el acumulador.

Hay instrucciones especiales para la comparacin directa de un nmero con cero
la ventaja de estas es que solo es necesario entregar el parmetro que se va a
comparar puesto que se supone que el otro es cero.

Entre las instrucciones de comparacin se tienen: CMP, CPX, BIT, TSTA, TSTX,
TST, BRCLR, BRSET, CPHX.

7. Instrucciones de Salto.

Este tipo de instrucciones se encargan de controlar o alternar el flujo del programa
cambindolo a cualquier posicin de la memoria que sea direccionable, las
instrucciones de salto cargan directamente el contador de programa (PC) con una
direccin de 16 bits, direccin en la cual se ubica la siguiente instruccin a ser
ejecutada (direccin de destino).


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Este tipo de saltos son incondicionales, puesto que pueden alterar el flujo del
programa cada vez que son ejecutadas y son empleadas en los programas cada
vez que se requiera un cambio absoluto del flujo del programa. Este tipo de
instrucciones son empleadas normalmente en un cdigo seguidas de una etiqueta
que identifica la direccin a donde se realiza el salto. Entre las instrucciones de
salto incondicional se tienen: JMP, JTS, RTS.

8. Instrucciones de Bifurcacin (Branch).

Las instrucciones conocidas como bifurcaciones, a diferencia de las de salto no
cargan al PC directamente con la direccin de la memoria donde se encuentra la
siguiente instruccin a ejecutar sino que esta es calculada a partir de el contador
de programa, estas instrucciones emplean un modo de direccionamiento relativo.

Todas las instrucciones de bifurcacin realizarn una comprobacin de alguna
expresin de tipo booleano para determinar si la bifurcacin ser tomada o se
continuar el flujo normal del programa, estas instrucciones generalmente vienen
por pares, es decir, si por ejemplo existe una instruccin que revisa si el nmero
es igual a cero tambin existe su complementaria que revisa que el nmero no sea
igual a cero (BEQ y BNE). Las instrucciones de bifurcacin se clasifican en los
siguientes grupos funcionales: incondicionales, condicional simple, condicional sin
signo, y condicional con signo.

Las incondicionales son dos en especial; BRA (Branch Always) y BRN (Branch
Never) la primera siempre pasar la comprobacin por lo cual siempre realiza la
bifurcacin, por el contrario la segunda nunca lo har, esta es til en el caso que
se realiza una depuracin de cdigo para reemplazar otra instruccin de
bifurcacin o en el caso de ciclos de temporizacin para realizar retardos.

Las instrucciones de bifurcacin condicional simple realizan la comprobacin de
cualquier bit de la bandera de estados (reg, CCR). Las condicionales sin signo no
tienen en cuenta el bit de signo (MBS), es decir toman los valores de 8 o 16 bits
como magnitudes es decir solo revisan la relacin entre dos palabras de datos sin
signo.

Caso contrario de las instrucciones de bifurcacin con signo en las que la
comprobacin se realiza entre parejas de datos teniendo en cuenta la perspectiva
de magnitudes con signo en complemento a dos.

Entre las instrucciones de bifurcacin se tienen: BRA, BRN, BSR, BHI, BLO, BHS,
BLS, BPL, BMI, BEQ, BNE, BCC, BCS, BHC, BHCC, BHCS, BMC, BMS, BIL, BIH,
BGE, BGT, BLE, BLT, CBEQ, CBEQA, CBEQX, DBNZ.

9. Instrucciones de control.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

En algunos casos es necesario manipular los bits de la bandera de estado
(registro CCR) ya sea para ponerlos en 1 o en 0 antes de realizar alguna
operacin para asegurar el correcto funcionamiento de otra instruccin diferente.
Entre las instrucciones de control se tienen: SEC, CLC, SEI, CLI, SWI, RTI, RSP,
NOP, WAIT, STOP, TAP, TPA, TSX, TXS.

Leccin 5: Escribiendo un pequeo programa.

A continuacin se realizar de forma metdica la solucin a un pequeo problema
de programacin, comenzando con la definicin de los requerimientos de la
aplicacin, seguido de la correspondiente documentacin mediante un diagrama
de flujo, hecho esto, se escribir el programa empleando un editor de texto
estndar escribiendo los nemnicos correspondientes para cada bloque del
diagrama de flujo.

La funcin del programa a realizar consiste en hacer que el microcontrolador
revise un pin de alguno de sus puertos configurado como entrada, este pin estar
conectado a un pulsador que pondr el pin a tierra cuando se encuentre
presionado. Cuando el microcontrolador detecte que el pulsador ha sido
presionado debe poner en alto otro pin configurado como salida para encender un
LED por 1 segundo, el tiempo que se mantenga presionado el pulsador no debe
afectar el tiempo en que el LED es encendido por lo tanto ste solo se volver a
encender una vez el pulsador ha sido soltado y presionado de nuevo.

El montaje del circuito de prueba se realiza haciendo las conexiones necesarias
para que funcione el MCU (revisar seccin de montaje); adems se conecta el
pulsador en configuracin pull down al pin menos significativo (LSB) del puerto A
mientras el Led es conectado al pin ms significativo (MSB) empleando una
configuracin pull up.

1. Diagrama de flujo Programa principal.

En la figura 29 se presenta el diagrama de flujo correspondiente a la aplicacin
que se desea programar. Como se puede apreciar el diagrama de flujo contiene la
mayora de los bloques descritos anteriormente y cumple con las reglas
necesarias para evitar ambigedades.

El flujo del programa es simple pero no es algo trivial, ya que no se puede lograr la
misma funcionalidad de manera sencilla con componentes discretos, se requerira
una serie de integrados externos para realizar la temporizacin, en ello radica la
conveniencia de utilizar un microcontrolador gobernado por un programa ya que
ste entra a reemplazar el empleo de diferentes integrados para realizar la misma
funcionalidad.

Para escribir un programa en lenguaje ensamblador a partir del diagrama de flujo,
el programador debe desarrollar una serie de instrucciones que desempearn las

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

funcionalidades especificadas en cada bloque del diagrama. El paso a seguir con
este ejemplo es tomar cada uno de los bloques presentando una opcin para la
programacin con la correspondiente explicacin de las instrucciones empleadas.
Se recomienda al estudiante hacer uso de los manuales de referencia para
consultar los nemnicos de los diferentes comandos.

Figura 29. Diagrama de flujo de la aplicacin. Revisar




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Para empezar se debe inicializar el microcontrolador configurando los puertos del
mismo de acuerdo a las necesidades de la aplicacin, en este caso se configuran
los pines del puerto A del MCU como entradas a excepcin del pin 7 que se
emplear como salida para encender el led. La primera precaucin que hay que
tener en cuenta es la de poner el pin configurado como salida (Bit 7, puerto A
(MSB)) en 1 para mantener el LED apagado hasta que se detecte la condicin de
encendido.

Los nemnicos correspondientes a esta parte del diagrama de flujo se presentan a
continuacin:

PORTA EQU $00 ;Asignacin Directa Direccin del puerto A
DDRA EQU $04 ;Asigna Direccin control de dato, puerto A
TEMP1 EQU $C0 ;Asigna Posicin de memoria temporal(1 byte)
ORG $0300 ;El Programa empezar en Dir $0300
INIT LDA #$80 ;Empieza la inicializacin
STA PORTA ;El LED se apagar
STA DDRA ;Pone el bit 7 del puerto como salida
* El resto de pines del puerto se configura como entrada

El puerto A del HC08 es configurado desde dos registros; el registro de datos y el
registro de configuracin o control de dato, $0000 y $0004 respectivamente, el
primero contiene los datos que se cargarn en cada uno de los pines del puerto y
el segundo contiene los bits de configuracin del puerto, es decir determina si
cada pin es una entrada (0) o una salida (1). Para una informacin ms
detallada sobre los puertos se recomienda al estudiante revisar la seccin de
puertos I/O en las hojas de datos de la familia HC08 o del dispositivo en particular
con que se encuentre trabajando.

En la programacin se emplean etiquetas (PORTA DDRA TEMP1) para obtener
acceso directo a estas direcciones la siguiente instruccin (ORG) indica al
compilador nicamente la direccin de memoria desde donde se comenzar a
almacenar el programa.

La instruccin LDA #$80, de acuerdo con las convenciones aprendidas y el set de
instrucciones del MCU, lo que realiza es cargar el acumulador empleando
direccionamiento inmediato (#) con el dato $80 (%10000000), este dato se carga
en el acumulador con la intencin de cargarlo posteriormente en el registro de
datos y en el registro de configuraciones del puerto A.

De acuerdo con el diagrama de flujo, a continuacin se realiza la operacin de
revisin del pin que se encuentra conectado al pulsador para conocer su estado,
para tal efecto se carga el puerto A en su totalidad en el acumulador y luego se
realiza la operacin lgica AND para comparar el bit de inters (LSB) con un valor
alto (1 lgico).


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

TOP LDA PORTA ; Carga el puerto A en el acumulador
AND #$01 ; Prueba el bit-0

La accin representada por el primer rombo del diagrama de flujo se realiza con el
comando BEQ (bifurcacin si es igual), si el resultado de la operacin AND es 0
lgico es decir que al comparar el puerto A con $01 resulta que los nmeros son
iguales se realiza la bifurcacin devolvindose hacia la etiqueta TOP crendose un
lazo de espera hasta que el pulsador sea presionado. En caso de que se detecte
que se ha presionado el pulsador, se contina normalmente con la siguiente
instruccin.
BEQ TOP ; Lazo hasta que bit0 = 1.

La siguiente instruccin en caso de detectarse que el pulsador ha sido presionado
es un salto a la subrutina de espera para evitar rebotes.

JSR DLY50 ; Retardo de 50 ms para los rebotes

La subrutina de retardo se emplea en dos ocasiones para esta aplicacin, como
retardo anti-rebote y para determinar el tiempo de 1 seg que ser encendido el led
en caso de ser presionado el pulsador. El correspondiente diagrama de flujo y
detalle de programacin de esta subrutina se presenta posteriormente.

A continuacin del retardo anti-rebote se enciende el Led empleando el siguiente
comando:

BCLR 7, PORTA ; Enciende el LED (bit-7 del Puerto A)

Es de tener en cuenta que debido a la forma de conexin del Led (Pull Up) se
requiere que en el pin al que se encuentra conectado sea puesto en un estado
bajo o 0 lgico para hacer que la corriente circule por ste, encendindolo as.

Una vez el Led es encendido, el flujo del programa indica que debe existir un
retardo de un (1) segundo en el cual el Led debe permanecer encendido, para tal
efecto es emplea nuevamente la subrutina de retardo pero esta vez puesto que se
requiere que el retardo sea aun mayor y teniendo en cuenta que la subrutina
creada genera un retardo de 50 ms, se debe realizar un lazo que se repita 20
veces para completar 1 segundo. Los comandos empleados se presentan a
continuacin:

LDA #20 ;El Decimal 20 se carga en el acumulador
DLYLP JSR DLY50 ;Retardo de 50 ms
DECA ;se decrementa el acumulador en una unidad
BNE DLYLP ;Si el acumulador no es cero ir a DLYLP.
BSET 7,PORTA ;Apaga el LED


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El programa finaliza de acuerdo con los requerimientos establecidos con una
rutina de espera hasta que el pulsador sea soltado para evitar que se detecte otra
orden de encendido del Led antes de haberse soltado y vuelto a presionar, los
comandos son los siguientes:

OFFLP BRSET 0,PORTA,OFFLP ; Lazo hasta interruptor abierto
JSR DLY50 ; Retardo antirebote.
BRA TOP ; Ir a espera para el siguiente cierre del
; interruptor.

2. Diagrama de Flujo Subrutina de Espera 50 ms.

Como es sabido, una subrutina se trata de un programa generalmente corto que
es ejecutado varias veces a lo largo de un programa mayor la intencin es escribir
este programa una sola vez y llamarlo desde el programa principal cada vez que
sea requerido empleando los comandos bifurcacin a subrutina (BSR) o salto a
subrutina (JSR).

Figura 30. Diagrama de flujo de la subrutina de retardo de 50 ms.




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Las instrucciones de salto y bifurcacin a subrutina lo primero que hacen es
guardar automticamente en las posiciones de memoria RAM temporales de la
pila la direccin de la instruccin inmediatamente siguiente con la intencin de
retornar con el comando RTS a esta direccin una vez se ha ejecutado la
subrutina. La funcin RTS hace que la CPU recupere de la direccin de retorno
previamente guardada.

Por otro lado como se observa en el diagrama de flujo de la subrutina la primera
accin es guardar el acumulador para volver a cargarlo una vez se ha terminado la
subrutina, esto se realiza ya que ste puede cambiar durante la ejecucin de la
subrutina y generar resultados no esperados una vez se vuelve al programa
principal.

Como se observa en la figura 30, la subrutina de retardo involucra un lazo interno
(INNRLP) dentro de otro lazo (OUTRLP). El lazo interno consiste en dos
instrucciones que se ejecutan 256 veces antes que X alcance el valor de $00
nuevamente, terminando con la bifurcacin BNE, esto suma 6 ciclos a 500 ns por
256 ciclos, lo que es igual a 0.768 ms para el lazo interno. Realizando los clculos
del caso se deduce que el lazo externo debe realizarse 65 veces; el tiempo total
para de ejecucin para el lazo externo resulta 65*(1536 + 9) o 65*(1545) =
100.425 ciclos de 500 ns es decir 50.212 ms. Sumando las dems instrucciones
del lazo externo, se aaden un total de 21 ciclos as que el tiempo total de
ejecucin de la subrutina DYL50 es 50.223 ms incluyendo el tiempo que requiere
la instruccin JSR para llamar a la subrutina.

Otra opcin ms eficiente sera utilizar el temporizador interno con que cuenta el
MCU en este caso no se requerira realizar todos estos clculos para cuadrar el
tiempo basados en los ciclos de instruccin y adems la CPU estara libre para
ejecutar otras acciones durante un retardo de este tipo.










UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


CAPITULO 5: PRCTICAS BSICAS Y APLICACIONES.

En el presente captulo se presentarn diferentes aplicaciones prcticas basadas
en las caractersticas de microcontroladores de la familia HC08, para tal efecto
primero se exponen los requerimientos necesarios para llevar a cabo el montaje y
programacin de los MCUs se presentar tambin el montaje de una tarjeta de
programacin para microcontroladores de la familia HC08, esta tarjeta de fcil
realizacin y economa, proporcionar al estudiante una herramienta sencilla para
programar y probar el funcionamiento de las diferentes aplicaciones propuestas.

Seguidamente se abordar el tema del software CodeWarrior; que ha sido
escogido por resultar el software mas completo que permite explorar al estudiante
tanto la programacin en assembler como la programacin en C contando adems
con herramientas de simulacin, compilacin y depuracin que apoyarn la
profundizacin y puesta en prctica de los conceptos aprendidos durante el curso.

Leccin 6: Programacin y Puesta en Marcha.

Para programar lo MCUs de la Familia HC08 de freescale se deben tener en
cuenta diferentes aspectos tanto fsicos (hardware) como de software; en la
presente seccin se describe estos requerimientos y se presentan opciones
funcionales entre la variedad de posibilidades existentes.

1. Programacin de Microcontroladores de la Familia HC08.

A continuacin se darn a conocer esquemas de conexin necesarios tanto para
llevar a cabo la programacin del los MCUs de la Familia HC08 como para la
puesta en marcha de dichos dispositivos.

Los microcontroladores de la familia HC08 cuentan con un modo de ejecucin,
llamado modo usuario, el cual permite el acceso a todos los recursos del sistema
es decir que se pueden manipular caractersticas como el acceso a memoria,
manejo de interrupciones, entre otros. Tambin existe un modo de trabajo
especializado en la programacin y depuracin de los MCUs conocido como el
Modo Monitor.

1.1. Modo monitor.

El modo monitor es una aplicacin desarrollada para la familia de MCUs de 8 Bits
ubicada en la memoria ROM de los dispositivos, que permite la programacin de
aplicaciones en la memoria no voltil as como la depuracin simple de los
programas implementados por los desarrolladores, permite la ejecucin de
comandos provenientes del PC (Host), tales comandos son empleados para el

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

acceso a cualquier posicin 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 despus de un Power
On Reset (POR). Se deben tener en cuenta los siguientes aspectos a la hora de
trabajar en modo monitor:

- Para la comunicacin con el PC solo se emplea uno de los pines de E/S, el
cual intercambia su configuracin (entrada o salida) mientras emula el
protocolo serial hacia el PC.
- Durante el modo monitor debe existir una seal 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.
- Muchos de los MCUs de esta familia deben ser adecuadamente
polarizados para su correcto funcionamiento en modo monitor.
- Algunas caractersticas de seguridad son deshabilitadas al entrar en modo
monitor, entre las que se tiene COP (Computer Operation Properly), SWI
Instruction y FLASH Protection.

Cabe aclarar que el modo monitor no es una sustitucin de sistemas mas
sofisticados que permiten la completa emulacin de los dispositivos, pero si es una
forma econmica de interconectar los MCUs con un PC para el envo de
comandos de manera serial realizando labores de lectura, escritura y depuracin
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 comunicacin y
programacin.
- Un cable serial y un POD (Circuito de Polarizacin y de soporte para la
comunicacin serial) empleados para brindar la polarizacin y seales
adecuadas as como para la transmisin de comandos desde el PC.

1.2. Seales del Modo Monitor.

La interfaz fsica del modo monitor emplea hasta nueve pines para configurar el
MCU y establecer la comunicacin serial, entre los que se encuentran:

V
TST
/IRQ: El modo monitor siempre entra despus de un POR (Power On Reset)
con un voltaje alto (entre 7 y 9Vdc) que se conoce como Vtest en el pin IRQ del
MCU. ste voltaje habilita la lgica de seleccin y dems condiciones de
operacin del modo monitor.

COM/PTA0: Teniendo en cuenta que algunos M68HC08 no cuentan con una
interfaz asncrona serial dedicada (SCI), entonces se ha implementado en la ROM

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

de estos dispositivos un protocolo serial basado en software, diseado
especficamente para la comunicacin con un PC va puerto serial empleando el
protocolo RS-232 a una tasa de baudios estndar, 9600 baudios normalmente.
Para tal fin se emplea generalmente el pin PTA0 multiplexado en el tiempo como
transmisor y receptor, algunos dispositivos emplean para el mismo propsito el pin
PTB0.

Seales de Seleccin de Modo: A parte del Vtest aplicado al pin de IRQ otros 4
pines son empleados para configurar el estado de operacin del modo monitor.

- Dos de estos MOD0/MOD1: Estos pines se emplean para seleccionar el
modo monitor y deben ser fijados a un nivel adecuado de a cuerdo con los
requerimientos.

- DIV4: Si este pin se encuentra en un estado lgico alto se configura la
frecuencia del bus a un valor equivalente a la frecuencia externa dividida
entre 4. Si por el contrario se encuentra en un estado bajo la frecuencia
externa solo se divide entre dos.

- SSEL: (Serial Select). Este pin decide en que forma los bytes de seguridad
son transferidos al MCU. La programacin siempre es serial y usualmente
los bytes de seguridad son transmitidos de esta forma.

Un arreglo estndar para las seales de seleccin de modo puede
apreciarse en la siguiente figura:

Figura 31: Arreglo estndar para las seales de seleccin.




OSC: Teniendo en cuenta que la comunicacin serial es generada por el fimware
del modo monitor mas que por una interfaz serial dedicada, se requiere que el reloj
interno del bus sea forzado a una frecuencia que pueda generar las tasas
estndar que cualquier computador pueda reconocer. La entrada OSC1 puede

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

ser manejada por un oscilador de cristal o puede emplearse una red RC
conectada a los pines OSC1 y OSC2, la frecuencia del resonador requerido
depende del tipo de dispositivo; por tanto se debe acudir a la hoja de datos del
dispositivo especfico para informacin mas detallada.

RESET: La entrada de reset es requerida normalmente para operaciones de
depuracin sofisticadas, mas no para programacin y depuracin simple, en este
caso el pin de Reset se conecta a la alimentacin (Vdd) a travs de una
resistencia de Pull-Up. En algunos dispositivos en modo monitor se puede aplicar
un voltaje Vtest despus de haber entrado en modo monitor para permitir al pin de
IRQ volver a su funcin de interrupcin siendo empleado as para propsitos de
depuracin.

Ground/Vss: El pin Vss debe ser conectado a la tierra del sistema anfitrin (PC)
as suministrar el voltaje de referencia adecuado para la polarizacin y
comunicacin propias del modo monitor.

Conexiones Para VDD y VSS: Los pines para la polarizacin de los MCUs HC08
son VDD y VSS correspondientemente para polarizacin y tierra en algunos de los
MCUs pueden existir varios de estos pines cuya funcin es la de polarizar o servir
de referencia para recursos del MCU como conversores A/D, generadores de reloj,
etc.

La forma de conexin ideal es colocar un condensador electroltico (1uF) o de
tantalio (10uF) lo mas cerca posible del pin de VDD, si se emplean condensadores
electrolticos es recomendable colocar uno cermico (0.1uF) en paralelo, o si no
se dispone de condensadores electrolticos ni de tantalio, se recomienda al menos
colocar el condensador cermico de acuerdo con la siguiente figura.

Figura 32: Polarizacin recomendada para pines del MCU que van a VDD.



1.3. Conexiones (Pods) MON08.

MON08 se conoce al hardware que conecta el PC con el circuito de la aplicacin o
destino, existen del tipo comercial para todos los presupuestos, incuso existen
notas de aplicacin del fabricante que describen la forma de implementar
hardware de este tipo de forma sencilla para aplicaciones no muy sofisticadas.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Una interfaz muy empleada para estos propsitos se presenta en la figura 33, se
observa un arreglo que provee los elementos necesarios para configurar el MCU
MC68HC908 en modo monitor adems brinda el soporte para llevar a cabo la
comunicacin bi-direccional a partir del puerto PTA0 con un PC.

Es posible obtener el voltaje de prueba Vtest de la bomba de carga del integrado
MAX-232 sin afectar su funcionamiento ya que esta seal no consume corriente
por parte del pin IRQ.

Figura 33: Arreglo para habilitar el modo monitor para MCUs HC08.




En la tabla 8 se presentan los pines de conexin MON08 para los MCus mas
comunes; para MCus especficos se debe acudir a la hoja de datos
correspondiente.

Tabla 8: Pines requeridos para el modo monitor de diferentes MCUs.

GP/GT JL/JK KX MR QB/QY/QT AB32 JB16
V
tst
IRQ IRQ IRQ IRQ IRQ IRQ IRQ
COM PTA0 PTB0 PTA0 PTA0 PTA0 PTA0 PTA0
MOD0 PTC0 PTB1 PTB0 PTC3 PTA1 PTC0 PTA1
MOD1 PTC1 PTB2 PTB1 PTC4 PTA4 PTC1 PTA2
DIV4 PTC3 PTB3 NC NC NC PTC3 PTA3
SSEL PTA7 NC PTA1 PTC2 NC NC PTE3

1.4. Frecuencia Vs Tasa de baudios para comunicacin serial.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Normalmente se encuentra en las hojas de datos de la familia HC08 que se
emplean osciladores de 4,1952 MHz para conseguir tasas de 9600 bps con el pin
DIV4 puesto a tierra, otras frecuencias de trabajo tambin son posibles en la
siguiente tabla se presentan algunas de stas.

Tabla 9: Relacin de la tasa de Baudios con respecto a la configuracin del reloj
externo.

Frecuencia Reloj de Bus Tasa de Baudios DIV4
2,4576 MHz 1.2288 MHz 4800 Low
4,9152 MHz 2.4576 MHz 9600 Low
4,9152 MHz 1,2288MHz 4800 High
7,3728 MHz 3,6864 MHz 14400 Low
9,8304 MHz 4.9152 MHz 19200 Low
9,8304 MHz 2,4576 MHz 9600 High
14,7456 MHz 7,3728 MHz 28800 Low
14,7456 MHz 3,6864 MHz 14400 High
19,6608 MHz 4,9152 MHz 19200 High
29,4912 MHz 7,3728 MHz 28800 High

Es posible aprovechar las conexiones existentes en un circuito o aplicacin si
previamente se ha realizado la adecuada planificacin durante el diseo del
mismo reduciendo as la cantidad de pines requeridos para entrar en modo
monitor (Conexin MON08) este concepto se puede observar en la siguiente
figura:

Figura 34: Arreglo estndar para habilitar el modo monitor para MCUs HC08 en la
aplicacin.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Como se puede observar las seales de seleccin de modo pueden ser fijadas
directamente en la aplicacin mediante resistencias de pull-up o pull-down segn
sea el requerimiento. Estos pines una vez programado el MCU en la misma
aplicacin pueden ser utilizadas como entradas o salidas activas en bajo o en alto
dependiendo del diseo realizado.

Figura 35: Arreglo de posibles osciladores que pueden ser implementados.



Una seal de reloj adecuada (Normalmente hasta de 9.8 MHz) siempre debe ser
aplicada al pin OSC1 ya sea a travs de la interfaz MON08 o mediante elementos
fijos en el circuito de la aplicacin final. La mejor forma de proporcionar la seal
de reloj externa es mediante un oscilador de cuarzo (figura xxa), una forma alterna
mas econmica basada en un arreglo de un cristal una resistencia y un par de
condensadores se puede apreciar en la figura 36b, un mtodo poco recomendable
por su baja precisin para la generacin de la seal de reloj se realiza mediante un
arreglo RC que puede ser encontrado en las hojas de datos de los dispositivos.

En el caso de las seales de alimentacin y tierra, es requisito que la interfaz
comparta la seal de tierra para brindar un correcto voltaje de referencia, en caso
de que la aplicacin no posea su propia fuente de poder, la interfaz MON08 debe
proveerla teniendo en cuenta los requerimientos de corriente de la aplicacin.

Leccin 7: Modo de Ejecucin.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Este es el modo en el cual la CPU ejecuta normalmente el programa almacenado
en la memoria FLASH, teniendo como origen la direccin almacenada en el Vector
de RESET ($FFFE:$FFFF). Para la puesta en marcha de un dispositivo los
requerimientos en hardware son ms simples que los necesarios para la
programacin, stos se presentan a continuacin:

- Polarizacin del MCU (VDD y VSS): Se requiere el mismo esquema de
conexin presentado anteriormente, es importante conectar todos los pines
que requieran polarizacin por ejemplo en VRFEH y el VRFEL son
requeridos para establecer los umbrales de comparacin del conversor A/D.

- OSC1 y OSC2: Son seales importantes para el funcionamiento de los
MCUs puesto que se trata de sistemas secuenciales es primordial una
seal de reloj. Se puede utilizar cualquiera de las alternativas presentadas
anteriormente teniendo en cuenta siempre la hoja de datos del dispositivo
en uso.

- Pines de Seleccin de Modo (MOD0, MOD1, DIV4, SSEL): Estos pines ya
no son requeridos para establecer condiciones especiales por lo tanto su
comportamiento se rige conforme al lo especificado en las hojas de datos
del dispositivo (mdulos, interrupciones, puertos de E/S, etc.).

- Pin de Reset: Si no se requiere llevar al MCU a RESET es recomendable
colocar un condensador a tierra en este pin. Por ningn motivo se debe
colocar a VDD puesto que puede ocasionar un corto circuito cuando se
polariza en circuito o cuando se realice un Reset interno.

- Pines CGMXFC y VREG: Para los MCU que disponen de mdulo PLL se
debe instalar un filtro en el pin CGMXFC, adems en algunos MCUs (ver
su hoja de datos) se debe colocar un condensador cermico (0.1uF) en el
pin VREG, se recomienda tambin que la polarizacin del oscilador sea
VREG no VDD a menos que no funcione entonces toca utilizar VDD.

Figura 36: Configuracin recomendada para los pines de VREG, RESET Y
CGMXFC.



Leccin 8: Desarrollo de Tarjeta de Programacin Universal.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

La tarjeta de desarrollo que se presenta a continuacin se encuentra basada en la
seccin anterior referente al Modo monitor de la familia HC08 de Free-Scale, que
a su vez se encuentra basada en la nota de aplicacin AN2317/D (Low-Cost
Programming and Debugging Options for M68HC08 MCUs) que puede ser
encontrada en el sitio Web de la empresa: www.freescale.com

La implementacin de la tarjeta de programacin universal es sencilla puesto que
se trata de un arreglo compacto que provee las seales estndar estudiadas
anteriormente, necesarias para trabajar en modo monitor con diferentes
microcontroladores pertenecientes a la familia HC08. La idea es que esta tarjeta
pueda ser utilizada en conjunto con una regleta de montajes (Proto-Board) u otros
circuitos complementarios en los que se encuentren las conexiones necesarias
para las diferentes clases de microcontroladores y aplicaciones a implementar.

A continuacin se presenta el esquemtico de la tarjeta de Programacin:

Figura 37: Esquemtico tarjeta de programacin para microcontroladores de la
familia HC08.



UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El circuito consta de una etapa de regulacin obtenindose 5Vdc a partir de una
fuente de 12Vdc con su correspondiente interruptor y Led indicador de encendido,
una etapa para la comunicacin con el Pc conformada por los integrados MAX232
y 74HC125 y el conector DB-9 para poder implementar la comunicacin propia del
modo monitor es decir Half-Duplex empleando un solo pin del Microcontrolador.

La tarjeta cuenta con dos tipos de osciladores externos que pueden ser
seleccionados con el Jumper JP1; uno de una sola pieza (4 pines), ste presenta
mayor estabilidad y es habilitado con un Jumper en la posicin 1-2 de JP1. El otro
arreglo consta de un cristal con resistencia y condensadores de acople (posicin
2-3 de JP1), en lugar de un cristal fijo se pueden colocar un par de Pin Headers
para ubicar cristales de diferentes valores dependiendo de la aplicacin. A su vez
se cuenta con un arreglo de resistencias en configuracin Pull-Up y Pull-Down
utilizadas para configurar el modo monitor en los pines correspondientes de
acuerdo con la tabla 8.

Los interruptores tipo Dip (S1) sirven para deshabilitar las seales que no sean
requeridas ya sea durante la programacin, depuracin y/o puesta en marcha de
la aplicacin, por ejemplo si se utiliza el oscilador de 9.8 MHz, adems de colocar
el Jumper JP1 en las posiciones 1-2 se debe deshabilitar el interruptor 2 ya que
ste pertenece al arreglo necesario para utilizar el otro arreglo de oscilador.
El diseo del circuito impreso correspondiente al esquemtico de la figura 38 se
presenta a continuacin:

Figura 38: Diseo del circuito impreso para la tarjeta de programacin.



Se puede observar en la figura que se ha habilitado un pin para el acceso a la
fuente de 12 Vdc para el caso de que sea necesario este voltaje en el proyecto
(Rels, motores, etc). Adems se ha diseado la tarjeta con un conector lateral de

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

12 pines en forma de regleta de una sola fila, las conexiones de pueden realizar
de diferentes formas: se pueden soldar los pines para que sobresalgan por debajo
de la tarjeta permitiendo el acceso de las diferentes seales mediante el montaje
de la tarjeta en una Proto-Board, tambin se puede cablear hacia una Proto-Board
o circuito mediante la soldadura de pinheads de conexin, a su vez se pueden
utilizar circuitos impresos diseados de manera que sean compatibles con este
conector o tambin puede ser utilizado un cable configurado adecuadamente a
partir de este conector para obtener una interfaz estndar MON-08 en caso de ser
requerida.

En la figura 39 se observa los pines requeridos para obtener el conector de la
interfaz MON-08:

Figura 39: Conector estndar de la interfaz MON-08.


Leccin 9: Software.
Para programar un MCU se requiere un programa de computador que convierta
los comandos de un determinado programa realizado en ensamblador, C, C++ o
Basic, entre otros, a cdigo de mquina; este proceso se conoce como
compilacin. A su vez el programa debe enviar al dispositivo los cdigos de
mquina una vez han sido compilados a travs de un POD como el descrito en la
seccin anterior.

Existen diferentes opciones a la hora de seleccionar el software que se emplear
para programar los dispositivos, algunos mas completos y con mayores
prestaciones que otros, esto se ve reflejado en el costo de determinada
herramienta, aunque pueden conseguirse versiones de prueba con limitacin en el
tamao del programa a realizar as como tambin puede conseguirse software
libre.

Independientemente del Software seleccionado el proceso de Escribir Programas,
Compilacin y posterior programacin de dispositivos es similar para todas las
herramientas se debe acudir a la ayuda y/o tutoriales del mismo teniendo en
cuenta configurar adecuadamente los diferentes parmetros para lograr
programar, simular y realizar depuracin satisfactoriamente en un determinado
dispositivo.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Entre los parmetros que se deben tener en cuenta a la hora de programar un
dispositivo en la mayora de herramientas estn:

- Dar un nombre adecuado al proyecto.

- Direccin donde se guardar dicho proyecto.

- Seleccionar el dispositivo de destino (Tipo de MCU) con que se trabajar.

- Especificar en el editor de texto el lenguaje de programacin que ser
empleado.

- Especificar tipo de conexin al dispositivo.

Una vez configurado el proyecto se puede empezar a escribir el programa
correspondiente al proyecto y seguidamente compilar, simular, depurar y
programar el dispositivo escogido, haciendo uso de los manuales y hojas de datos
tanto de los dispositivos como del software.

A continuacin se presentan diferentes opciones de software que se puede
emplear con sus caractersticas:

CODE-WARRIOR: Code Warrior Development Studio es un Ambiente de
Desarrollo Integrado IDE (Integrated Development Environment) que contiene
todas las herramientas necesarias para completar cualquier proyecto de desarrollo
de sistemas embebidos, incluye: editores de texto, compiladores tanto para
assembler como para C y C++, depuradores, libreras de variadas aplicaciones.
CodeWarrior es ahora desarrollado y distribuido por Freescale, existen diferentes
versiones que segn sus prestaciones aumenta su costo, afortunadamente hay
versiones de prueba que limitan el tamao del cdigo que puede ser
implementado pero suficientes para que los estudiantes puedan empezar a
realizar sus prcticas.

Para mayor informacin Y/O bajar el programa se puede visitar el siguiente link:

http://www.freescale.com

WinIDE: es tambin un ambiente de desarrollo integrado (IDE) para Windows
(Win), el cual posee herramientas de programacin para dispositivos,
programacin en lenguaje ensamblador, simulacin en circuito o sin chip, es
desarrollado por la compaa PE-micro, de manera gratuita como una herramienta
de desarrollo para microcontroladores de diferentes tipos, tanto de 8-bits como de
16 y 32 bits. Para la lnea de 8-bits, han desarrollado los algoritmos de casi todos
los microcontroladores de la familia HC08 o por lo menos los ms utilizados como
los microcontroladores de la serie JK, JL, GP y los muy utilizados, serie QT y QY.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

La desventaja que presenta el uso de este programa es que para cada tipo de
microcontrolador hay que bajar e instalar una versin diferente del programa.

Para mayor informacin Y/O bajar el programa se puede visitar el siguiente link:

http://www.pemicro.com

CROSSWARE: es una compaa dedicada al desarrollo de software como
compiladores de C y C++, simuladores de Assembler, depuradores y herramientas
hardware para sistemas embebidos, posee aplicaciones para distintos tipos de
dispositivos entre los que se encuentra la familia 68xxx de Motorola. El software
de esta compaa tiene un costo relativamente elevado para principiantes pero de
su pgina Web pueden bajarse versiones estudiantiles de evaluacin limitadas por
tiempo de hasta 12 meses.

Para mayor informacin Y/O bajar el programa se puede visitar el siguiente link:

http://www.crossware.com

SDCC - Small Device C Compiler: Es un compilador de cdigo ANSI - C que
puede ser empleado para dispositivos de diferentes fabricantes entre los que se
encuentran: Intel 8051, Maxim 80DS390, Zilog Z80 y la familia Motorola 68HC08.
Tambin se trabaja en la compatibilidad con los MCUs de Microchip de las series
PIC16 y PIC18. SDCC es un programa libre de cdigo abierto que se distribuye
bajo licencia GNU General Public License (GPL).

Para mayor informacin Y/O bajar el programa se puede visitar el siguiente link:

http://sdcc.sourceforge.net/

Otras dos opciones que pueden ser tenidas en cuenta son:

- http://www.imagecraft.com/
- http://www.cosmic-software.com
Leccin 10: Software Code Warrior.
En la presente seccin se presenta de manera resumida la forma de crear,
compilar y depurar un proyecto utilizando el Software Code Warrior (CW) de Free-
Scale. Para tal efecto el estudiante debe bajar el instalador del software de la
pgina del fabricante (www.freescale.com) y seguidamente instalarlo, las
caractersticas mnimas requeridas para el PC son:

- Procesador de 1GHz Intel Pentium o compatible.
- 512 MB de RAM (recomendado 1GB).
- Mnimo 2 GB de espacio libre en Disco Duro.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Puerto Serial DB9.
- Sistema Operativo Microsoft Windows 2000, XP o Vista.

El software instala automticamente la versin de evaluacin, no es necesario
registrarla, esta licencia permite el desarrollo de proyectos como si se tratase de la
versin profesional, por un periodo de 30 das, una vez cumplido este lapso la
licencia trabaja como la edicin especial que es libre permanentemente pero tiene
limitaciones en el tamao del cdigo en C que puede ser escrito (hasta 32KB para
MCUs HC08 y 64KB para ColdFire) suficientes para aplicaciones didcticas
introductorias.

1. Creando un Proyecto.

Se ejecuta el Ambiente de Desarrollo Integrado (IDE) mediante la siguiente ruta:
Inicio > Programas > CW For Microcontrollers Vxx. > CodeWarrior IDE. Una vez
arranca el programa se despliega la siguiente ventana de dialogo:



Seguidamente se selecciona el botn para la creacin de un proyecto nuevo
(Create a New Project) continuacin aparece una ventana de dialogo de
dispositivos y conexiones (Device and Connection). Se selecciona algn
dispositivo de las diferentes familias desplegadas y el tipo de conexin.



UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Para efectos prcticos esta prueba y muchas de las aplicaciones sern realizadas
empleando el MCU MC68HC908JL3; adems para esta primera prueba se
selecciona en conexiones la opcin Full Chip Simulation presionando a
continuacin el botn siguiente.

Seguidamente viene la ventana de parmetros del proyecto (Project Parameters);
en el cuadro Project name se asigna un nombre a cada proyecto creado, por
defecto el CW asigna un nombre pero es conveniente asignar un nombre
significativo para futuras revisiones.



El IDE asigna la extensin .mcp al proyecto automticamente as como tambin
crea una carpeta con el nombre del proyecto en la ubicacin asignada en el
cuadro location esta puede ser una ubicacin por defecto o la que asigne el
usuario empleando el botn set. Se selecciona como lenguaje de programacin
Absolute assembly para ser soportado por el proyecto de la misma forma si se va
a realizar programacin en C se selecciona en la casilla correspondiente.

En este punto se puede seleccionar el botn Finalizar tomndose los dems
parmetros por configurar por defecto.

Si se opta por el botn Siguiente, por el momento se deben seleccionar las
opciones por defecto que presenten las siguientes ventanas de dialogo. Se
recomienda leer los letreros explicativos que presenta el asistente para tener una
idea de lo qu significa cada opcin.


Figura 40: Ventana principal del IDE CodeWarrior.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS



2. Escribiendo un programa

Una vez creado el proyecto aparece la ventana principal del ambiente de
desarrollo (ver Fig 40), donde el CW crea automticamente una serie de carpetas
y archivos que forman parte del proyecto proporcionando definiciones y cdigos de
inicializacin bsicos, por ejemplo se puede observar en la carpeta includes un
archivo con el nombre del dispositivo y la extensin .inc (MC68HC908JL3.inc) en
el se encuentran contenidos los nombres de los puertos y registros asociados a
las direcciones de memoria del microcontrolador guardando una correspondencia
con los nombres que se encuentran en las hojas de datos y manuales de
referencia del fabricante.

Como ejemplo se presenta la definicin del Puerto B del MCU escogido:



UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

En la carpeta sources se almacenan los archivos y funciones que forman parte
del programa principal en especial el CW genera el archivo main.asm que
contiene por defecto una rutina con un ciclo infinito, sta contiene un macro que
alimenta el WatchDog. A continuacin se realizar una rutina en el que el montaje
del proyecto y sus correspondientes procesos de compilacin, depuracin y
simulacin.

Para tal efecto a continuacin se presenta el cdigo que ser utilizado:

LOOP0 LDA #$FF ; A = $FF
LOOP1 INCA ; A = A + 1
CMP #3 ; A = 3?
BNE LOOP1 ; Salto a LOOP1 si A!=3.
LDA #$FF ; A = $FF = 255
LDHX #$1234 ; H:X = $1234
LDHX #$4321 ; H:X = $4321
LDHX #0 ; H:X = $0000
LDX #$FF ; X = $FF
LOOP2 INCX ; X = X + 1
CPX #4 ; X = 4?
BNE LOOP2 ; Salto a LOOP1 si A!=4.
JMP LOOP0 ; Salto a LOOP0 (Se Repite el Ciclo)

Las lneas de cdigo anteriores tienen el propsito de ayudar a familiarizar al
estudiante con algunas de las instrucciones empleadas para la manipulacin de
los registros. Como se observa en los comentarios el flujo del programa es el
siguiente; se inicializa A = $FF luego se incrementa hasta 3 haciendo uso de la
instruccin BNE con la que compara A con 3 en caso de ser diferente (=) salta
hasta la etiqueta LOOP1 realizando un ciclo finito hasta que A sea igual a 3
entonces el programa prosigue con la siguiente instruccin que es la de cargar de
nuevo registro A con $FF, seguidamente se emplea la instruccin LDHX con 3
valores diferentes ($1234, $4321 y $0000), a continuacin se carga la parte baja
del registro H:X con $FF realizndose un ciclo similar al realizado con el registro A
pero utilizando otro valor de comparacin, al finalizar este ciclo la instruccin JMP
LOOP1 vuelve a ejecutar todo de nuevo de manera indefinida.

3. Compilando y Simulando un Proyecto.

Para compilar y simular este cdigo debe ser insertado en el archivo main.asm a
partir de la etiqueta llamada mainLoop:; seguidamente teniendo en cuenta que se
ha escogido previamente como tipo de conexin la opcin Full Chip Simulation se
debe guardar el proyecto y emplear los botones make y debug en este orden,
ver la Figura 41.

Figura 41: Herramientas de compilacin y depuracin del IDE del CodeWarrior.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS



Al compilar en caso de que existan errores en el cdigo, la herramienta presenta
las correspondientes alertas, con un clic sobre cada error automticamente se
indica el lugar o la lnea de cdigo que presenta el error. En caso de no
presentarse errores de compilacin se puede proceder con la herramienta Debug;
se abre una nueva ventana llamada True-Time Simulator & Real-Time Debugger
que ser empleada para simular la ejecucin del programa compilado.

En la ventana de simulacin y depuracin (ver Fig 42) se cuenta con diferentes
herramientas con las que se puede ejecutar el cdigo y comprobar su correcto
funcionamiento, entre otras aplicaciones con esta interfaz se puede ejecutar la
aplicacin paso a paso, insertar puntos de quiebre (Break Points), resetear,
modificar variables registros y puertos, tambin se puede interactuar con los
mdulos TIMER, ADC, IRQ y dems mdulos que posea en MCU en uso.

Figura 42: Ventana de Simulacin y depuracin.



UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Como se observa en la figura hay diferentes mdulos que presentan informacin
de diferente ndole, como el mapa de memoria con la informacin almacenada en
ella, los valores cargados en los registros, etc. En la barra de Debug se observan
los iconos encargados del control de la ejecucin de las instrucciones durante una
simulacin:

Run: Correr la aplicacin hasta encontrar un BreakPoint

Single Step: Correr la aplicacin paso a paso.

Step Over: Correr una subrutina sin entrar en ella.

Step Out: Correr hasta salir de una subrutina en curso.

Halt: Parar la Simulacin.

Reset: Reiniciar.

Al correr la aplicacin paso a paso se puede ir observando las instrucciones que
se van ejecutando, as como los registros y banderas que van siendo modificados
dependiendo del tipo de instruccin ejecutada.

4. Programando un dispositivo.

Para programar un dispositivo se sigue un procedimiento similar al realizado para
simular una aplicacin; la diferencia radica en que se debe cambiar el tipo de
conexin dependiendo del tipo de POD de programacin que se valla a utilizar;
para el caso del circuito descrito anteriormente se selecciona la opcin MON08
Interface en la ventana principal del ambiente de desarrollo.

Figura 43: Seleccin del tipo de conexin para la programacin de dispositivos.




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Al ejecutar el Debug se abre una ventana de opciones en la que se configuran
parmetros como la tasa de transferencia, puerto de comunicacin y otros
parmetros que deben ser configurados adecuadamente para la correcta
comunicacin entre el PC y el MCU.
























UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


CAPITULO 6: INTRODUCCIN A LA PROGRAMACIN EN C y
MICROCONTROLADOR HC08.

El leguaje ensamblador es ideal cuando se desea controlar y configurar el
microcontrolador en forma precisa, de manera bastante cercana al hardware y
con la mxima eficiencia en el uso de la memoria, pero presenta la desventaja de
que el hecho de actualizar o crear una mejor versin del mismo programa, se
torna complicado, sobre todo si es un programa extenso.

Por esta razn la mayora de los programadores prefieren utilizar lenguajes de alto
nivel como el lenguaje C, para realizar sus cdigos. Este lenguaje nos permite
crear rutinas, procesos matemticos y lgicos con mayor facilidad, programas que
en ensamblador son extensos, en lenguaje C se disminuye considerablemente la
cantidad de lneas de cdigo necesarias.

Algunas ventajas de emplear el lenguaje de programacin C:

- En C se pueden crear cdigos portables.
- Facilita el mantenimiento del cdigo.
- El cdigo en C es fcil de entender y de escribir.
- Es independiente de la plataforma.

La ltima ventaja tiene sentido en la medida que se puede utilizar cdigos o
rutinas realizadas en ANSI C en diferentes dispositivos a diferencia de los cdigos
y rutinas en assembler ya que stos varan en gran medida dependiendo del las
diferencias en los juegos de instrucciones inherentes a los dispositivos a la hora
de migrar de plataformas.
Leccin 11: Generalidades de C.
En el presente captulo no se pretende ensear a programar en C, sino presentar
y analizar las caractersticas ms importantes del lenguaje de programacin C, su
sintaxis y gramtica que servirn para sentar las bases necesarias a la hora de
emplear los recursos y posibilidades que el C pone a disposicin de los
programadores de sistemas embebidos.
1. Presentacin del lenguaje.
En la actualidad una de las constantes en la implementacin de sistemas
embebidos es el lenguaje de programacin C, ms que ningn otro, es por tanto
que se ha convertido en el lenguaje y a su vez en una especie de estndar mas
empleado por infinidad de programadores en el mundo de los sistemas
embebidos.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El lenguaje C presenta muchas ventajas: es reducido y fcil de aprender, adems
virtualmente hay compiladores disponibles para cada tipo de procesador existente.
C presenta el beneficio de independencia de procesador caracterstica que
permite al programador concentrarse ms en sus aplicaciones y algoritmos que
en detalles de determinada arquitectura de procesadores.

Posiblemente una de las fortalezas del C sobre otros lenguajes de programacin
es que aunque se trata de un lenguaje del alto nivel y los beneficios que ello
representa, puede considerarse tambin como un lenguaje de bajo nivel puesto
que suministra a los programadores de sistemas embebidos el control directo
sobre el hardware, esta es una caracterstica que solo el C brinda, dejando el
lenguaje ensamblador en un segundo plano, utilizndose este ms como cdigo
adjunto al cdigo en lenguaje de alto nivel, principalmente para la inicializacin del
sistema, para escribir pedazos de cdigo extremadamente eficientes, ultra
compactos o simplemente cdigos que no pueden ser escritos de otra forma.

2. Funciones.
En C se conocen como funciones a las partes elementales de un programa que se
realizan con la intencin de Modularizar o dividir un programa muy grande en
una serie de mdulos ms pequeos y manejables. En los diferentes lenguajes de
programacin a estos mdulos se conocen como subprogramas, rutinas,
procedimientos, etc. La idea es que un programa grande sea dividido en un
conjunto de subprogramas o funciones, adems que exista una funcin principal
(main) que llame a las dems funciones para su ejecucin y estas a su vez
puedan llamar funciones ms especficas y as sucesivamente.

Entre las ventajas de dividir un programa en funciones se tienen:

- Modularizacin: una funcin realiza una tarea muy especfica manteniendo
su extensin (lneas de cdigo) reducida y manejable. Adems cada
funcin puede ser llamada varias veces en un mismo programa incluso
puede ser reutilizada en otros programas. Las funciones por lo general son
desarrolladas y comprobadas por separado.
- Ahorro: tanto de memoria como de tiempo de desarrollo en la medida que
una misma funcin puede ser empleada varias veces en un mismo
programa reducindose as tanto el tiempo de escritura como el de
depuracin.
- Independencia: una funcin mantiene una independencia del resto del
programa con respecto a los datos que maneja, mediante la definicin
adecuada de una interfaz o comunicacin con las funciones que la llaman
o las que llama no teniendo acceso a informacin que no le compete,
evitndose la introduccin de errores por la modificacin de variables
repetidas y dems errores que pueden introducirse en cdigos que se
encuentran funcionando correctamente.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

2.1. Nombre, Valor de Retorno y Argumentos.

Una funcin en C se asocia a un Nombre o Etiqueta que es empleado para
referirse a esta por el resto del programa, stas son llamadas por el programa
principal o por alguna funcin de mayor rango, mediante la inclusin de su nombre
y Argumentos en alguna de sus lneas de cdigo. Los argumentos son datos de
entrada para las funciones y son enviados a estas encerrndolos en un parntesis
al lado del nombre de una funcin dada.

Por ejemplo se tiene la funcin de nombre pot que calcula la potencia de a
elevado a b de dos nmeros; para llamar esta funcin se puede escribir la
siguiente sentencia:

pot(a,b);

En este ejemplo se observan los argumentos a y b entre parntesis que
constituyen los datos necesarios para hallar un resultado la funcin conocida como
pot. El resultado de esta operacin se conoce como Valor de Retorno, este se
encuentra disponible ya que aparece sustituyendo el nombre de la funcin en el
mismo lugar donde se ha realizado la llamada, en el ejemplo no se hace nada con
el valor de retorno. Otro ejemplo donde si es empleado el valor de retornos puede
ser el siguiente:

cantidad = pot(a+5,b) *unidades

En este caso el primer argumento a sumado a 5 es elevado a b y el resultado
(valor de retorno) es multiplicado por la etiqueta unidades el resultado obtenido
finalmente es almacenado en la posicin de memoria identificado por la etiqueta
cantidad.

Para poder llamar a una funcin se requiere que la Definicin de sta aparezca
en alguna parte del mismo archivo o de otro archivo fuente; la definicin no es ms
que el conjunto de instrucciones necesarias para que la funcin realice una tarea
definida cada vez que sea llamada. Adems la definicin incluye el tipo de valor
de retorno y de cada uno de los argumentos de entrada esto se conoce con el
nombre de Declaracin. Siguiendo el ejemplo de la funcin pot:

double pot (double base, double exponente)
{
double resultado;

resultado = ;
return resultado;
}

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

En la primera lnea la palabra double seguido del nombre de la funcin pot indica
el tipo de valor de retorno de sta (punto flotante con 15 cifras de precisin).
Seguidamente y entre parntesis est la definicin de los argumentos (ambos
double). A continuacin se abren las llaves ({ }) que contienen el cdigo de la
funcin, en la primera sentencia se observa la declaracin de la variable resultado
(double) seguida de las sentencias necesarias para calcular el resultado y
finalmente con la sentencia return se devuelve resultado al programa o funcin
que ha llamado a la funcin pot.

Las variables base y exponente han sido declaradas en la cabecera por tanto no
es necesario declararlas de nuevo como si es necesario hacerlo con la variable
resultado puesto que no ha sido declarada. Cuando la funcin pot es llamada
adecuadamente, los valores de los argumentos son cargados en sus
correspondientes variables.

Una funcin tambin debe ser Declarada antes de ser Llamada. La declaracin
de una funcin puede realizarse empleando la primera lnea de la definicin de la
que pueden suprimirse los nombres de los argumentos mas no sus tipos
incluyendo al final el punto y coma. Por ejemplo:

double pot (double, double);

2.2. La funcin Main.

Todo programa escrito en C debe incluir un programa o funcin Principal que es la
que controla la iniciacin y ejecucin del programa en general, es conocida como
la Funcin Main y presenta la siguiente forma:

void main (void)
{
sentencia 1
sentencia 2

}

Una porcin de cdigo encerrada entre llaves ({ }) se conoce como sentencia
compuesta o bloque, es un modo de agrupar sentencias individuales de modo que
se comporten como sentencias nicas para tal efecto todo el cuerpo de una
funcin debe ir comprendido entre las llaves de apertura y cierre.

3. Tokens.

En el vocabulario del lenguaje C existen seis clases de componentes sintcticos
(Tokens) entre los que se tienen: palabras clave, etiquetas, constantes, cadenas
de caracteres, operadores y separadores. El compilador descompone el texto que
encuentra en un programa dado en los diferentes Tokens ignorando ciertos

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

componentes como comentarios y separadores, entre otros, a partir de esta
descomposicin genera el cdigo de mquina correspondiente.

3.1. Palabras Claves de C.

Como en cualquier lenguaje de programacin existe una serie de palabras
reservadas o Clave que el programador no puede emplear como etiquetas (ni de
variables ni de funciones). Estas palabras indican la ejecucin de tareas muy
especficas, teniendo un significado especial para el compilador.

El lenguaje C est formado por un conjunto pequeo de palabras clave
(reservadas) o comandos (keywords), y una serie de operadores. Existen 32
palabras clave, en comparacin con las 150 del BASIC o 200 que poseen otros
lenguajes, como el COBOL y el PASCAL. Estas palabras son:
Auto, break, case, char, const, continue, default, do, double, else, enum, extern,
float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct,
switch, typedef, union, unsigned, void, volatile, while.

3.2. Etiquetas.

Como es sabido, las etiquetas o Identificadores son nombres con los que se hace
referencia a variables o funciones. En lenguaje ANSI C existen ciertas reglas a la
hora de seleccionar los nombres para las variables y funciones:

1. Las etiquetas se forman solo con secuencias de letras minsculas de la a a
la z, maysculas de la A a la Z y dgitos del 0 al 9.

2. El carcter subrayado (_) es considerado como una letra ms.

3. No pueden contener espacios en blanco ni otros caracteres diferentes de
los ya citados, p.e. (* , ; . : - + , etc).

4. El primer carcter debe ser una letra o un smbolo de subrayado (_), nunca
un dgito.

5. Se hace distincin entre maysculas y minsculas, por tanto la etiqueta
BASE es diferente de base y de Base.

6. Son permitidas etiquetas de hasta 31 caracteres de longitud.

Es aconsejable seleccionar nombres que describan o permitan identificar el tipo de
funciones o variables que representa, empleando tantos caracteres como sea
necesario pero siguiendo las anteriores reglas, esto simplifica enormemente tanto
el proceso de programacin como el de depuracin de errores.

3.3. Constantes.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Las variables como su nombre lo indica pueden cambiar dependiendo de las
instrucciones ejecutadas por un programa, a diferencia de stas, las constantes se
mantienen invariables durante toda la ejecucin de un determinado programa, un
ejemplo tpico es el Nmero t (3.141592654) el cual puede aparecer varias veces
en las instrucciones de un programa. Para declarar las constantes se emplea el
cualificador const indicando que una variable no puede cambiar de valor. Ejemplo:

const int i = 10

En C se encuentran distintos tipos de constantes:

- Numricas: son valores del tipo entero o de punto flotante, tambin puede
tratarse de constantes binarias, octales o hexadecimales.

- Caracteres: cualquier carcter individual encerrado en apostrofes () es
considerado como un carcter constante, en realidad es tomado como un
entero entre 0 y 255 o -127 y 127 dependiendo el sistema de acuerdo con
la tabla de equivalencia en cdigo ASCII.

- Cadenas de Caracteres: Se trata de un conjunto de caracteres
alfanumricos encerrados en comillas p.e. caracter o esto es una
cadena.

- Simblicas: stas tienen un nombre o etiqueta como las variables pero no
cambian de valor a lo largo de la ejecucin del programa, es conveniente
nombrarlas con textos solo en maysculas para distinguirlas de las
variables.

3.4. Operadores.

Son smbolos especiales, en algunas ocasiones conjuntos de dos caracteres que
indican operaciones a realizar con las variables y/o constantes de un programa
obtenindose un resultado, entre los operadores se tienen:

- Aritmticos: (+, -, *, /, %) los operadores aritmticos son bastante intuitivos
por tanto solo se explicar el operador % resto de la divisin entera que
como su nombre lo indica solo se aplica a la divisin de enteros y su valor
de retorno es el sobrante de una divisin de enteros p.e. si se tiene la
expresin 23%4 el resultado ser 3.

- Asignacin: (=, +=, -=, *=, /=) La funcin de estos operadores es la de
escribir en el espacio de memoria de una determinada variable el resultado
de alguna expresin o el valor de otra variable, es por tanto que el smbolo
= no indica una igualdad matemtica sino mas bien una sustitucin, es
importante resaltar que debido a la naturaleza de los operadores de

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

asignacin, no puede existir expresiones del lado izquierdo de stos, solo
variables.

Los dems operadores indican operaciones recurrentes sobre las variables
al lado izquierdo de las expresiones su funcionalidad se muestra en los
siguientes ejemplos:

Distancia += 1 equivale a: distancia = distancia +1
rango /= 2.0 equivale a: rango = rango / 2.0

- Incrementales: (++, --) son operadores que incrementan o disminuyen en
una unidad a la variable a la que afectan, en una expresin, estos
operadores pueden ir antes o despus de la variable a la que afectan, el
significado es distinto ya que si se encuentran antes el operador acta
sobre la variable antes de ejecutar la expresin, por el contrario si se
encuentran despus de la variable sta aumenta o disminuye en una
unidad despus de ejecutarse la expresin.

- Relacionales: (==, <, >,<=, >=, !=) Este tipo de operadores se emplean a la
hora de realizar comparaciones entre dos expresiones, el resultado
obtenido de evaluar expresiones con estos operadores solo pueden ser
binarios puesto que al comparar solo se pueden obtener dos soluciones; o
se cumple la expresin (verdadera) o no (falsa). La forma general de
empleo de estos operadores es la siguiente:

expresin1 op expresin2

Donde op puede ser alguno de los operadores: == (igual que), < (menor
que), > (mayor que), <= (menor o igual que), >= (mayor o igual que), =
(distinto que). El procedimiento normal es evaluar primero las expresiones
por aparte y luego compararlas a ver si cumplen con una determinada
relacin; si se cumple el resultado es 1 caso contrario el resultado es 0.

- Lgicos: (&&, II, !) son operadores binarios que permiten combinar los
resultados de los operadores relacionales comprobando que se cumplen
diferentes condiciones o que se cumple una u otra. Los operadores lgicos
disponibles en C son && conocido como and, el operador II conocido como
or, y el operador ! conocido como not o negacin.

3.5. Separadores.

Los separadores se constituyen por uno o varios espacios en blanco, tabuladores,
y caracteres de nueva lnea, estos ayudan al compilador a descomponer un
programa en sus diferentes Tokens as como a mejorar la organizacin y
legibilidad de un programa.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

3.6. Comentarios.

As como en el assembler se emplean comentarios a lo largo del programa para
hacerlo mas entendible, del mismo modo se puede comentar sobre la forma en
que un programa es realizado ya sea para ayudar en futuras modificaciones como
para el entendimiento del mismo por parte de otras personas. Es de tener en
cuenta que los compiladores ignoran por completo las partes del programa que
son catalogadas como comentarios.

En C los comentarios son encerados entre los caracteres /* y */ a su vez todo lo
que va despus de los caracteres // hasta el final de la lnea se considera tambin
como comentario y es ignorado por el compilador.

3.7. Expresiones y Sentencias.

Una expresin es una combinacin de variables, constantes y operadores, las
expresiones son equivalentes al resultado obtenido de aplicar los operadores a los
operandos, es decir; en el momento de la ejecucin de un programa, donde se
encuentren expresiones sern sustituidas por sus resultados.

Las expresiones definidas forman parte de entidades de rango superior conocidas
como sentencias, las cuales pueden ser entendidas y ejecutadas como unidades
completas, pueden adems incorporar expresiones de distinto tipo (lgicas,
aritmticas,).

Leccin 12: Fases de Procesamiento de un Programa en C.

A continuacin se presentan las diferentes etapas que hacen parte del
procesamiento de un programa en C hasta obtener el cdigo de mquina
correspondiente tambin conocido como cdigo objeto.

1. El Pre-procesador.

Este es un componente caracterstico de C es decir que no lo poseen otros
lenguajes de programacin su tarea es actuar sobre el programa fuente antes que
el compilador, convirtindolo en otro archivo fuente predigerido. En general las
transformaciones realizadas por el pre-procesador incluyen:

- Eliminacin de los comentarios.
- Sustitucin se las constantes simblicas por sus valores reales.
- Inclusin 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).


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

2. El Compilador.

Su misin consiste en traducir a lenguaje de mquina el programa escrito en
lenguaje C, contenido en uno o ms archivos fuente entregados por el pre-
procesador, generando lo que se conoce como un archivo objeto, algunos
compiladores pasan por una fase intermedia en lenguaje ensamblador. Tambin
puede detectar errores durante la compilacin presentando un mensaje
dependiendo del error.

3. El enlazador

Un archivo objeto est escrito en cdigo mquina, pero no puede ser ejecutado
por si solo, puesto que le falta cdigo 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 Libreras. Ms
especficamente el enlazador toma los archivos de cdigo objeto, generados en
los primeros pasos del proceso de compilacin y la informacin de los dems
recursos necesarios (Libreras), remueve recursos que no son necesarios y enlaza
el cdigo objeto con las libreras utilizadas produciendo finalmente un archivo
ejecutable.

4. Libreras.

Las Libreras no son mas que funciones precompiladas, que contienen el cdigo
necesario para realizar funciones especificas, a las que el archivo fuente llama.
Estas libreras son realizadas para mantener el lenguaje lo ms sencillo posible
pero brindando las herramientas y funciones estndar que cualquier programador
pueda necesitar.

Estas funciones estn agrupadas en un conjunto de libreras de cdigo objeto, que
constituyen la llamada librera Estndar. La llamada de estas libreras se realiza
de la misma manera que a cualquier funcin por lo tanto deben ser declaradas
antes de ser llamadas por el programa, para tal efecto se emplea la sentencia
#include.

Un ejemplo de librera es la llamada stdio (Standar Imput/Output) que posee
diferentes funciones tanto para leer como para escribir datos de diferentes
dispositivos perifricos como teclados, unidades de almacenamiento, pantallas,
impresoras, etc.

5. Tipos de Datos Fundamentales.

Con la intencin de maximizar la eficiencia del manejo de memoria en C se puede
trabajar con datos de diferentes tipos dependiendo de la aplicacin entre los que
se tienen: caracteres alfanumricos, nmeros enteros, nmeros reales con parte

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

entera y parte fraccionaria etc. Admitindose diferentes rangos de precisin y
signo (+ o -), todo esto con la intencin de que el compilador reserve espacios de
memoria suficientes para las variables declaradas como alguno de los tipos. En la
tabla 2 de la seccin Almacenamiento de Datos de la unidad 1 se presentan los
diferentes tipos de datos, rangos y signo que pueden ser empleados en C.
Entre los tipos de datos que se pueden apreciar en la tabla 2 tenemos los tipos
char o caracteres alfanumricos, int o nmeros enteros, float o nmeros reales,
tambin conocidos como de punto flotante. Los nmeros enteros pueden tener
signo + o - (signed) o simplemente ser no negativos (unsigned). Las palabras short
y long hacen referencia al rango en que se definen los enteros; similarmente para
los reales estn las palabras double y long con un significado un poco distinto.

Es de tener en cuenta que cuando en C hay una expresin en las que dos
constantes y/o variables de distinto tipo se encuentran relacionadas mediante un
operador; el compilador convierte el operando de menor rango para igualarlo con
el de mayor rango teniendo en cuenta el siguiente orden:

Long double > double > float > unsigned long > long > unsigned int > int > char

De la misma forma el compilador asigna a la variable resultado de una expresin
el tipo predominante en dicha expresin, hecho que hay que tener en cuenta
cuando en una expresin predomina un tipo de menor rango puesto que se puede
perder informacin en futuras operaciones con esta variable.

Estas caractersticas del compilador son conversiones implcitas y son
transparentes para el programador aunque ste puede realizar conversiones
explicitas precediendo el tipo que se quiere asignar entre parntesis a la
constante, variable o expresin. Ejemplo:

x = (int) 1.7 + (int) m;

6. Modos de Almacenamiento.

El modo de almacenamiento de una variable en C es una caracterstica que
determina en que momento es creada una variable, en que puntos se tiene acceso
a sta y en que momento deja de existir. En C existen 4 modos de
direccionamiento que sern explicados a continuacin:

1. auto: o modo automtico es el modo por defecto para las variables que son
declaradas dentro de un bloque de cdigo {} por lo tanto no es necesario
escribir la palabra auto. Cada variable auto se crea al iniciar a ejecutarse
un bloque dado y deja de existir cuando ste termina de ejecutarse, por
tanto solo son visibles en el bloque que estn definidas y en otros bloques
anidados en el mismo aunque pueden ser ocultadas en bloques anidados
mediante la declaracin de una variable dentro de estos con el mismo
nombre.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


Es de tener en cuenta que estas variables no son inicializadas por defecto
es decir que antes de que el programa les asigne un valor estas pueden
contener datos aleatorios de operaciones anteriores en el espacio de
memoria que se les ha asignado.

Un ejemplo que ilustra el modo de almacenamiento automtico:


{
int i=1, j=2; // se declaran e inicializan i y j

{
float a=6., j=3.; // se declara j nuevamente pero tipo float
// ocultando la j tipo int para este bloque
j = j + a // anidado.
// la variable i=1 si puede ser accesada
}
// Fuera del bloque, j tipo float no existe
// la variable j=2 tipo int puede ser
accesada
}


2. extern: son variables globales es decir que existen a lo largo de todo el
programa y pueden ser accesadas por cualquier funcin que se encuentre
en el archivo, son definidas al comienzo de todo el programa fuera de
cualquier bloque o funcin. Estas variables son inicializadas en cero por
defecto.

Pueden ser utilizadas para transmitir valores entre funciones pero esta
prctica no es recomendable, tambin estas variables pueden ser ocultadas
mediante la declaracin de una variable con el mismo nombre al interior de
un bloque.

3. static: las variables static pueden ser declaradas dentro de un bloque como
las auto pero conservan su valor durante distintas ejecuciones del este
bloque a lo largo del programa, es decir, que no son borradas de la
memoria durante la ejecucin del programa como las extern. Se inicializan
en cero por defecto.

Se pueden definir variables static extern la cuales solo son accesibles para
funciones y bloques que se encuentren desde que son definidas hasta el fin
del archivo; es una forma de controlar la accesibilidad a una variable.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Las funciones por defecto presentan un modo extern pero el acceso a stas
tambin puede ser controlado mediante una definicin static por lo tanto
solo ser accesible para funciones definidas despus de esta y hasta el
final del archivo.

4. register: este modo es una especie de recomendacin para el compilador
con la intencin de que solo si es posible, ciertas variables sean guardadas
en los registros de la CPU para que los clculos con stas sean ejecutado
de manera ms gil. Es de tener en cuenta que para las funciones no
existen los modos de almacenamiento register ni auto.

7. Control del Flujo de ejecucin.

Teniendo como principio la ejecucin Secuencial de los programas, es decir que
sus sentencias se ejecutan una tras otra en orden desde la primera hasta la
ltima. Algunas veces es necesario no seguir el flujo del programa en orden sino
saltar a partes del programa que sern ejecutadas en casos especficos, para tal
efecto C cuenta con sentencias especiales que se clasifican en dos grupos las
Bifurcaciones, sentencias que segn ciertas condiciones pueden ser elegidas dos
o mas opciones, y por otro lado estn los Bucles, sentencias que permiten la
ejecucin cclica de conjuntos de instrucciones el numero de veces que sea
requerido por la aplicacin.

7.1. Bifurcaciones.

Entre las bifurcaciones tenemos:

- Operador Condicional: Est compuesto por tres operandos que cumplen
con la siguiente notacin general:

expresin_1 ? expresin_2 : expresin_3;

Este operador se ejecuta de la siguiente forma: se evala la expresin_1, si
el resultado de dicha expresin es trhue, se ejecuta la expresin_2; caso
contrario se ejecuta la expresin_3.

- Sentencia IF: esta permite la ejecucin o no de una sentencia simple o
compuesta dependiendo de una determinada condicin. Su forma general
es la siguiente:

if (expresin)
sentencia;

Primero se evala la expresin si el resultado es true se ejecuta la
sentencia en caso contrario se salta la sentencia a la siguiente lnea del

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

programa tenindose en cuenta que la sentencias pueden ser simples o
compuestas (bloques {}).

- Sentencia IF ELSE: esta permite una ejecucin de una parte u otra del
programa dependiendo del valor de verdad de la expresin entre
parntesis.

if (expresin)
sentencia_1;
else
sentencia_2;

Se evala la expresin si es verdadera se ejecuta la sentencia_1, saltando
sentencia_2 hasta la siguiente lnea de comando, si por el contrario la
expresin es falsa se ejecuta la sentencia_2 directamente saltndose
sentencia_1.

- Sentencia IF ELSE Mltiple: con esta sentencia se puede realizar
ramificaciones mltiples ejecutando solo una de diferentes partes de un
programa segn se cumpla una entre n condiciones.

if (expresin_1)
sentencia_1;
else if (expresin_2)
sentencia_2;
else if (expresin_3)
sentencia_3;
else if ()

[else
sentencia_n;]

Se evala expresin_1 si es verdad se ejecuta sentencia_1, si es falsa se salta
sentencia_1 evalundose expresin_2 y as sucesivamente; si ninguna de las
expresiones es verdadera se ejecuta entonces la sentencia_n que se conoce
como la opcin por defecto que a su vez puede ser una sentencia nula (;)

- Sentencia SWITCH: Similar a la sentencia IF ELSE mltiple pero con
importantes diferencias, su forma general es la siguiente:

switch (expresin) {
case expresin_cte_1:
sentencia_1;
case expresin_cte_2:
sentencia_2;


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

case expresin_cte_n:
sentencia_n;
[default
sentencia]
}

Se evala expresin se tiene en consideracin el resultado de esta expresin
si dicho valor coincide con el valor constante expresin_cte_1 entonces se
ejecuta sentencia_1, sentencia_2, ,sentencia. Si coincide con
expresin_cte_2 entonces se ejecutan todas las sentencias a partir de la
sentencia_2.
Si no coinciden ninguna de las expresiones constantes entonces solo se
ejecuta la sentencia por defecto si solo se desea ejecutar una de las sentencia,
se emplea la sentencia brake al final de cada sentencia para dar por terminada
la sentencia switch.
Si se desea ejecutar determinada sentencia para diferentes valores de
expresin se pueden colocar varios case expresin_cte seguidos. (case
expresin_cte1: case expresin_cte_2:)

8. Bucles.

Los bucles pueden repetir cclicamente la ejecucin de determinadas lneas de
cdigo de un programa bien sea un nmero definido de veces o hasta que se
cumpla una determinada condicin lgica o aritmtica, las tres herramientas que
presenta C para tales efectos son:

- Sentencia WHILE: Esta permite ejecutar repetidamente una instruccin o
bloque de instrucciones mientras se cumpla una determinada condicin, su
forma general es la siguiente:

while (expresin_de_control)
sentencia;

Sentencia se ejecutar siempre que al evaluarse expresin_de_control
resulte verdadera es de sealarse que en sentencia alguna variable que
tambin intervenga en expresin_de_control debe ir cambiando para evitar
que el programa entre en un bucle infinito.

- Sentencia FOR: La forma general del FOR en C es la siguiente:

for (inicializacin, expresin_de_control, actualizacin)
sentencia;

Al ejecutarse una sentencia FOR primeramente se inicializa una variable a
conveniencia de la aplicacin, seguidamente y de forma general se tienen
en cuenta las variables inicializadas para evaluar la expresin_de_control,

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

siempre que esta resulte verdadera se ejecutar sentencia despus se
realiza la actualizacin que puede consistir en el incremento de contadores
o la actualizacin de variables y retornar a evaluar la
expresin_de_control hasta que esta sea falsa.

- Sentencia DO WHILE: Funciona de modo similar que la sentencia WHILE
con la diferencia de que la evaluacin de la expresin_de_control se
realiza al final del bucle despus de haber ejecutado una vez al menos las
sentencias entre las llaves, estas se seguirn ejecutando mientras que
expresin_de_control sea verdadera, a continuacin la forma general de
esta sentencia:
do
sentencia;
while (expresin_de_control);

El punto y coma se debe colocar despus del parntesis para diferenciar
esta lnea de una con una sentencia WHILE normal.

9. Sentencias break, continue, goto.

Como se observ anteriormente la sentencia break interrumpe el bucle donde se
encuentre incluida, aunque la expresin de control correspondiente sea verdadera.

La sentencia continue hace que el programa comience el siguiente ciclo del bucle
donde se encuentre aunque no haya completado la ejecucin completa de una
sentencia compuesta o bloque.

La sentencia goto etiqueta hace saltar al programa a punto donde se haya escrito
la etiqueta correspondiente.
Leccin 13: Ejemplos de manejo de mdulos del HC08.

En el presente capitulo se presenta de manera ilustrativa a partir de un ejemplo
especfico el procedimiento a seguir para abordar el desarrollo de programas,
tanto en assembler como en C, que manejarn los diferentes mdulos y perifricos
que ofrecen los microcontroladores de la familia HC08.

El ejemplo propuesto consiste en utilizar uno de los pines de conversin
Anlogo/Digital del microcontrolador para introducir una seal de voltaje que vare
entre 0 y 5 voltios y a partir de esta seal definir el ciclo til de una seal PWM
generada en el Modulo TIM (TIMER INTERFACE MODULE) con la intencin de
conectar un LED en este y observar la variacin de la intensidad dependiendo de
la posicin del potencimetro.
1. Reuniendo Informacin de los Mdulos del MCU.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Para empezar con el desarrollo del programa, primero es necesario documentarse
sobre el uso de los mdulos que se vallan a implementar, en este caso el mdulo
de conversin anlogo digital (ADC) y el mdulo temporizador (TIM). Para tal
efecto se acude a las hojas de datos del dispositivo a utilizar, en este caso el
microcontrolador MC68HC908JK3, en capitulo anterior se presentan las
caractersticas, configuraciones, registros que utiliza y descripcin de
funcionamiento del mdulo ADC, Igualmente se encuentra la informacin relevante
para el mdulo TIM. A partir de esta informacin y de manera ilustrativa a
continuacin se extracta informacin esencial sobre el mdulo ADC, si se desea
complementar se debe acudir a la hoja de datos.

1.1. Caractersticas del ADC (MC68HC908JK3).

- 12 canales de conversin con entrada multiplexada.
- Conversin por aproximaciones lineales.
- Resolucin de 8 bits.
- Conversin nica o continua.
- Bandera o interrupcin de conversin completada.
- Reloj de conversin seleccionable.

1.2. Registros del ADC.

Los registros empleados por el ADC son los siguientes:

- ADSCR: ADC status and control. Estado y control del ADC.
- ADR: ADC Data Register. Registro de datos del ADC.
- ADICLK: ADC Imput clock Register. Registro de entrada de Reloj.

Figura 44: Registros del ADC.



1.3. Descripcin funcional del mdulo.

El voltaje de entrada al conversor es digitalizado empleando el mtodo de
aproximaciones sucesivas, una vez la conversin es realizada, el dato se guarda

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

en un registro especial del conversor (ADR), a su vez puede o activar una bandera
o generar una interrupcin dependiendo del registro de configuracin del ADC
(ADCR).

Si el voltaje de entrada es igual que Vdd (alimentacin del uC) la salida es $FF si
la entrada es igual a Vss (tierra) la salida del ADC es $00, los voltajes que se
encuentren entre Vdd y Vss son convertidos linealmente entre estos valores
empleando una resolucin de 8 bits. Es importante tener en cuenta que el voltaje
de entrada al conversor nunca debe exceder el voltaje de alimentacin del uC.

Cuando la conversin A/D es continua, los valores digitales son guardados en el
registro ADR continuamente sin importar si estos datos han sido ledos o no,
despus de cada conversin el Bit COCO es puesto en alto (1) adems puede
generar una interrupcin en la CPU cuando este Bit se encuentra en un estado
lgico bajo; la conversin contina indefinidamente hasta que el Bit ADCO es
puesto en un valor lgico bajo (0).

1.4. Registro de Estado y Control (ADSCR).

A continuacin se describen la funcin de los diferentes Bits del registro ADSCR:

- AIEN: ADC Interupt Enable Bit.

Cuando se encuentra en alto se activa la generacin de interrupciones
despus de cada conversin, sta seal de interrupcin cambia su estado
lgico a 0 cuando el registro de datos es ledo o cuando se ha escrito en el
registro ADSCR. Una seal de reset pone en estado bajo a este Bit.

1 = Interrupcin del ADC habilitada.
0 = Interrupcin del ADC deshabilitada.

- COCO: Conversions Complete Bit.

Cuando el Bit AIEN se encuentra en 0 el Bit COCO es configurado como
de solo lectura y es activado (puesto en 1) cada vez que se completa una
conversin. Este Bit cambia su estado lgico a 0 cuando el registro de
datos es ledo o cuando se ha escrito en el registro ADSCR. Una seal de
reset pone en estado bajo a este Bit. Cuando AIEN se encuentre en 1, El
Bit COCO es de solo lectura y siempre se encuentra en 0.

1 = Se complet la conversin (AIEN = 0).
0 = No se ha completado la conversin (AIEN = 0).

- ADCO: ADC Continuous Conversion Bit.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Si se encuentra en 1 el ADC realizar conversin de datos de manera
continua actualizando en ADR cada vez que sea realizada una conversin,
en el caso de que se encuentre en 0, solo se realiza una conversin. Una
seal de reset pone en estado bajo a este Bit.

1 = Conversin continua.
0 = Una sola conversin A/D.

- ADCH [4:0]: ADC Chanel Select Bits.

Estos forman un campo de 5 Bits empleados para la seleccin de uno de
los canales del conversor de acuerdo con la siguiente tabla:

Tabla 10: Bits de seleccin del ADC.




Nota 1: La conversin ser nula si se seleccionan canales sin uso.
Nota 2: Los niveles de voltaje suministrados por nodos de referencia interna como
se especifica en la tabla son empleados para verificar la operacin del ADC tanto
durante su produccin como para aplicaciones de usuario.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

1.5. Registro de Datos (ADR).

En este registro de 8 bits se cargan los valores que generados cada vez que se
completa una conversin.

1.6. Registro de seleccin del Reloj (ADICLK).

Con este registro se configura la frecuencia de reloj con la que el ADC va a
trabajar. Emplea un campo de 3 Bits con los que se selecciona la razn de divisin
con la que se genera el reloj interno del ADC. En la siguiente tabla se presentan
las configuraciones disponibles.

Tabla 11: Configuracin de la razn de divisin de la Frecuencia de entrada al
ADC.



Una vez se ha consultado la documentacin del mdulo ADC se conoce la forma
de configurarlo y utilizarlo, de igual forma para este ejemplo queda como tarea
para el estudiante realizar la documentacin para el uso del mdulo TIM, esta
informacin puede ser encontrada en el Capitulo 8 de las hojas de datos del
dispositivo en uso.
Leccin 14: Programacin en Assembler del HC08.
Haciendo uso del correcto procedimiento que incluye desarrollo de diagramas de
flujo se genera el cdigo correspondiente a resolver la problemtica planteada.
Dado que el estudiante debe estar familiarizado con este proceso de desarrollo a
continuacin solo se presenta el cdigo realizado para esta aplicacin, se debe
proceder a analizarlo, haciendo uso de los comentarios y del manual de referencia
del dispositivo para consultar los nemnicos utilizados y as poder comprender la
funcin de las diferentes lneas de comando escritas.

Para escribir el programa en assembler se gener un nuevo proyecto siguiendo
los pasos descritos en la seccin 5.3.1 referente al software CodeWarrior, es
importante tener en cuenta que el software genera todos los archivos que se
requieren para programar de forma sencilla y estructurada.

Para escribir el cdigo adems del manual de referencia de la CPU 08, se emple
el archivo MC68HC908JK3.inc, en este archivo es realizado por el CodeWarrior ,

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

en el se encuentran declaradas las etiquetas de todos los registros de control de
los diferentes mdulos, vectores de interrupcin, mascaras y mapa de memoria
del microcontrolador en uso, facilitando la tarea del programador as que no es
necesario redefinir nuevas etiquetas para asignar los espacios de memoria,
registros de control, mascaras etc. que pueda utilizar el programa. Para tal efecto
el Linker o enlazador se encarga de procesar todas las etiquetas empleadas.

En este caso, para generar la seal PWM se debe seleccionar un valor de
frecuencia fijo, basndose en la informacin sobre en mdulo TIM en las hojas de
datos, se sabe que la frecuencia de una seal PWM generada a partir del mdulo
temporizador depende del valor cargado en el registro TMOD, ste representa el
periodo de dicha seal. Al calcular este periodo se debe tener en cuenta el valor
del pre-escalador; Si se requiere generar una seal a una frecuencia de 500 Hz
con un valor del pre-escalador (PS) de 4, se emplea la siguiente ecuacin:

( )
0099 $ 153
2
10 9152 . 4 500 / 1
2
4 2
6
2
= ~

=
+ +
x f t
TMOD
PS
xtal


Por otro lado el ancho del pulso de la seal (Ciclo util) se debe cargar en el
registro TCH0, ste depende de la posicin del potencimetro que traducido a
valores digitales puede ir en el rango de 0 a 255 pero como el periodo de la seal
generado por el contador es 153, se debe normalizar el valor adquirido por el ADC
utilizando una simple regla de tres 255 153 como ADR TCHO entonces:

255
153
=
ADR
TCHO

Teniendo en cuenta estas observaciones a continuacin se presentan las lneas
de cdigo de una forma de solucionar el problema planteado:


;*******************************************************************
;* This stationery serves as the framework for a user application. *
;* For a more comprehensive program that demonstrates the more *
;* advanced functionality of this processor, please see the *
;* demonstration applications, located in the examples *
;* subdirectory of the "Freescale CodeWarrior for HC08" program *
;* directory. *
;*******************************************************************

; Include derivative-specific definitions
INCLUDE 'derivative.inc' ; Directiva para incluir texto de otros
archivos.
; derivative.inc incluye la declaracin de
; perifricos (MC68HC908JK3.inc)

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

;
; export symbols
;
XDEF _Startup ; Directiva para definicin de etiquetas globales
para ; el enlazador.
ABSENTRY _Startup ; Directiva que especifica el punto de
entrada de la
; aplicacin Assembler.
;
; variable/data section
;
ORG RAMStart ; Insert your data definition here
PER_PWM: EQU $0099 ; Definicin de variable: Periodo.
;
; code section
;
ORG ROMStart ; Directiva que fija el PC en el valor que
; representa la etiqueta adyacente.

_Startup:
LDHX #RAMEnd+1
TXS ; Se Inicializa el Stack Pointer(#RAMEnd+1).
CLI ; Se habilitan las Interrupciones.

INICIO
BSET CONFIG1_COPD, CONFIG1 ; Se desabilita el WatchDog
JSR INIT_PORTS ; Salto a rutina de inicializacin demdulos
BCLR TSC_TSTOP, TSC ; Se activa el contador ('0' en el bit TSTOP
del TSC).
ESPERA
BRA ESPERA ; Espera mientras ocurre una interrupcin.

;===========================
; INICIALIZACIN DE PUERTOS
;===========================

INIT_PORTS
LDA #%00100000 ; Configuracin del Reloj del ADC (ExtCLK/2).
STA ADICLK ; Se carga la configuracin del Reloj en
ADICLK.
LDA #%00100000 ; Se habilitan la conversin continua del ADC.
STA ADSCR ; Se carga la configuracin del ADC en
ADSCR.

MOV #%00110000,TSC ; Se Reinicia y detiene el Contador del TIM.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

LDHX #PER_PWM ; Se carga el valor del periodo de la seal PWM
en H:X.
STHX TMOD ; Se transfiere el valor al registro mdulo
contador.
MOV #%11011010,TSC0; Se configura el registro de control del
canal CH0 ; (PTD4).
RTS ; Retorna de la subrutina.


;=================================
;INTERRUPCION DEL TIM POR OVERFLOW
;=================================

TIMOvr_INT
BCLR TSC_TOF, TSC ; Se reconoce la interrupcin.
RTI ; Retorna de la interrupcin.

;====================================
;INTERRUPCION DEL TIM POR COMPARACION
;====================================

TIMCH0_INT
BCLR TSC0_CH0F,TSC0 ; Se reconoce la interrupcin.
LDX #ADR ; Se carga el valor del ciclo util en X.
LDA #PER_PWM ; Se carga el valor del periodo en A.
MUL ; Se efectua la multiplicacin [X:A] <= X x A.
PSHX ; Se guarda la parte alta del resultado de MUL en
SP.
PULH ; Se carga en H el valor de X pre-cargado en SP.
LDX #$FF ; Se carga el divisor (256) en X.
DIV ; Se efectua la divisin A <= [H:A]/X.
STA TCH0L ; Se carga el valor del ciclo til en TCH0
RTI ; Retorna de la interrupcin.

;===============================================
;VECTOR DE INTERRUPCIN POR OVERFLOW DEL TIM
;===============================================

ORG INT_TIMOvr
JMP TIMOvr_INT

;===============================================
;VECTOR DE INTERRUPCIN POR COMPARACION DE TCH0
;===============================================

ORG INT_TIMCH0

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

JMP TIMCH0_INT

;===============================================
;VECTOR DE INTERRUPCIN DE RESET
;===============================================

ORG INT_RESET
DC.W _Startup ; Reset

En este ejemplo se observa el uso de interrupciones para la generacin de la
seal PWM, para lo cual en el programa o rutina principal luego de configurar e
inicializar los puertos y mdulos a emplear, se entra en un ciclo de espera (modo
de bajo consumo) mientras que ocurren las interrupciones, estas estn definidas al
final del programa mediante vectores que generan los saltos a las
correspondientes rutinas programadas dependiendo de su tipo y funcin.
Leccin 15: Programacin en C del HC08.
De forma anloga y teniendo en cuenta las mismas variables y observaciones
presentadas para la programacin en assembler a continuacin se presenta la
solucin del problema pero utilizando el lenguaje de programacin C.

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
/*===========================*/
/* Variables Globales */
/*===========================*/
unsigned int PER_PWM = 153;

/*===========================*/
/* Declaracin de Funciones */
/*===========================*/
void init_ports (void);
void timovr_int (void);
void timch0_int (void);

/*===========================*/
/* Programa Principal */
/*===========================*/
void main(void) {
EnableInterrupts; /* enable interrupts */
CONFIG1 = 1; /* Deshabilita el watchdog */
init_ports(); /* Configura ADC y TIM */

for(;;) { /* Ciclo interminable */
/* Espera interrupciones */

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

} /* Salta nuevamente al ciclo for */
}

/*===========================*/
/* Inicializacin de Mdulos */
/*===========================*/
void init_ports (void){
ADICLK = 32; /* Se carga la configuracin del Reloj del ADC en
ADICLK */
ADSCR = 32; /* Se carga la configuracin del ADC en ADSCR */
TSC = 48; /* Se Reinicia y detiene el Contador del TIM */
TMOD = PER_PWM; /* Se carga valor al registro mdulo contador */
TSC0 = 218; /* Se configura el registro de control del canal CH0 */
}

/*==============================================*/
/* Interrupcin del TIM por Overflow (Periodo) */
/*==============================================*/

interrupt 6 void timovr_int (void){

TSC &= ~TSC_TOF; /* Se reconoce la interrupcin del TIM por overflow
*/
}

/*===============================================*/
/* Interrupcin del canal 0 del TIM (Cicli Util) */
/*===============================================*/

interrupt 4 void timch0_int (void){

TSC0 &= ~TSC0_CH0F; /* Se reconoce la interrupcin del TIM por
comparacin en TCH0*/
TCH0L = (PER_PWM * ADR)/256; /* Normalizacin del valor del Ciclo Util.*/
}

ACTIVIDADES DE AUTOEVALUACIN DE LA UNIDAD
- Cules son los smbolos de un diagrama de flujo y que significa cada uno?
- Que es Assembler?
- Describa los diferentes tipos de instrucciones de Assembler.
- Cules son los modos de ejecucin del HC08?
- Que es CodeWarrior?
- Cules son las principales caractersticas del lenguaje C?
- Describa las caractersticas del ADC (MC68HC908JK3).

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

BIBILIOGRAFA:
[1] BARRETT Steven F, Pack Daniel J.Microcontrollers Fundamentals for
Engineers and Scientists. Morgan & Claypool. 2006.
[2] NOERGAARD Tammy. Embedded Systems Architecture. Newnes. 2005.
[3] MARWEDEL Peter. Embedded System Design. Springer. 2006.
[4] CATSOULIS John. Designing Embedded Hardware. O'Reilly. 2005.
[5] ZURELL Kira.(2000). C Programming for Embedded Systems. R&D Books.
[6] BARR Michael. Programming Embedded Systems in C and GNU
Development. OReilly. 2006.
[7] P. RAGHAVAN, Amol Lad, Sriram Neelakandan. Embedded Linux System
Design and Development. Auerbach Publications. 2006.
LINKS
[8]
[9] http://www.cosmic-software.com/products.php
[10] http://www.uclinux.org/ports/coldfire/
[11] http://www.processorexpert.com/
[12] http://www.embedded.com
[13] http://www.bairesrobotics.com.ar/data/guia68hc08.pdf
[14] http://gem.win.co.nz/mario/hc08/
[15] http://akimpech.izt.uam.mx/Web_jr/ami.htm
[16] http://www.it.uc3m.es/ttao/html/index.html
[17] http://www.lasalle.edu.co/csi_cursos/informatica/teoria/ (Glosario)
[18] http://www.depeca.uah.es/wwwnueva/docencia/ITI-
EI/sd/index.htm#documentos
[19] www.bairesrobotics.com.ar/data/instrucc0508.pdf
[20] www.bairesrobotics.com.ar/data/guia68hc08.pdf

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

UNIDAD 3
Nombre de la Unidad Sistemas operativos orientados a sistemas embebidos
Introduccin Estudio y discusin de sistemas operativos orientados a
sistemas embebidos
Justificacin Luego de conocer la programacin de sistemas
embebidos se debe introducir al estudiante del curso en la
implementacin de sistemas operativos orientados a
sistemas embebidos
Intencionalidades
Formativas
- Reconocer los conceptos bsicos de los sistemas
operativos orientados a sistemas embebidos
- Reconocer las caractersticas del sistema operativo
embedded Linux
- Implementar un sistemas operativo embedded
Linux (uCLinux)
- Reconocer los diferentes emuladores de
micorcontroladores.
Denominacin de
captulos
7. Visin general
8. Sistema operativo embedded Linux
9. Implementacin de embedded Linux
CAPITULO 7: VISIN GENERAL.

Muchas definiciones acerca de lo que es un sistema embebido ya se han
presentado en captulos anteriores, algunas hablan del nmero tareas realizables,
o, de las limitaciones de Hardware y Software, otras del desempeo y
confiabilidad, masividad de consumo, finalmente las que hablan de los costos. 4 y
5. Todas en algn momento pueden ser vlidas pero no son generalizables,
debido a que un sistema embebido responde a una necesidad y con base en esta
es diseado.

Como es sabido en la mayora de los casos los sistemas embebidos deben
reaccionar a estmulos del ambiente que los circunda con restricciones en el
tiempo, en otras palabras el tiempo que toman en adquirir y procesar una seal
debe ser menor al tiempo en que dicha informacin es actualizada tiempo real.

Aunque un sistema embebido puede o no ser de tiempo real, es imperante que
los programas en este tipo de sistemas cumplan con caractersticas especficas
para que las tareas a realizar se ejecuten minimizando tiempos muertos y
optimizando el uso de los recursos fsicos. Al hablar de sistemas operativos
orientados a sistemas embebidos con las limitaciones de Hardware existentes y

4 Tammy Noergaard EMBEDDED SYSTEMS ARCHITECTURE a Comprehensive Guide for Engineers
and Programmers. Elsevier 2005 p, 5,6
5 Antonio Nadal Galiana Llinares Sistemas Embebidos p.7

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

dependiendo de los requerimientos de la aplicacin que se quiera implementar, se
deber hacer uso de sistemas operativos especiales.
Leccin 1: Consideraciones sobre el Hardware.
Aunque en varios casos podemos encontrar los sistemas embebidos como parte
de un sistema o producto ms grande, un sistema embebido se conforma de
varias unidades funcionales para realizar eventualmente una o varias tareas,
deber entonces contar con componentes Hardware capaces de procesar toda la
informacin de acuerdo con la finalidad que se le quiera dar al sistema.


Teniendo en cuenta lo anterior se analiza brevemente a manera de repaso los
componentes de Hardware que pueden ser encontrados en los sistemas
embebidos.

- Microprocesador / Microcontrolador:

Encargado de realizar las principales operaciones de clculo del sistema.
Ejecuta cdigo para realizar una determinada tarea y dirige el
funcionamiento de los dems elementos que le rodean.

- Bloques de Memoria Voltil y No Voltil:

La primera es utilizada para almacenar datos empleados para realizar
diferentes tipos de operaciones, clculos principalmente, la segunda se
utiliza para guardar los programas y parmetros necesarios para la
operacin del sistema.

Si en la implementacin se utiliza un MCU es posible que la memoria se
encuentre en el interior del microcontrolador, si sta es insuficiente se
aade un integrado de memoria externo.

- Mdulos de Comunicacin I/O:

Son todos los dispositivos encargados de introducir, extraer, o manejar
informacin del sistema entre ellos encontramos diferentes dispositivos que
manejan todas las formas de comunicacin estndar, administradores de
dispositivos, memorias, puertos E/S, conversores A/D y D/A etc.

- Disco duro:

Se les encuentra cuando se debe manipular volmenes de informacin
altos, tienen algunas desventajas como: menor velocidad de
lectura/escritura que una memoria, consumo relativamente ms alto, mayor

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

tamao. Pero brindan la capacidad da almacenar datos en el orden de los
Gigabytes.

Otra buena opcin es utilizar discos duros de estado solido, que ofrecen
capacidades de algunos Gygabytes, pero con todas las ventajas que
ofrecen las memorias de semiconductores.

- LCD / GLCD:

Son dispositivos utilizados como interfaz con el usuario, por ejemplo
pantallas de cristal lquido, los LCD slo soportan caracteres alfanumricos
bsicos, mientras que los GLCD soportan grficos en escala de grises y los
ms avanzados, colores.

Una vez vistas las herramientas de las que se dispone, slo resta decir que la
escogencia del Hardware debe ceirse a un plan especifico de tal modo que la
necesidad quede plenamente satisfecha, pero, sin incurrir en el sobre-
dimensionamiento innecesario del sistema a realizar. Para hacer un diseo
correcto del Hardware, se pueden utilizar diversas tcnicas contenidas en los
libros especializados en diseo de aplicaciones embebidas, o hacerlo de manera
intuitiva pero sin perder de vista el motivo del desarrollo ni el plan a seguir.
Leccin 2: Conceptos Generales sobre Sistemas Operativos.
Una abstraccin muy comn es decir que el Software es la parte intangible de todo
sistema computacional, sin el Software un sistema computacional sera
bsicamente intil, ste le brinda las capacidades de almacenar, procesar,
desplegar, recuperar informacin e interactuar con el medio circundante
empleando sus perifricos.

Los Componentes de Software son programas desarrollados con un propsito
particular, normalmente se trata de unidades independientes, y tienen su propia
estructura e implementacin, aunque pueden trabajar en asociacin con otros,
bajo ciertos requerimientos y restricciones. Entre ellos se puede encontrar
sistemas operativos, procesadores de texto, programas para control industrial,
juegos entre otros.

1. Software de Sistema y de Aplicacin.

El Software puede dividirse en dos tipos, programas de sistema, que en esencia
manejan la operacin del sistema mismo y programas de aplicacin que son los
que desempean las actividades que el usuario o la aplicacin requieren.

El propsito del Software de sistema es controlar la operacin del sistema
computacional y brindar apoyo a otros programas, en esta categora encontramos
principalmente a los sistemas operativos, libreras para el tratamiento de grficos

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

como OpenGL, programas para el control y monitoreo de variables sensadas,
entre otros.

El Software de aplicacin lo conforman todos los programas que le permiten a un
usuario la utilizacin de un sistema computacional para realizar una tarea
especfica, entre ellos para el caso de computadores personales encontramos
programas de comunicacin de datos, paquetes de oficina, diseo grfico, clculo,
finanzas, correo electrnico, compresin de archivos, paquetes multimedia, etc; en
el caso de sistemas embebidos seran los algoritmos programados para que el
sistema realice una funcin especifica diferente del manejo de recursos.

2. Definicin de Sistema Operativo (SO).
Como es sabido en la actualidad los sistemas computacionales pueden consistir
en una serie de dispositivos como procesadores, memorias, unidades de
almacenamiento, displays y perifricos agregando cierto nivel de complejidad al
sistema en s, es por tanto que escribir programas que mantengan el
funcionamiento de todos estos elementos de una forma correcta es una tarea
extremadamente complicada.

En este punto es claro que es poco probable que un programador pueda manejar
satisfactoriamente todas estas variables a la hora de realizar una aplicacin, es
entonces donde surge la necesidad de hacer el manejo de recursos y la
complejidad del Hardware transparente para el programador. Una solucin a este
inconveniente es la existencia de un Software base que maneja todos estos
elementos y adems provea al programador una interfaz o Mquina Virtual ms
fcil de entender y de programar, este Software se conoce como el Sistema
Operativo.

Un Sistema Operativo (SO) es el componente Software fundamental de un
sistema computacional, tiene la responsabilidad de administrar, coordinar las
actividades y de compartir los recursos de Hardware apropiadamente.6 El SO
dispone de privilegios que no tienen los programas de usuario con respecto del
manejo de recursos y adems provee el soporte necesario para cargar y ejecutar
todos los programas de aplicacin. 7
3. Tipos de Sistemas Operativos.

6 http://en.wikipedia.org/wiki/Operating_system
7 Norman Matloff Overview of Functions of an Operating System University of California, Davis
(May 30, 2001)
http://heather.cs.ucdavis.edu/~matloff/Architecture/SupportMaterial/OSOverview.html

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Existen varias formas de clasificar a los sistemas operativos, entre estas se tiene,
segn su estructura, segn los servicios que ofrecen y segn la forma en que
ofrecen estos servicios.

3.1. Clasificacin por Estructura (Visin Interna).

Segn Alcal92, se deben tener en cuenta dos necesidades principales al momento
de disear un SO, una es la del usuario y la otra la del Software. La primera se
refiere a la confiabilidad, rapidez, facilidad de aprender y utilizar, entre otras. Las
de Software agrupan aspectos como el mantenimiento, seguridad, tolerancia a
fallos, eficiencia, entre otras.

A continuacin se presentan diferentes estructuras que emplean los sistemas
operativos actuales dependiendo de su funcionalidad.
3.1.1. Estructura Monoltica.
Es la estructura empleada en los primeros sistemas operativos, bsicamente
consta de un solo programa compuesto por varias rutinas enlazadas entre s, de
forma que pueden comunicarse unas con otras. Las caractersticas principales de
estos SOs son:

- Los mdulos se compilan por separado, finalmente son unidos por un
enlazador, generando una buena definicin de parmetros de enlace entre
las rutinas existentes.

- Las rutinas de manejo de los diferentes recursos carecen de protecciones y
privilegios.

- Debido a que generalmente son hechos a la medida de la aplicacin son
eficientes y rpidos, por esto mismo son poco flexibles a la hora de soportar
diferentes ambientes de trabajo o aplicaciones.

3.1.2. Estructura Jerrquica.

En esta misma estructura estn basados la mayora de los sistemas actuales. A
medida en que aumentaban las necesidades de los usuarios y se perfeccionaban
los sistemas se fue requiriendo una mayor organizacin y funcionalidad de los
sistemas operativos.

En este tipo de estructuras cada parte, contiene subpartes, todas a su vez estn
organizadas por niveles. Con la estructura jerrquica se divide el SO en pequeas
partes, de tal forma que cada una de ellas se encuentre perfectamente definida y
con una interfaz clara con respecto al resto de elementos. El primero de estos
SOs fue THE (Technische Hogeschool, Eindhoven) su estructura es la siguiente.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Figura 45: Estructura Jerrquica.



La figura 46 muestra otra representacin de la estructura jerrquica, que es
conocida como la estructura en anillos. En esta cada capa tiene una puerta que
permite al nivel inferior comunicarse con el superior, se puede observar que los
anillos ms centrales son los ms protegidos de accesos no deseados desde las
capas ms externas, de hecho, las capas ms internas son las ms privilegiadas.
Figura 46: Organizacin J errquica en anillos.

3.1.3. Mquina Virtual.
Gestin
CPU

Gestin de E/S
Gestin Memoria
Gestin de la informacin
Interprete de
Comandos

Aplicacin
de Usuario

spool

Archivos
Entrada/ Salida
Comunicaciones
Memoria
Gestin CPU
Hardware
Usuarios

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Este es un tipo de SO que presenta una interfase para cada proceso, mostrando
una mquina que parece idntica a la mquina real subyacente. Estas mquinas
virtuales son simulaciones del Hardware con su modo nucleo/usuario, E/S,
interrupciones, etc. El objetivo de mquinas virtuales es el de integrar distintos
sistemas operativos creando la sensacin de tener varias mquinas diferentes.

El ncleo de estos SO se denomina monitor virtual y su tarea es llevar a cabo la
multiprogramacin, mostrando a los niveles superiores tantas mquinas virtuales
como se necesiten. Estas mquinas virtuales son una rplica de la mquina real,
de manera que en cada una de ellas se pueda ejecutar un SO diferente. ver la
figura 47.
Figura 47: Maquina Virtual.



3.1.4. Cliente-servidor (Micro Kernel).

Es el tipo ms reciente de sistemas operativos, puede ser ejecutado en la mayora
de las computadoras sin importar su capacidad de procesamiento, Adems es un
sistema de propsito general y cumple con las mismas funciones que los sistemas
operativos convencionales.

El ncleo se encarga de establecer la comunicacin entre los clientes y los
servidores. Los procesos pueden ser tanto servidores como clientes dependiendo
de la aplicacin. El ncleo slo provee funciones bsicas de memoria,
entrada/salida, archivos y procesos, dejando a los servidores proveer la mayora
de servicios a los que el usuario final o programador pueda acceder, de esta forma
se brinda mayor flexibilidad al usuario final y a las posibles aplicaciones con las
que se trabajar. Estos servidores deben tener mecanismos de seguridad y
proteccin que a su vez, sern filtrados por el ncleo que controla el Hardware.
3.2 Clasificacin por Servicios.
En esta clasificacin se tiene en cuenta: el nmero de usuarios, la cantidad de
tareas que atiende y el nmero de procesadores del servidor. Al observar la figura

Hardware
Hardware
Virtual
Linux
Windows DOS
Usuario
Hardware
Virtual
Hardware
Virtual
Hardware
Virtual
Usuario
Usuario

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

48 se observa la clasificacin ms comnmente empleada y conocida desde el
punto de vista del usuario final.
3.2.1. Mono-usuarios.
Los SO monousuarios son aqullos que solo soportan a un usuario a la vez, sin
importar el nmero de procesadores que posea el sistema o del nmero de
procesos pueda ejecutar al mismo tiempo. Por ejemplo, los Computadores
personales tpicamente se encuentran en esta clasificacin.
3.2.2. Multi-usuarios.
Estos son capaces de atender a ms de un usuario a la vez, ya sea por medio de
varias terminales conectadas a una computadora, como los Mainframes o por
medio de sesiones remotas en una red, de nuevo, sin importar el nmero de
procesadores ni de tareas simultaneas que puedan ejecutar los usuarios.
3.2.3. Mono-tareas.
Los sistemas mono-tareas solo permiten una tarea a la vez por usuario. Puede
darse el caso de un sistema multi-usuario y mono-tarea, en el cual se admiten
varios usuarios al tiempo pero cada uno de ellos slo puede realizar una tarea a la
vez.
3.2.4. Multi-tareas.
Los sistemas multitarea permiten al usuario realizar varias tareas o procesos;
estos procesos permanecen activos, en espera, suspendidos, o se eliminan en
forma alternativa, segn la prioridad que se les haya concedido, o se pueden
ejecutar en forma simultnea. Por ejemplo, un usuario de PC puede estar
escribiendo una carta mientras escucha una cancin, al tiempo que descarga un
archivo, etc. Es comn encontrar en ellos interfaces grficas orientadas al uso de
mens y el ratn, lo cual simplifica la operacin del usuario.


Figura 48: Sistemas operativos Clasificados por servicios.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS




3.2.5. Uni-proceso.

Un SO uni-proceso es aqul que slo puede manejar un procesador de la
computadora, de tal forma que si la computadora dispusiese de ms de uno no
podra aprovechar todas las capacidades del Hardware. El ejemplo ms tpico de
este tipo de sistemas es el DOS y MacOS.

3.2.6. Multi-proceso

La tcnica de multiprocesamiento consiste en hacer funcionar varios
procesadores en forma paralela para obtener un poder de clculo mayor que el
obtenido al usar un procesador de alta tecnologa o al aumentar la disponibilidad
del sistema (en el caso de fallas del procesador). Un sistema multi-proceso debe
tener capacidad de gestionar la reparticin de memoria entre varios procesadores.

Adems este tipo de sistemas operativos son diseados para distribuir la carga de
trabajo entre los diferentes procesadores. Generalmente estos sistemas trabajan
de dos formas: simtrica o asimtricamente. Cuando se trabaja de manera
asimtrica, el SO selecciona uno de los procesadores que funcionar como
procesador maestro y se ocupa de distribuir la carga a los dems procesadores,
que reciben el nombre de esclavos. Cuando se trabaja de manera simtrica, los
procesos se reparten entre los procesadores disponibles, teniendo, tericamente,
la mejor distribucin y equilibrio de la carga de trabajo.
3.3. Clasificacin por la Forma de Ofrecer Servicios (Visin Externa).
Nmero de
usuarios
Nmero de
Tareas
Nmero de
Proceso
Monousuarios
Multiusuarios
Monotareas
Multitareas
Uniproceso
Multiproceso
Simtricos
Asimtricos


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Esta clasificacin corresponde a una visin externa, de cmo el usuario accede a
los servicios. Bajo esta clasificacin hay dos tipos principales: Sistemas
Operativos de Red y Sistemas Operativos Distribuidos.
3.3.1. Sistemas Operativos de Red.
Los sistemas operativos de red tienen la capacidad de interactuar con SOs en
otras computadoras a travs de un medio de transmisin para intercambiar
informacin. Para poder utilizar esta caracterstica es necesario que el usuario
conozca los comandos del SO y la ubicacin de los recursos a los que desea
acceder.
3.3.2. Sistemas Operativos Distribuidos.
Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando
integrar recursos. Por ejemplo, impresoras, unidades de memoria, unidades
pticas, etc. en una sola mquina virtual a la que el usuario accede en forma
transparente. De tal forma que el usuario no necesita saber la ubicacin de los
recursos, sino que los conoce por su nombre y simplemente los usa como si todos
ellos fuesen locales a su estacin de trabajo.
3.4. Sistemas Fijos.
Los sistemas fijos son sistemas operativos diseados para funcionar en equipos
pequeos, como los asistentes personales digitales (PDA), celulares de nuevas
generaciones, dispositivos electrnicos autnomos o con autonoma reducida
(sondas espaciales, robots, vehculos con ordenador embebido, etctera). En
consecuencia, una caracterstica esencial de los sistemas fijos es su avanzada
administracin de energa y su capacidad de funcionar con recursos muy
limitados. Los principales sistemas fijos de "uso general" para PDA son los
siguientes:
- PalmOS

- Windows CE / Windows Mobile / Window Smartphone
3.5. Sistemas de Tiempo Real (RTOS)
Los sistemas de tiempo real se utilizan principalmente en la industria y son
sistemas diseados para funcionar en entornos con limitaciones de tiempo. Un
sistema de tiempo real debe tener capacidad para operar en forma fiable segn
limitaciones de tiempo especficas; en otras palabras, debe tener capacidad para
procesar adecuadamente la informacin recibida a intervalos definidos claramente
(regulares o de otro tipo).

Estos son algunos ejemplos de sistemas operativos de tiempo real:


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- OS-9.

- RTLinux (RealTime Linux).

- QNX.

- VxWorks.
Leccin 3: Componentes del Sistema Operativo.
El SO est compuesto por un conjunto de paquetes de Software que pueden
utilizarse para gestionar las interacciones con el Hardware y con los programas de
aplicacin. Por lo general este conjunto de Software incluye los siguientes
elementos:

1. El ncleo o Kernel.

Es el componente Software central de la mayora de los sistemas operativos se
encarga de facilitarle a los distintos programas el acceso al Hardware del sistema,
en otros trminos es el encargado de gestionar los recursos a travs de la
comunicacin entre procesos y/o llamadas de servicio del sistema. Esta
capacidad de gestin de recursos del Kernel se basa en el diseo de sistemas
computacionales como una serie de niveles de abstraccin en los cuales cada
nivel soporta su funcionamiento en los servicios que le brinda el nivel
inmediatamente inferior, desde este punto de vista el Kernel es simplemente el
nombre que se da al nivel de abstraccin ms bajo implementado en Software, es
decir el ms cercano al Hardware.
Figura 48: Diagrama de abstraccin del Kernel.



Teniendo en cuenta que los recursos de un sistema son limitados, el Kernel se
encarga de decidir qu programa puede hacer uso de un dispositivo Hardware y el
tiempo en que lo puede hacer.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El ncleo tiene como funcin bsica garantizar la carga y ejecucin de los
procesos, el manejo de las entradas/salidas del sistema y de brindar una interfaz
entre este y los programas de usuario. Entre otras el Kernel realiza las siguientes
Funciones:

- Comunicacin entre programas y Hardware.
- Gestin de los diferentes programas informticos (Tareas o Procesos).
- Gestin del Hardware (memoria, procesador, perifricos y dispositivos de
almacenamiento).
2. Tipos de Kernel.
El Kernel puede clasificarse en funcin del tamao y de las funcionalidades que
posea. Realmente, y pese a seguidores incondicionales en un modelo u otro,
existe una tendencia bsica a reducir el tamao del ncleo proporcionando menos
funcionalidades, que son desplazadas a mdulos que se cargan en el momento de
la ejecucin. En funcin a esta idea existen tres tipos fundamentales de Kernel:

- Kernel monoltico:

Todas las funcionalidades posibles estn integradas en el sistema. Se trata
de un programa de tamao considerable que se debe recompilar por
completo cada vez que se aade una nueva funcin. Esta es la estructura
original de Linux. Por tratarse de una tcnica clsica y desfasada el creador
de Linux fue muy criticado.

- Kernel modular :

Se trata de la tendencia actual de desarrollo. En el Kernel se centran las
funcionalidades esenciales como la administracin de memoria, la
planificacin de procesos, etc. Sin embargo no tiene sentido que el ncleo
de un sistema operativo englobe todos los elementos requeridos para
comunicarse con todas los posibles perifricos de un sistema teniendo en
cuenta la gran variedad tanto de modelos como de fabricantes disponibles.

En otros sistemas operativos esto se soluciona con unos archivos
proporcionados por el fabricante de los dispositivos llamados Drivers. En
Linux se cre una interfaz adecuada para posibilitar el desarrollo de
mdulos que cumplieran esas funcionalidades. Esos mdulos pueden ser
compilados por separado y aadidos al Kernel durante el tiempo de
ejecucin.

- Estructura de micro-Kernel:


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Esta tcnica pretende reducir a su mnima expresin el Kernel, dejando a
los niveles superiores el resto de las funcionalidades. Existen algunos
Kernels que lo utilizan, por ejempo el Hurd, Se trata del ltimo Kernel GNU
llamado a sustituir a Linux como ncleo del sistema operativo. Aunque esta
estrategia de diseo es tan antigua como la modular, no ha sido tenida en
cuenta hasta ahora debido a las limitaciones de rendimiento que presenta

3. Intrprete de comandos (Shell).

Este posibilita la comunicacin con el SO a travs de un lenguaje de control
basado en comandos que se introducen por el usuario a travs de un teclado, p.e.
printf, la respuesta del SO se presenta a travs de algn perifrico o display, estos
comandos permiten al usuario controlar los perifricos sin conocer
especficamente las caractersticas del Hardware utilizado, as como la gestin de
las direcciones fsicas, etc. Se interacta con la informacin de la forma ms
sencilla posible sin grficas, solo texto.

4. El sistema de archivos.

Un sistema de archivos es una base de datos de propsito especial implementada
para el almacenamiento, organizacin y recuperacin de archivos de datos; en
otras palabras, es un mtodo de organizacin y almacenamiento de archivos de
datos en las diferentes unidades de almacenamiento con las que pueda contar un
sistema dado, la finalidad del sistema de archivos es la de hacer fcil la ubicacin
y acceso de los mismos, normalmente los archivos son registrados en una
estructura arbrea.
5. Funciones de un Sistema Operativo.
El objetivo fundamental de un SO es gestionar los recursos Hardware del sistema
computacional permitiendo que se ejecuten concurrentemente diferentes
programas evitando los conflictos que puedan existir en el acceso de cada uno de
estos programas a los recursos que requieran para ejecutarse, el objeto final no es
mas que el de facilitar el manejo de sistema y permitir que el uso de los recursos
sea lo ms eficiente posible. Un SO desempea las siguientes funciones bsicas:

5.1. Suministro de una interfaz al usuario.

La interfaz es la parte del SO que permite la comunicacin del usuario con ste,
creando la posibilidad de cargar los programas, acceder a los archivos y muchas
otras tareas, entre las interfaces existentes estn las que se basan en comandos,
las que emplean mens y las interfaces grficas de usuario GUI (sigla en ingls).

5.2. Administracin de recursos.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Mediante los procesos de administracin de recursos se gestiona por parte del SO
los recursos de Hardware y redes existentes en un sistema dado haciendo esta
labor transparente para el usuario, la finalidad es distribuir todas las tareas para el
uso eficiente de los recursos manteniendo as todos los componentes fsicos lo
ms ocupados que sea posible, evitando cuellos de botella que afecten el
rendimiento del sistema. Entre las tareas a realizar se encuentran:

5.2.1. Administracin del procesador.

El SO administra la distribucin del procesador entre los distintos programas por
medio de un algoritmo cuya implementacin depende completamente del tipo de
SO, segn el objetivo especfico de la aplicacin.

5.2.2. Gestin de la memoria de acceso aleatorio.

El SO se encarga de gestionar el espacio de memoria asignado para cada
aplicacin y para cada usuario, si resulta pertinente. Cuando la memoria fsica es
insuficiente, el SO puede crear una zona de memoria en el disco duro,
denominada "memoria virtual". La memoria virtual permite ejecutar aplicaciones
que requieren una memoria superior a la memoria RAM disponible en el sistema.
Sin embargo, el acceso a esta informacin es mucho ms lento.

5.2.3. Gestin de entradas/salidas.

El SO permite unificar y controlar el acceso de los programas a los recursos fsicos
y perifricos en general a travs de los drivers (tambin conocidos como
administradores perifricos o de entrada/salida).

5.3. Administracin de archivos.

El SO gestiona la lectura y escritura en el sistema de archivos, y las autorizaciones
de acceso a archivos de aplicaciones y usuarios. Se trata de programas que se
encargan de la administracin de los archivos de forma estructurada, controlando
la creacin, borrado y acceso de archivos de datos y de otros programas, esto
implica que debe mantener el registro de la ubicacin fsica de la informacin que
pueda encontrarse en cualquier dispositivo de almacenamiento que pertenezca al
sistema.

El sistema de archivos responde a las necesidades de almacenar volmenes de
informacin por largos periodos, esta informacin debe sobrevivir a un corte
abrupto de cualquier proceso que la pueda utilizar en un momento dado, adems
debe existir la posibilidad de que distintos procesos puedan accederla
simultneamente.

5.4. Administracin de tareas:


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Mediante esta funcionalidad el SO administra las tareas informticas de los
usuarios finales, estos programas se encargan de controlar las reas de la CPU a
la que pueden accesar las tareas de usuario y definen el tiempo en que pueden
usarlas; esto se hace con la finalidad de distribuir la capacidad de procesamiento
de la CPU interrumpiendo el tiempo y recursos de sta dependiendo la prioridad
de la tarea a realizar. La administracin de tareas requiere entre otras:

Crear y/o terminar tareas.
Suspender y/o reanudar tareas.
Proveer mecanismos para la sincronizacin de tareas.
Proveer mecanismos para la comunicacin entre tareas.

En resumen, el SO se encarga de que las aplicaciones se ejecuten sin problemas
asignndoles los recursos que stas necesiten para funcionar correctamente.

5.5. Servicios de soporte:

Estos servicios dependen de la implementacin especfica del SO (Mac, Unix,
Windows, Software libre, o en el caso del curso, sistemas embebidos). Estos
servicios de soporte suelen consistir en:

- Actualizacin de versiones.
- Mejoras de seguridad.
- Inclusin de alguna nueva utilidad (un nuevo entorno grfico, un
asistente para administrar alguna determinada funcin, etc.).
- Controladores para manejar nuevos perifricos (este servicio debe
coordinarse a veces con el fabricante del Hardware).
- Correccin de errores de Software.

No todas las utilidades de administracin o servicios forman parte del SO, adems
de ste, hay otros tipos importantes de Software de administracin de sistemas,
como los sistemas de administracin de base de datos o los programas de
administracin de redes. El soporte de estos productos deber proporcionarlo el
fabricante correspondiente (que no tiene porque ser el mismo fabricante del SO).

5.6. Administracin de autorizaciones:

El SO se encarga de la seguridad relacionada con la ejecucin de programas y
acceso de archivos garantizando que los recursos sean utilizados slo por
programas y usuarios que posean las autorizaciones correspondientes.
Leccin 4: Arranque de un Programa.
Cuando se solicita la ejecucin de un programa, desde la lnea de comandos
(Shell) se reconoce el comando y realiza una Llamada de Sistema solicitndole al
OS correr el programa. En este momento el SO es quien est corriendo. ste

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

busca en el directorio de disco la ubicacin fsica del archivo, lo localiza y lee su
encabezado, el cual contiene informacin sobre el tamao del programa junto con
una lista de los segmentos de datos utilizados por ste, entre otros.

A continuacin el OS revisa la Tabla de Asignacin de Memoria para encontrar
una regin o regiones libres suficientemente grandes para el programa en tramite,
se necesita espacio para cargar las instrucciones del programa as como para
datos como variables, tablas, vectores,etc. y la pila. (Cabe anotar que el OS
previamente ha cargado todos los programas actualmente activos en la memoria,
por tanto tiene un registro de las partes de la memoria estn libres y las que no).
Si, hay espacio disponible entonces se carga el programa, se actualiza la tabla de
asignacin de memoria y se crea una Tabla de Pginas.

Seguidamente el OS revisa cierta parte del programa llamada Punto de Entrada,
la cual indica donde inicia la ejecucin. Ahora el OS est listo para iniciar la
ejecucin del programa. Localiza el apuntador de pila (Stack Pointer) en el lugar
escogido en el paso anterior. Finalmente arranca el programa por medio de una
instruccin tipo salto (JMP) dirigida al Punto de Entrada. (El OS guarda de
antemano un registro de valores, incluyendo el valor del Stack Pointer)
4
1. Time-Sharing.
Time-sharing implica tener varios programas o al menos uno en varias instancias
corriendo de tal manera que da la impresin de simultaneidad. Dado que el
sistema slo cuenta una CPU, slo puede correr un programa a la vez.

La ilusin de multiproceso se logra haciendo que todos los programas corran por
turnos, estos turnos reciben el nombre de Quantum o Ranura de Tiempo (Time-
slice). Siendo ste de una corta duracin, por ejemplo 40mS. Por ejemplo, si
tenemos tres programas corriendo a, b, c y cada uno corre durante 40mS primero
a luego b y despus c, repitindose en forma ciclica. Debido a que un ciclo dura
tan poco tiempo, para un humano parecera que todos los programas corren al
mismo tiempo.

Recordemos que el SO es un programa ms, as que esta organizacin no puede
lograrla por si solo (debido a que est inactivo mientras otro programa corre), se
requiere que por Hardware se genere una interrupcin peridica y a travs de esta
es que se genera la divisin de tiempos. Por lo general estas franjas generadas
por el Hardware son muy cortas, lo que se suele hacer es implementar en el OS
un temporizador por Software. Por ejemplo si el Hardware genera franjas de
10mS, pero se necesitan franjas de 40mS, el OS espera que sucedan cuatro
franjas y all se realiza el cambio de aplicacin.

Antes de hacer un cambio de programa el OS guarda toda la informacin
relacionada con la aplicacin en curso, PC, Stack Pointer, Registro de estado del
procesador, etc. Para que al momento de volver a ejecutar este programa se haga

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

bajo idnticas condiciones. Seguidamente carga los datos correspondientes para
la siguiente aplicacin y as sucesivamente.

El SO cuenta con otra herramienta llamada Tabla de Procesos, en ella estn
registrados los estados de todos los programas en curso, hay dos estados bsicos
activo (RUN) e inactivo (SLEEP), El SO escoge slo los programas en estado
activo para cargarlos.
Los programas que estn es estado inactivo es porque esperan una seal,
generalmente la respuesta de un mdulo E/S, cuando esta seal ocurre se genera
una interrupcin que le avisa al SO que este programa debe cambiar de estado,
ste cambia y se continua con el programa que estaba en curso, y el que cambi
de estado se ejecuta cuando le llegue su turno
4
.
Leccin 5: Memoria Virtual.
El manejo de la Memoria Virtual tiene ciertos objetivos que ayudan a mantener el
desempeo del equipo. Los principales son, superar las limitaciones de memoria
fsica, liberar al compilador y al enlazador de tener que saber que parte de la
memoria est libre cuando un programa corre, habilitar seguridad, habilitar
Sharing, entre otros.

Antes de continuar la explicacin de como se logran estos objetivos, se retoma el
concepto de Tabla de Pginas (Page Table) de la cual se hizo mencin
anteriormente; cuando el SO carga un programa a la memoria, divide la parte de
texto (instrucciones) y la de datos, seguidamente encuentra lugares libres de la
memoria donde colocarlas. Estas partes reciben el nombre de pginas del
programa, a su vez las regiones de memoria que tienen el mismo tamao, pginas
de memoria.

El SO crea la Tabla de Pginas, que es un arreglo en memoria de las
correspondencias que existen entre las pginas de programas y las de memoria.
Para cubrir las limitaciones de memoria el SO inicialmente slo carga una parte
del programa a la memoria, el resto lo deja en el disco. Las pginas de programa
que no son cargadas son reportadas en la tabla de pginas, marcadas como no
residentes y se guarda su ubicacin en el disco. Si en algn momento se necesita
una de ellas el procesador genera una interrupcin interna, el SO la trae del disco
y se continua con el curso del programa. Cuando una pgina no residente es
trada a la memoria, una residente es guardada en el disco, de tal forma que
siempre hay un espacio disponible para otra.

La caracterstica de seguridad que brinda la memoria virtual consiste en que la
tabla de pginas adems registrar los datos ya mencionados, tambin guarda una
lista de permisos que tiene cada programa sobre cada pgina en particular. Si un
programa trata de acceder a una pgina que no le corresponde la CPU produce
una interrupcin y el SO detiene la ejecucin de ese programa y lo quita de la
tabla de procesos.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Sharing se refiere a la habilidad de permitir a dos o ms usuarios acceder a un
mismo programa, en este caso es muy importante mantener la memoria. Para
hacer esto, se cargan las instrucciones y se mantienen iguales para los usuarios,
pero se generan pginas de datos independientes para cada uno.

Con los procesos anteriormente explicados se hace evidente que el compilador y
el enlazador no necesitan verificar que parte de la memoria est libre, ya que el la
administracin de la memoria virtual secciona y vuelve a unir el programa y los
datos segn sea necesario
4
.



















UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


CAPITULO 8: SISTEMA OPERATIVO EMBEDDED LINUX

El curso se inclina por la implementacin del sistema operativo Embedded Linux
en sistemas embebidos, aparte del hecho de que el cdigo fuente del Kernel de
Linux, libreras y dems utilidades asociadas se encuentran disponibles de manera
gratuita, en la actualidad se trata del sistema operativo ms empleado en
aplicaciones con sistemas embebidos en el mundo entero, sin saberlo nos rodean
aplicaciones y sistemas embebidos que funcionan bajo Linux. Entre las que se
pueden encontrar PDAs, celulares, reproductores de audio y video, servidores,
Firewalls y concentradores wireless, entre otras.

La razn del xito de Linux en este campo radica en las ventajas y caractersticas
de fiabilidad y estabilidad que presenta a la hora de implementar las aplicaciones y
al hecho de que por la filosofa inherente a Linux y al proyecto GNU en general,
este sistema es probado en miles de configuraciones, corregido y mejorado
gracias al aporte desinteresado por parte de miles de programadores alrededor del
mundo.
Leccin 6: Visin general.
En un principio los sistemas embebidos en su mayora eran desarrollados con
cdigos propietarios escritos en assembler partiendo de cero, es decir, los
programadores deban escribir los cdigos de los controladores (drivers) de los
dispositivos Hardware e interfaces para cada sistema a implementar, sus
capacidades eran muy especficas dejando las caractersticas multitareas a
niveles muy bajos o nulos, conforme las aplicaciones aumentaban su complejidad
esta tarea de haca mas difcil.

El Linux para sistemas embebidos surgi como respuesta a esta problemtica,
inicialmente consista en el soporte para el Kernel y un compilador para los
microprocesadores de 32 bits ms populares de la poca como x86, ARM y Power
PC, entre otros, continuaron as diferentes distribuciones de Linux con soporte de
aplicaciones especficas para sistemas embebidos, en la actualidad gracias a la
disponibilidad del cdigo fuente y al carcter de Software libre, Embedded Linux
se encuentra atacando fuertemente el mercado de los Sistemas Operativos de
Tiempo Real (RTOS).

Cuando se habla de Linux se pueden generar ambigedades, por lo tanto se debe
hacer diferencia entre lo que se conoce como el Kernel de Linux, el sistema Linux
o alguna distribucin especfica de Linux. Entindase el Kernel de Linux como el
ncleo del sistema operativo Linux escrito originalmente por el cientfico
informtico Linus Torlvalds, actualizado y mejorado por miles de programadores
en el mundo, por otro lado un sistema Linux se refiere a un sistema completo que
corre sobre un Kernel de Linux junto con una serie de programas de aplicacin

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

libres (GNU) aunque se hace la salvedad de que tambin se puede tratar de
Software no libre o la combinacin de ambos, se conoce como distribucin Linux
cuando un sistema completo es diseado a la medida de una aplicacin especfica
o se basa en una distribucin disponible p.e: Ubuntu Linux, Devian GNU/Linux,
Red Hat Enterprice Linux, etc.

Al contrario de lo que se puede pensar, Embedded Linux no se trata de una
versin reducida del sistema operativo Linux que se emplea en los PCs, mas bien
se aprovecha el hecho de que Linux es altamente modular y adems posee un
mecanismo de seleccin de componentes muy completo, entonces basndonos
en este hecho y en la configuracin Hardware de un sistema, se pueden
seleccionar solo los componentes necesarios y suficientes. En este sentido, el
termino Embedded se refiere entonces a la funcionalidad de la aplicacin mas no
a la funcionalidad del Linux en s; es decir, tpicamente se refiere ms que a un
sistema completo, a la distribucin de un sistema Linux (el ncleo Linux
combinado con algunas otras utilidades) enfocado a aplicaciones embebidas por
tanto pueden ajustarse a las limitaciones de Hardware, una instalacin tpica de
Linux embebido puede ocupar en promedio 2 Mb de memoria.

Uno de los cambios fundamentales en Linux es la inclusin del proyecto uClinux
(Linux para Microcontroladores) en el Kernel principal. Esta variante de Linux ha
sido un pilar fundamental para su aceptacin en el mercado embebido, y su
inclusin en la versin oficial debera aumentar an ms el desarrollo en este
campo.
Leccin 7: Tipos de Sistemas que Utilizan Linux Embebido.
En esta seccin en lugar de clasificar los sistemas embebidos en segmentos de
mercado como el aeroespacial, telecomunicaciones, electrnica de consumo, etc.
Sern clasificados por criterios que aporten alguna informacin sobre la estructura
del sistema. A continuacin se presenta esta clasificacin:

1. Tamao.

Existen diferentes factores para clasificar un sistema embebido teniendo en cuenta
el tamao, uno de ellos es el tamao fsico que puede llegar a ser en un momento
dado un determinante de las capacidades del sistema en cuestin, por otro lado se
tiene en cuenta el tamao o capacidades de los dispositivos que componen el
sistema embebido, esto incluye la velocidad del procesador, tamao de la
memoria y de la capacidad de almacenamiento permanente (disco duro o memoria
Flash).

En lo referente al tamao se manejan tres rangos o categoras de sistemas:

- Pequeos: Caracterizados por una CPU de baja potencia con un mnimo de
4MB de memoria ROM y entre 16 y 32 MB de RAM, esto no quiere decir

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

que Linux no se pueda ejecutar en espacios de memoria inferiores aunque
esto requiera un mayor esfuerzo a una mnima ganancia teniendo en
cuenta los actuales precios de las memorias.

- Medios: Caracterizados por contener una CPU de mediana potencia con un
mnimo de 32 MB de ROM o mas, y entre 64 y 128 MB de RAM. La
mayora de sistemas de electrnica de consumo como PDAs,
Reproductores de MP3, etc. Caen en esta clasificacin, muchos de estos
pueden contar con unidades de almacenamiento secundarios, estos
sistemas cuentan con el poder suficiente para ejecutar diferentes tareas
simples o al menos una que requiera muchos recursos.

- Grandes: Son sistemas que cuentan con procesadores muy poderosos
combinados con grandes cantidades de memoria RAM y unidades de
almacenamiento permanente, se emplean usualmente en ambientes donde
se requieren grandes cantidades de clculos como por ejemplo Switches
para telecomunicaciones, simuladores de vuelo y muchas otras
aplicaciones. El diseo de estos sistemas depende bsicamente de su
funcionalidad ms que en factores como costos, tamao o recursos que
quedan relegados a un segundo plano.

La anterior clasificacin excluye a los procesadores con una arquitectura de
memoria menor a 32 bits a correr con Linux, aunque no obstante se
encuentren en la red proyectos de investigacin que pueden haber generado
puertos de Linux que hayan funcionado en procesadores de 16 bits, se trata de
casos muy puntuales y no existe el soporte suficiente, con mayor razn para
procesadores de 8 bits que no existe soporte alguno para Linux, cualquier
incursin sera mera investigacin.

2. Limitantes de Tiempo.

Existen dos tipos de limitantes de tiempo:

- Rigurosas: Estas requieren que la respuesta del sistema se limite a unas
franjas predefinidas de otra forma eventos no deseables y hasta
catastrficos pueden ocurrir. Se emplea el trmino catastrfico en el
sentido de que existen sistemas en los cuales cualquier falla puede
desembocar en accidentes o prdidas humanas. Por ejemplo un sistema
de seguridad de una guillotina mecnica en el que una cmara de video
apunta a las hojas de corte, debe detectar la presencia del color de los
guantes que utilicen los empleados y detener su funcin inmediatamente
no puede esperar a que se ejecute otra rutina o que se termine alguna
accin de lo contrario alguien puede perder una mano. Un sistema de este
tipo se conoce como un sistema de tiempo real duro. Tambin existen
sistemas de Tiempo Real Blandos cuando las aplicaciones tienen
requisitos de tiempo rigurosos pero la falla del sistema no desemboca en

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

una catstrofe por ejemplo un sistema de telefona celular puede soportar
uno que otro fallo en la seal pero no es aceptable que esto ocurra
constantemente.

- Suaves: estas pueden tener variados requerimientos pero generalmente
aplican en sistemas en los que los tiempos de respuesta no son tan crticos
por ejemplo una PDA puede tardarse unos segundos mientras carga una
aplicacin y no afectar al usuario.
3. Adaptabilidad de Funciones de Red.
Esta caracterstica define si un sistema puede ser conectado a una red, en la
actualidad gracias a las economas de escala y a la estandarizacin de los
componentes de red, adems las demostradas capacidades de red del Linux se
podra esperar y de hecho hay la posibilidad de que cualquier sistema se pueda
accesar a travs de la red. Electrodomsticos simples como una nevera, una
tostadora o una cafetera pueden ser manipulados por medio de la red.

4. Interaccin con el Usuario.

El grado de interaccin con el usuario puede cambiar de sistema en sistema por
ejemplo una PDA o telfono celular pueden basar su funcionamiento en la
interaccin con el usuario por medio de una interfaz grfica, por otro lado un
sistema de control industrial puede constar solo de Leds y botones, como tambin
existen sistemas que no presentan medios de interaccin de ningn tipo, por
ejemplo el sistema de navegacin automtica de un avin.
Leccin 8: Arquitectura Genrica de un Sistema con Linux Embebido.
En la figura 49 se presenta un diagrama de bloques de la arquitectura genrica un
sistema embebido con todos los elementos requeridos, para que este Hardware
pueda correr bajo Linux debe contar con unas caractersticas mnimas que se
listan a continuacin:

- Linux requiere una CPU de por lo menos 32 bits que contenga una unidad
de administracin de memoria (MMU).
- La suficiente capacidad de memoria RAM para acomodar el sistema.
- Algunos puertos de E/S mnimos requeridos para la programacin y
puesta en marcha del Sistema as como para su depuracin.
- El Kernel debe disponer de alguna unidad de almacenamiento permanente
para cargar el Sistema de Archivos Raz.

Figura 49: Arquitectura de un sistema de Linux Embebido Genrico.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS




Inmediatamente arriba del Hardware se encuentra el Kernel de Linux que as
como cualquier Kernel al estilo Unix se encarga del manejo del Hardware, es decir
maneja los diferentes dispositivos, gestiona el acceso a los puertos E/S, controla
el cronograma de los procesos y la memoria compartida, as como la distribucin
de las diferentes seales, entre otras tareas administrativas, adems provee
niveles de abstraccin superiores al servicio del Software de aplicacin. Es de
esperar que cualquier aplicacin que emplee alguna interfase de programacin de
aplicaciones API (Application Programming Interface) suministrada por el Kernel,
pueda ser portable a todas las arquitecturas soportadas por dicho Kernel con muy
pocos o ningn cambio.

Dentro del Kernel se diferencian dos niveles de servicios que proveen la
funcionalidad de las aplicaciones requeridas, el Espacio del Kernel y El espacio de
Usuario. El espacio del Kernel lo conforman las interfaces de nivel inferior que son
especficas a la configuracin del Hardware sobre el que funciona el Kernel y
provee el control directo de los recursos para tal efecto se emplea un API
especifico dependiendo del tipo de Hardware, la razn es que tpicamente los
servicios de los niveles ms bajos manejan operaciones especficas de la CPU, de
la memoria y de las interfaces bsicas a los dispositivos que se estn empleando.

Por otro lado a pesar de que el manejo de los recursos de diferentes plataformas
se maneja de manera distinta; sern igualmente accesibles empleando un API en
comn para niveles de abstraccin ms altos del Kernel (Espacio de Usuario), es
decir que sobre los servicios de bajo nivel suministrados por el Kernel, los
Aplicaciones
Libreras
Hardware
Linux Kernel
Abstracciones de Nivel Superior
Interfaces de Nivel Inferior
Sistema de
Archivos
Protocolos
de Red

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

componentes de alto nivel suministran una abstraccin comn a todos los
sistemas del tipo Unix, stos incluyen procesos, archivos, y seales. Estas
abstracciones de alto nivel a diferencia de las de bajo nivel se mantienen
constantes independientemente de la plataforma donde corra el Kernel a menos
se trate de casos muy puntuales.

En algunas ocasiones el Kernel necesita entre estos dos niveles de abstraccin lo
que se puede llamar componentes de interpretacin que comprendan e
interacten con informacin provenientes de o hacia determinados dispositivos.
Los sistemas de archivos y protocolos de red son ejemplos de entidades con las
que el Kernel requiere interactuar para que un intercambio de informacin pueda
existir de forma adecuada.

Durante la operacin normal, el Kernel requiere un sistema de archivos bien
estructurado y almacenado permanentemente conocido como El Sistema de
Archivos Raz. A partir de este, el Kernel carga las aplicaciones iniciales para
poder correr el sistema, a su vez acude a este cada vez que se vallan a cargar
otras aplicaciones. El Sistema de Archivos Raz puede almacenarse y operarse
desde algn dispositivo Hardware de almacenamiento, de red o puede cargarse
en la memoria RAM durante el arranque del sistema y ser operado desde all.

Siguiendo con el anlisis de la figura 49 se tiene que los servicios que exporta el
Kernel normalmente no son aptos para que sean utilizados directamente por los
programas de aplicacin, en su lugar las aplicaciones soportan su funcionamiento
en libreras y otras aplicaciones del sistema que proveen APIs y servicios
abstractos que en si son las que interactan con el Kernel para obtener las
funcionalidades deseadas. La principal librera empleada por la mayora de las
aplicaciones se trata de la librera de C GNU, glibc. Uno de los principales
inconvenientes de esta librera es su tamao por lo cual para sistemas embebidos
se pueden emplear libreras como Qt, XML o MD5, que proveen varias utilidades y
APIs funcionales para variedad de propsitos diferentes.
Leccin 9: Caractersticas del Kernel de Linux.
El Kernel o ncleo se define como el corazn del sistema operativo, encargado de
que el Software y el Hardware de un sistema embebido puedan trabajar juntos, a
pesar de que conforma una pequea parte del sistema operativo, el Kernel tiene el
trabajo mas importante de todos que es el de mantener todo lo dems trabajando
de manera sincronizada.

Se puede pensar en l como en el administrador de recursos que provee una
variedad de abstracciones de Software a travs de las cuales los programas de
aplicacin piden acceso a los recursos del sistema sin la necesidad de
comunicarse directamente con el Hardware, teniendo principal influencia en la
asignacin de tiempos al uso de recursos por parte de los programas, entre los
que se encuentran el procesador del sistema, la memoria RAM disponible, as

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

como tambin se encarga del acceso indirecto de los perifricos que puedan
pertenecer a la plataforma seleccionada.

Las capacidades enmarcadas en un Kernel en particular son configuradas cuando
dicho Kernel es compilado, la configuracin del Kernel permite la remocin de
soporte de capacidades innecesarias u obsoletas que se sabe jams sern
usadas. Por ejemplo si un sistema no presenta dispositivos de red, se puede
remover todos los archivos de sistema que presten soporte para red.
1. Arquitectura del Kernel de Linux.
Aunque se han desarrollado diferentes versiones del Kernel, en cierta forma la
arquitectura bsica se ha mantenido. El Kernel de Linux se puede dividir en los
siguientes subsistemas:

- Nivel de Abstraccin de Hardware.
- Administracin de Memoria.
- Planificacin.
- Sistema de Archivos
- Subsistema de E/S.
- Subsistema de Red.
- IPC.

A continuacin se presentan cada uno de ellos junto con algunos detalles de su
uso en sistemas embebidos.
1.1. Nivel de Abstraccin de Hardware (HAL).
Este se encarga de virtualizar el Hardware para que los drivers puedan ser
portados de manera fcil sobre cualquier plataforma. Linux fue inicialmente
diseado para correr sobre el procesador x86, no obstante con el transcurrir del
tiempo se han desarrollado soporte para otras plataformas, Linux aun no posee un
API estndar que le permita migrar fcilmente a otras plataformas aunque la idea
se encuentra en desarrollo para las nuevas versiones del Kernel. Entre las
plataformas soportadas por la versin 2.6 del Kernel de Linux se encuentran:

- MIPS.
- PowerPC.
- ARM.
- M68K.
- CRIS.
- V850.
- SuperH.



UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Por otro lado el HAL tiene soporte para los siguientes componentes Hardware.

- Procesador, Cach y MMU.
- Configuracin del Mapa de Memoria.
- Soporte para manejo de Interrupciones y Excepciones.
- DMA.
- Temporizadores.
- Consola del Sistema.
- Manejo de Buses de Datos.
- Manejo de Alimentacin.
1.2. Administracin de Memoria.
Es el responsable de manejar y controlar el acceso a los recursos de memoria
fsica del sistema, provee de espacios de memoria dinmica a subsistemas del
Kernel, como drivers, archivos de sistema. Adems implementa el software
necesario para brindar memoria virtual para aplicaciones de usuario, esta es
utilizada como forma de hacer el sistema confiable evitando que la informacin de
las aplicaciones de usuario puedan corromper otras aplicaciones y mucho menos
afectar los espacios de memoria donde puedan encontrarse archivos de sistema.

El Kernel de Linux divide la memoria disponible en pginas tpicamente de 4KB,
todas se pueden accesar por el Kernel, algunas de stas son empleadas por ste
para su funcionamiento, estos espacios no pueden ser utilizados ni son accesibles
por ninguna aplicacin, las dems son utilizadas por las aplicaciones. Cuando una
aplicacin se va a ejecutar, no es cargada en su totalidad en la memoria, solo las
pginas utilizadas son intercambiadas entre la memoria y el dispositivo de
almacenamiento permanente.
1.3. Planificacin.
El planificador (Scheduler) de Linux suministra las capacidades al sistema de
realizar multi-tareas, es un componente en constante evolucin a travs de las
diferentes versiones del Kernel la idea es que este brinde una poltica de
planeacin de tareas determinstica o predictiva para que se puedan soportar
aplicaciones en tiempo real. A continuacin se describen las instancias de
ejecucin realizadas por el Scheduler.

- Hilo del Kernel: Son procesos que no poseen contexto de usuario solo se
ejecutan al interior del kernel durante su ciclo de vida.

- Proceso de Usuario: Cada uno tiene su propia direccin y espacio asignado
gracias a la memoria virtual. Estos entran en modo Kernel cuando una
llamada de sistema, interrupcin o excepcin se ejecutan, es importante

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

aadir que cuando un proceso entra en modo Kernel utiliza una pila
completamente diferente con respecto a la pila del Kernel.

- Hilo de Usuario: Estos hilos son entidades de ejecucin diferentes que se
encuentran estructuradas en un solo proceso de usuario, por lo tanto
comparten el espacio para datos entre otros recursos, no obstante manejan
diferentes direcciones de pila.
1.4. Sistema de Archivos.
En Linux los diferentes sistema de archivos son administrados por un nivel
llamado el Sistema de Archivos Virtual (VSF: Virtual File System), ste
proporciona una visin consistente de los archivos que se encuentren en los
posibles dispositivos de almacenamiento empleando niveles de abstraccin que
hacen transparente al usuario detalles del dispositivo fsico y de la lgica del
sistema de archivos.

Cualquier dispositivo que corre bajo Linux ya sea un sistema embebido o un
servidor, necesita al menos de un sistema de archivos la razn radica en el hecho
de que las aplicaciones poseen diferentes imgenes de programa y por lo tanto
necesitan tener un sistema de archivos que las almacene, de la misma forma as
se trate de aplicaciones de bajo nivel, son accedidas a travs de archivos.

Es necesario para cada sistema Linux contar con un sistema de archivos principal
conocido como el Sistema de Archivos Raz que es cargada durante el arranque
del sistema, despus otros archivos pueden ser cargados a travs de ste. Si por
alguna razn no es posible cargar el Sistema de Archivos Raz se interrumpe el
arranque y el sistema no puede ser cargado.

Adems de soportar sistemas de archivos basados en discos, Linux puede
soportar sistemas de archivo especializados basados en memorias Flash o ROM
que pueden llegar a se de utilidad en sistema embebidos. Tambin existe soporte
para sistemas de archivos lgicos o pseudo-lgicos que pueden ser utilizados para
depuracin u obtencin de informacin del sistema, los siguientes son algunos de
los sistemas de archivos embebidos comnmente utilizados:

- EXT2: Sistema de archivos clsico que utiliza una amplia base de usuario.

- CRAMFS: Sistema de archivos comprimido de solo lectura.

- ROMFS: Sistema de archivos de solo lectura.

- RAMFS: Sistema de archivos de lectura/escritura basado en memorias.

- JFFS2: Sistema de archivos especfico para almacenamiento en flash.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- PROCFS: Pseudo sistema de archivos utilizado para obtener info del
sistema.

- DEVFS: Pseudo sistema de archivos utilizado para mantener los archivos
de los dispositivos.
1.5. Subsistemas de Entrada/Salida.
Este brinda una interface simple y uniforme para los dispositivos de la plataforma,
entre los tipos de dispositivos soportados se encuentran:

- Dispositivos de caracteres que soportan dispositivos secuenciales.
- Bloques de dispositivos para el soporte de dispositivos de acceso aleatorio,
son indispensables para la implementacin de sistemas de archivos.
- Dispositivos de Red que soportan una variedad de dispositivos a nivel de
enlace.
1.6. Subsistemas de Red.
Uno de los fuertes del Linux es un soporte robusto para varios protocolos de
comunicacin en red.
1.7. IPC.
Los mecanismos de Comunicacin Inter Procesos (IPC) son los encargados de la
comunicacin entre el Kernel y los dems proceso activos para que en conjunto se
puedan realizar las funciones correctamente.
Leccin 10: Arranque del Sistema.
Es importante comprender adecuadamente el arranque del Linux, a continuacin
se describe el proceso que brindar un entendimiento de los diferentes elementos
que lo conforman lo que servir a la hora de compilar un sistema de Linux
embebido. En el arranque del sistema intervienen principalmente tres
componentes Software: el gestor de arranque (Bootloader), el Kernel y el iniciador
de procesos (Init Process).

1. Fase del gestor de arranque.

El Bootloader es el primer Software que se ejecuta una vez se arranca el sistema,
desempea una inicializacin de bajo nivel del Hardware y de algunos puntos de
prueba para luego cargar la imagen del Kernel seguido del cdigo de inicializacin
del Kernel delegandole el control desde este punto, el gestor de arranque depende
altamente de la plataforma Hardware empleada. A continuacin se presenta la
secuencia de pasos ejecutada por el gestor de arranque:


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

1.1. Inicializacin de Hardware.
Normalmente incluye:

1. Configurar la velocidad de la CPU.
2. Inicializacin de la memoria (Determinacin del tamao de memoria
disponible, borrado de la misma y configuracin de registros).
3. Encendido del cach disponibles.
4. Configuracin del puerto serial para el arranque de la consola.
5. Realizacin de diagnsticos de Hardware, esto se conoce como POST:
Power On Self-Test diagnostics.

Una vez estos pasos se han completado satisfactoriamente, el paso a seguir es el
de cargar el Kernel de Linux.
1.2. Descarga de la imagen del Kernel y el Disco RAM inicial (Initrd).
El gestor de arranque requiere localizar la imagen del Kernel que dependiendo de
la aplicacin se puede encontrar en un Disco Duro, una memoria Flash o alguna
ubicacin en la red. Cualquiera que sea el caso se requiere cargar la imagen en la
memoria, si se encuentra comprimida (en la mayora de los casos) debe ser
descomprimida.

Si tambin se encuentra presente un Disco RAM Inicial (Initrd) el gestor de
arranque tambin debe cargarlo en la memoria, el Initrd se trata de un sistema de
archivos temporal que emplea el Kernel durante el inicio del sistema tpicamente
para hacer los arreglos necesarios para que el sistema de archivos raz pueda ser
cargado.

Se resalta que la direccin de memoria donde el Kernel es cargado es designada
por el gestor de arranque dependiendo de lo que lee del encabezado de la imagen
del kernel, normalmente para las imgenes de Kernel se emplean archivos .ELF
(Executable and Linkable Format) que contienen un encabezado con informacin
referente al archivo.
1.3. Configurando Argumentos.
La transferencia de argumentos es una opcin poderosa soportada por el Kernel
de Linux. Linux genera medios genricos para la transferencia de argumentos al
Kernel a travs de cualquier plataforma. Normalmente el gestor de arranque
configura un rea de la memoria inicializndola con las estructuras de datos
requeridas (que pueden ser identificadas por el Kernel) para que la transferencia
de argumentos se presente solo es necesario cargar los valores deseados en
estas estructuras.
1.4. Saltando al Punto de Entrada del Kernel.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El punto de entrada del Kernel es asignado por el enlazador cuando se compila el
Kernel una ves el gestor de arranque salta hacia el punto de entrada del Kernel se
culmina su trabajo en la mayora de los casos entonces el Kernel entra a disponer
del espacio en memoria utilizado por este, se debe tener en cuenta este aspecto a
la hora de el diseo del mapa de memoria del sistema.
1.5. Arranque del Kernel.
El arranque del Kernel se puede dividir en dos etapas:

- Inicializacin especfica de la plataforma/CPU.

Si se est portando el Linux a una plataforma especfica, esta seccin es muy
importante porque presenta una serie de pasos necesarios en el portado o
migrado del BSP (Board Suport Package). En sistemas embebidos BSP se trata
del cdigo de soporte de una board especifica y normalmente hace parte del
gestor de arranque de un sistema. La inicializacin de la plataforma consiste en
los siguientes pasos:

1. Configurando el ambiente para la ejecucin de la primera rutina en C: el
punto de entrada del Kernel se trata de una rutina en assembler que
depender especficamente de la plataforma. El nombre de esta funcin
vara pero normalmente se encuentra en un archivo llamado head.s y
realiza lo siguiente:

a. Activar el MMU de la plataforma: Muchos de los gestores de
arranque no trabajan con MMU por lo tanto la direccin virtual
concuerda con la fsica; por otro lado el Kernel es compilado con la
direccin virtual. por tanto se requiere que en mquinas que no
tienen el MMU activado, se active, as el Kernel puede empezar a
utilizar la direccin virtual normalmente.
b. Realizar la inicializacin del Cach, esta labor tambin depende de la
plataforma.
c. Configurar BSS (block started by symbol) colocndola en cero.
d. Configurar la pila para que la primera rutina en C pueda ser
invocada. La primera rutina en C es la funcin start_kernel()que se
encuentra en init/main.c Esta es una funcin mas grande que realiza
una serie de procesos hasta que termina en una tarea de marcha
lenta (la primera tarea en el sistema que tiene una identidad de
proceso igual a 0). Esta funcin invoca el resto de las inicializaciones
de la plataforma que se describen a continuacin

2. La funcin setup_arch(): realiza la inicializacin de la plataforma/CPU
especifica para que las dems inicializaciones puedan ser invocadas de

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

forma segura esta funcin es altamente dependiente de la plataforma, se
pueden describir algunas funcionalidades en comn:

a. Reconocimiento del Procesador. Se realizan los arreglos requeridos
por este procesador.
b. Reconocimiento de la Placa, igualmente se realizan los arreglos
requeridos por la placa.
c. Anlisis de los parmetros de la lnea de comandos transferidos al
Kernel
d. Identificacin si el Disco Ram ha sido configurado por el gestor de
arranque para que el Kernel despus pueda cargarlo como el
Sistema de Archivos Raz.
e. Llamada de funciones Bootmem, estas se refieren a la memoria
inicial que el Kernel puede reservar para diferentes propsitos antes
de que el cdigo de paginado disponga de toda la memoria. Por
ejemplo se puede utilizar un espacio reservado previamente por el
Bootmem para manejar el DMA.
f. Se Llama la funcin de inicializacin de paginado que toma el resto
de la memoria para el ajuste de las pginas de memoria del sistema.

3. Inicializacin de las Excepciones la funcin trap_init(): esta funcin ajusta
los manejadores de excepciones referentes al el Kernel especfico. Previo a
esto si una excepcin ocurre la respuesta depende de la configuracin de la
plataforma.

4. Inicializacin del proceso del manejo de interrupciones la funcin
init_IRQ(): esta funcin inicializa el controlador y los descriptores de
interrupciones (estos son estructuras de datos empleadas por el BSP para
asignar interrupciones). Ntese que las interrupciones no se encuentran
habilitadas en este punto esto es responsabilidad del individuo; los drivers
contienen las lneas que habilitan las interrupciones durante su inicializacin
pero son cargados luego. Por ejemplo la inicializacin del timer se
asegurar de que su interrupcin es habilitada.

5. Inicializacin de Timers La funcin time_init(): Esta inicializa la seal del
temporizador Hardware para se comience a generar la seal de reloj con la
cual funciona el sistema.

6. Inicializacin de la consola La funcin console_init(): Esta inicializa el
dispositivo serial como una consola. Una vez esta est activada, todos los
mensajes de arranque son presentados en la pantalla del sistema si la
posee, de lo contrario ser enviada por el puerto serial. Para imprimir un
mensaje desde el Kernel se emplea la funcin printk().

7. Calculando ciclos de espera para la plataforma la funcin
calibrate_delay(): Esta funcin es utilizada para implementar esperas de

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

microsegundos dentro del Kernel utilizando la funcin udelay(), sta oscila
por algunos ciclos hasta obtener los microsegundos especificados por el
argumento para esto el nmero del ciclos de reloj por microsegundo deben
ser conocidos por el Kernel y la funcin calibra el nmero de ciclos de
espera, se basa en las interrupciones del timer asegurando que los ciclos
de espera trabajan de forma uniforme para cualquier plataformas.

- Inicializacin del Sub-sistema.

La mayora de las inicializaciones del subsistema son realizadas durante la
ejecucin de la funcin start_kernel(), al final de esta el Kernel crea otro proceso
llamado el proceso de inicio que realiza el resto de la inicializacin (drivers,
llamadas de inicio, carga del sistema de archivos raz y salto al espacio de
usuario) este proceso es el que se convierte en el proceso 0.

Incluye:

Inicializacin del Scheduler.

Inicializacin del administrador de memoria.

Inicializacin del VSF.
1.6. Inicializacin de Drivers.
La inicializacin de drivers es realizada despus de que la administracin de
memoria y de procesos se encuentran activas, esto es realizado en el contexto del
proceso de inicio.
1.7. Carga del Sistema de Archivos Raz.
Teniendo en mente que el Sistema de Archivos Raz es el principal, es decir, se
trata del sistema de archivos en donde otros archivos del sistema pueden ser
cargados. El registro de carga es un proceso importante durante la etapa de
arranque en la medida en que el Kernel puede comenzar la transicin de este a
espacio de usuario. El bloque que contiene el sistema de archivos raz puede ser
codificado en el Kernel cuando ste es compilado o puede ser transferido como un
argumento en una lnea de comando del gestor de arranque utilizando la etiqueta
root=. Los siguientes son tres tipos de sistemas de archivo raz que pueden
encontrarse en sistemas embebidos:

- El Disco RAM Inicial.
- Sistemas de archivos basados en Redes que emplean NFS (Network File
System).
- Sistema de archivos basado en memorias Flash.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Los sistemas de archivos raz normalmente son utilizados para compilaciones de
depuracin los otros dos para compilaciones de produccin. El disco RAM simula
un dispositivo de bloque utilizando la memoria del sistema; tambin puede ser
utilizado para cargar sistemas de archivos generando una imagen de stos, el
disco RAM puede ser utilizado como Raz (Initrd). Initrd es un concepto poderoso
y tiene una amplia gama de usos especialmente en las primeras etapas de diseo
de Linux Embebido cuando no se cuenta con un driver para Flash pero las
aplicaciones se encuentran listas para hacer pruebas. Si se quiere que el Kernel
cargue un Initrd, se debe configurar el Kernel durante el proceso de compilacin
con la opcin CONFIG_BVLK_DEV_INITRD. Como se sabe la imagen del Initrd es
cargada solamente con la imagen del Kernel; ste debe transferir la direccin de
inicio y final del Initrd empleando argumentos en lneas de comandos. Una vez
realizado esto el Kernel cargar un sistema de archivos raz cargado en el Initrd.

A pesar de la utilidad el Initrd una vez se ha utilizado es desechado, la necesidad
de utilizar Initrd radica en el hecho de que se requiere para cargar otro sistema de
archivos, a simple vista parece innecesario pero teniendo en cuenta que para
cargar un sistema de archivos desde un dispositivo de almacenamiento se
requiere el driver del ste, pero este driver se encuentra en el sistema de archivos
raz del Kernel que no ha sido montado, este inconveniente se convierte en la
paradoja de la gallina y el huevo, la solucin es incluir el driver como un mdulo en
el Initrd, una vez que ste es cargado entonces el mdulo del driver puede ser
accedido entonces si se puede cargar la raz desde el dispositivo y se desecha el
Initrd.
1.8. Realizando la llamada inicial (Initcall) y liberando la memoria inicial.
Si se observa el script del enlazador de cualquier arquitectura, este tendr una
seccin de arranque, el inicio y fin de esta seccin se marca con: __init_begin e
__init_end. La idea de este espacio es el de contener texto y datos que puedan
ser desechados una vez el sistema ha arrancado y ya no sean necesarios. Un
ejemplo de esto puede ser las funciones de inicializacin de drivers. La idea de
colocar todas estas funciones juntas es la de que el bloque de memoria ocupada
por estas sea significativo como para que quede disponible en forma de pginas
libres.

Linux tambin proporciona una forma de agrupar funciones que deben ser
llamadas durante el arranque del sistema, esto se logra declarando las funciones
con la directiva __initcall, Estas funciones automticamente sern llamadas
durante el arranque por lo tanto no requieren ser insertadas en el cdigo de
arranque.
1.9. Movindose hacia el espacio de Usuario.
El Kernel que se ejecuta en el contexto del proceso de arranque salta al espacio
de usuario superponindose (empleando la funcin execve) con el ejecutable de la

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

imagen de un programa especial conocido como Init. Este ejecutable normalmente
se encuentra en la Raz en el archivo /sbin.
1.10. Inicializacin del Espacio de Usuario.
El espacio de usuario depende de la distribucin que se utilice, la responsabilidad
del Kernel se limita a la transicin del proceso de arranque; lo que hace el proceso
de arranque y como inicia los servicios depende de la distribucin. A continuacin
se presenta el modelo genrico de Linux que asume que el proceso de inicio es
/sbin/init, y es muy similar a la secuencia de inicializacin de la variante de UNIX
conocida como V UNIX.

- El proceso /sbin/init y el /etc/inittab.

El proceso Init es muy importante para el Kernel, cumple con las siguientes
caractersticas:

Nunca puede ser eliminado, Linux provee una seal llamada SIGKILL que
puede terminal la ejecucin de cualquier proceso pero no puede hacerlo
con el proceso Init.
Cuando un proceso inicia otro proceso ste se convierte en el hijo del
proceso inicial, esta relacin es importante puesto que si el padre es
eliminado antes que el hijo, el Init adopta al proceso hurfano.
El Kernel informa el comienzo de eventos especiales por medio de seales,
por ejemplo si se presiona Ctrl-Alt-Del en el teclado del sistema, esto hace
que el Kernel enve una seal al proceso Init que por lo general provoca un
apagado general.

El proceso Init puede ser configurado en cualquier sistema utilizando el archivo
inittab que normalmente se encuentra en la siguiente direccin: /etc. El Init lee
ste archivo y realiza las acciones descritas en ste de forma secuencial. Init
tambin decide el estado del sistema, que se conoce como nivel de ejecucin
(Run Level) y es mandado al inittab como un argumento, si no se enva
ninguno se emplea el nivel de ejecucin designado por defecto, entre los
niveles de ejecucin disponibles estn:

0. Sistema en alto.
1. Modo de Mono-Usuario (para propsitos administrativos).
2. Modo Multi-Usuario con capacidades de red restringidas.
3. Modo Multi-Usuario completo.
4. Sin Uso.
5. Modo Grfico (X11).
6. Estado de Reinicio.

El archivo Inittab tiene un formato especial compuesto generalmente por los
siguientes detalles:

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

El nivel de ejecucin por defecto.
Las acciones a realizar cuando Init se mueve a nivel de ejecucin.
Normalmente se invoca el script /etc/rc.d/rc con el nivel de ejecucin
como argumento.
El proceso que necesita ser ejecutado durante el arranque, normalmente
se trata del archivo /etc/rc.d/rc.sysinit.
Init puede volver a la vida un proceso si esto se encuentra configurado
en el archivo Inittab. Esta caracterstica se emplea por ejemplo en el
proceso de autenticacin una vez que el usuario ha cerrado la sesin y
se quiere volver a ingresar.
Acciones para manejar eventos especiales como Ctrl-Alt_Del o una falla
de energa.

- El archivo rc.sysinit.

Este realiza la inicializacin del sistema antes de que los servicios sean
iniciados, en un sistema embbebido este archivo realiza lo siguiente:

- Carga sistemas de archivos especiales como proc, ramf, entre otros.
- Crea directorios y links si es necesario.
- Designa el nombre del Host para el sistema.
- Ajusta la configuracin de red del sistema.
1.11. Iniciando los Servicios.
Como se ha mencionado previamente el script /etc/rc.d/rc se responsabiliza de
iniciar los servicios. Estos se definen como una funcin que controla un proceso
del sistema. Al utilizar los servicios, un proceso puede ser detenido, reiniciado o
en funcionamiento, entonces su estado puede ser requerido. Los servicios
normalmente se encuentran en directorios basados en niveles de ejecucin, y se
comportan dependiendo del nivel de ejecucin seleccionado. Despus de
desempear los pasos anteriores, en Init inicia un programa de autenticacin,
puede ser a travs de un administrador de ventas en el display grfico

El cdigo inicial de arranque del Kernel tambin presenta diferencias que
dependen de la plataforma donde se ejecute, ste gestiona su propia inicializacin
antes de generar el ambiente apropiado para la ejecucin de cdigo en C. Una
vez se han realizado estas labores, el Kernel salta a la parte independiente de la
arquitectura star_Kernel() que a su ves inicia la funcionalidad de alto nivel del
Kernel, carga el Sistema de Archivos Raz y el proceso de inicializacin general.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

CAPITULO 9: IMPLEMENTACIN DE EMBEDDED LINUX

Leccin 11: Metodologa de Diseo e Implementacin.

El diseo e implementacin de un sistema con Linux embebido puede ser llevado
a cabo con una metodologa definida, el proceso incluye diferentes tareas, algunas
pueden ser realizadas en paralelo algunas pueden incluso ser omitidas en caso de
que se emplee alguna distribucin de Linux

1. Creando un Sistema Linux de Destino (Target).

Un sistema de este tipo es creado, mediante la configuracin y enlazado de los
componentes de sistema apropiados; es de resaltar la necesidad en la mayora de
los casos de un sistema anfitrin (host) en el que normalmente se desarrollan las
aplicaciones para luego ser cargadas y/o depuradas en el sistema embebido
(Target), un host puede tratarse de estaciones de trabajo que funcionen bajo
alguna distribucin de Linux o cualquier otro sistema operativo como Unix o
Windows (Vista, XP, 2000,NT, 98 etc.)

Figura 50: Enlace Host/Target.



Se debe tener en cuenta que independientemente del sistema empleado como
Host se deben utilizar herramientas de desarrollo enfocadas al Hardware o Target
a emplear y si es el caso que estas herramientas presenten caractersticas que
permitan la implementacin en sistemas Cross-Plataformas, por ejemplo la
implementacin de un sistema con Linux embebido desde una estacin de trabajo
que corre bajo Windows. Ver figura 50.

Existen cuatro pasos principales para crear un sistema Linux de Destino:

- Determinar los Componentes del Sistema Requeridos:
Ambiente de
Desarrollo
Cross-Plataforma
HOST
- Bootloader.
- Kernel
-Sistema de
Archivos Raz
TARGET

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


Se debe crear una lista con lo elementos realmente necesarios antes de
aventurarse a buscar las posibles opciones que puedan presentarse en un
momento dado, pues si no se tiene claro lo que se requiere, ser muy
complicada la seleccin debido a la gran oferta tanto de Software como de
Hardware que hay disponible.

- Configurar el Kernel:

Se debe seleccionar una versin del Kernel y una configuracin relevante
de esta, teniendo en cuenta en lo posible emplear versiones actualizadas y
que funcionen de manera estable, evitndose as errores (Bugs) que
agregan inestabilidad al sistema y que puedan haber sido arreglados en
versiones actualizadas.

Se puede apuntar en trminos de estabilidad el hecho de que aun en la
actualidad se utiliza la versin 2.4 del Kernel en sistemas embebidos, a
pesar de las nuevas versiones disponibles, esto se debe a que los
ingenieros que lo usan, encuentran comodidad con su uso y no ven
necesidad de utilizar uno mas actual puesto que sus diseos funcionan
correctamente. Independientemente de la versin y configuracin
seleccionada es recomendable mantener la misma configuracin del Kernel
durante el desarrollo del proyecto para evitar que etapas ya funcionales
entren en conflicto al realizar cambios.

Una vez configurado el Kernel es hora de compilarlo (Build) este proceso
requiere varios pasos y genera mas de una imagen del Kernel. Puede que
algunos de los componentes generados no sean necesarios en otros
aspectos del desarrollo del proyecto, pero se recomienda configurar y
estructurar todos los componentes del Kernel tan pronto como sea posible
para que stos soporten todos los requerimientos durante el desarrollo y
evitar as estar realizando cambios que puedan afectar el funcionamiento
del sistema en general.

- Estructurar el Sistema de Archivos Raz:

El Sistema de Archivos Raz de un sistema con Linux embebido es similar a
la encontrada en una estacin de trabajo o servidor corriendo bajo Linux
con la excepcin de que contienen un set de aplicaciones mnimo, as como
las libreras y archivos relacionados justos para correr el sistema
adecuadamente.

A este punto se asume una adecuada seleccin de los componentes
requeridos del sistema y no se recomienda retirar ninguno de lo contrario la
especificacin del Sistema de Archivos Raz se ver afectada. Es por tanto
importante que durante la etapa de determinacin de los componentes se

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

estime de manera lo mas precisa posible el tamao de cada uno de los
componentes el Sistema de Archivos Raz.

Otra forma de realizar esta labor puede ser mediante pruebas iterativas
aadiendo componentes como libreras y herramientas a medida que se
desarrolla el proyecto pero es una forma que demanda mas trabajo.

- Configurar el Arranque del Sistema:

Las tareas que quedan pendientes tienen relacin con la configuracin de
los dispositivos de almacenamiento y el Software que gestiona el arranque
del sistema (Bootloader), es en esta etapa donde Kernel, Sistema de
Archivos Raz y Bootloader entran a interactuar. Aunque el arranque
depende de la arquitectura del sistema, la metodologa para empaquetar y
arrancar un sistema es similar para diferentes arquitecturas, lo que vara es
el tipo de Bootloader y ste depende tambin de la unidad de
almacenamiento desde donde se carga el sistema.

2. Sistema de archivos y mdulos

El sistema de archivos es el encargado de realizar la organizacin y
almacenamiento de los archivos en los diferentes dispositivos disponibles en el
sistema. En funcin de las caractersticas del dispositivo de almacenamiento y del
tipo de informacin que se va a guardar es preferible utilizar un sistema de
archivos u otro. Linux da soporte a varios sistemas de archivos, dentro de los mas
utilizados se encuentran ext2, ext3, reiserfs, etc. Estos sistemas de archivos son
manejados por una capa denominada Sistema de Archivos Virtual (VFS, del ingls
Virtual File System). Esta capa de abstraccin provee una visin consistente de
los datos almacenados en diferentes dispositivos del sistema. Esta visin es
lograda separando el nivel de usuario de los sistemas de archivos, utilizando
llamadas estandars al sistema, permitiendo sistemas de archivos lgicos sobre
cualquier dispositivo fsico. Por lo tanto esta capa abstrae los detalles fsicos del
dispositivo permitiendo un acceso a los mismos a travs de archivos de una
manera consistente.

Por debajo de esta capa VFS, el kernel interacta con dispositivos de E/S a travs
de controladores de dispositivos (del ingls devices drivers). Estos
controladores se encuentran incluidos en el kernel y consisten en estructuras de
datos y funciones que controlan uno o ms dispositivos como discos rgidos,
teclados, mouses, monitores, interfaces de red, dispositivos SCSI. Observamos
esta estructura que ha sido descripta por Bovet en el siguiente grfico.

Figura 51: Estructura descrita pot Bovet.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS



Uno de los propsitos fundamentales de los controladores de dispositivos es aislar
los programas de usuario del acceso a estructuras de datos crticas del kernel y
dispositivos de hardware. Adems, un controlador de dispositivo oculta al usuario
la complejidad y variabilidad de un dispositivo hardware. Por ejemplo, un programa
que quiere escribir datos en un disco rgido no tiene en cuenta si el mismo posee
sectores de 512 bytes o 1024 bytes. El usuario simplemente abre el archivo y
realiza el comando de escritura. El controlador manejar los detalles y aislar al
usuario de las complejidades y riesgos de programar directamente sobre el
dispositivo de hardware. Estos controladores proveen la representacin de los
dispositivos a travs de archivos, en GNU/Linux y sistemas operativos Unix todo
hardware es representado por un archivo.

Linux posee la capacidad de agregar y quitar componentes del kernel en tiempo
de ejecucin. Como hemos descripto anteriormente, el kernel Linux posee una
estructura de kernel monoltico, con una interfaz para agregar y quitar mdulos de
controladores de dispositivos dinmicamente luego del arranque del mismo. Esta
caracterstica no solo agrega flexibilidad al usuario, sino que adems, en sistemas
embebidos adquiere una especial importancia debido a su capacidad de
actualizacin y adaptacin a dispositivos de E/S nuevos.

3. Sistema de archivos raz

Todo dispositivo, ya sea que se encuentre en un sistema embebido o una PC de
escritorio, necesita al menos un sistema de archivos. Dos razones que describe
Yaghmoun son las siguientes:

- Las aplicaciones poseen programas separados, independientes por
ende necesitan espacio de almacenamiento en un sistema de archivos.

- Los dispositivos de bajo nivel tambin son accedidos mediante archivos.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

De esto se desprende la necesidad de poseer un sistema de archivos maestro, un
sistema de archivos raz (RFS, del ingls Root Filesystem).

El RFS es una estructura de directorios jerrquica en donde se almacenan las
aplicaciones, libreras y archivos relacionados para ejecutar el sistema. Estos
archivos pueden ser binarios, contener solo datos o tambin vincularnos con
estructuras de datos haciendo de nexo con los dispositivos de E/S que hemos
descripto en el punto anterior.

El RFS de un sistema Linux embebido y de un Linux de escritorio o servidor no
varan demasiado, solo que el primero es reducido por evitar un consumo excesivo
de recursos. Este sistema de archivos raz es montado al momento del arranque
de Linux.

Posee una estructura en forma de rbol, en donde todos los directorios se
desprenden del directorio principal denominado raz y simbolizado con una barra
inclinada (/). La siguiente figura nos muestra este tipo de estructura.

4. Compilacin nativa y cruzada

En el proceso de desarrollo de un sistema GNU/Linux embebido se debe realizar
en un primer punto las configuraciones correspondientes de los componentes que
formarn parte del sistema embebido (kernel, los mdulos del mismo, el sistema
de archivos raz, etc), luego de esto, el paso previo a la prueba del sistema es la
etapa de compilacin.

Cuando se realiza el desarrollo de una aplicacin, usualmente se compila en una
computadora tipo PC, ya que dicha aplicacin ser ejecutada por un sistema de
caractersticas de hardware similares. Otra prctica habitual ocurre cuando se
desea aadir soporte extra al kernel Linux, ya sea para hardware o para
protocolos de red, en este caso se realiza la compilacin en la misma
computadora donde luego ser ejecutado.

Este tipo de compilacin, en donde el software es compilado y ejecutado en una
misma arquitectura de hardware se denomina compilacin nativa.
Esta alternativa es la ms utilizada, y se la denomina de este modo an si la
aplicacin ha sida compilada en un equipo diferente al que luego la ejecutar
siempre y cuando la arquitectura de hardware sean compatibles. Un ejemplo de
esto son las aplicaciones compatibles para microprocesadores AMD e Intel.

En el caso de los equipos que frecuentemente se utilizan para sistemas
embebidos, poseen recursos de hardware limitados y especficamente diseados
para realizar cierto tipo de tareas. Por este motivo, en general, no es una buena
alternativa compilar un sistema completo utilizando el hardware del sistema

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

embebido.

En este punto es donde surge la necesidad de realizar la compilacin del sistema
embebido en una computadora cuyos recursos no sean escasos. Es comn hoy
en da tener una PC capacidades de procesamiento de 3 Ghz y 2GB de memoria
RAM, lo que supone una gran ahorro de tiempo al momento de realizar pruebas y
cambios de configuraciones, solo basta disear un "ambiente" que le permita al
compilador producir cdigo ejecutable para un microprocesador diferente al que se
est utilizando.

La compilacin de software que ser ejecutado en una arquitectura diferente, por
ende incompatible, a la que est produciendo el cdigo ejecutable se denomina
compilacin cruzada y este "ambiente" que permite realizar la misma se
denomina entorno de compilacin cruzada o entorno de desarrollo cruzado.
Yaghmoun describe este proceso identificando al equipo que realiza la
compilacin mediante el trmino Host o Huesped y al dispositivo que ejecuta el
software, como sistema Target u Objetivo.

5. Entorno de compilacin cruzada

Para implementar un entorno de compilacin cruzada es necesario un conjunto de
libreras, utilitarios y binarios. En la bibliografa relacionada con sistemas
GNU/Linux embebido a este conjunto de componentes se los denomina toolchain
components.

Estos componentes son:

- Compilador C : compilador de C bsico, generador de cdigo objeto
(tanto del kernel como de aplicaciones)
- Librera C: implementa las llamadas al sistema mediante APIs.
- Binutils: conjunto de programas necesarios para la compilacin,
enlazado, ensamblado y depuracin de cdigo. Entre otros, los binarios
principales son: ld (GNU linker), as (GNU assembler).

Leccin 12: uCLinux.

Pronunciado you-see-linux, el nombre de Clinux viene de la combinacin de la
letra griega con la letra C y el nombre Linux. designa pequeo o micro, C
indica controlador y Linux obviamente del popular sistema operativo. Clinux fue
portado inicialmente en el procesador Motorola DragonBall MC68328. El primer
sistema objetivo con Clinux fue una PalmPilot usando la board TRG SuperPilot.

Clinux es un derivado del kernel 2.0 de Linux destinado para microcontroladores
y microprocesadores sin unidades de administracin de memoria (MMUs). Clinux
hoy en da incluye las versiones 2.4 y 2.6 del kernel de Linux con las debidas
modificaciones o extensiones. Incluso, gracias a la popularidad que estn tomando

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

los sistemas embebidos, Clinux ha sido incluido en la versin principal del kernel
de Linux, la 2.6.

El hecho de que Clinux haya sido creado para soportar microprocesadores sin
MMU, hace que la multitarea sea difcil de implementar. La mayora de los
archivos binarios y cdigo fuente del kernel han sido reescritos para compactar y
reducir el cdigo base. Todo esto significa que el kernel de Clinux es mucho ms
pequeo que el kernel original de Linux 2.0, mientras que mantiene las principales
ventajas de este ltimo como son: estabilidad, capacidad superior en redes, y
excelente soporte en el sistema de archivos. Entre las caractersticas que
sobresalen a primera medida se puede destacar que Clinux cuenta con API de
Linux comn, adems de tener un tamao muy pequeo, de hecho menor a los
512 KB cuando se ha compilado. Clinux viene equipado con un stack completo
TCP/IP, junto con el soporte para muchos protocolos de red adicionales. La
mayora de los protocolos de red estn implementados y son funcionales.

Adems, es un sistema operativo apto para Internet y sistemas embebidos, donde
no se necesita de una arquitectura de alto desempeo. Se tiene soporte para
varios sistemas de archivos tales como: NFS, ext2, fat32, romfs, jffs y muchos ms
gracias al sistema de archivos virtual que desciende de Linux.

1. Razones para usar Clinux

Las siguientes caractersticas muestran porque Clinux puede ser usado en
aplicaciones embebidas de alta complejidad con limitantes en la arquitectura.

- Linux: Conectividad IP incluida, fiabilidad, portabilidad, manejo de
numerosos sistemas de archivos, software libre o gratuito.

- Peso liviano: se puede obtener un kernel de Linux 2.6 en menos de 300kb,
adems, los binarios son mucho ms pequeos con la librera Clibc.

- Ejecucin en el lugar (XIP): No se necesita cargar los ejecutables en la
memoria RAM ya que se pueden correr directamente desde la memoria
ROM. Sin embargo la ejecucin ser ms lenta que si lo ejecuta
normalmente.

- Ms barato: Los ncleos ARM sin MMU son aproximadamente un 30% ms
pequeos. Un gran nmero de aplicaciones en sistemas embebidos no
necesitan MMU.

- Rpido: con Clinux, los cambios de contexto son bastante rpidos.

- Acceso del usuario al hardware: Las aplicaciones de usuario pueden
acceder al sistema entero, incluyendo registros de dispositivo.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- APIs de Linux completas: Se pueden usar la mayora de llamadas de
sistema con algunas excepciones. Las aplicaciones que vienen con la
distribucin Clinux ya han sido portadas.

- Caractersticas completas del kernel 2.6: Estabilidad, ncleo apropiativo,
drivers, entre otros.

- Multitarea: Soporte completo para ejecucin de tareas mltiples. Claro est,
con algunas limitaciones.

- Procesadores soportados: M68K, ARM7, MIPS, entre otros.

Clinux se usa especialmente en procesadores sin MMU. Incluso, en algunos
casos es mejor usarlo en procesadores con MMU en lugar de Linux por razones
de desempeo, ya que desactivar esta unidad puede traer mejoras en el
rendimiento de aplicaciones orientadas a sistemas embebidos. Aunque una gran
cantidad de trabajo ya se ha hecho y la mayora de aplicaciones ya han sido
exportadas, alguna experiencia o aprendizaje es definitivamente necesaria cuando
se va a iniciar un proyecto nuevo usando Clinux.

2. Diferencias entre Linux y Clinux

Clinux proviene del sistema operativo Linux. En vista de que este sistema
operativo soporta procesadores que no cuentan con MMU, varias son las
diferencias que existen entre l y su padre.

No hay administracin de memoria virtual: La diferencia definitiva y ms
prevaleciente entre Clinux y Linux es la falta de administracin de memoria
virtual (VM). Bajo Linux, la administracin de memoria virtual es llevada a
travs de la unidad MMU que los procesadores tienen. Clinux ha sido
creado para sistemas que no cuentan con tal unidad y por lo tanto no hace
uso de memoria virtual.

- Diferencias en el kernel: Clinux tiene algunas diferencias en su kernel muy
relacionadas principalmente por el hecho de no haber una MMU en el
procesador. Por ejemplo, no se podr hacer uso del soporte de paginacin
que ofrece una unidad de MMU. El sistema de archivos TMPFS no funciona
en Clinux debido a que l confa en las caractersticas que la VM le puede
brindar. Similarmente, los formatos estndar de ejecutables (elf, a.out, etc.)
no funcionan ya que estos tambin hacen uso de la VM que no est
disponible en Clinux. Para solventar este problema, los archivos
ejecutables deben tener un formato plano, el cual es un formato ejecutable
condensado que almacena solo cdigo ejecutable y datos, adems de las
reubicaciones necesarias para cargar el ejecutable en memoria.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Asignacin de memoria: Clinux ofrece una eleccin de dos asignadores de
memoria del ncleo. Al principio puede no parecer obvio por qu es
necesario un asignador alterno de memoria del ncleo, pero en los
sistemas Clinux la diferencia es clara. El asignador predeterminado del
ncleo bajo Linux es un mtodo de asignacin basado en potencias de dos.
Esto le permite operar ms rpido y encontrar velozmente reas de
memoria del tamao correcto para satisfacer peticiones de asignacin.
Desafortunadamente, bajo Clinux, las aplicaciones deben ser cargadas
dentro de la memoria que est fuera del alcance de este asignador. Para
entender las consecuencias de esto, especialmente para asignaciones
grandes, considrese una aplicacin que requiera una asignacin de 33KB
para ser cargada; realmente se le asigna la siguiente potencia de dos, que
es 64KB. Los 31KB de espacio adicional asignado no pueden ser utilizados
eficazmente.
Este orden de desperdicio de memoria es inaceptable en la mayora de
sistemas Clinux. Para remediar este problema, un asignador alternativo de
memoria se le ha creado al kernel de Clinux. Este es comnmente
conocido como page alloc2() o kmalloc2(), dependiendo de la versin del
ncleo.

- Aplicaciones y procesos: Otra diferencia entre Linux y Clinux es la falta de
la llamada de sistema fork(). Esto puede requerir bastante trabajo de parte
del desarrollador cuando est portando aplicaciones que usan fork(). La
nica opcin bajo Clinux es usar vfork().

3. Librera estndar C

El SO Linux hace uso de la librera estndar C junto con un gran nmero de
libreras tanto estticas como dinmicas que permiten a las aplicaciones hacer uso
de los diferentes servicios que ofrece el SO. La librera C para Linux llamada glibc
es de gran tamao y por lo tanto no es apta para un sistema embebido que por lo
general est limitado en memoria.

Por fortuna el proyecto Clinux ha creado la librera Clibc, la cual cumple en gran
parte, con la funcionalidad de la librera tradicional pero con un tamao mucho
menor. Actualmente Clibc es mantenido por un proyecto aparte de nombre
similar.

4. Distribucin Clinux

Hoy en da, Clinux se puede encontrar como una distribucin, es decir, no solo
viene el cdigo del kernel sino tambin una serie de aplicaciones ya portadas para
l, adems de configuraciones para una gran variedad de procesadores y
vendedores de sistemas de desarrollo para Clinux. Tambin existe en esta
distribucin libreras para Clinux como Clib, entre otros. La distribucin est en

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

capacidad de ayudar al usuario a configurar todo el software necesario para el
sistema embebido.

El sistema operativo Clinux al igual que su padre, ofrece grandes caractersticas
en cuanto a portabilidad, estabilidad, conectividad adems de otras caractersticas
ms especficas del sistema operativo Clinux. Adems cuenta con todo el
cdigo fuente a la mano para realizar alguna modificacin o adaptar el sistema
operativo a determinada arquitectura que actualmente no se soporte.

Clinux es un sistema operativo apto para sistemas embebidos con muy pocos
recursos de memoria y procesadores de bajo desempeo, y que son usados en
aplicaciones especificas que no requieren de alta capacidad computacional como
control industrial, monitoreo remoto, celulares, sistemas de audio y video
porttiles, y muchas otras ms. Aspectos como la multitarea, redes de
comunicacin y acceso directo al hardware del sistema son factores determinantes
que cualquier sistema embebido mvil debe poseer.

Actualmente Clinux es soportado por muchos programadores en todo el mundo,
los cuales estn mejorando las prestaciones de este sistema operativo. Esto
puede ser un punto a favor si en algn momento se piensa en realizar
modificaciones al ncleo para mejorar las prestaciones, en especial, en todo lo
relacionado con el bajo consumo.

Con Clinux se tiene la facultad de poder tener un buen sistema operativo en una
arquitectura que normalmente no es soportada por otros sistemas operativos,
incluso aquellos que son propietarios como Windows, Unix y otros.

Leccin 13: Pasos bsicos para comenzar con uClinux

Los pasos bsicos para comenzar con uClinux, (http://www.uclinux.org). Son:

- Seleccin de Hardware: Si no se posee un kit de desarrollo se debe
adquirir uno para el procesador que se est interesado en implementar. Se
pueden encontrar muchos Kit de desarrollo diferentes para los
procesadores soportados en http://www.ucdot.org/search.pl? topic = 9.
Tambin se puede utilizar un emulador.

- Toolchain: Si ya se dispone del kit de desarrollo un emulador:

- Conecte el hardware necesario.
- Vaya a http://www.uclinux.org.Lea la informacin que all se encuentra.
- Vaya a http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/ y descargar
los binarios de los toolchains para su arquitectura (leer en la pgina cmo
instalarlos).

- Distribucin-uClinux

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Vaya a http://www.uclinux.org/pub/uClinux/dist/ y descargue la "distribucin de
cdigo fuente completo" (leer en la pgina de cmo se puede desempaquetar y la
forma de compilar una primera imagen).
- Lea el README en el directorio principal uClinux-dist, as como cualquier
documento que crea que ser til en uClinux-dist/Documentation/, especialmente
los HOWTOs de que podran estar all para su plataforma/arquitectura y las
FAQs.

http://www.ucdot.org. Se trata de un portal de Internet para todo lo concerniente a
uClinux.

Leccin 14: Trminos relacionados

1. Toolchains components

- Compilador C GNU(gcc): compilador C usado para generar cdigo objeto.

- Librera C GNU: esta librera implementa las llamadas al sistema, API,
como open, read. Pueden ser, glibc, uClib, u otras.

- Binutils (binary utilities): conjunto de programas necesarios para
compilar/enlazar/ensamblar y realizar otras tareas de debugging. Los
binarios principales son: ld (GNU linker), as (GNU assembler). Otros son:

addr2line - Converts addresses into filenames and line numbers.
ar - A utility for creating, modifying and extracting from archives.
c++filt - Filter to demangle encoded C++ symbols.
gprof - Displays profiling information.
nlmconv - Converts object code into an NLM.
nm - Lists symbols from object files.
objcopy - Copys and translates object files.
objdump - Displays information from object files.
ranlib - Generates an index to the contents of an archive.
readelf - Displays information from any ELF format object file.
size - Lists the section sizes of an object or archive file.
strings - Lists printable strings from files.
strip - Discards symbols.
windres - A compiler for Windows resource files.

2. Libreras C

Dadas las limitaciones de recursos de los sistemas embebidos, el tamao de la
librera C y su funcionalidad es un punto clave a tener en cuenta para la seleccin
de la misma. Su tamao y funcionalidad son variables directamente
proporcionales, por esto, debemos utilizar una librera cuya relacin tamao-
funcionalidad sea aceptable.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Existen varias opciones de libreras C para el dispositivo objetivo:
- glibc (GNU C library): buena performance, acorde a estndares y buena
portabilidad, demasiado grande para sistemas embebidos.

- uClibc: librera muy liviana, diseada para pequeos sistemas embebidos.
De 2 a 4 veces mas liviana que glibc. Su origen proviene del proyecto
uClinux, desarrollado para microprocesadores que no posen MMU
(memory managment unit). La librera, sin embargo, se ha convertido en un
proyecto independiente y da soporte a procesadores con o sin MMU o FPU
(float point unit). uClib provee la mayora de las funcionalidades de glibc.

- Newlib

- klibc (kernel C library): diseada para usar en initramfs, no es lo
suficientemente elaborada para soportar aplicaciones de BusyBox.

Aqu se describen brevemente definiciones de trminos generalmente utilizados
en textos sobre sistemas GNU/Linux embebidos

- Cross-compilation: la compilacin cruzada es el proceso mediante el cual
se realiza la compilacin en una PC, denominada host (huesped), para ser
ejecutado sobre otra arquitectura de hardware, denominado target
(objetivo). Se realiza una compilacin cruzada sobre un sistema, cuando
este produce ejecutables para otro sistema. Esto sucede cuando el sistema
target no posee el conjunto de herramientas de compilacin nativas o
cuando el sistema host es ms rpido o posee mejores recursos (cpu,
memoria, etc).

Figura 52: Cross-compilation




UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS


- Toolchain: conjunto de herramientas, binarios y libreras necesarias para
realizar la compilacin cruzada (binutils, gcc, glibc).

- Virtual file system(VFS): En Linux existen varios sistemas de archivos,
estos son administrados por una capa denominada VFS. El VFS provee
una vista consistente de los datos almacenados sobre varios dispositivos
del sistema. Esto lo hace separando la vista del usuario del FS utilizando
llamadas de sistema standard, permitiendo implementar sistemas de
archivos lgicos sobre dispositivos fsicos.

- ELF:Executable Linkage Format, es un tipo de formato ejecutable dentro de
los formatos binarios, otros son COFF, flat format (usados en sistemas
MMU-less).

- Board Support Package o Hardware Abstraction Layer (BSP o HAL):
conjunto de programas usados para inicializar los dispositivos de hard
sobre la placa e implementar rutinas especficas de la placa que puedan ser
usada por el kernel y los drivers. Es en realidad una capa de abstraccin
del hardware denominada tambin HAL (hardware abstraction layer). Esta
capa oculta los detalles especficos del procesador y del hardware de la
placa al resto del SO, por lo tanto la portabilidad de drivers sobre mltiples
placas y cpu's es extremadamente simple.

- BusyBox: es un conjunto de comandos, los ms comunes, que sern
almacenados en el RFS del sistema embebido, se lo denomina como "la
navaja suiza de los sistemas embebidos".

- Buildroot: herramienta que se utiliza para crear el entorno de compilacin
cruzada (cross-compilation environment) y el sistema de archivos raz.

- Endian: es una descripcin de diferentes sistemas, hace referencia al
orden en que se almacenan fsicamente los bytes (2 bytes), si el byte ms
significativo (MSB) se almacena despus o antes que el byte menos
significativo (LSB).

- Big endian: se almacena de la forma en que se lo leera, es decir, primero
MSB y luego LSB.

- Little endian: se almacena de manera inversa, es decir, primero LSB y
luego el MSB.

- Middle endian: sistemas en los que se utiliza ambos modos (bigendian y
littleendian).


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- initramfs(init ram filesystem): es un nuevo concepto que reemplaza a initrd,
initramsf es usado a partir del kernel 2.6

- MIPS is one of the first RISC CPU architectures invented around 1985. It
was a radical design which removed many features deemed unnecessary,
since the goal was to get the best possible performance from a limited
transistor count. Back then, MIPS were powerful general purpose CPUs,
and very successful in that role, until they lost ground to systems based on
cheap mass-produced Intel-compatible CPUs. Later on, the simple and
elegant design allowed to create a wide range of low power CPUs targeted
for embedded applications. Today, MIPS is a popular architecture for
embedded systems, with a strong presence in various networked devices,
and spanning a range from 32-bit at 100 MHz to 64-bit at 1.2 Ghz. The
current top-end is arguably the SC5832 made by SiCortex, a compact
supercomputer with 5832 CPU cores dissipating 600 mW each.

- MTD: Las MTD (Memory Technology Devices) son memorias flash, RAM y
chips similares, utilizados para almacenar sistemas de archivos en
dispositivos embebidos. En la configuracin del kernel, es una opcin que
provee soporte genrico para drivers MTD.

3. Tipos de Kernel

- Realtime (RTOS): El espacio de direcciones es plano o lineal, no posee
proteccin de memoria entre las aplicaciones y el Kernel, es decir, el ncleo
del Kernel, el subsistema del Kernel y las aplicaciones comparten el mismo
espacio de memoria. Se denominan Realtime debido a que no hay
sobrecarga por llamadas al sistema, pasaje de mensajes o copia de datos.
(Sin proteccin de memoria).

- Monoltico: est diferenciado el espacio de memoria de usuario y Kernel.
Las aplicaciones que operan en el espacio de usuario lo hacen sobre
direcciones de memoria virtuales por lo tanto no pueden corromper la
memoria de otras aplicaciones o del Kernel. Sin embargo, los componentes
del Kernel comparten el mismo espacio de direcciones y por ende, un driver
o mdulo mal programado puede causar la inestabilidad del sistema. La
mayora de los SO Unix son de este tipo.

- Microkernel: hace uso de un pequeo SO que provee los servicios bsicos
y el resto del kernel se ejecuta como aplicaciones. La clave del microkernel
surge a partir de un esquema robusto de pasaje de mensajes. (Proteccin
de memoria)

- Mdulos: Los mdulos del Kernel que se cargan dinmicamente son
fragmentos de cdigo del Kernel que no fueron incluidos (enlazados-linked)

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

directamente en el Kernel. Se compilan separadamente, pueden ser
cargados o removidos del Kernel que se est ejecutando.


Leccin 15: Primeros pasos con uClinux

Esta leccin analizar las opciones de software solamente (emuladores)
disponibles para ejecutar el sistema operativo uClinux. uClinux es una versin de
Linux para CPUs sin memoria virtual o un MMU (Memory Management Unit) y por
lo general orientadas a sistemas embebidos con muy poca memoria o
almacenamiento permanente.

1. Por qu usar un emulador para ejecutar uClinux?

La gran cosa sobre los emuladores que se debaten aqu es que son libres. La
calidad y la fiabilidad de las herramientas de desarrollo se pueden medir de
antemano lo que es una gran ventaja en la pre-planificacin del proyecto.

Si es posible, se debe elegir un emulador que se asemeja mucho a la CPU
seleccionada. Esto le da la ventaja de probar las herramientas de desarrollo y, a
su vez, la recepcin de datos significativos sobre los requisitos de memoria flash y
los requisitos de ROM. En algunas circunstancias, el desarrollo puede comenzar
en el emulador antes incluso de que hardware real est disponible. Un buen
ejemplo es el proyecto leox que ha hecho la mayor parte utilizando el emulador
TSIM:

La depuracin tambin puede ser una tarea simple en el entorno virtual de un
emulador. Es posible controlar totalmente la emulacin de la CPU permitiendo el
acceso a la informacin de depuracin que no puede ser posible con el hardware
real. Un emulador puede rastrear los accesos a memoria y la ejecucin de cdigo
a un nivel ms alto lo que ayuda para encontrar ese error difcil de alcanzar en el
software o sistema operativo.

Emuladores puede permitir a los desarrolladores experimentar con diferentes
opciones de rendimiento y su efecto en la usabilidad. Algo que puede ser til para
determinar los requisitos de rendimiento del hardware de destino. Los Emuladores
tambin pueden ayudar a determinar los requisitos de flash y de memoriaToda
esta informacin puede ser til al principio del proceso de desarrollo.

2. Criterios para la eleccin de un emulador

Al elegir un emulador hay una serie de cosas a considerar. En primer lugar, se
debe seleccionar un emulador que emule la CPU que pueden ser objeto de
examen de la forma mas veraz, y si es posible, se desarrollar utilizando las
mismas herramientas. Esto aumentar la pertinencia de cualquier trabajo realizado
en el emulador.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Cuanto ms cerca de un emulador es el hardware de destino mejor. Esto significa
emulacin de puertos serie, temporizadores y otros dispositivos se encuentran en
el hardware de destino.
Uno de los dficit mas grandes de los emuladores disponibles para ejecutar
uClinux es la falta de una verdadera emulacin de dispositivos de red. Aunque es
posible ejecutar redes en puertos serie emulados a travs de PPP o SLIP, sera
mucho ms interesante disponer de un dispositivo de red emulado.

3. Qu opciones existen

Una bsqueda en la red para un emulador revelar una lista enorme de
posibilidades. Slo dos de las infinitas posibilidades que se discutir en detalle
aqu. Estos emuladores ya estn bien soportados por uClinux y ofrecen una buena
cobertura de las opciones embebidas de las CPUs objetivo.

El primer emulador, de hecho, el emulador que ayud a crear las primeras
versiones de uClinux es Xcopilot. Xcopilot es un emulador de PalmPilot que se
ejecuta en Unix/X11. Ofrece emulacin del temporizador, puertos serie, teclado
tctil y pantalla LCD junto con la emulacin de Motorola 68000 (m68k).

El segundo es el emulador ARMulator que es parte del depurador GNU gdb.
Actualmente, el ARMulator ofrece una consola serie, junto con muchos posibles
emulaciones ARM incluyendo big endian, little endian y emulaciones thumb.

4. Conseguir Xcopilot

Xcopilot se puede obtener de muchos lugares. La ms actualizada de las fuente
para el uso de Xcopilot con uClinux es la versin en el CVS en cvs.uclinux.org.

cvs -d:pserver:anonymous@cvs.uclinux.org:/var/cvs login

Simplemente presiona enter en la contrasea del sistema y, a continuacin,
ejecute:

cvs -d:pserver:anonymous@cvs.uclinux.org:/var/cvs checkout xcopilot

Una versin bastante reciente puede ser descargada desde:

http://www.uclinux.org/pub/uClinux/utilities/xcopilot-0.6.6-uc0.tar.gz

La compilacin de Xcopilot es simple:

./configure
make
make install

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Proporcionando todas las bibliotecas correctas en su lugar, el resultado ser un
Xcopilot que est listo para usar.
Una copia de la m68k-elf-tools sern necesarias para crear Kernels uClinux y
binarios para Xcopilot. Estos pueden ser obtenidos a partir de:

http://www.uclinux.org/pub/uClinux/m68k-elf-tools/

Siga las instrucciones para instalar los binarios precompilados, o para los
interesados, construir los instrumentos de la fuente proporcionada.

5. Conseguir el BGF/ARMulator

El BGF / ARMulator para su uso con uClinux est disponible en:

http://www.uClinux.org/pub/uClinux/utilities/armulator/

Esta pgina contiene toda la informacin necesaria para construir gdb para el uso
con el ARMulator y uClinux. Hay incluso una seleccin de los binarios
precompilados uClinux que se puede ejecutar en el ARMulator una vez que est
construido e instalado.

Una copia arm-elf-tools sern necesarias para crear kernels uClinux y los binarios
para la ARMulator/ GDB. Estos pueden ser obtenidos a partir de:

http://www.uclinux.org/pub/uClinux/arm-elf-tools/

Una vez ms, siga las instrucciones para instalar los binarios precompilados o
construir estos desde la fuente proporcionada.

6. Construccin de la Fuente uClinux

La forma ms fcil para empezar con la fuente de uClinux es tomar las fuentes de
distribucin de uClinux completas desde:

http://www.uclinux.org/pub/uClinux/dist/

Este es un archivo bastante grande que proporciona tanto los ncleos 2.0.39 y
2.4.17, junto con una buena seleccin de aplicaciones, la mayora de los cuales
han sido portadas a uClinux. Tambin ofrece configuraciones prefabricadas, tanto
para Xcopilot y el ARMulator/GDB que se pueden seleccionar en el men de
configuracin.

El mecanismo para la construccin de cualquiera de los objetivos es
esencialmente el mismo, slo la seleccin de los objetivos es diferente.
En primer lugar extraer el tarball uClinux-dist:

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

gunzip < uClinux-dist-20020701.tar.gz | tar xzf -
cd uClinux-dist
make xconfig

Seleccione 'Target Platform Selection' elija un destino. 3com/Xcopilot para el
objetivo Xcopilot o GDB/ARMulator para la ARMulator. Seleccione la versin del
kernel que desee utilizar y use UC-libc como la biblioteca de 'C'. Guardar y salir.
Aqu hay un ejemplo de un xconfig para Xcopilot:

Figura 53: xconfig para Xcopilot



Cuando la configuracin ha terminado de configure el rbol de cdigo fuente:

make dep
make


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Cuando esto se completa, la recin construida imgen binaria estar listo para ser
ejecutado en el emulador elegido.

7. Corriendo uClinux en Xcopilot

Hay un poco de configuracin necesarios para ejecutar uClinux en Xcopilot. Desde
el directorio raz del cdigo fuente de uClinux-dist haga lo siguiente.

mkdir ~/.xcopilot
ln -s `pwd`/images/pilot.rom ~/.xcopilot

Xcopilot ya est listo para utilizarse. Slo tienes que escribir "xcopilot" y debera
estar en funcionamiento el emulador uClinux xcopilot. Aqu est una captura de
pantalla de lo que se espera.

Figura 54: emulador uClinux xcopilot



Los comandos se pueden introducir en la consola serie que se ejecuta en la
ventana de terminal. Echa un vistazo en todo el sistema de archivos, /dev, /bin y
/etc Se ver como una muy reducida versin de Linux / Unix.


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

Xcopilot tiene varias opciones de depuracin. El ms simple es el depurador
predeterminado. Conectese con el depurador con:

telnet localhost 2000

Aqu teclee help para ver los comandos de depuracin disponibles. Las opciones
disponibles incluyen la detencin/ inicio de la CPU y la traza de la ejecucin a un
archivo.

8. Corriendo uClinux en el BGF/ARMulator

Desde el directorio raz del cdigo fuente de uClinux-dist haga lo siguiente.

ln -s images/romfs.img boot.rom

Ahora ejecute el arm-elf-gdb en el ncleo adecuado, aqu es una sesin de
ejemplo:

arm-elf-gdb -n linux-2.*.x/linux
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-elf"...
(gdb) target sim
Loaded ROM boot.rom
Loaded ROM boot.rom
Loaded ROM boot.rom
Loaded ROM boot.rom
Connected to the simulator.
(gdb) load
Loading section .text, size 0x77b84 vma 0x2000000
Loading section .rodata, size 0x8ddb vma 0x2077b84
Loading section .data, size 0x8fc8 vma 0x2080a60
Start address 0x2000000
Transfer rate: 4507960 bits in <1 sec.
(gdb) run

En cualquier punto se puede hacer break en el depurador con ^C, establezca
puntos de ruptura (break points) y examine la memoria y las variables. Break
points se pueden establecer antes de escribir "run" para coger el inicio temprano
del ncleo. A paso a travs de los principios de la secuencia de arranque del
ncleo establecer un punto de ruptura en start_kernel. Por ejemplo:

...
(gdb) break start_kernel
(gdb) run


UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

9. Resumen

Mientras un emulador nunca reemplazara el hardware real, puede desempear un
papel importante en el desarrollo. Puede ser til para la formacin y la
experimentacin y tambin puede ayudar con el desarrollo y depuracin de las
caractersticas del nuevo sistema operativo.
Los emuladores mencionados aqu sirven para dar al usuario una comprensin
fuerte de uClinux y su aplicacin. No slo pueden ser utilizados como un asistente
de aprendizaje, pero tambin pueden proporcionar una base prctica para la
construccin de dispositivos reales.

Un emulador puede jugar una parte importante en un conjunto de herramientas
para desarrolladores y puede ser llamados cada vez que llene una necesidad
inmediata.

10. Otros Emuladores

There are quite a few other emulators that can run uClinux to varying degrees.

LEON Sparc Emulator (TSIM)
Reasonable support included in the uClinux-dist sources.

NEC v850e
Quite good support with a selection of emulators available. The gdb based
simulator is the easiest to use and is also supported in the uClinux-dist sources.

Coldfire Emulator
Capable of running the Arnewsh/5206 image from the uClinux-dist.

SWARM (Software ARM)
Basic support for this emulator is included in the uClinux-dist.

http://www.skyeye.org/index.shtml
SkyEye is an Open Source Software Project (GPL Licence). Origin from
GDB/Armulator, The goal of SkyEye is to provide an integrated simulation
environment in Linux and Windows. SkyEye environment simulates/emulates
typical Embedded Computer Systems (Now it supports a series ARM, MIPS,
PowerPC, Blackfin, Coldfire, and SPARC architecture based microprocessors).
You can run some Embedded Operation System such as Embedded Linux,
uClinux, uc/OS-II (ucos-ii) etc. in SkyEye, and analysis or debug them at source
level.

ACTIVIDADES DE AUTOEVALUACIN DE LA UNIDAD
- Que es un sistema operativo?
- Describa los tipos de sistema operativo

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO DIDCTICO DEL CURSO: 208006 SISTEMAS EMBEBIDOS

- Cules son los componentes de un sistema operativo?
- Que es el Kernel? Describa los tipos
- Cules son las principales caractersticas del sistema operativo Linux?
- Que es uCLinux?
- Cules son las diferencias entre Linux y uCLinux?
- Cules son las razones para usar uCLinux en sistemas embebidos?
- Describa los paso bsicos para implementar uCLinux
- Que es un emulador?
BIBILIOGRAFA:

[1] BARRETT Steven F, Pack Daniel J.Microcontrollers Fundamentals for
Engineers and Scientists. Morgan & Claypool. 2006.

[2] NOERGAARD Tammy. Embedded Systems Architecture. Newnes. 2005.

[3] MARWEDEl Peter. Embedded System Design. Springer. 2006.

[4] CATSOULIS John. Designing Embedded Hardware. O'Reilly. 2005.

[5] ZURELL Kira.(2000). C Programming for Embedded Systems. R&D Books.
[6] BARR Michael. Programming Embedded Systems in C and GNU Development.
OReilly. 2006.

[7] P. RAGHAVAN, Amol Lad, Sriram Neelakandan. Embedded Linux System
Design and Development. Auerbach Publications. 2006.

LINKS

[8] www.freescale.com

[9] http://elserver.forknet-
ar.org/harpo///////uch/seminario/escrito//archivos//seminario-uch.nav/node28.html

[10] http://www.cosmic-Software.com/products.php

[11] http://www.uclinux.org/ports/coldfire/

[12] http://www.processorexpert.com/

[13] http://www.embedded.com

[14] http://www.bairesrobotics.com.ar/data/guia68hc08.pdf

[15] http://gem.win.co.nz/mario/hc08/

You might also like