Implementación de sistemas integrados Linux basados en el procesador Leon 2



Documentos relacionados
Cap. 1. Introducción a la Arquitectura de Dispositivos Móviles

ARQUITECTURA DE LOS AUTOMATAS PROGRAMABLES

INTRODUCCIÓN AL CAPÍTULO 3 7. INTRODUCCIÓN A RSLINX LITE 4

Definición de Sistema Operativo

Sistemas Electrónicos Digitales

DISEÑO LOGICO CON DISPOSITIVOS LOGICOS PROGRAMABLES (PLD S) ING. LUIS F. LAPHAM CARDENAS PROFESOR INVESTIGADOR DIVISION DE ELECTRONICA C.E.T.I.

ENTORNO DE DESARROLLO PARA SOC'S BASADOS EN EL MICROPROCESADOR LEON2

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria.

Administración de Sistemas Operativos ACI495

José María Torres Corral. l u n e s, 2 8 d e m a r z o d e :06:33

Sistemas. Tecnologías de la Información y la Comunicación 1º bachillerato

Práctica final. Emilia Cruz Fernández Martínez

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO HUAYCÁN (Decreto Supremo No ED y Resolución Directoral No ED)

Implementación de Centros de. Computadoras. Implementación del sistema de red, y. redes empresariales

Desarrollo Tecnológico de un Sistema Domótico Integrado sin cables. Proyecto Operador Domótico

4.1 Dispositivos y manejadores de dispositivos: device drivers

POWER PC. Indice ARQUITECTURA DE COMPUTADORES. Antonio del Amo Ruiz. 1. Introducción. 2. Tecnología RISC. 3. Arquitectura de la CPU Power PC

Unidad de Promoción y Desarrollo Guadiana OBJETIVO GENERAL

Curso sobre Controladores Lógicos Programables (PLC).

2º Técnico Superior en Gráfica Publicitaria

AUTÓMATAS PROGRAMABLES

Todos los estados del país.

Introducción a la seguridad en redes IP

SIDEPIC-USB, UNA HERRAMIENTA PARA EL APRENDIZAJE DE LOS MICROCONTROLADORES PIC

Organización del Computador 1 Memorias

BRYAN HUMBERTO LOPEZ CARVAJAL UNIVERSIDAD DE SAN BUENAVENTURA SECCIONAL MEDELLÍN FACULTAD DE INGENIERÍAS INGENIERÍA ELECTRÓNICA MEDELLÍN

APLICACIONES MÓVILES NATIVAS. Sesión 12: Otras plataformas para el desarrollo de aplicaciones móviles

Lenguajes de Cuarta Generación (4GL)

2. Elementos de Arquitectura de Computadores

CAPITULO 6 Interfaz de comunicación con Visual Basic

TECNOLOGÍA DE REDES. Temario (Primera Parte) 18/04/2008. Unidad 3. Introducción a los Routers (Primera Parte)

Capítulo 4 Memoria virtual

TRABAJO DE SISTEMAS OPERATIVOS ÍNDICE INTRODUCCIÓN Qué es Linux? Características de Linux Funciones

Videoconferencia. Tema 8 SRI. Vicente Sánchez Patón. I.E.S Gregorio Prieto

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas Instalación de UBUNTU SERVER. Facilitador José Doñe

Qué es un Sistema Operativo?

SERVICIOS Y ADMINISTRACIÓN DE IDENTIDADES EN OFFICE 365

Tema 2. Sistemas operativos.

Guía de AirPrint. Esta documentación es para modelos de inyección de tinta. Versión 0 SPA

Introducción Definición de control. Introducción Antecedentes Históricos

Características Ventajas Desventajas Tipo de Núcleo Shell Gui. Para algunas cosas se debe de saber usar UNIX, muchos juegos no corren en Linux.

PRODUCTO P05 SOFTWARE EMBEBIDO PARA EL CONTROL DEL CIRCUITO GENERADOR DE CORRIENTE DE LAS FORMAS DE ONDAS PARA ELECTROTERAPIA

Centrales de intrusión Galaxy: diseñadas para el mañana

Sistema Operativo Linux Agenda

Software: Son los programas que organizan y coordinan de forma lógica las distintas funciones.

SISTEMAS DE ARCHIVOS. Conrado Perea

Manejo de Entrada-Salida. Arquitectura de Computadoras

IIE-PCI. Una plataforma de desarrollo para el bus PCI. Integrantes: Sebastián Fernández, Ciro Mondueri Docente: Juan Pablo Oliver ...

MICROSOFT OUTLOOK AVANZADO

