proyecto sbc

Upload: pablo-herson-rodriguez-elias

Post on 11-Jul-2015

1.009 views

Category:

Documents


1 download

TRANSCRIPT

Universidad de Costa Rica Facultad de Ingeniera Escuela de Ingeniera Elctrica

IE 0502 Proyecto Elctrico

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

Por: Roberto Cardona Soto Agosto del 2004

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

2

Gua de Laboratorio de Sistemas IncrustadosPor: Roberto Cardona Soto

Sometido a la Escuela de Ingeniera Elctrica de la Facultad de Ingeniera de la Universidad de Costa Rica como requisito parcial para optar por el grado de: BACHILLER EN INGENIERA ELCTRICA Aprobado por el Tribunal:

___________________ Ing. Jorge Romero Chacn, Ph.D. Profesor Gua

___________________ Ing. Francisco Rojas Fonseca, M.Sc. Profesor Lector

___________________ Lic. Federico Ruiz Ugalde Profesor Lector

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

3

DEDICATORIA

A mi mam, a mi pap y a mi hermano.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

4

DERECHOS DE PROPIEDAD INTELECTUALApache es una marca registrada de Apache Software Foundation. Ethernet es una marca registrada de Xerox Corporation. Geode es una marca registrada de National Semiconductor Corporation. SuperH es una marca registrada de of Hitachi, Ltd. Intel es una marca registrada de Intel Corporation. Linux es una marca registrada de Linus Torvalds. Microsoft es una marca registrada de Microsoft Corporation. NFS es una marca registrada de Sun Microsystems, Inc. POSIX es una marca registrada de Institute of Electric and Electronic Engineers, Inc. SanDisk y CompactFlash son marcadas registradas de SanDisk Corporation. UNIX es una marca registrada de The Open Group. USB es una marca registrada de Compaq Computer Corporation y NEC Corporation.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

5

RECONOCIMIENTOS

Al profesor, don Jorge Romero le agradezco por su positiva actitud y permanente voluntad de ayuda, y por la paciencia con todos los problemas que tuve durante el desarrollo de este proyecto. A Alexis Maldonado le agradezco sus aportes y recomendaciones durante la primera parte del proyecto. A Federico Ruiz tambin le agradezco su ayuda, y sus consejos, as como el haber atendido mis consultas en muchas ocasiones a altas horas de la noche, por largos perodos de tiempo. A mi gran amigo Marco Villalta le agradezco su solidaridad, as como sus aportes y dedicacin, sobre todo en lo que respecta a electrnica analgica. A Francisco Rojas le agradezco por haberme ayudado como lector de este proyecto. Al director de la Escuela, Ing. Ismael Mazn, mi reconocimiento por haber extendido la fecha para la presentacin de los proyectos de graduacin durante el primer semestre de 2004.

As mismo a Felipe y Alejandro, mis socios en HQC, les agradezco por la cooperacin y entendimiento durante los meses que he estado al margen de las operaciones de la empresa.

A mis padres, por haberme dado todo el apoyo y mucha ayuda para hacer realidad este trabajo. A mi hermano Alejandro, quien, a pesar de estar lejos, le agradezco sus palabras de aliento para que lograra terminar a tiempo. Finalmente, a mi novia Devon, por haberme

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

6

dado apoyo y ganas de seguir, en momentos difciles, as como por haber entendido el poco tiempo que le dediqu durante el tiempo que estuve dedicado a esta tarea.

Sin ustedes no hubiera podido lograr hacer realidad este proyecto en tan poco tiempo.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

7

NDICE GENERAL

DERECHOS DE PROPIEDAD INTELECTUAL ......................................4 NDICE DE FIGURAS ...............................................................................11 NDICE DE TABLAS.................................................................................12 NOMENCLATURA....................................................................................13 RESUMEN ..................................................................................................15 CAPTULO 1: Introduccin.......................................................................161.1 Objetivos .......................................................................................................... 16 1.1.1 Objetivo General ....................................................................................... 16 1.1.2 Objetivos Especficos ................................................................................ 16 1.2 Metodologa...................................................................................................... 17 1.3 Justificacin...................................................................................................... 21

CAPTULO 2: Introduccin a los Sistemas Incrustados ..........................222.1 Qu es un sistema incrustado?................................................................................... 22 2.2 Pasos para la elaboracin de un sistema incrustado .................................................... 23

CAPITULO 3: PRIMERA PRACTICA, Introduccin al hardware e instalacin de GNU Linux...........................................................................253.1 Objetivo General ........................................................................................................ 25 3.2 Objetivos Especficos ................................................................................................. 25 3.3 Duracin..................................................................................................................... 25 3.4 Investigacin Previa ................................................................................................... 25 3.5 Marco Terico ............................................................................................................ 26 3.5.1 Dispositivo almacenamiento y sistema de archivos ......................................... 26 3.5.2 Bootloader ....................................................................................................... 27 3.5.3 Kernel .............................................................................................................. 30 3.5.4 Sistema de archivos raz (root filesystem)......................................................... 33

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

8

3.5.5 Inicializacin del sistema (init)......................................................................... 37 3.6 Preguntas.................................................................................................................... 38 3.7 Gua de procedimientos simplificada .......................................................................... 40 3.7.1 Paso 1: Exploracin e identificacin de componentes en SBC .......................... 40 3.7.2 Paso 2: Configuracin sistema husped ............................................................ 43 3.7.3 Paso 3: Creacin de sistema raz de archivos .................................................... 45 3.7.4 Paso 4: Creacin de scripts de inicializacin .................................................... 47 3.7.5 Paso 5: Creacin de dispositivo de almacenamiento en sistema raz de archivos ................................................................................................................................. 48 3.7.6 Paso 6: Configuracin y compilacin kernel..................................................... 49 3.7.7 Paso 7: Arranque inicial ................................................................................... 50 3.7.8 Paso 8: Creacin de sistema raz de archivos en memoria secundaria de SBC .. 52 3.7.9 Paso 9: Bootloader........................................................................................... 53 3.7.10 Paso 10: Arranque final.................................................................................. 54 3.8 Referencias Bibliogrficas .......................................................................................... 55 3.9 Solucin Propuesta ..................................................................................................... 55 3.9.1 Respuestas a Preguntas .................................................................................... 55 3.9.2 Procedimientos ................................................................................................ 58

CAPITULO 4: SEGUNDA PRACTICA, Interaccin con el mundo exterior mediante puertos de Entrada y Salida .........................................774.1 Objetivo General ........................................................................................................ 77 4.2 Objetivos Especficos ................................................................................................. 77 4.3 Duracin..................................................................................................................... 78 4.4 Investigacin Previa ................................................................................................... 78 4.5 Marco Terico ............................................................................................................ 79 4.5.1 Manejo de Recursos en GNU Linux................................................................. 79 4.5.2 Manejo de Interrupciones en GNU Linux......................................................... 80 4.5.3 El protocolo serial de comunicaciones EIA/RS-232 ......................................... 89 4.6 Preguntas.................................................................................................................... 91 4.7 Gua de procedimientos simplificada .......................................................................... 92 4.7.1 Paso 1: Utilizacin del BIOS de SBC para pruebas E/S.................................... 92 4.7.2 Paso 2: Pruebas de E/S con pantalla LCD y teclado.......................................... 93 4.7.3 Paso 3: Pruebas de E/S con puertos GPIO y LED............................................. 95 4.8 Referencias Bibliogrficas .......................................................................................... 96 4.9 Solucin Propuesta ..................................................................................................... 97 4.9.1 Respuestas a Preguntas .................................................................................... 97 4.9.2 Procedimiento .................................................................................................. 99

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

9

CAPITULO 5: TERCERA PRACTICA, Redes TCP/IP ........................ 1225.1 Objetivo General ...................................................................................................... 122 5.2 Objetivos Especficos ............................................................................................... 122 5.3 Duracin................................................................................................................... 122 5.4 Investigacin Previa ................................................................................................. 122 5.5 Marco Terico .......................................................................................................... 123 5.5.1 Introduccin a modelos por capas en sistemas de comunicacin..................... 123 5.5.2 Implementacin de modelo en capas en redes TCP/IP .................................... 125 5.5.3 Introduccin a protocolos de capa dos y capa tres utilizados en las redes TCP/IP ............................................................................................................................... 129 5.5.4 Direccionamiento en redes IP........................................................................ 137 5.5.5 Introduccin a enrutamiento en redes IP......................................................... 139 5.6 Preguntas.................................................................................................................. 143 5.7 Gua de procedimientos simplificada ........................................................................ 144 5.7.1 Paso 1: Configuracin de parmetros de acceso a la red ................................. 144 5.7.2 Paso 2: Funcionamiento de SBC como enrutador ........................................... 145 5.7.3 Paso 3: Escriba un programa utilizando sockets ............................................. 146 5.8 Referencias Bibliogrficas ........................................................................................ 147 5.9 Solucin Propuesta ................................................................................................... 148 5.9.1 Respuestas a Preguntas .................................................................................. 148 5.9.2 Procedimiento ................................................................................................ 154

CAPTULO 6: PROPUESTA DE PRACTICA FINAL, Procesamiento digital de seales y sistemas en tiempo real ............................................. 1646.1 Objetivo General ...................................................................................................... 164 6.2 Objetivos Especficos ............................................................................................... 164 6.3 Duracin................................................................................................................... 165 6.4 Investigacin Previa ................................................................................................. 165 6.5 Marco Terico .......................................................................................................... 166 6.5.1 Sistemas en tiempo real.................................................................................. 166 6.5.2 Conversin de seales de audio analgicas a formato digital .......................... 167 6.6 Gua de procedimientos simplificada ........................................................................ 169 6.6.1 Paso 1: Aplicacin de parche RTAI................................................................ 169 6.6.2 Paso 2: Digitalizacin de seal analgica de audio ......................................... 170 6.6.3 Paso 3: Programas de prueba para lectura de audio......................................... 170 6.6.4 Paso 4: Conversin D/A................................................................................. 171 6.6.5 Paso 5: Procesamiento digital de seales en tiempo real ................................. 172 6.7 Referencias Bibliogrficas ........................................................................................ 172

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

