entorno de desarrollo para soc`s basados en el microprocesador

Anuncio
ENTORNO DE DESARROLLO PARA SOC'S BASADOS
EN EL MICROPROCESADOR LEON2
E. Ostúa, J. Viejo, M. J. Bellido, J. Juan, A. Millán, P. Ruiz-de-Clavijo y D. Guerrero
Instituto de Microelectrónica de Sevilla – Centro Nacional de Microelectrónica
Av. Reina Mercedes, s/n (Edificio CICA) – 41012 Sevilla (España)
Tel.: +34 955056666 – Fax: +34 955056686
http://www.imse.cnm.es
Departamento de Tecnología Electrónica – Universidad de Sevilla
Av. Reina Mercedes, s/n (E.T.S. Ingeniería Informática) – 41012 Sevilla (España)
Tel.: +34 954556161 - Fax: +34 954552764
http://www.dte.us.es
{ ostua ; julian ; bellido ; jjchico ; amillan ; paulino ; guerre } @dte.us.es
coste, aumento de prestaciones, mayor velocidad y menor
consumo, se suma el que este tipo de sistemas nos ofrece
una combinación de software y hardware, para conseguir
productos de altas prestaciones comparados con los
sistema típicos en los que se combinan diferentes chips.
ABSTRACT
Se presenta en este documento una demostración práctica
del entorno software para el desarrollo de aplicaciones
SoPC basados en LEON2, un microprocesador libre de 32
bits conforme a la arquitectura SPARC v8 y diseñado con
unas características que lo hacen ideal para su uso en
aplicaciones empotradas. Se presentará tanto las
herramientas de configuración, simulación y síntesis del
hardware del micro, como las de diseño del software
(compiladores de C/C++, kernels, debuggers/monitores y
hasta un completo emulador). Al final de la demostración
se podrá probar el funcionamiento del sistema en
hardware real, gracias al empleo de una placa de
desarrollo provista de una FPGA de Xilinx.
Este tipo de sistema altera el flujo tradicional de diseño de
circuitos integrados digitales ya que, en los SoPC, deben
combinarse procesos de diseño de hardware con procesos
de elaboración y depuración del software que ejecute el
microprocesador. Esto básicamente nos lleva a que el
microprocesador que pretendemos emplear para el SoPC
no solo debe ser implementable en un chip, sino que
además debe poseer todo un entorno de desarrollo y de
verificación del software que, en la medida de lo posible,
debe estar integrado con las herramientas de diseño
hardware.
1. INTRODUCCIÓN
Actualmente cuando se pretende implementar un SoPC en
una FPGA existen algunas alternativas como son el caso,
en las familias de Xilinx [1], de los microprocesadores
MicroBlaze (familias Spartan y Virtex) o PowerPC
(familia Virtex-II Pro). Para estos micros Xilinx ha
desarrollado el entorno EDK (Embedded Development
Kit). Este entorno permite la configuración del
microprocesador para diseñarlo a medida de las
necesidades de la aplicación. Además permite incluir el
software para poder realizar una co-verificación
hardware/software, ya que EDK se integra con el entorno
ISE de diseño e implementación de hardware en FPGA's
de Xilinx. Una de las restricciones importantes de estos
dos microprocesadores, junto con EDK, es que no es
El avance tecnológico en el campo de la microelectrónica
permite implementar un sistema prácticamente completo
en un único chip; estos son los denominados SoC
(System-on-Chip). En el ámbito de los sistemas digitales
son especialmente interesantes los SoC basados en
microprocesadores, SoPC (System-on-a-ProgrammableChip). En ellos se 'empotra' en el chip una arquitectura
típica de un computador, con lo que estamos dotando al
sistema de la potencialidad que supone desarrollar
software para las aplicaciones específicas que vaya a
implementar el sistema. Es decir, a las ventajas que
supone ya de por sí la integración de un sistema, esto es,
la reducción del área, que lleva aparejado la reducción del
1
Figura 1 - Arquitectura del microprocesador LEON2
posible implementar el SoPC, diseñado y verificado sobre
FPGA, en un ASIC.
2. EL MICROPROCESADOR LEON2
LEON2 [2] es un microprocesador de 32 bits de libre uso
y modificación, diseñado completamente empleando
VHDL sintetizable, es conforme a la arquitectura
SPARCv8 [3] y resulta altamente configurable y
facilmente extensible al usar un único bus onchip como es
el standard AMBA-2.0 AHB/APB [4]. Todo esto le hace
particularmente interesante para el desarrollo de
aplicaciones SoPC (System-on-a-Programmable-Chip).
En este trabajo vamos a analizar el caso de un
microprocesador de código abierto como es el LEON2
[2], el cual si es posible implementarlo en cualquier
tecnología. El objetivo del trabajo es mostrar cómo es la
metodología de diseño de SoPC basados en LEON2. Así,
el apartado siguiente está dedicado a presentar las
características básicas de LEON2, para después, en el
apartado 3, presentar la metodología de diseño basada en
LEON2. En este apartado analizaremos los dos aspectos
importantes del diseño de un SoPC como son el diseño de
hardware y el de software, estableciendo la metodología
en función de las distintas herramientas que actualmente
están disponibles para trabajar con LEON2, la mayoría de
ellas herramientas de libre distribución y, por tanto,
accesibles a ellas de una forma asequible. El trabajo se
plantea, en el apartado 4, como una demostración en la
que se va a mostrar, de una forma práctica, la
metodología presentada, haciendo uso de las herramientas
descritas, y finalmente la verificación en hardware real de
un sistema empotrado, implementandolo en una FPGA de
Xilinx.
Fue desarrollado inicialmente por la Agencia Espacial
Europea [5] y actualmente es mantenido por Gaisler
Research [6]. Posee licencia GNU LGPL [7] lo que da
plena libertad de distribución, extensión y modificación.
Desde el punto de vista de la arquitectura, LEON2 está
diseñado pensando en las aplicaciones empotradas, y
cuenta con las siguientes características principales:
•
•
•
•
•
•
2
arquitectura hardvard de 32 bits
caches separados de instrucciones y de datos
conforme con SPARCv8, con pipeline de 5 etapas
multiplicador y divisor por hardware configurable
unidad de gestión de memoria, MMU
interfaz a memorias PROM, SRAM y SDRAM.
Figura 2 - Flujo de Diseño de Aplicaciones SoPC basadas en LEON2
•
•
•
•
•
•
•
•
•
•
memoria RAM onchip
controlador de interrupciones
unidad de debug onchip, DSU
dos timers de 24 bits
controladores de UARTs
watchdog y función de power-down
puerto de E/S de 16 bits
controlador ethernet 10 myspell-es openoffice.orghelp-es/100 MAC
interfaz PCI
interfaz con unidades de FPU y coprocesadores
Compiler [8], Synopsys-DC [8] y Synplify [9], aunque es
fácilmente adaptable a otras herramientas de síntesis. En
esta demostración nos basaremos en la versión de LEON2
sintetizable sobre FPGA's (LEON2-XST [2]).
El rendimiento que se alcanza con una configuración
típica de LEON2 es de unos 0.85 dhrystone-MIPS/Mhz
3. METODOLOGÍA DE DISEÑO DE
APLICACIONES SOPC CON LEON2
Para realizar nuestra aplicación SoPC (System-on-aProgrammable-Chip) basada en LEON2 nos plantearemos
un flujo de diseño con un doble camino, por una parte la
configuración y simulación del hardware, con su núcleo
formado por el microprocesador LEON2 y los módulos y
controladores adicionales que necesitemos, y por otra
parte el diseño del software que ejecutará la aplicación
concreta en este micro. La figura 2 muestra en detalle la
metodología de diseño a emplear.
En la figura 1 se puede observar un diagrama de bloques
de LEON2 con sus módulos principales. Todas estas
bloques funcionales son altamente parametrizables y
muchos además son opcionales, por lo que en función de
la aplicación que diseñemos obtendremos un soft core de
distinto tamaño y complejidad. Se puede extender la
funcionalidad con módulos que usen los buses AHB/APB
de AMBA-2.0.
A continuación describiremos un conjunto completo de
aplicaciones que podemos utilizar para todos los pasos del
proceso de diseño de nuestra aplicación SoPC basada en
LEON2. La mayoría de ellas son de libre distribución
bajo licencia GNU, salvo que se especifique lo contrario.
Comenzaremos viendo las aplicaciones que incluye el
propio paquete del LEON2, dónde a través de comandos
'make' podremos configurar y simular nuestro micro.
El microprocesador LEON2 soporta ser simulado con la
herramienta de Synopsys VSS [8], Cadence Ncsim [9],
GNU GHDL [10] (experimental) o con Modelsim, de
Mentor Graphics [11]. También trae unos testbenchs
genéricos y programas de prueba para usar con estas
herramientas de forma sencilla.
LEON2 puede ser implementado tanto en FPGAs como
en ASICs. Viene preparado para ser sintetizado con las
herramientas de Xilinx XST [1], Synopsys FPGA-
3
3.1. Diseño del Hardware.
Para configurar el microprocesador y
elegir los módulos onchip que
necesitaremos
para
nuestra
aplicación, LEON2 se dispone de una
herramienta gráfica desarrollada en
TCL/TK y similar a la que se utiliza
para configurar el kernel de Linux.
Está disponible para Unix/Linux y
Windows/CYGWIN [13]. A través de
una serie de menús inteligentes
podemos seleccionar cómo queremos
parametrizar nuestro procesador.
Como alternativa a esta herramienta,
siempre se puede realizar esta
configuración modificando un fichero
de texto que contiene todos los
parámetros del modelo VHDL.
Si deseamos realizar una simulación
del micro una vez configurado
tenemos la opción de hacerlo a través
del mismo Makefile y otros scripts
que incluye LEON2, tanto para
Unix/Linux cómo Windows. Están
soportados la compilación del modelo
para los simuladores VSS, NCsim,
Vsim y GHDL. Es posible también
realizar una simulación post-síntesis.
Para realizar la síntesis debemos usar
alguna herramienta comercial como
Xilinx XST, Synopsys FPGACompiler, Synopsys-DC o Synplify.
Figura 3 - Emulador de LEON2 enlazado con GNU gdb, corriendo sobre Eclipse.
En nuestro caso usaremos la
herramienta de Xilinx ya que
SPARC v8, cualquier compilador y kernel que exista para
pretendemos trabajar con FPGA's de esa compañía y
este podrá ser utilizado. En cualquier caso Gaisler
contamos con un presupuesto pequeño. Para esta
Research [5] dispone de dos compiladores cruzados de
herramienta disponemos de un fichero de proyecto que
C/C++ de libre distribución, BCC y RCC. Ambos están
podemos importar en Xilinx ISE 6.3 y trabajar cómo si de
basados en las utilidades binutils y compiladores GNU de
cualquier otro proyecto se tratase, al disponer de todos los
C/C++, si bien BCC (Bare-C Cross Compiler) está más
fuentes de LEON2 en formato VHDL sintetizable; aunque
orientado a desarrollos sencillos y secuenciales mientras
también podemos hacer toda la síntesis e implementación
que RCC (Rtems Cross Compiler) está basado en el
de forma más rápida mediante unos scripts que incluye el
kernel en tiempo real RTEMS [14], lo que permite
propio LEON2, que realizan todos los pasos necesarios.
además el trabajar con aplicaciones multithread.
Además hay una serie de placas de prototipado con
FPGA's soportadas por LEON2 y con plantillas de diseño
También es interesante destacar que existe un plugin para
preconfiguradas.
manejar estos compiladores desde Eclipse [15], un
entorno de desarrollo integrado (IDE), de forma que
3.2. Diseño del Software.
podemos trabajar con este entorno gráfico como si de un
Para compilar al software que correrá en nuestro sistema
completo compilador visual se tratase.
empotrado, al ser LEON2 conforme a la arquitectura
4
placa de desarrollo, comprobándose así el funcionamiento
de la aplicación SoC en hardware real.
Es posible disponer también de Linux, con la distribución
Snapgear [16], pensada para aplicaciones empotradas,
corriendo un kernel 2.6 portado para LEON2 con el
módulo gestor de memoria MMU. Si no nos interesa en
nuestro diseño dicho gestor también podemos optar por
utilizar el kernel de uClinux [17], basado en el 2.0.
5. AGRADECIMIENTOS
Este trabajo ha sido parcialmente financiado por el
proyecto MCYT META TEC 2004-00840/MIC y el
proyecto MECD/SEEU/DGU PHB2002-0018-PC del
Gobierno Español.
En cualquier caso es posible utilizar para depurar nuestro
código el debugger de GNU gdb, con o sin una interfaz
gráfica como el DDD. Esta depuración es posible hacerla
bien sobre el sistema real implementado en hardware, por
ejemplo en una FPGA, o bien sobre un emulador.
6. REFERENCIAS
[1] MicroBlaze, PowerPC, EDK, ISE, XST y familias Spartan y
Virtex de FPGA's, de Xilinx Inc, http://www.xilinx.com/
Por último destacar que Gaisler Research ha desarrollado
también un monitor para debugging, GRMON, y un
completo emulador de LEON2, TSIM, ambos con
versiones de evaluación disponibles para fines no
comerciales. Con ellas se puede monitorizar al detalle un
microprocesador LEON2 corriendo en un hardware real si
incluimos un módulo de debug onchip DSU en la
configuración del mismo, o bien un LEON2 corriendo en
el emulador TSIM. Ambas herramientas poseen también
una interfaz con el debugger de GNU gdb. Por último,
GRMON dispone también de un plugin para Eclipse, para
dotar de una interfaz gráfica al mismo. En la figura 3 se
muestra una captura de pantalla del monitor de LEON2,
GRMON, corriendo en Eclipse.
[2] “LEON2 Processor User's Manual, XST Edition”, Gaisler
Research, http://www.gaisler.com/doc/leon2-1.0.26-xst.pdf
[3] “The SPARC Architecture Manual, v8”, Sparc International
Inc. http://www.sparc.org/
[4] “Advanced Microcontroller Bus Architecture (AMBA)
Specification, v2.0”, ARM Limited. http://www.arm.com/
[5] European Space Agency (ESA), http://www.esa.int/
[6] Gaisler Research, http://www.gaisler.com/
[7] LGPL: GNU Lesser General Public License. Versión al
castellano en http://gugs.sindominio.net/licencias/lgpl-es.html
[8] VHDL System Simulatiro (VSS), FPGA Compiler y Design
Compiler (DC), de Synopsys Inc. http://www.synopsys.com/
4. DEMOSTRACIÓN PRÁCTICA
La demostración que se plantea en este trabajo es una
visión práctica y rápida del flujo de diseño completo de
aplicaciones empotradas en SoPC basadas en LEON2, y
la comprobación instantánea del resultado obtenido en
hardware real, gracias al empleo de una FPGA.
[9]
Ncsim,
de
http://www.cadence.com/
NC-VHDL
de
Cadence.
[10] GHDL, GNU VHDL Simlator v1.6, http://ghdl.free.fr/
[11] Modelsim, de Mentor Graphics, http://www.model.com/
Para aprender la metodología de diseño de aplicaciones
con LEON2 se propone trabajar en un PC con Linux con
todas las herramientas descritas instaladas en el mismo y
con una serie de ejemplos sencillos prediseñados. Se
podrá, por una parte, realizar la configuración y
simulación del hardware del microprocesador, y también
realizar todo el flujo de diseño software, a partir de
pequeños programas en C que servirán para comprobar el
funcionamiento del sistema empotrado.
[12] Synplify, de Synplicity Inc., http://www.synplicity.com/
[13] CYGWIN, GNU+Windows, http://www.cygwin.com/
[14] RTEMS: Real-Time Operating System for Multiprocessor
Systems, http://www.rtems.com/
[15]
Eclipse
Platform
Techincal
Overview,
http://www.eclipse.org/whitepapers/eclipse-overview.pdf
Por último, una vez terminado el doble flujo diseño, se
podrá comprobar su funcionamiento tanto en el emulador
de LEON2 como mediante su programación en una
FPGA de la familia Virtex-2 de Xilinx integrada en una
[16] SnapGear Embedded Linux, http://www.snapgear.org/
[17] uClinux, Embedded
http://www.uclinux.org/
5
Linux/Microcontroller
Project,
Descargar