Requerimientos para la correcta instalación de AutoDESK

PROGRAMA ANUAL SISTEMAS DIGITALES DE INFORMACIÓN

BLOQUE 2 (PARTE 1) DEFINICIÓN Y CLASIFICACIÓN

Guía de Google Cloud Print

INSTRUMENTACIÓN ELECTRÓNICA

Guía de AirPrint. Esta Guía del usuario corresponde a los modelos siguientes: DCP-J552DW/J752DW, MFC-J285DW/J450DW/J470DW/J475DW/ J650DW/J870DW/J875DW

DATOS LIBETH ALVAREZ FANNY BRACHO GRISKA ISEA

Introducción a los Sistemas Gestores de Bases de Datos

Dos en uno: el primer procesador AMD Fusion lleva los sistemas embebidos a un nivel superior

Lector de huellas dactilares para control de accesos y registro.

Manejo de Entrada-Salida. Arquitectura de Computadoras

Sistemas Operativos I

Compatibilidad de Cisco Secure ACS para Windows

20415B Implementar una Infraestructura de Escritorio Windows Server 2012

Esquema de los Sistemas y Aplicaciones. CleanTec Esquema de los Sistemas y Aplicaciones cleantecsoftware.com - Tlf:

Introducción a los ordenadores

Instalación Oracle Service Cloud

Diseño de Operadores Aritméticos en Punto Flotante usando FPGAs

Introducción a Extreme Programming

Estructura del Computador

Desafíos de las pilas en equipos electrónicos portátiles. Escrito por gm2 Viernes, 08 de Abril de :39

IFCT0610 Administración y Programación en Sistemas de...

Topología de red: Topología en Malla

Aumente su velocidad y flexibilidad con una implementación del software de SAP en la nube gestionada

SISTEMAS OPERATIVOS GRUPO 3621 CLASE 05 DE OTUBRE DE 2011 DOCENTE:- ING. ANA LIDIA BARCENAS CORTES

Capítulo 9. Implementación en VHDL y síntesis en FPGA

SENSE Servidor Unidades de Operación y Control

CAPÍTULO 4 GESTORES DE CONTENIDOS

Introducción a Linux

FPGAs. Susana Borromeo Área de Tecnología Electrónica. Diseño de Sistemas Electrónicos. 2014/2015. Metodología de Diseño. Características generales

S.O. GNU/Linux. Tema 1 SRI. Vicente Sánchez Patón. I.E.S Gregorio Prieto

Introducción a los dispositivos de lógica programable en campo (FPGA) Laboratorio de diseño digital

PERFIL COMPETENCIA ANALISTA DESARROLLADOR DE APLICACIONES DE SOFTWARE (TIC-PROG)

V 1.0. Ing. Juan C. Guarnizo B.

Tarjeta Entrenadora EA128 Aplicación académica

SERVICIO DE TERMINAL REMOTO

La virtualización como alternativa

Módulo 2: Cómo funcionan las computadoras

1. El "cerebro" de la computadora, el CPU, consiste principalmente de varios millones de pequeños interruptores electrónicos, llamados transistores.

Sistema de Buses en una PC

Investigación sobre herramientas de Codiseño Hardware-Software

Arquitectura y Componentes del PC

Microsoft Access 2003 (Completo)

Profesor Santiago Roberto Zunino. Página 1

Diseño de Sistemas Electrónicos

Elementos del microprocesador

Solucionar fallas en computadoras PC. Instalar y configurar Sistemas Operativos. Actualizar computadoras PC. Optimizar rendimiento de Monitores

Ministerio de Educación, Cultura y Deporte. Moodle

AS/400e. Client Access Express - Iniciación

La memoria. Sistemas Informáticos y Computación. Facultad de Administración y Dirección de Empresas

Bienvenido al presente en tecnología de Hospedaje Web

Transcripción:

Implementación de sistemas integrados Linux basados en el procesador Leon 2 Hipólito Guzmán Miranda, Jonathan Tombs y Miguel Ángel Aguirre Echánove Departamento de Tecnología Electrónica, Universidad de Sevilla Escuela Superior de Ingenieros Camino de los Descubrimientos, s/n. Sevilla hipolitoguzman@gmail.com, jon@gte.esi.us.es, aguirre@gte.esi.us.es Resumen. Al diseñar un sistema integrado, es necesario alcanzar un compromiso entre el coste del sistema, su capacidad y sus posibilidades futuras de ampliación. En el presente artículo se propone una solución basada en Linux ejecutándose sobre una implementación del procesador Leon 2. Esta solución permite considerar sistemas que, por su bajo coste, código abierto, y facilidad de expansión se plantean como una alternativa interesante para la implementación de sistemas integrados. 1. Introducción En los últimos años, los sistemas integrados han venido experimentando un crecimiento tanto en potencia de procesado como en el alcance de sus posibles aplicaciones. Hoy día, son muchas las opciones entre las que el diseñador puede elegir a la hora de diseñar un sistema de este tipo, entre estas decisiones, el diseñador ha de optar por utilizar un procesador concreto, y decidir también si hacer uso o no de lógica programable. Los system on chip permiten implementar, en un único dispositivo, sistemas complejos que antes necesitaban de varias pastillas en la misma placa. Al utilizar una FPGA en lugar de un microprocesador comercial, esta FPGA cumple una doble función: puede servir tanto para hacer prototipado de un ASIC como para ser directamente un sistema final. Además, en muchos casos puede ser deseable la capacidad de añadir funcionalidad nueva al sistema, ya sea por tener la posibilidad de ampliar sus prestaciones una vez que el sistema ha sido desplegado, o por la conveniencia de poder utilizar la misma plataforma hardware para desarrollar soluciones para muy distintas aplicaciones. Una única plataforma hardware puede ser adaptada a diferentes aplicaciones, con la posibilidad de ser optimizada para el problema concreto sobre el que se esté trabajando. Existen diferentes paquetes comerciales para diseño de SoC, como Xilinx EDK o Altera Nios II IDE, que facilitan la tarea del diseñador de sistemas integrados, proporcionando softcores propietarios y herramientas para implementarlos en la FPGAs del fabricante. Estas soluciones comerciales tienen ciertas limitaciones, entre ellas las más importantes son que los softcores que implementan son dependientes del hardware concreto del fabricante y que dichos softcores son de código cerrado. Esto impide utilizar las FPGAs como sistema de prototipado previo a la fabricación de un ASIC, o utilizar un softcore de un fabricante en una FPGA de otro, ya que no podemos fabricar ASIC con un Microblaze ni meter Nios en FPGAs de Xilinx, por ejemplo. Además, para un diseñador que aborde proyectos de bajo presupuesto, el coste de los paquetes de software puede ser prohibitivo. La solución que se propone en este artículo al problema se basa en el procesador Leon 2, un modelo sintetizable de un procesador de 32 bits conforme a las especificaciones del juego de instrucciones Sparc V8[5]. Las fuentes completas de este procesador se distribuyen bajo licencia GNU LGPL, junto con las herramientas necesarias para la correcta configuración del modelo. La síntesis del procesador Leon 2 se ha realizado en FPGAs Atmel, Xilinx, Altera y Actel. Además, ha sido optimizado e implementado en varias tecnologías de ASIC. Además, el procesador implementa el bus AMBA (Advanced Microcontroller Bus Architecture) 2.0, lo que permite añadir periféricos al procesador de forma sencilla[1]. ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 11

Para la parte software del sistema integrado, nos decantamos por usar Linux, por ser un sistema de código abierto y de gran robustez y flexibilidad, como se comentará más adelante. Es por todo esto por lo que se propone como alternativa para el diseño e implementación de sistemas integrados una solución basada en Linux y el procesador Leon 2. La figura 1 recoge la estructura de una aplicación típica desarrollada sobre esta solución. Figura 1. 2. Plataforma Diagrama de bloques de la solución propuesta. La plataforma sobre la que se ha implementado el sistema es la placa de desarrollo XSV-800 de Xess[6]. Esta plataforma nos permite demostrar un sistema mínimo sobre una FPGA Virtex XCV800, de aproximadamente 800000 puertas equivalentes, contando las RAM internas como puertas equivalentes. Tanto la FPGA como la placa de desarrollo están ya descatalogadas, y los recursos en la placa están bastante limitados en relación a lo disponible hoy en día. La placa de desarrollo dispone únicamente 2MB de memoria SRAM, que se han de compartir entre la imagen desde la que se arrancará el sistema operativo y la memoria disponible para los procesos del sistema. Ha sido necesario reconfigurar la CPLD presente en la placa para permitir el acceso por el puerto serie al procesador que implementaremos en la Virtex. Esto es indispensable para nuestro sistema, ya que el sistema operativo que introduciremos en la placa de desarrollo mapeará su entrada y salida de consola a través del puerto serie. 3. Procesador Leon 2 El procesador Leon[3] es una implementación en VHDL de un procesador de 32 bits compatible con el juego de instrucciones Sparc V8, desarrollado para la Agencia Espacial Europea y mantenido en la actualidad por Gaisler Research. Entre sus características se puede destacar: Cachés de instrucción y datos independientes Alu para mutiplicación y división hardware Interfaz para unidades de coma flotante y coprocesadores Bus AMBA 2.0 Controlador de interrupciones Controlador de memoria para SDRAM en modo 32 bits y SRAM y ROM en modos configurables de 8, 16 o 32 bits Puerto de entrada y salida de 16 bit Dos UARTs Dos timers de 24 bits Unidad de Soporte de Depuración (DSU) El procesador Leon no sólo es de código abierto, sino que además no está ligado a ninguna tecnología de FPGA concreta. El bus AMBA hace muy sencillo extender la funcionalidad del procesador añadiendo módulos hardware. Incluso permite reutilización de código hardware, tanto del propio que desarrolle el diseñador como de módulos IP de otros desarrolladores. El mercado de propiedad intelectual pone al alcance de cualquier diseñador una biblioteca enorme de diferentes periféricos y unidades de proceso de datos [4]. Debido a la gran aceptación que tiene el bus AMBA en la industria, se pueden encontrar módulos hardware ya preparados para su conexión a dicho bus. 4. Flujo de Diseño El flujo de diseño a la hora de crear el sistema integrado basado en softcore comprende tanto el uso de herramientas de síntesis de hardware como de compilación de software y generación de la imagen RAM que ejecutará nuestro sistema. De forma detallada, los pasos seguidos en nuestro caso han sido: Configuración del modelo del procesador Leon 2 utilizando las herramientas basadas en tk (ver figura 2) que vienen con el mismo, para seleccionar los atributos para que ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 12