10

CAPTULO 8: Recomendaciones............................................................. 173 CAPTULO 9: Conclusiones .................................................................... 175 BIBLIOGRAFA....................................................................................... 176 APNDICES ............................................................................................. 184A Introduccin Sistemas Operativos ............................................................................ 184 Relacin de hardware con sistema operativo ........................................................... 184 Conceptos bsicos de sistemas operativos............................................................... 187 B- Archivos de configuracin......................................................................................... 222

ANEXOS.................................................................................................... 223A- Hojas fabricante ........................................................................................................ 223 B- Configuracin cable UTP en modo crossover ............................................................ 224 C- Conexiones de pines para puerto JTAG en tarjeta net4801......................................... 224 D- Fotos de la solucin de las prcticas .......................................................................... 225 E- Mensaje de booteo de GNU Linux en net4801 ........................................................... 227

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

11

NDICE DE FIGURAS

Figura 3.1: Mapa de SBC con coordenadas................................................................... 42 Figura 4.1: Pasos para el manejo de interrupciones en kernel de GNU Linux. ............... 82 Figura 4.2: Diagrama de conexiones entre LCD y SBC............................................... 100 Figura 5.1: Diagrama encabezado de paquete IP. ........................................................ 130 Figura 5.1: Diagrama encabezado de paquete TCP. .................................................... 134 Figura 5.3: Diagrama encabezado de paquete TCP. .................................................... 136 Figura 6.1: Pasos para conversin de una seal analgica a digital.............................. 167 Figura B.1: Detalle de conexiones de cable UTP en modo crossover .......................... 224 Figura D.1: SBC conectada funcionando .................................................................... 225 Figura D.2: SBC conectada a LCD y teclado .............................................................. 225 Figura D.3: Equipo de trabajo..................................................................................... 226

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

12

NDICE DE TABLAS

Tabla 3.1: Archivos especiales en /dev ......................................................................... 47 Tabla 5.1: Capas de modelo OSI................................................................................. 125 Tabla 5.2: Capas de modelo OSI................................................................................. 125 Tabla 5.1: Ejemplo de tabla de rutas IP....................................................................... 139 Tabla A.1: Capas de software E/S............................................................................... 215 Tabla C.1: Conexiones JTAG de tarjeta net4801......................................................... 224

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

13

NOMENCLATURAPCI Peripheral Component Interconnect. Es un estndar para la conexin de dispositivos de alta velocidad al bus de la computadora.

USB

Universal Serial Bus. Es un estndar para interfaz de dispositivos entrada/salida con las computadoras modernas.

RAM

Random Access Memory o memoria de acceso aleatorio. Es la denominada memoria secundaria segn en el contexto de la teora de estructuras de computadoras.

BPS

Bits por segundo. Cuantifica la velocidad de una transmisin de datos.

Kernel

Ncleo del sistema operativo, es responsable de administracin de recursos as como el proceso de mediacin entre el usuario y el hardware.

Device driver

Es el programa que corre en el kernel y est encargado de manejar la comunicacin entre la computadora y algn dispositivo externo.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

14

SBC

Single board computer o computadora de tarjeta nica. Es el clsico circuito impreso de un sistema incrustado el cual se caracteriza por ser muy pequeo en comparacin con otras computadoras

LCD

Liquid cristal Display o pantalla de cristal lquido.

Polling

Proceso de solicitar estatus a un dispositivo constantemente.

Booteo

Inicializacin de una computadora, viene del verbo to boot del ingls.

Shell

Lnea de comandos en los sistemas operativos de la familia UNIX.

Root

Administrador en sistemas operativos de la familia UNIX.

Sniffer

Programa para decodificar los paquetes que viajan en una red.

Script

Pequeo programa interpretado en tiempo de ejecucin.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

15

RESUMENEl presente documento consiste en un informe del trabajo realizado para la elaboracin de una gua para el curso Laboratorio de Sistemas Incrustados que desea impartir la Escuela de Ingeniera Elctrica como parte de su nueva concentracin a nivel de bachillerato en redes y computadoras.

Los procedimientos de esta gua giran alrededor de la utilizacin de una tarjeta SBC (single board computer) con un microprocesador basado en la arquitectura Intel x86 y el sistema operativo GNU Linux. La intencin principal del curso es que el estudiante se familiarice con los dispositivos y conceptos utilizados en sistemas incrustados as como con su implementacin. Este curso es de gran importancia, ya que representa la posibilidad de poner en prctica y relacionar muchos de los conceptos aprendidos en cursos anteriores, tales como Estructuras de Computadoras Digitales, Introduccin a la Computacin, Principios de Informtica y Circuitos Digitales, as como la posibilidad de descubrir la estrecha relacin que existe entre la ingeniera elctrica y la informtica.

El contenido de las prcticas contempla, entre otros, los siguientes procedimientos: programacin a bajo nivel en lenguaje C y ensamblador x86, manipulacin de puertos EIA/RS-232, acceso a redes TCP/IP, interaccin con pantallas de cristal lquido y sistemas en tiempo real.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

16

CAPTULO 1: Introduccin1.1 Objetivos1.1.1 Objetivo General El presente trabajo tiene como objetivo principal desarrollar una gua para un curso denominado Laboratorio de Sistemas Incrustados que, por iniciativa del Dr. Jorge Romero, se desea iniciar en la Escuela de Ingeniera Elctrica en un futuro.

1.1.2 Objetivos Especficos - Utilizar el sistema operativo GNU Linux para el sistema incrustado, y explicar, profundamente, de la mejor manera, su funcionamiento. - Introducir tericamente conceptos bsicos de los sistemas operativos. - Elaborar cuatro prcticas con el siguiente contenido: -Instalacin del sistema operativo -Interfaz con el mundo exterior mediante puertos de entrada y salida -Interaccin con redes TCP/IP -Procesamiento digital de audio en tiempo real

-Elaborar un informe con una posible solucin para cada prctica.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

17

1.2

Metodologa

Como primer paso, se evaluaron los requerimientos del curso para la Escuela de Ingeniera Elctrica, de forma que se adapte al plan de estudios de la carrera, as como al eventual plan de estudios de la concentracin en redes y computadoras.

Luego se procedi a buscar una tarjeta de sistema incrustado, y los componentes que se adecuaran a los requerimientos. Este proceso fue bastante tedioso, ya que en realidad hay pocas tarjetas en el mercado que renan una serie de requisitos que se buscaban para el curso. El requisito que complic ms la escogencia fue el hecho que la tarjeta no tuviera un puerto de video, lo que se estipul para darle un carcter ms realista al hardware, con el que se va a trabajar en el curso. Se decidi que la tarjeta modelo net4801 de Soekris Engineering era la ms adecuada, por lo que se escogi.

El siguiente paso fue. la bsqueda del material. Para ello se recurri a algunas bibliotecas en el exterior, como por ejemplo la biblioteca de ingeniera y ciencias de la computacin en la Universidad Estatal de Ohio, y la biblioteca de la Universidad de Konstanz en Alemania. Tambin se hicieron bsquedas exhaustivas en algunas tiendas en la lnea de libros de temas afines al proyecto, tal el caso de Amazon.

Para la elaboracin de la gua se buscaron cursos similares en otras universidades; por ejemplo en la Universidad de Pennsylvania y en la Escuela Tcnica Federal de Zrich,

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

18

Suiza (ETHZ). Adicionalmente se consigui la gua del curso de sistemas incrustados que se imparti en la Escuela de Ciencias de la Computacin e Informtica de la Universidad de Costa Rica.

Finalmente, se procedi a la elaboracin de la gua del laboratorio as como la solucin de las prcticas. A lo largo de la elaboracin de este documento se supuso que el curso va a tener un sitio web adonde los estudiantes pueden descargar los parches y programas necesarios para el desarrollo de los experimentos.

Adicional a la elaboracin de la gua, se realiz una introduccin a los sistemas operativos ya que, por ahora, no existe ningn curso en el plan de estudios que le ensee a los estudiantes el funcionamiento de los mismos. Es de suma importancia que los estudiantes, antes de empezar con las prcticas, lean la introduccin la cual se encuentra en el apndice de este documento ya que hay muchos conceptos de los sistemas operativos que se supone son de conocimiento del estudiante en el desarrollo de la gua.

En cuanto a las herramientas que se utilizaron para el desarrollo del proyecto, se cont con una tarjeta modelo net4801 de Soekris Engineering, la que dispone de un microprocesador basado en la arquitectura x86 de National Semiconductor modelo Geode SC1100 de 266 MHz, 128 megabytes de memoria RAM, y 512 kilobytes de memoria flash para el BIOS. Adicionalmente, la tarjeta tiene un puerto para utilizar una memoria flash tipo Compact Flash para almacenamiento, tres adaptadores Ethernet de 100 megabits por segundo, un

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

19

puerto USB versin 1.0, una ranura PCI limitada a 3.3 voltios, una ranura MiniPCI, dos puertos seriales RS232, doce puertos de entrada y salida de uso general (GPIO), y cuatro diodos LED. Esta tarjeta es alimentada por una fuente conmutada de mximo 16 voltios DC.

Adems se cont con lo siguiente:

-Una estacin de trabajo con la distribucin de GNU Linux Debian Woody, que sirvi como sistema husped. Esta computadora tiene un procesador Intel Pentium III de 900 MHz, 384 megabytes de memoria RAM, un disco duro de 30 gigabytes, dos adaptadores de red Ethernet y un puerto USB.

