Documente Academic
Documente Profesional
Documente Cultură
=
+ +
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/