funcione adecuadamente en nuestra plataforma, periféricos del procesador necesarios para nuestra aplicación, como las memorias caché de instrucciones y datos, o interfaces para la RAM disponible. Síntesis e implementación del procesador utilizando Xilinx ISE. Programación del diseño hardware en la FPGA Virtex utilizando las herramientas de XESS para programación de la placa. Configuración de la distribución de Linux: versión del núcleo, biblioteca estándar C, opciones del núcleo y aplicaciones específicas (también con una herramienta basada en tk). Compilación del software y generación de la imagen RAM que cargaremos en la placa de desarrollo. Programación de la RAM de la placa y arranque de nuestro sistema Linux. Figura 2. Herramienta de configuración del procesador Leon 2. Captura de pantalla de la configuración de las memorias caché on-chip. 5. Snapgear Linux Utilizar un sistema operativo en nuestro sistema integrado, en lugar de programar directamente las rutinas específicas de nuestra aplicación en código ensamblador, ofrece una serie de ventajas, siendo la más importante la capacidad de tener múltiples tareas ejecutándose en el microprocesador. Para nuestro sistema, se ha decidido utilizar Snapgear Linux, una distribución de linux específica para sistemas integrados con soporte para la familia de procesadores Leon. Linux es un sistema operativo muy conocido, maduro y con soporte, multitarea, con posibilidad de trabajo en tiempo real, y con muchas aplicaciones estables que se pueden utilizar sin que sea necesario modificarlas. Con respecto a otros sistemas operativos para sistemas integrados, Linux para sistemas integrados tiene la ventaja de presentar la misma interfaz a las aplicaciones que su versión para ordenadores personales, de forma que es posible utilizar, para el desarrollo de las aplicaciones, una plataforma muy semejante, con un entorno de ejecución y herramientas muy similares (las mismas), a las que luego estarán disponibles en el sistema integrado. El desarrollo y la posterior depuración de las aplicaciones son mucho más sencillos para el diseñador cuando el sistema operativo y el entorno de ejecución son los mismos en el PC de desarrollo y en el sistema final. Además, Linux, al ser un sistema UNIX, es un sistema que ofrece la posibilidad de realizar actualizaciones del software desde dentro del mismo, es decir, si el sistema dispone de suficiente memoria, es posible instalar el compilador c (gcc) y recompilar las aplicaciones que necesitemos modificar, sin parar el sistema ni las aplicaciones que no se modifiquen. Para que un sistema operativo como linux pueda funcionar en un procesador, normalmente es necesario que dicho procesador disponga de una unidad de manejo de memoria (MMU), que se encarga de dar a cada proceso un espacio de memoria protegida, y de proteger al kernel de los procesos. Además, la MMU se encarga de realizar la traducción de las direcciones de memoria virtuales a direcciones físicas antes de cada acceso a memoria, presentando al núcleo y a los procesos una interfaz estándar para el acceso a memoria. Afortunadamente existen versiones del núcleo de linux que han sido adaptadas para su uso en procesadores que carecen de MMU [2]. Snapgear Linux ofrece la posibilidad de ejecutar kernels tanto para sistemas con unidades de manejo de memoria tanto para sistemas que carecen de ella. ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 13