-Una pantalla LCD Matrix Orbital modelo LK204-25 de 4 lneas de 20 caracteres con interfaz RS-232 y I2C.

-Teclado de veinte teclas para conectar a controlador de la LCD.

-Cable serial en configuracin null modem para acceder el puerto de consola de la SBC.

-Cable UTP en configuracin crossover para conectar sistema husped con SBC.

-Lector de tarjetas CompactFlash marca SanDisk con interfaz USB.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

20

-Memoria flash tipo CompactFlash de 32 MB marca SanDisk.

En cuanto al sistema operativo del sistema incrustado se puede decir que la gua del curso se desarroll alrededor del sistema operativo GNU Linux, habida cuenta que es software open source, lo cual hace posible que su cdigo fuente sea accesible. Esto, para el caso de un curso acadmico, es de gran importancia ya que hace posible que los estudiantes puedan entender cmo funciona el sistema incrustado, de pies a cabeza.

Se opt por utilizar la versin del kernel 2.6 ya que sta, a pesar de ser relativamente nueva, incorpora las ltimas tecnologas. No siempre es adecuado utilizar el software ms nuevo para proyectos de la vida real; sin embargo, en este caso se considera necesario aprender a utilizar el ltimo kernel ya que la versin 2.4 pronto ser obsoleta para el desarrollo de sistemas empotrados.

No se utiliz ninguna distribucin de GNU Linux, sino que se arm el sistema operativo desde su base: el kernel. Existen algunas distribuciones de GNU Linux para sistemas empotrados tal como el Blue Cat Linux, o el PeeWee Linux las cuales hubieran ahorrado mucho tiempo y esfuerzo; sin embargo, esto no ayuda a cumplir uno de los objetivos de este trabajo: entender de forma profunda el funcionamiento y la estructura del sistema operativo del sistema incrustado.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

21

1.3

Justificacin

Una conversacin con el profesor Dr. Jorge Romero en febrero del ao en curso dio orgen a la idea de realizar este proyecto. Segn me explic don Jorge, la escuela planea poner a disposicin de los estudiantes un program de estudios de bachillerato en Ingeniera Elctrica con concentracin en computadoras y redes, y un curso en el campo de sistemas empotrados es sumamente importante para el programa de tal concentracin.

Mi experiencia con el sistema operativo GNU Linux a lo largo de varios aos, as como los trabajos realizados como desarrollador de software fueron los factores ms importantes en la decisin de hacer este proyecto mi trabajo de graduacin. Adems, siempre me interes trabajar en un proyecto, en el que se combinara el software con el hardware.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

22

CAPTULO 2: Introduccin a los Sistemas Incrustados

2.1 Qu es un sistema incrustado?Un sistema incrustado es una computadora reducida, con un nmero limitado de componentes, y diseada para una aplicacin especfica. A diferencia de las computadoras porttiles o de escritorio ms populares, los sistemas incrustados tienen una capacidad limitada, la cual se define por los requerimientos de la aplicacin.

Un ejemplo tpico de un sistema incrustado es un telfono celular. Este es el caso de una computadora bastante compleja, cuyo diseo est enfocado a maximizar el rendimiento de la transmisin y recepcin de voz, por medio de un canal inalmbrico. Tpicamente, los sistemas empotrados cuentan con una cantidad de memoria reducida, as como un microprocesador con la capacidad estrictamente necesaria para llevar a cabo las tareas asociadas a la aplicacin. Prcticamente todos los sistemas incrustados se implementan en un solo circuito impreso, por lo que tambin se les conoce en ingls como single board computer o SBC.

Uno de los retos principales que tienen los diseadores de sistemas incrustados es enfrentarse con el gran nmero de componentes heterogneos que presentan sus aplicaciones. Por ejemplo, un sistema incrustado que controla la mezcla de gasolina de un

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

23

automvil tiene que interactuar con seales externas analgicas, piezas mecnicas externas, sensores y todo tipo de transductores.

Los sistemas incrustados se pueden implementar con unidades de procesamiento desde microcontroladores sencillos, de 8 bits hasta microprocesadores modernos de 64 bits. Tambin existe la posibilidad de implementar un sistema incrustado en otro tipo de unidades de procesamiento, tal como es el caso de los procesadores de seales digitales (DSP por sus siglas en ingls) o los circuitos integrados para aplicacin especfica (ASIC por sus siglas en ingls) que se implementan tpicamente con dispositivos tipo FPGA (Field Programmable Gate Array) o CPLD (Complex Programmable Logic Devices). En la mayora de los sistemas que implementan un microprocesador, se utiliza un sistema operativo avanzado para que realice las labores de control y organizacin de las tareas.

2.2 Pasos para la elaboracin de un sistema incrustadoA continuacin se enumera una serie de pasos que se deben seguir a la hora de disear un sistema incrustado: 1. Modelado 2. Simulacin 3. Descripcin 4. Sntesis 5. Implementacin

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

24

Debido al carcter prctico de los cursos tipo laboratorio, solamente se consider el paso de la implementacin para la elaboracin de esta gua. En esta etapa es indispensable contar con los requerimientos del sistema que se va a desarrollar, as como un detallado conocimiento del problema que el sistema incrustado va a resolver. Adicionalmente, se debe contar con la SBC as como con una computadora husped. En el caso que la plataforma de la SBC sea diferente a la del sistema husped, es muy importante contar con herramientas para compilar y armar los programas para la arquitectura de la SBC, las cuales se conocen como toolchain, as como utilidades para transferir los programas y datos al sistema incrustado. Para depurar los programas es muy til contar con un depurador remoto que le permita al ingeniero determinar el estado del hardware en ciertas etapas de la ejecucin del sistema operativo, as como los programas que van a ser ejecutados en la SBC.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

25

CAPITULO 3: PRIMERA PRACTICA, Introduccin al hardware e instalacin de GNU Linux3.1 Objetivo GeneralConfigurar una instalacin mnima de GNU Linux en la tarjeta del sistema incrustado.

3.2 Objetivos EspecficosExplorar e identificar los componentes de la tarjeta y todos sus puertos E/S. Instalar una versin mnima de GNU Linux en la tarjeta y examinar el proceso de booteo.

3.3 Duracin

La duracin recomendada para esta prctica es de cuatro sesiones de cuatro horas.

3.4 Investigacin Previa La estructura del kernel de GNU Linux versin 2.6 de forma general.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

26

La arquitectura general de los procesadores de arquitectura IA-32 (Intel x86 de 32

bits) y su procedimiento de inicializacin

Los diferentes tipos de sistemas archivos disponibles para GNU Linux y qu

ventajas ofrecen unos sobre otros.

3.5 Marco Terico3.5.1 Dispositivo almacenamiento y sistema de archivos

Como se mencion en la introduccin terica, el dispositivo de memoria secundaria que se utilizar en este laboratorio ser una memoria flash en formato de tarjeta Compact Flash conectada directamente al dispositivo controlador IDE de la SBC del sistema incrustado.

Esta memoria se debe preparar para la instalacin del sistema operativo mediante la creacin de una particin que sirva como inicio para el sistema y la eleccin de un sistema de archivos adecuado. Debido a las caractersticas de los sistemas incrustados, donde no se tiene control sobre el encendido y apagado, se recomienda usar un sistema tipo journaling.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

27

3.5.2 Bootloader

Cuando la computadora se enciende y el procesador termina sus rutinas internas de inicializacin, ste busca un programa en la posicin FFFFFFF0 de memoria fsica la cual corresponde al ROM del BIOS. Despus que el BIOS termina sus funciones, ste busca un pequeo programa en el MBR (Master Boot Record por sus siglas en ingls) en el disco duro designado para el inicio, determina cual particin es la designada para booteo y ejecuta el programa que se encuentra en el boot sector de esta particin. Este programa puede ser un bootloader tal como LILO o SYSLINUX o tambin puede ser un programa que cargue directamente el sistema operativo. La ventaja principal de utilizar un bootloader es que se pueden tener varios kernels en la computadora y se puede escoger cual se quiere utilizar cuando se inicia la computadora.

Luego que se escoge un kernel para el inicio, el bootloader tiene como tarea preparar el hardware y cargar el sistema operativo. Debido a esto prcticamente todo el cdigo del bootloader est escrito en lenguaje ensamblador. Cuando el bootloader termina, ste pasa el control al kernel el cual a su vez realiza algunas tareas dependientes de arquitectura y luego llama a la funcin start_kernel(), independiente de plataforma por lo tanto escrita en C, la cual es responsable por actividades de alto nivel tales como inicializacin del sistema operativo (el proceso conocido como init), cargar manejadores, montar los sistemas de archivos y otras.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

28

En el caso de la arquitectura x86 los bootloaders de tipo open source ms importantes son LILO, GRUB y SYSLINUX. La eleccin de cul usar est ntimamente relacionada a los requerimientos del sistema incrustado y las preferencias del diseador.

Para la configuracin inicial de un sistema incrustado en el cual la memoria secundaria no puede ser extrada para configurarla, existe una forma alternativa de cargar un sistema operativo a travs de la red local para luego configurar la memoria de la SBC. Esto se realiza utilizando el protocolo de Intel conocido como PXE el cual es parte de un estndar conocido como WfM (Wired for Management por sus siglas en ingls) el cual hace posible que una computadora realice todo el proceso de arranque sin necesidad de tener un disco duro local obteniendo el software necesario para iniciar de un servidor remoto.

Esta alternativa requiere de cuatro componentes en el sistema husped: el bootloader PXELINUX, un servidor NFS, un servidor TFTP y un servidor DHCP. A continuacin se explican estos componentes de forma concisa:

La implementacin para GNU Linux del protocolo PXE es una derivacin del bootloader SYSLINUX conocida como PXELINUX. Su sintaxis de configuracin es idntica al SYSLINUX y no tiene gran complejidad.

DHCP (Dynamic Host Configuration Protocol por sus siglas en ingls) es un protocolo que permite la configuracin de los parmetros de red, tales como direccin IP, mscara de

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

29

subred, puerta de enlace y otros, de una computadora de forma dinmica y automtica. Esto es algo de gran utilidad til a la hora de configurar grandes redes en las cuales sera muy difcil administrar cambios en los parmetros de la red en muchas computadoras simultneamente. Los componentes de un sistema DHCP son un cliente (el sistema incrustado en este caso) y un servidor (el sistema husped en este caso), el cliente solicita los parmetros de la red apenas entra a la misma y el servidor identifica esta solicitud y evala si debe o no asignarle parmetros para accesar la red.

TFTP (Trivial File Transfer Protocol por sus siglas en ingls) es un protocolo similar al conocido FTP, el cual tiene como caracterstica principal que no requiere autenticacin, adems que corre sobre el protocolo UDP. En el caso del esquema del trabajo con sistemas incrustados, el husped deber correr un servidor TFTP y el BIOS de la SBC deber disponer de un cliente TFTP para poder bajar los archivos necesarios para el arranque del husped.

NFS (Network File System por sus siglas en ingls) es un sistema de archivos que se extiende en a lo largo de una red y hace posible que se monten particiones o volmenes de sistemas remotos en una computadora. En el caso del esquema de trabajo de sistemas empotrados el husped deber ser el servidor NFS de forma tal que la SBC pueda montar, inicialmente, su sistema de archivos raz para luego configurar el propio en su memoria secundaria.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

30

El orden en que funcionan estos componentes es el siguiente: primero la SBC inicia y busca un servidor DHCP para acceder la red, el husped le asigna, mediante su servidor DHCP, los parmetros de acceso a la red, la SBC configura estos parmetros y accesa el servidor TFTP para descargar el bootloader SYSLINUX el cual inicializa el hardware, descarga el kernel a quien le otorga el control. Finalmente, el kernel monta el sistema raz de archivos y termina la inicializacin del sistema. A partir de este momento, el ingeniero puede realizar la parte final de la instalacin del sistema operativo en la SBC del sistema incrustado.

3.5.3 Kernel

El kernel es el ncleo del sistema operativo y sus funciones ms importantes son el ser intermediario entre los programas y el hardware y tambin la supervisin de todas las tareas que se llevan a cabo. Una tarea tpica de la supervisin es el manejo del secuenciador o scheduler de procesos el cual es responsable por decidir qu se corre cuando. El manejo de interrupciones de dispositivos externos es una tarea de la funcin de intermediario entre los programas del espacio de usuario y el hardware.

El kernel de GNU Linux tiene las siguientes caractersticas importantes:

Monoltico: Esto significa que el kernel contiene una gran cantidad de cdigo para el manejo de diferentes componentes del sistema lo que lo hace especialmente pequeo. El otro tipo de kernel es el microkernel el cual se caracteriza por ser altamente modular

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

31

dejando solo lo absolutamente necesario en el kernel y todo lo dems se considera mdulos. Por ejemplo, el sistema operativo MINIX del experto en sistemas operativos Andrew Tanenbaum, implementa un microkernel y se caracteriza por ser sumamente pequeo. Esto se debe a que el manejo de memoria y del sistema de archivos estn implementados como procesos de usuario y no del kernel.

Rpido y pequeo: A pesar de ser monoltico, el kernel de GNU Linux es sumamente rpido y pequeo en comparacin a otros sistemas operativos de la familia UNIX. Por ejemplo el kernel de GNU Linux puede caber en un solo disco floppy, algo poco comn en los otros sistemas operativos UNIX.

Capacidad de ser interrumpido: A partir de la versin menor 6 (2.6), el kernel de GNU Linux tiene la capacidad de ser interrumpido por otro proceso de ms prioridad siempre y cuando el kernel est en un momento seguro para ser interrumpido. Un momento seguro es cuando el kernel no tiene cerrado algn recurso para su uso exclusivo, por ejemplo algn mutex o semforo. Esto es de gran utilidad para los sistemas en tiempo real ya que ayuda a mantener la latencia de interrupciones y excepciones bastante baja.

Algunas consideraciones que se deben tener a la hora del desarrollo del kernel de GNU Linux son: no se puede usar la librera libc, el estndar del lenguaje C es GNU y no el comn ANSI, no hay proteccin de memoria y la pila disponible pequea. Todo esto hace

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

32

que el desarrollo sea muy limitado y obliga a tener cuidados extremos a la hora de hacerle cambios al kernel.

La configuracin y compilacin del kernel de GNU Linux 2.6 consta bsicamente de cuatro comandos: - make menuconfig para configurar las opciones que se desea tenga el kernel. - make bzImage para compilar la imagen. - make modules y make modules_install para configurar y compilar los mdulos que pueden ser cargados dinmicamente.

Existen otros comandos y parmetros ms especializados los cuales sirven para personalizar el proceso de compilacin, sobre esto se puede leer ms en las referencias bibliogrficas.

Las opciones que se desea tenga el kernel, ya sea incorporadas o como mdulos, dependen nicamente de los requerimientos del sistema que se est desarrollando. Es importante mencionar que entre ms pequeo sea el kernel, ms rpidas van a ser las operaciones del mismo y ms memoria va a estar libre por lo tanto el rendimiento del sistema va a ser mayor. En el caso de los sistemas incrustados se tiene una razn ms para hacer el kernel pequeo: el espacio de almacenamiento es sumamente limitado. Por estas razones es que el diseador debe ser sumamente estricto en cuanto a cuales opciones incorpora en el kernel para evitar limitaciones de rendimiento en el funcionamiento del sistema.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

33

Es importante mencionar que cuando se utiliza el comando make bzImage se le est diciendo al compilador que compile un kernel y lo comprima. El bootloader es el que ser responsable de descomprimirlo a la hora del inicio. Si no se utiliza un bootloader no se puede tener un kernel comprimido por lo que se reduce el tamao del kernel que se puede utilizar de 2.5 megabytes a un megabyte.

3.5.4 Sistema de archivos raz (root filesystem)

El sistema raz de archivos en GNU Linux, el cual se representa mediante el carcter /, es uno de los componentes bsicos de este sistema operativo ya que en l se encuentran los archivos ms importantes. A la hora de cargar el kernel, uno de los parmetros importantes que se le pasa al mismo es la ubicacin de este sistema mediante el comando root=/dev/hda1/ por ejemplo.

La organizacin tan caracterstica del sistema raz de archivos tiene mucho tiempo de existir y tiene todo una serie de razonamientos los cuales estn fuera del objetivo de este documento. Lo que es importante saber es que para lograr que el sistema operativo GNU Linux arranque de forma exitosa, debe existir un sistema de archivos raz.

La estructura bsica de un sistema de archivos raz es la siguiente:

IE-0502 /

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

34

/bin /dev /etc /lib /proc /sbin /tmp /usr

/modules

/bin /lib /sbin /lib /lock /log /run

/var

/tmp

Adicionalmente, se crea el directorio /mnt para tener donde montar particiones de dispositivos de almacenamiento locales o remotas para realizar algn procedimiento de instalacin o mantenimiento.

En el directorio /boot, se encuentra el kernel o ncleo del sistema operativo as como algunos archivos importantes para el bootloader. Por otro lado, el directorio /dev contiene una representacin de los dispositivos del sistema mediante un archivo especial. El directorio /etc contiene los archivos de configuracin para los diferentes programas que debe ejecutar la computadora.

El directorio /tmp se utiliza para almacenar archivos y datos transitorios los cuales se deben borrar con cada inicializacin nueva del sistema. Las libreras utilizadas por los programas

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

35

que corren en la computadora se encuentran en los directorios /lib, /usr/lib y /var/lib; sobre este tema se profundizar ms adelante. En /lib/modules se encuentran los mdulos

previamente compilados que puede cargar el kernel dinmicamente.

Los directorios /bin, /sbin, /usr/bin y /usr/sbin contienen los ejecutables de los programas que puede correr la computadora. Se ubicacin en uno u otro directorio obedece al tipo de programa en cuestin. Para el caso de un sistema incrustado es de poco inters mantener un orden muy estricto en cunto donde se ubican los diferentes archivos ejecutables.

El directorio /var contiene archivos de tamao variable que hacen referencia a los diferentes servicios y procesos que corren en el sistema. En /var/log se encuentran las bitcoras de los procesos del sistema incluyendo la del kernel la cual es manejada por el programa syslogd. El directorio /proc es un directorio vaco en el cual se monta el sistema de archivos virtual del kernel.

Existe una cantidad prcticamente ilimitada de programas que se pueden correr en una computadora con el sistema operativo GNU Linux pero, para un sistema incrustado, se busca que los programas disponibles sean estrictamente los necesarios para la aplicacin especfica. Se debe hacer una evaluacin de los requerimientos del sistema para decidir cules son los programas y las libreras que se deben instalar. Como mnimo, se recomienda instalar lo siguiente:

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

36

Libreras: glibc, ncurses

Ejecutables: Algn shell, alguna implementacin simple del programa init, ping, mount

Paquetes: GNU textutils, GNU fileutils, GNU shellutils, util-GNU Linux, netbase, net-tools , modutils

Con el objeto de determinar qu librera ocupa cada ejecutable se puede utilizar el programa ldd el cual pertenece al paquete de glibc.