El procesador leon 2 incluye una unidad de manejo de memoria que se puede implementar si le da la opción correspondiente en el menú de configuración del procesador, con el consecuente incremento del tamaño del diseño. Dado que la plataforma utilizada tiene ciertas limitaciones, ha sido necesario sintetizar el procesador sin unidad de manejo de memoria, por lo que finalmente se ha configurado el sistema Linux con un kernel con soporte para sistemas non-mmu. Concretamente, en la implementación aquí descrita se ha utilizado un kernel 2.0.39 con este soporte. La herramienta de configuración (ver figura 3) ofrece la posibilidad de ajustar las opciones del núcleo Linux que se implementarán, así como las aplicaciones que se compilarán en el sistema, de forma que se puede ganar espacio eliminando las funcionalidades que no se necesiten. 6. Resultados Se ha conseguido implementar un sistema mínimo Linux ejecutándose sobre el procesador Leon 2 en nuestra plataforma. En la figura 4 se aprecia la salida de consola del sistema. La ocupación de la FPGA, tras una síntesis con bajo esfuerzo de optimización, es del 76% de los slices, por lo que queda espacio para añadir nuevos periféricos para aplicaciones concretas. El procesador funciona a 20MHz. La ocupación en RAM de la imagen de Linux es de poco más de 600KB, por lo que queda más de 1MB de memoria para uso de las aplicaciones. Esta experiencia nos ha demostrado que necesitamos que quede al menos 1MB libre de RAM para correr un sistema Linux mínimo. A medida que aumentemos las aplicaciones disponibles en el sistema, este requirimiento aumentará también. Se ha ejecutado el benchmark dhrystone (versión 2.1, lenguaje C) sobre nuestro sistema, obteniéndose un resultado de 21190.9 dhrystone/s. Figura 3. Herramienta de configuración de Snapgear. En la imagen se puede apreciar el menú que permite configurar el controlador de memoria. Snapgear linux permite añadir de forma sencilla aplicaciones específicas, que se compilarán junto al resto del sistema. Ya que el entorno utilizado comprende lenguaje C, las herramientas de desarrollo UNIX normales (gcc, make) y el API de un sistema POSIX, existen muchas facilidades para la reutilización del código. Esto, unido a, como se ha comentado anteriormente, que el entorno de ejecución final es el mismo que el de desarrollo de la aplicación, permite construir versiones integradas de aplicaciones previamente desarrolladas sobre ordenadores personales. Figura 4. Captura de pantalla del programa minicom, a través del cual establecemos una comunicación serie con el sistema integrado. En la imagen se puede apreciar el shell del sistema tras un arranque satisfactorio. ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 14

7. Conclusión Se ha demostrado que, sobre un hardware limitado, se puede implementar un sistema mínimo con una buena potencia de procesado sin incurrir en grandes costes de licencia. Hoy en día las FPGAs soportadas por la versión gratuita de Xilinx Webpack son suficientemente potentes como para soportar el procesador Leon 2. Esto permite a empresas y grupos de desarrollo pequeños y medianos experimentar con este tipo de soluciones sin más gastos que los de la plataforma hardware que, por otro lado, son inevitables. En una plataforma que tuviera más memoria disponible, se podría añadir fácilmente al sistema soporte robusto para TCP/IP, por lo que una solución basada en Linux ejecutándose sobre el procesador Leon 2 podría establecer conexiones de red, o incluso ser controlada por una interfaz web para configuración y mantenimiento on-line. En aplicaciones que hagan uso de los protocolos TCP/IP puede ser deseable añadir al procesador Leon 2 la unidad de manejo de memoria, ya que estas aplicaciones conllevan mucha más carga para el sistema y sin la MMU el rendimiento será mucho menor. Además, la posibilidad de reutilización de código hardware y software permite reducir drásticamente los tiempos de desarrollo. Referencias [1] ARM Limited: AMBA Specification, Rev 2.0 [2] Durrant, M. and Leslie, M. How uclinux provides MMU-less processors with an alternative. Embedded.com, December 2002. [3] Gaisler Resarch. Leon2 XST User's Manual [4] Gaisler, J. An open-source VHDL IP library with Plug&Play configuration. IFIP Congress Topical Sessions 2004: Toulouse, France [5] SPARC International, Inc. The SPARC Architecture Manual [6] X Engineering Software Systems Corporation. XSV Board v1.1 Manual ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 15