Existen diferentes formas de resolver el problema de las libreras, paquetes y ejecutables. Una sera compilar cada uno de estos componentes e instalarlos en el sistema incrustado pero esto es poco eficiente para un sistema incrustado ya que los paquetes completos tienen una gran cantidad de opciones que no son necesarias para un sistema incrustado y hacen uso de mucho espacio de almacenamiento, un recurso muy escaso en ambientes de sistemas incrustados. Otra posibilidad es buscar paquetes especializados para sistemas empotrados que proporcionen la funcionalidad bsica de los componentes sugeridos anteriormente tales como Embutils y Busybox para el caso de los ejecutables y paquetes y Diet Libc y uClibc para las libreras. Estos paquetes tienen la gran ventaja que concentran nicamente las funciones necesarias para un sistema incrustado. Embutils y Busybox encapsulan prcticamente todos los ejecutables y paquetes mencionados anteriormente en un solo paquete. En el caso de las libreras, se reduce el tamao en gran manera si se utilizan alguna

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

37

de las alternativas mencionadas pero se tienen que compilar todos los programas con estas nuevas libreras lo cual tiene una dificultad adicional. Para tomar la decisin de utilizar una de estas libreras ms compactas o utilizar la estndar se debe analizar el espacio de almacenamiento con el que se cuenta y evaluar qu tanto se va a ahorrar en espacio si se utilizan las mismas.

Los archivos que representan los dispositivos del sistema en /dev se crean con la utilidad mknod la cual es parte de fileutils y dependen de tres parmetros: el nmero mayor de identificacin en el kernel, el nmero menor de identificacin en el kernel y especificar si se trata de un dispositivo de tipo bloque o de tipo caracter. Es muy importante que los permisos en cada uno de estos archivos especiales sean los adecuados. Los archivos especiales ms importantes son console, null, mem, random, stderr, stdout, stdin, tty, tty0, tty1 y zero. Para el caso de un sistema incrustado con la consola en un puerto serial es muy importante crear el archivo especial para el puerto serial adecuado, ya sea ttyS0 ttyS1.

3.5.5 Inicializacin del sistema (init)

Dentro de los parmetros de inicializacin que se le pueden pasar al kernel est uno llamado init. Este es el programa que se va a correr luego que el kernel ha terminado de ejecutar todos sus procedimientos. Si no se especifica un parmetro init, el kernel busca un archivo llamado init en algunos directorios estndar en el sistema de archivos raz tales como /bin, /sbin y otros.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

38

En el caso de sistemas multiusuario o estaciones de trabajo, el proceso de inicializacin que le corresponde al programa init es bastante complejo y se divide en niveles de ejecucin o runlevels. Esto con el fin de organizar el orden en que se inicializan los diferentes procesos y servicios. En el caso de un sistema incrustado el sistema init no debe ser muy complejo ya que no hay muchos procesos ni servicios que deban ser atendidos. Tpicamente cuando se instala GNU Linux en un servidor o una estacin de trabajo, no se trabaja con el init ya que esto lo hacen los scripts que trae la distribucin que se est utilizando.

Una posibilidad para el init es implementar el conocido System V Init, pero ste sera totalmente subutilizado en un sistema incrustado ya que los niveles de ejecucin no tienen gran relevancia. En el caso del sistema incrustado, el ingeniero debe tener control absoluto sobre la inicializacin del sistema por lo que es preferible escribir su propio script de inicializacin.

Por defecto, cualquier implementacin de init que se utilice va a leer la configuracin de inicializacin del archivo /etc/inittab.

3.6 Preguntas1. Suponga que a usted se le asigna la tarea de incorporarle una serie de opciones al

kernel de GNU Linux y cuando reinicia el sistema con su nuevo kernel ste se congela.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

39

Cmo podra usted determinar en qu parte del proceso de inicializacin est el problema si no se despliegan errores suficientemente descriptivos en el proceso de arranque?

2.

En qu consiste la preparacin del hardware que debe realizar el bootloader y el

kernel antes de llamar a la funcin start_kernel?

3.

Si la SBC del sistema incrustado tuviera un procesador de la familia Hitachi SuperH

y su sistema husped tiene un procesador de arquitectura x86, qu diferencias habra en la compilacin del kernel para el sistema incrustado?

4.

Suponga que el tamao de su sistema raz de archivos, incluyendo el kernel

comprimido, es de 8 megabytes. Si la aplicacin de su sistema incrustado no requiere almacenamiento persistente y el hardware contara con 32 megabytes de RAM y con nicamente 4 megabytes de memoria flash para almacenamiento, qu sistema de archivos podra utilizar para poder arrancar el sistema operativo en la SBC? Especifique los pasos a seguir para realizar dicha configuracin

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

40

3.7 Gua de procedimientos simplificada3.7.1 Paso 1: Exploracin e identificacin de componentes en SBC

- Con la ayuda de las hojas del fabricante de los diferentes componentes identifquelos en la tarjeta del sistema incrustado:

A. Externos -Puertos ethernet -Ranura PCI -Ranura MiniPCI -LEDs -Puerto IDE -Puertos seriales -Puerto USB -Socket para tarjeta Compact Flash -Puertos GPIO -Botn reset -Puerto para fuente de poder

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

41

B. Internos:

-Etapas de potencia -Microprocesador -Controlador Ethernet (MAC y PHY) -Controlador IDE -Controlador puertos seriales -Dispositivo Watchdog -Controlador puertos GPIO -Memoria RAM -Memoria Flash para BIOS -Batera -Reloj

- Especifique claramente el fabricante y el modelo de los chips en la SBC que corresponden a cada uno de estos componentes.

- Indique las coordenadas aproximadas de la ubicacin de cada componente segn el siguiente mapa:

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

42

Figura 3.1: Mapa de SBC con coordenadas

Nota: Los pasos a continuacin presentan una de las muchas posibilidades para instalar el sistema operativo GNU Linux sobre la red mencionado en la nota terica. Una forma alternativa de realizar la instalacin de GNU Linux en la SBC, es utilizando el lector de tarjetas Compact Flash y escribir ah directamente la informacin de inicializacin; pero esto tiene algunas desventajas relacionadas al modo de traduccin de sectores de memoria secundaria (LBA y CHS por ejemplo) de las diferentes computadoras.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

43

3.7.2 Paso 2: Configuracin sistema husped

- Instale alguna distribucin de GNU Linux, preferiblemente Debian Woody o ms reciente en su estacin de trabajo la cual tenga dos puertos de red Ethernet, al menos un puerto USB disponible y al menos 500 megabytes de espacio en disco duro. Si nunca ha trabajado con la versin 2.6 del kernel, se recomienda que lo compile y lo instale en la estacin de trabajo. Es importante que configure soporte para lo siguiente en el kernel: puertos seriales, adaptador de red, puertos USB, lector de tarjetas Compact Flash USB y sistema de archivos NFS. En cuanto a programas es importante que tenga lo siguiente: el compilador GCC y todas las libreras de desarrollo asociadas, todos los paquetes GNU utils, el servidor inetd y un editor de texto de su preferencia.

- Instale los paquetes NFS-USER-SERVER, TFTPD y DHCPD3. Si est utilizando Debian puede hacer uso de la utilidad apt-get para descargarlos e instalarlos.

- Descargue la versin 1.67 o mayor del bootloader SYSLINUX y extraiga el archivo necesario para utilizar PXELINUX.

- Instale algn programa terminal tal como minicom para comunicarse con la SBC por medio de su consola ubicada en el puerto serial. Este programa debe soportar la velocidad de 19200 bps para comunicacin.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

44

- Debe crear al menos tres directorios: uno para el sistema raz de archivos de la SBC, otro para la raz del servidor TFTP y otro para compilar los diferentes programas que se van a utilizar en el sistema incrustado.

-Configure el servidor NFS de tal forma que la tarjeta del sistema incrustado pueda montar el directorio raz de la SBC que usted cre en el paso anterior a travs de la red local. Esto se realiza utilizando el archivo /etc/exports.

-Configure el servidor DHCP dhcpd3 de tal forma que se le asigne una direccin IP fija al adaptador Ethernet de la tarjeta del sistema incrustado que se va a utilizar para conectarse con el sistema husped. Para esta configuracin requiere obtener la direccin MAC del adaptador de la SBC, eso lo puede lograr conectando un cable UTP en configuracin crossover* entre el puerto de la tarjeta de red que se va a utilizar en el sistema y la estacin de trabajo, luego inicia la SBC, presiona CTRL y P, digita boot f0 y ah obtiene la direccin del adaptador de red Ethernet que est utilizando. Es muy importante que utilice siempre el mismo adaptador a lo largo de la prctica. El archivo de configuracin del programa dhcpd3 se ubica en /etc/dhcpd3/dhcpd.conf.

-Edite el archivo de configuracin de inet.d de tal forma que el servidor tftp est disponible para abrir conexiones en la estacin de trabajo y que la raz del mismo sea la que usted cre anteriormente.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

45

-Cree un archivo de configuracin para el PXELINUX con la menor cantidad de opciones posible, slo necesita dos o tres lneas en este archivo. - De acuerdo a la documentacin de PXELINUX, coloque sus archivos en la raz del servidor TFTP. Ajuste los permisos de estos archivos de manera que se puedan leer desde la SBC.

*El orden de los alambres en el cable UTP para una configuracin crossover se encuentra en el apndice.

3.7.3 Paso 3: Creacin de sistema raz de archivos

- En esta etapa debe crear el sistema raz de archivos en el directorio que se cre anteriormente tomando en cuenta todo lo mencionado en la nota terica.

-Para los paquetes y ejecutables que se recomendaron anteriormente se sugiere utilizar el paquete conocido como busybox el cual encapsula estos y ms programas necesarios para un sistema incrustado. La gran ventaja de utilizar busybox es que es un solo paquete que se debe compilar y su configuracin es relativamente fcil. Se debe tener especial cuidado a la hora de configurar este programa y escoger nicamente los programas que se van a utilizar en la SBC.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

46

-Para las utilidades de login que tiene el paquete util-GNU Linux se recomienda utilizar el paquete tinylogin de busybox. Se debe prestar mucho cuidado a la documentacin de tinylogin, especialmente en la parte que respecta a autenticacin de usuarios en la SBC. Estas son nicamente recomendaciones, usted puede escoger lo que usted considere ms apropiado, siempre y cuando se mantenga dentro de lo estipulado por los requerimientos del proyecto y las limitaciones de la SBC.

-Para las libreras se recomienda evaluar qu tanto espacio se ahorrara con las libreras reducidas para sistemas incrustados. Otra alternativa es copiar la librera glibc del sistema husped en el sistema raz de la SBC as como algunas otras libreras que se necesiten.

-Es importante que se limpien todos los binarios de smbolos para depuracin, esto reduce en gran magnitud el tamao de los mismos. Ms informacin sobre este procedimiento se puede encontrar en la documentacin del paquete binutils.

-Los archivos especiales bsicos que se deben crear en /dev se muestran a continuacin con los respectivos permisos y nmeros mayor y menor:

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

47

Tabla 3.1: Archivos especiales en /dev Nombre Mem Null Zero Random tty0 Tty1 ttyS0 Tty console Nmero mayor 1 1 1 1 5 4 4 5 5 Nmero menor 1 3 5 8 0 1 64 0 1 Bits de Descripcin permisos Representa el acceso a la memoria fsica 600 Representa el dispositivo null 666 Representa una fuente de ceros 666 Representa el generador de nmeros 644 600 600 600 666 600aleatorios no determinstico Representa la consola virtual actual Representa el primer puerto serial Representa el dispositivo TTY actual Representa la consola del sistema Representa la primera consola virtual

-Adems se debe colocar el archivo fstab en /etc para que la SBC monte los sistemas de archivos apropiadamente. Con este archivo se debe poder montar el sistema raz de archivos por medio de NFS as como el sistema proc en /proc.

- El objetivo principal debe ser siempre el utilizar la menor cantidad de espacio posible en el almacenamiento por lo que se debe investigar qu tcnicas se pueden utilizar para lograr este objetivo.

3.7.4 Paso 4: Creacin de scripts de inicializacin

- Este paso no tiene mayor complicacin ya que un sistema incrustado tpico no es multiusuario y, tpicamente, no requiere niveles de ejecucin como los que tiene el clsico System V Init.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

48

- Se recomienda utilizar el busybox como init, un archivo de configuracin en /etc/inittab con algunas pocas entradas y un script, llamado /etc/init.d/rcS por la convencin impuesta por el System V Init, sencillo que haga slo lo necesario. De esta forma se garantizar que el sistema arrancar en el menor tiempo posible y usted tendr control absoluto de los procesos de inicio y de shutdown.

- Algunos detalles que se deben tomar en consideracin para el inittab: lo primero que se ejecuta debe ser el script /etc/init.d/rcS para que inicialice el sistema, luego se debe especificar que se abra una sesin de login en el puerto serial de donde se va manejar la SBC y que ste se reinicie si es terminado, luego que si el proceso /sbin/init es terminado que se vuelva a iniciar y finalmente una lnea que desmonte los sistemas de archivos cuando la computadora se va a apagar.

- En el script rcS deben ir bsicamente comandos relativos al montaje de sistemas de archivos y configuraciones de red necesarias para la inicializacin exitosa de la computadora.

3.7.5 Paso 5: Creacin de dispositivo de almacenamiento en sistema raz de archivos

- Al igual que se crearon los archivos especiales para los dispositivos bsicos de la computadora se deben crear los archivos especiales para los dispositivos de almacenamiento. En el caso de la tarjeta SBC que se est utilizando slo va a haber un

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

49

dispositivo de memoria secundaria por lo que se puede usar el primero disponible y el interfaz es tipo IDE por lo tanto el archivo que representa el dispositivo se va a llamar hda. Por ejemplo, si fuera el primer dispositivo de interfaz tipo SCSI el archivo sera sda1. Tambin hay que crear los archivos para las particiones del mismo.

3.7.6 Paso 6: Configuracin y compilacin kernel

- Las opciones para incorporar en el kernel deben ser nicamente las necesarias y deben ser las adecuadas de acuerdo al hardware que posee la SBC. Debido a que la distribucin estndar del kernel 2.6.x no tiene como opcin el procesador de la SBC que se est utilizando se le debe aplicar un parche disponible en el sitio web de este curso. Este parche adems arregla un problema que se tiene con el escaneo del bus PCI correctamente por parte del kernel para esta SBC.

- Una vez aplicado el parche se procede a configurar el kernel. Es importante que se seleccione el procesador MediaGX/Geode, soporte para puertos seriales, soporte para la tarjeta de red de la SBC as como para el controlador de puertos GPIO y para el controlador IDE. Tambin se debe configurar soporte para el timer watchdog, para el comando sysctl y soporte para los sistemas de archivos que usted considere necesario. Finalmente, el kernel debe ser configurado como interrumpible.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

50

- Se recomienda tener especial cuidado con el soporte de puertos seriales ya que la consola se encuentra en este dispositivo y hay muchas opciones adonde es fcil equivocarse y causar que no se pueda utilizar el puerto serial como consola. Adicionalmente, el soporte de NFS no debe ser nicamente general sino que el kernel tenga la capacidad de cargar el sistema raz de archivos sobre NFS.

- Con los comandos mencionados en la nota terica, se puede configurar y compilar el kernel. La imagen del kernel, el archivo System.map y los archivos de los mdulos deben ser copiados a los directorios respectivos del sistema raz de archivos.

3.7.7 Paso 7: Arranque inicial

- Este es el paso final de la puesta en marcha de la SBC con el sistema operativo GNU Linux. Para eso se debe asegurar que la configuracin de los servicios necesarios en el sistema husped est correctamente configurada.

- Lo primero es preparar las conexiones entre la SBC y la estacin de trabajo lo cual es simplemente conectar, usando un cable null modem, un puerto serial de la estacin de trabajo a un puerto serial en la SBC y luego conectando, utilizando un cable UTP en configuracin crossover, un puerto de red en el sistema incrustado con el sistema husped. Con esto listo se puede iniciar el programa terminal en el sistema husped y arrancar la SBC. Inmediatamente se va a observar el chequeo inicial de la SBC en el programa

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

51

terminal, despus de esto se debe presionar CTRL y P para obtener el prompt del BIOS de la SBC, ah se debe ejecutar el comando boot f0 para tratar de arrancar mediante PXE.

- Si hay algn error este va a ser presentado por el sistema PXE o el kernel durante el inicio. Para verificar que todo proceda en orden, se recomienda abrir en el sistema husped el archivo adonde syslogd guarda la bitcora general del sistema con la utilidad tail para observar, en tiempo real, lo que est sucediendo con los servidores TFTP, NFS y DHCP y poder diagnosticar fcilmente si se presenta un problema. En la distribucin Debian ese archivo es /var/log/syslog y en otras distribuciones es /var/log/messages.

- Si todo procede en orden, lo primero que se debe observar cuando el kernel termina de cargar es el texto del sistema de autenticacin donde se puede escribir el nombre de usuario y clave para acceder el shell.

- Una vez con el shell es recomendable revisar la bitcora de inicio que se ubica en /var/log/dmesg para verificar que los componentes de la SBC han sido detectados y configurados correctamente, revisar el sistema de archivos con el programa mount y ejecutar algunos de los comandos escogidos por el busybox.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

52

3.7.8 Paso 8: Creacin de sistema raz de archivos en memoria secundaria de SBC

- Ahora que ya se tiene acceso directo a la memoria flash donde se va a almacenar el sistema raz de archivos se puede crear la o las particiones que se van a utilizar en la memoria secundaria. Esto se hace con la utilidad fdisk y con alguna utilidad para crear un sistema de archivos tal como mkfs o mke2fs, dependiendo de la eleccin de sistema de archivos que se haya hecho anteriormente.

- Algunas consideraciones que se deben tomar en cuenta: se debe dejar espacio en la memoria secundaria para una pequea particin por si se quiere cargar un kernel alterno ms adelante y se debe marcar la particin principal como bootable tal que el sistema operativo que va a residir en la misma pueda iniciar.

- Finalmente, para verificar lo hecho anteriormente, se debe montar la nueva particin en /mnt con el comando mount y verificar con el comando df.

- El sistema de archivos montado en /mnt ser el sistema raz de archivos en la SBC, por lo tanto se deben copiar los contenidos del sistema de archivos remoto a /mnt. Se recomienda hacer esto con mucho cuidado ya que los contenidos de /proc o de /mnt no se deben copiar al nuevo sistema de archivos.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

53

3.7.9 Paso 9: Bootloader

- El ltimo paso en la configuracin del sistema operativo de la SBC es la escritura del MBR (Master Boot Record por sus siglas en ingls). Esto se logra mediante la instalacin de un programa conocido como bootloader que se mencion en la nota terica. La seleccin del bootloader queda a discrecin del diseador. El ejecutable y las libreras del bootloader no deben estar necesariamente instalados en la memoria secundaria de la SBC, ste se puede correr directamente del sistema de archivos montado en /.

- A continuacin se van a presentar algunas consideraciones importantes que se deben tomar en cuenta a la hora de instalar y configurar el bootloader.

Primero, se le debe especificar al bootloader donde es que se encuentra la imagen del kernel. Para esto se le debe especificar el dispositivo y la particin donde se encuentra el sistema raz de archivos, el directorio donde se encuentra la imagen del kernel y el nombre del archivo de la imagen del kernel.

Segundo, se le debe hacer saber al kernel, en forma de parmetros, que la consola no est en un puerto de video VGA sino en un puerto serial. El parmetro tpicamente es de la forma console=,. Es importante que el bootloader sepa tambin que la consola esta en un puerto serial, por lo

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

54

tanto se debera configurar el mismo de forma que esto quede claro, por lo tanto se le debe especificar esta informacin con otro comando.

Por ltimo, el bootloader debe saber en cul dispositivo se encuentra el sector de inicio o boot sector para as poder grabar en l. Un detalle sumamente importante es que para poder ejecutar el bootloader para que grabe la informacin el sector de inicio se le debe especificar que el sistema raz de archivos no es el que est montado sino /mnt. La posibilidad de hacer esto depende del bootloader, las posibilidades utilizando el comando chroot o especificndole al bootloader que la raz es /mnt.

- Recuerde que antes de reiniciar el sistema debe editar el archivo /etc/fstab para que el kernel monte el sistema raz de archivo de la memoria flash local y no del NFS remoto.

3.7.10 Paso 10: Arranque final

- En este paso se procede a reiniciar la SBC y comprobar que el bootloader hizo su trabajo correctamente. Si el kernel carga adecuadamente entonces todo est en orden. Es conveniente realizar el mismo chequeo que se hizo en el paso 7 para comprobar que no hay ningn problema. -Fije la hora del sistema utilizando el comando date y fije el nombre del sistema o hostname utilizando el comando hostname. Es importante que coloque el comando que define el hostname en el script de inicializacin /etc/init.d/rcS.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

55

- Con esto se termina la configuracin bsica del sistema operativo GNU Linux en el sistema incrustado.

3.8 Referencias BibliogrficasPara esta prctica puede utilizar los siguientes libros que se encuentran en la bibliografa de este documento: 1, 4, 5, 6, 8, 9, 14, 30, 38, 40, 41.

3.9 Solucin Propuesta

3.9.1 Respuestas a Preguntas

1. Se debe recordar que no se puede utilizar ANSI C dentro del cdigo del kernel, por lo que hay que recurrir a las funciones permitidas dentro del contexto de GNU C. Para depurar el kernel se pueden insertar llamadas a la funcin printk(), para imprimir mensajes de prueba en las diferentes secciones principales del kernel. De esta forma, cuando la ejecucin del kernel se congela, se sabr aproximadamente en qu seccin de la inicializacin se encuentra observando el ltimo texto de prueba impreso por printk(). Afinando ms la ubicacin de los printk() de prueba se puede lograr acercarse al error. El archivo que lleva el control de las llamadas a las funciones ms generales que se ejecutan, se llama main.c, y se encuentra en el directorio $KERNEL_ROOT/init.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

56

2. La preparacin del hardware es una tarea dependiente de la plataforma, en la cual se cambia el modo del procesador de real a protegido, y a la vez se realizan tareas relacionadas con la memoria, y se fijan algunos registros. Para el caso de un esquema con memoria plana, el bootloader debe preparar el GDT (Global Descriptor Table) mediante la creacin de varias estructuras que lo definen, y luego cargar la informacin relevante al GDT en el registro GDTR. Cuando se tiene todo esto listo se debe poner el registro CR0 en alto.

Adems se debe preparar la memoria, para que los programas en C puedan ejecutarse y para esto se deben realizar los siguientes pasos:

-Llenar de ceros el espacio de memoria conocido como bss que es donde residen las variables estticas; por se motivo, las variables estticas que no tengan un valor inicial definido tendrn el valor cero por defecto.

-Configurar el heap para el uso de memoria dinmica. El heap es tpicamente una lista enlazada de bloques de memoria, y debera contener inicialmente un gran bloque vaco que representa todo el espacio para el heap.

Adems se deben configurar los timers del sistema, as como el sistema de atencin a interrupciones que est compuesto por el IDT (Interrupt Descriptor Table) y los

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

57

controladores de interrupciones que son tpicamente dos microcontroladores PIC 8259. La IDT puede tener hasta 256 elementos y cada uno es conocido como descriptor, y apunta a la direccin de una rutina de servicio de interrupcin (ISR).

3. Lo que se debe hacer es el procedimiento llamado cross compiling y esto significa compilar todos los binarios para la SBC, incluyendo el kernel, en la misma computadora husped, pero con un grupo de herramientas para otra plataforma. Estas herramientas se componen del compilador gcc, las libreras glibc y el paquete binutils. La bandera que se utiliza para indicarle a los programas compiladores la arquitectura, se llama target. Por ejemplo, para compilar un programa para la arquitectura SuperH, se ejecuta el comando configure TARGET=sh. Luego, se debe preparar todo el grupo de herramientas para cross compiling en otro directorio y usarlo para compilar los programas para otra plataforma.

4. La solucin para este problema es crear una particin de dos megabytes en la memoria flash y un dispositivo llamado RAM disk de 16 megabytes. Esto hace posible que se monte un sistema de archivos en memoria para todos los archivos que nunca van a ser modificados y un pequeo sistema de archivos en la memoria flash para los que s requieren modificacin.

Un sistema de archivos montado en un RAM disk opera exactamente igual que si estuviera montado en un dispositivo de almacenamiento local o remoto. El RAM disk es visto como

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

58

un dispositivo de bloque por el kernel, su tamao est limitado por la cantidad de memoria RAM que est disponible y la gran desventaja que tienen es que cuando la computadora se reinicia, se pierden los datos que se alteraron en el RAM disk. Prcticamente cualquier tipo de particin puede ser montada en un RAM disk, siempre y cuando el tamao de la misma sea igual o menor al tamao del RAM disk. El RAM disk se puede comprimir para ahorrar espacio de almacenamiento en el dispositivo en el que se va a almacenar.

Los comandos necesarios para llevar esto a cabo son los comunes y corrientes, mount y umount para montar y desmontar el sistema de archivos, mke2fs para crear el sistema de archivos, y gzip para comprimirlo.

3.9.2 Procedimientos

3.9.2.1 Paso 1 Externos: -Puertos Ethernet: 10 y 11 -Ranura PCI: A y B -Ranura MiniPCI: Entre I y H y 5 y 9 -LEDs: 1 -Puerto IDE: Entre D y G en 1 -Puertos seriales: Uno 10-11 y I-H, Dos K 4-5

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

59

-Puerto USB: K-G y 10 -Socket para tarjeta Compact Flash: H-J, 1-4 -Puertos GPIO: K y 6-8 -Botn reset: B10 -Puerto para fuente de poder: J10

Internos:

Etapas de potencia: un controlador LM2642 para dos fuentes conmutadas en configuracin stepdown. (J8) Microprocesador: National Semiconductor Geode SC1100 (D4) Controladores Ethernet: PHY es YCL336 (entre C y F y 8 y 9) y MAC VSM336AM (6 y 8 y C y H): Controlador IDE: incorporado en el SC1100 Dispositivo Watchdog: incorporado en el SC1100 Controlador puertos seriales: National PC87366 (G5) Controlador puertos GPIO: National PC87366 (G5) Memoria RAM: Cuatro chips de 32 megabytes 48LC16MI6A2 (Entre 2y C-G) Memoria Flash para BIOS: Chip marcado con calcomana blanca Soekris (G4) Bateria: Dispositivo plano con borde lila (9 y I-J) Reloj: CTS16CB3 (C5)

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

60

3.9.2.4 Paso 2

Se cre el directorio /home/rcs/crustaceos para el proyecto el cual ser denominado $PROJ_ROOT de ahora en adelante. Adems, se cre el directorio para el sistema raz de archivos en $PROJ_ROOT/rootfs y el directorio raz para el servidor TFTP en $PROJ_ROOT/tftproot.

Adems se crearon los directorios kernel, bootldr, sysapps y tmp en $PROJ_ROOT. El primero contiene todo lo relativo a los kernels que se van a compilar, el segundo todo lo relativo al bootloader, el tercero se va a utilizar para todas las aplicaciones y libreras que se van a correr en la SBC, y el cuarto para archivos temporales.

Se recomendaron los paquetes recomendados con los archivos de configuracin adjuntos. (inetd.conf, /etc/exports, dhcpd.conf). El archivo de configuracin dhcp.conf que se utiliz es el siguiente:

option domain-name "domain.com"; option domain-name-servers ns1.domain.com, ns2.domain.com; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 10.0.0.0 netmask 255.255.255.0 { } host sbc1 { hardware ethernet 00:00:24:c1:cc:4c; fixed-address 10.0.0.100; option subnet-mask 255.255.255.0; option broadcast-address 10.0.0.255; option routers 10.0.0.1; filename "pxelinux.0"; }

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

61

Lo importante en este archivo es lo relativo a la seccin host sbc1 en el cual se especifica la direccin MAC del adaptador de red de la SBC que se va a utilizar, los parmetros IP que se le debe asignar, y el archivo que debe descargar la SBC mediante FTP. Se tuvo especial cuidado con la configuracin del servidor DHCP, ya que la raz del servidor TFTP est fijada en un cierto directorio, por lo tanto, el archivo que se especifica en dhcpd.conf debe tomar en cuenta que su raz ser /tftpboot y no /.

La lnea que se le agreg al inetd.conf es la siguiente:

tftp

dgram udp wait

root

/usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot

Aqu se especific lo siguiente: (a) el TFTP trabaja sobre el protocolo de red UDP con datagramas, (b) que se debe correr el servidor de TFTP como usuario root, (c) que el archivo del servidor FTP se encuentra en /usr/sbin/in.tftpd, (d) que la raz del servidor TFTP debe estar en $PROJ_ROOT/tftproot/ de acuerdo al parmetro -s y (e) que se debe esperar el socket de la conexin UDP del servidor TFTP.

La lnea que se le agreg a /etc/exports es la siguiente:

/home/rcs/crustaceos/rootfs 10.0.0.100(rw,no_root_squash)

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

62

Aqu se le indic al servidor NFS que se desea exportar el archivo raz de la SBC al sistema con la direccin IP 10.0.0.100 la cual es le fue asignada anteriormente en el archivo dhcpd.conf a la SBC mediante DHCP. Tambin se le indica al servidor, que puede ser montado en modo de lectura y escritura por el sistema remoto, y que las solicitudes del usuario remoto root las convierta a solicitudes del usuario annimo local.

El archivo de configuracin default para el PXELINUX es el siguiente:

SERIAL 0 19200 DEFAULT vmlinuz-2.6.6 console=ttyS0,19200n81 root=/dev/nfs nfsaddrs=10.0.0.100:10.0.0.1:10.0.0.1:255.255.255.0:soekris:eth0 nfsroot=10.0.0.1:/home/rcs/crustaceos/rootfs panic=10

Los comandos de lnea uno a la tres del texto mostrado arriba deben estar en una misma lnea en el archivo; aqu no se pueden mostrar as, por razones de espacio. La primera lnea, especifica que se est usando el primer puerto serial como consola, a una velocidad de 19200 bps, la segunda lnea especifica que se debe usar el archivo vmlinuz-2.6.6 como kernel, y una serie de parmetros que se le pasan al kernel. El primero indica que la consola est en el puerto serial, el segundo que se va a montar el sistema raz de archivos sobre NFS y el tercero indica la direccin IP que se le va a asignar a la SBC as como los dems parmetros de red y a cul interfaz se le van a asignar. El cuarto parmetro indica el lugar donde se encuentra el sistema raz de archivos, el quinto el tiempo en segundos que debe esperar el kernel antes de entrar en el modo panic si algo sucede. No hace falta especificarle al kernel la ubicacin de init ya que el busybox ubica el programa init en

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

63

/sbin/init, uno de los lugares que el kernel busca por defecto. La ltima lnea hace que se le adjunte a los parmetros que se le pasan al kernel una lnea con los parmetros IP que asign el servidor DHCP.

Los documentos $KERNEL_ROOT/Documentation/kernel-parameters.txt y nfsroot.txt contienen la informacin necesaria para entender correctamente los parmetros que se le estn pasando al kernel.

Los contenidos del directorio $PROJ_ROOT/tftproot son: un directorio llamado pxelinux.cfg, el archivo pxelinux.0 y el kernel que se va a compilar ms adelante con un nombre que vaya de acuerdo a lo que tiene el archivo de configuracin de PXELINUX (vmlinux-2.6.6 de acuerdo al archivo default que se mostr arriba).

Se recomienda utilizar el programa terminal minicom, y configurarlo con los parmetros especificados en la hoja del fabricante de la SBC para entrar a la consola de la tarjeta del sistema incrustado.

3.9.2.3 Paso 3

El directorio que contiene el sistema raz de archivos de la SBC se cre anteriormente en $PROJ_ROOT/rootfs; por lo tanto, todo lo que se realiz en este paso estar en ese directorio.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

64

Primero se crearon los directorios mencionados en la nota terica, todos con los bits de permisos fijados en 755.

Se crearon todos los archivos especiales en /dev con los permisos respectivos utilizando el comando mknod m . La diferencia en tamao entre utilizar ucLibc y glibc estndar es aproximadamente 500 kilobytes, una diferencia no tan grande dadas las caractersticas de la SBC que se est utilizando. Debido a esto, se decidi copiar la glibc (el archivo se llama libc.so.6) del sistema husped al directorio /lib.

Se utiliz el comando strip del paquete binutils para eliminar los smbolos de depuracin de libreras y ejecutables que se van a utilizar. As se logra ahorrar espacio en memoria secundaria.

Se decidi utilizar el busybox debido a la simplicidad que ofrece, ya que se compilan todos los programas en un solo binario, y se crean links de todas las ubicaciones a ste. Se utiliz la versin 1.00rc9, pues la ltima que ha sido difundida cuando se redact este documento (1.00rc10) tiene algunos problemas de compilacin. La configuracin se invoc con el comando make PREFIX=$PROJ_DIR/rootfs menuconfig.

Se fue especialmente cuidadoso en los siguientes puntos:

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

65

-

Habilitar la capacidad de montar sistemas de archivos NFS.

-

Utilizar funciones internas de autenticacin para passwords y grupos.

-

Compilarlo estticamente para evitar tener que usar muchas libreras.

-

Si su sistema husped usa el formato shadow para la base de datos de usuarios locales es necesario que habilite esta opcin

-

Habilitar el programa init.

Se adjunta el archivo de configuracin de compilacin del busybox que se utiliz (.configbusybox).

Se compil el busybox utilizando la bandera PREFIX=$PROJ_DIR/rootfs. Si se decide modificar la configuracin luego de haberlo compilado la primera vez, es necesario ejecutar el comando make clean en la raz del busybox antes de empezar el proceso de compilacin de nuevo.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

66 comando make

Finalmente

se

procedi

a

instalar

el

busybox

con

el

PREFIX=$PROJ_DIR/rootfs install. Con esto qued instalado el ejecutable principal y todos los links al mismo.

Ahora se procedi a configurar y compilar el paquete tinylogin el cual es un solo binario que representa los programas bsicos de manejo de usuarios y autenticacin necesarios en la SBC.

Se us la versin 1.4 del tinylogin y se compil con la opcin PREFIX para que se instale en el sistema raz de archivos de la SBC y se sigue los mismos cuidados que con el busybox. Tambin se tuvo especial cuidado con la bandera USE_SYSTEM_PWD_GRP del archivo Makefile, la que debe estar fijada en falso para que el programa use sus libreras internas de autenticacin, y no las del sistema.

Desafortunadamente, el tinylogin no crea los archivos de autenticacin de grupos y usuarios (/etc/passwd, /etc/shadow, /etc/group) por lo que se edit los de la estacin husped y se copi al sistema raz de archivos de la SBC. Adems se cambi el shell de los usuarios de bash a ash, ya que busybox no tiene bash sino ash.

Para poder terminar la instalacin del tinylogin se tuvo que tener acceso a la cuenta root en la estacin de trabajo.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

67

A continuacin se muestra el archivo fstab inicial que se debe crear en el directorio /etc de la SBC que se utiliz:

10.0.0.1:/home/rcs/crustaceos/rootfs / proc /proc

nfs proc

nolock,intr,rw defaults

0 0

0 0

En la primera lnea se especifica la direccin del sistema de archivos que se va a montar por medio de NFS, dnde se debe montar, que tipo de sistema de archivos se usa y algunos parmetros. El parmetro nolock, que es sumamente importante a la hora de montar sistemas de archivos remotos sobre NFS, con el esquema de servidor NFS en espacio de usuario, el parmetro rw indica que se debe montar el sistema de archivos para lectura y escritura y el parmetro intr indica que se puede interrumpir el proceso de montaje del sistema de archivos NFS. La segunda lnea indica que se debe montar el sistema de archivos proc al igual que en cualquier otro sistema GNU Linux. Los ltimos dos parmetros de cada lnea indican si el sistema de archivos se debe respaldar, y en que orden se deben revisar los sistemas, pero esto no es de inters para esta prctica.

Se copi el editor de texto pico as como sus archivos de configuracin.

Temporalmente se copiaron al sistema de archivos raz las utilidades, sus libreras y los archivos de configuracin de los programas para la creacin del sistema de archivos en la

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

68

memoria

flash (fdisk, mke2fs y mkfs.ext3) y el bootloader (lilo). Es sumamente

importante que los archivos para crear la particin estn en /sbin, y para crear el sistema de archivos no se debe llamar a mke2fs directamente, sino mkfs.ext3. El comando es /sbin/mkfs.ext3 /dev/hda1. 3.9.2.4 Paso 4

Se utiliz el programa init que viene con el busybox, el cual es sumamente sencillo de utilizar. El siguiente es el archivo de configuracin para init:

::sysinit:/etc/init.d/rcS ::respawn:/sbin/getty 19200 ttyS0 ::restart:/sbin/init ::shutdown:/bin/umount -a r

La primera lnea especifica que en el inicio del sistema operativo se debe ejecutar el script rcS. La segunda indica que se debe ejecutar el comando getty, de tal forma que haya una sesin de login en el primer puerto serial a una velocidad de 19200 bps, y si este programa termina se debe iniciar de nuevo. La tercera indica que el proceso init debe ser reiniciado si es terminado; finalmente, la ltima indica lo que se debe hacer cuando se vaya a apagar la SBC, en este caso desmontar todos los sistemas de archivos.

El script rcS en /etc/init.d utilizado contiene lo siguiente:

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

69

#!/bin/sh mount -n -o remount,rw / mount /proc /sbin/ifconfig eth0 10.0.0.100 netmask 255.255.255.0

La primera lnea remonta el sistema raz de archivos, que el kernel monta en modo solo de lectura, en modo de lectura y escritura. El segundo monta el sistema de archivos /proc y la ultima lnea configura los parmetros IP en el primer adaptador de red de la tarjeta SBC.

3.9.2.5 Paso 5

En este paso se ejecutaron los siguientes comandos en el directorio /dev para la creacin de los archivos especiales que representan el dispositivo de memoria secundaria en la SBC:

mknod hda b 3 0 mknod hda1 b 3 1 mknod hda2 b 3 2 chmod 666 hda hda1 hda2

Al hacer esto ya se tiene una referencia valida en el sistema de archivos de la SBC, al primer dispositivo conectado al controlador IDE, que en este caso ser la memoria flash.

IE-0502

GUIA DE LABORATORIO DE SISTEMAS INCRUSTADOS

70

3.2.8.6 Paso 6

Se descarg el archivo comprimido con el cdigo fuente del kernel 2.6.3 o mayor de www.kernel.org y se descomprimi en /usr/src. Para aplicar el parche, suponiendo que ste se encuentra en $PROJ_ROOT/kernel/soekris.patch.2.6.3 se ubic en el directorio /usr/src/linux-2.6.3 y se ejecut el comando patch p1 del shell para escribirle algn texto a la pantalla LCD.