<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2227-1899</journal-id>
<journal-title><![CDATA[Revista Cubana de Ciencias Informáticas]]></journal-title>
<abbrev-journal-title><![CDATA[Rev cuba cienc informat]]></abbrev-journal-title>
<issn>2227-1899</issn>
<publisher>
<publisher-name><![CDATA[Editorial Ediciones Futuro]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2227-18992013000100006</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Linux embebido en FPGA para sistemas de monitoreo industrial]]></article-title>
<article-title xml:lang="en"><![CDATA[Ebedded linux on FPGA for industrial monitoring systems]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Calleja Acosta]]></surname>
<given-names><![CDATA[Pedro E.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Iglesias Martínez]]></surname>
<given-names><![CDATA[Miguel E.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Carmona Martínez]]></surname>
<given-names><![CDATA[José F.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Centro de Desarrollo de la Electrónica y la Automática (CDAE)  ]]></institution>
<addr-line><![CDATA[Pinar del Río ]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>03</month>
<year>2013</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>03</month>
<year>2013</year>
</pub-date>
<volume>7</volume>
<numero>1</numero>
<fpage>44</fpage>
<lpage>54</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992013000100006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992013000100006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992013000100006&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[Actualmente la obtención en Field Programmable Gate Array de módulos independientes para aplicaciones específicas de monitoreo industrial, ha hecho que su reutilización e integración sea compleja y que los tiempos de desarrollo y puesta a punto de los mismos sean considerablemente elevados. En este trabajo se propone una solución a este problema basada en embeber Linux en un Field Programmable Gate Array, específicamente utilizando el kit Spartan3AN. Las herramientas de codiseño hardware/software utilizadas para lograr este objetivo han permitido tener resultados a corto plazo que indican el enfoque para futuras investigaciones, de manera que se logró ejecutar aplicaciones de uso general para el control de ip-cores empotrados en hardware reconfigurable. La plataforma obtenida es estable y flexible a futuras implementaciones tanto de software como de hardware.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[Currently obtaining independent Field Programmable Gate Array modules for specific applications has made complex their reuse and integration, also, development time and tuning of these are considerably high. In this paper work we propose a solution for this problem based on embedding Linux on a Field Programmable Gate Array, specifically using the Spartan3AN kit. Hardware/software co-design tools used to achieve this goal have permitted getting results in short time that indicates which the focus for future research is. This way it was possible to run applications commonly used to control IP-cores embedded in reconfigurable hardware. The platform obtained is stable and flexible for future deployments of both software and hardware.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[fpga]]></kwd>
<kwd lng="es"><![CDATA[Linux]]></kwd>
<kwd lng="es"><![CDATA[MicroBlaze]]></kwd>
<kwd lng="es"><![CDATA[Spartan3AN]]></kwd>
<kwd lng="es"><![CDATA[sistemas embebidos]]></kwd>
<kwd lng="en"><![CDATA[embedded systems]]></kwd>
<kwd lng="en"><![CDATA[FPGA]]></kwd>
<kwd lng="en"><![CDATA[Linux]]></kwd>
<kwd lng="en"><![CDATA[MicroBlaze]]></kwd>
<kwd lng="en"><![CDATA[Spartan3AN]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ART&Iacute;CULO    ORIGINAL</B></font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="4"><b>Linux embebido    en FPGA para sistemas de monitoreo industrial</b></font></p>     <p>&nbsp;</p>     <P><font face="Verdana, Arial, Helvetica, sans-serif"><b><font size="3"><B>Ebedded    linux on FPGA for industrial monitoring systems</B></font></b> </font>      <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><B>Pedro E. Calleja    Acosta<sup>*</sup>, Miguel E. Iglesias Mart&iacute;nez, Jos&eacute; F. Carmona    Mart&iacute;nez</B></font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CDEA. Centro de    Desarrollo de la Electr&oacute;nica y la Autom&aacute;tica, km 2 &frac12;, Carretera    al Aeropuerto &Aacute;lvaro Barba, Pinar del R&iacute;o, Cuba. <SUP>*</SUP>E-mail:    <a href="mailto:pecalleja@cdea.co.cu">pecalleja@cdea.co.cu</a></font>      <P>&nbsp;</p>     ]]></body>
<body><![CDATA[<P>&nbsp;</p> <hr>     <P><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>RESUMEN</B></font>      <P><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Actualmente la    obtenci&oacute;n en <em>Field Programmable Gate Array</em> de m&oacute;dulos    independientes para aplicaciones espec&iacute;ficas de monitoreo industrial,    ha hecho que su reutilizaci&oacute;n e integraci&oacute;n sea compleja y que    los tiempos de desarrollo y puesta a punto de los mismos sean considerablemente    elevados. En este trabajo se propone una soluci&oacute;n a este problema basada    en embeber Linux en un <em>Field Programmable Gate Array</em>, espec&iacute;ficamente    utilizando el <em>kit</em> Spartan3AN. Las herramientas de codise&ntilde;o hardware/software    utilizadas para lograr este objetivo han permitido tener resultados a corto    plazo que indican el enfoque para futuras investigaciones, de manera que se    logr&oacute; ejecutar aplicaciones de uso general para el control de ip-cores    empotrados en hardware reconfigurable. La plataforma obtenida es estable y flexible    a futuras implementaciones tanto de software como de hardware. </font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><B>Palabras clave:    </B>fpga, Linux, MicroBlaze, Spartan3AN, sistemas embebidos.</font>  <hr> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ABSTRACT</b></font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Currently obtaining    independent Field Programmable Gate Array modules for specific applications    has made complex their reuse and integration, also, development time and tuning    of these are considerably high. In this paper work we propose a solution for    this problem based on embedding Linux on a Field Programmable Gate Array, specifically    using the Spartan3AN kit. Hardware/software co-design tools used to achieve    this goal have permitted getting results in short time that indicates which    the focus for future research is. This way it was possible to run applications    commonly used to control IP-cores embedded in reconfigurable hardware. The platform    obtained is stable and flexible for future deployments of both software and    hardware</font>      <P> <font size="2" face="Verdana, Arial, Helvetica, sans-serif"><B>Key words:    </B>embedded systems, FPGA, Linux, MicroBlaze, Spartan3AN.</font>  <hr>     <p>&nbsp;</p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>INTRODUCCI&Oacute;N</b></font></p>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La industria cubana    se encuentra enfrascada en incrementar la eficiencia, sustituir importaciones    y lograr soberan&iacute;a tecnol&oacute;gica en las diferentes esferas nacionales    de la producci&oacute;n y los servicios. Uno de los ejemplos m&aacute;s claros    en este sentido se puede apreciar en la coordinaci&oacute;n nacional para el    desarrollo de tecnolog&iacute;a de monitoreo y diagn&oacute;stico industrial.    </font>      ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La r&aacute;pida    evoluci&oacute;n que ha tenido la electr&oacute;nica digital y el impacto en    el mercado de este tipo de sistemas ha hecho que CDEA preste especial inter&eacute;s    en las nuevas caracter&iacute;sticas y potencialidades de los dispositivos FPGA    (del ingl&eacute;s, Field Programmable Gate Array).    <br>   Actualmente CDEA ha utilizado la tecnolog&iacute;a FPGA para:</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">1. Control de ADC    (del ingl&eacute;s, Analog to Digital Converter) y DAC (del ingl&eacute;s, Digital    to Analog Converter).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">2. Procesamiento    Digital de Se&ntilde;ales.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">3. Interfaces de    comunicaci&oacute;n del sistema general.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La obtenci&oacute;n    de un sistema (basado en FPGA) que integre todas estas funcionalidades, e incluso,    lograr que tales desarrollos puedan servir de manera general en diversas aplicaciones,    constituye una tarea que no ha podido ser materializada hasta el momento: la    tendencia ha sido la creaci&oacute;n de m&oacute;dulos independientes para aplicaciones    espec&iacute;ficas e interconectarlos entre s&iacute;. El problema fundamental    de esto radica en que los m&oacute;dulos obtenidos son muy espec&iacute;ficos,    y su reutilizaci&oacute;n (sobre todo la sincronizaci&oacute;n los m&oacute;dulos)    en aplicaciones diferentes es compleja, adem&aacute;s de que los tiempos de    desarrollo y puesta a punto de los mismos son considerablemente elevados y a&uacute;n    contin&uacute;a siendo largo el camino a transitar para obtener el sistema que    integre las funcionalidades de digitalizaci&oacute;n, procesamiento de se&ntilde;ales    y comunicaci&oacute;n. Este problema se podr&iacute;a hipot&eacute;ticamente    resolver embebiendo en la FPGA un sistema operativo que incluya los controladores    gen&eacute;ricos para manejar los perif&eacute;ricos necesarios del sistema    integral que se pretende alcanzar. Luego, los objetivos trazados en esta investigaci&oacute;n    consisten en embeber Linux en una FPGA, en particular usando el kit de desarrollo    Spartan3AN, y probar la ejecuci&oacute;n de algunas aplicaciones en dicho entorno.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Entre las muchas    aplicaciones de los FPGAs en el campo de los sistemas embebidos est&aacute;    el desarrollo de interfaces para el monitoreo y control de procesos remotos,    una de las ideas v&aacute;lidas ser&iacute;a la utilizaci&oacute;n de un servidor    web que recolecte los datos provenientes de un sistema de sensores, presentando    la informaci&oacute;n en forma coherente e intuitiva, para que, de forma autom&aacute;tica    o supervisada se accionen un conjunto de actuadores seg&uacute;n sea necesario.</font></p>     <p>&nbsp;</p>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><B><font size="3">MATERIALES    Y M<B>&Eacute;</B>TODOS</font></B></font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A continuaci&oacute;n    se brinda una descripci&oacute;n de todos los elementos que intervienen en el    proceso de embeber Linux en FPGA, relacionando las diferentes unidades funcionales.    </font>      ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cuando se habla    de &ldquo;componentes hardware&rdquo; en el marco de esta investigaci&oacute;n,    se hace referencia, no s&oacute;lo a las partes del sistema que se pueden tocar    f&iacute;sicamente, sino adem&aacute;s, aquellas que son descritas e implementadas    por medio de un lenguaje sintetizable, t&iacute;picamente alg&uacute;n HDL (del    ingl&eacute;s, Hardware Description Leanguaje). Indistintamente se usa el t&eacute;rmino    hardware para nombrar una parte f&iacute;sica del sistema o un bloque de l&oacute;gica    reutilizable tambi&eacute;n llamado ip-core.    <br>       <br>   El kit de desarrollo Spartan3AN</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El kit de desarrollo    Spartan3AN es una plataforma de bajo costo, especialmente &uacute;til para entornos    educativos. Su coraz&oacute;n es un FPGA Spartan3AN de 700 mil compuertas. En    la <a href="#f1">Figura 1</a> se muestran con m&aacute;s detalle los componentes    que forman el kit.</font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f1"></a><img src="/img/revistas/rcci/v7n1/f0106113.jpg" width="529" height="437" longdesc="/img/revistas/rcci/v7n1/f0106113.jpg"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este kit es totalmente    compatible con las versiones de las herramientas Xilinx ISE 10 o superiores,    incluida la edici&oacute;n WebPack. Para esta investigaci&oacute;n se utiliz&oacute;    la versi&oacute;n 12.4 de estas herramientas (Xilinx Inc. , 2008).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><B>El procesador    embebido MicroBlaze</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">MicroBlaze es un    procesador soft-core con un n&uacute;mero reducido de instrucciones (RISC),    optimizado para ser implementado sobre los FPGA de Xilinx. A pesar de no tener    el c&oacute;digo fuente disponible permite un alto grado de configuraci&oacute;n.    Sus principales caracter&iacute;sticas son:</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Instrucciones    de 32 bits con tres operandos y dos modos de direccionamiento.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Bus de direcciones    de 32 bits.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Arquitectura    Harvard (Buses de instrucciones y datos separados).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- 32 registros    de prop&oacute;sito general y cinco de prop&oacute;sito especial, ambos de 32    bits.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Soporta pipeline.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Soporta varios    tipos de buses: OPB, PLB, LMB.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">- Cach&eacute;    de instrucciones y datos (Xilinx Inc., 2008).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El procesador MicroBlaze    tiene una arquitectura de memoria Harvard, o sea el acceso a instrucciones y    datos se hace en espacios de direcciones y buses separados. Cada espacio de    direcciones tiene un tama&ntilde;o de 32 bit. Los rangos de memoria de datos    e instrucciones pueden ser mapeados en la misma memoria f&iacute;sica (Herrera,    2008).    <br>       <br>   <B>Memorias</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un sistema embebido    utiliza memoria de dos tipos: RAM y ROM. La RAM ser&aacute; utilizada como memoria    de datos y de instrucci&oacute;n, en esta se ejecutan los programas, se implementa    el sistema de archivos, se guardan las variables y datos de m&uacute;ltiples    tipos. En el caso del sistema operativo, servir&aacute; para todo el manejo    y planificaci&oacute;n de procesos, manejo de interrupciones, intercambio de    datos, entre otros. (Fern&aacute;ndez y Garc&iacute;a, 2005). La ROM se necesita    para poder almacenar las im&aacute;genes del sistema operativo, del sistema    de archivos y del boot-loader as&iacute; como las variables de entorno. La principal    raz&oacute;n para usar memoria de este tipo, en determinado sistema, es que    el sistema funcione correctamente sin interacci&oacute;n humana de ning&uacute;n    tipo una vez se le aplique energ&iacute;a. Se requiere un tipo de memoria no    vol&aacute;til para esto y una determinada configuraci&oacute;n para que el    sistema direccione las im&aacute;genes a cargar.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El kit Spartan3AN    posee memorias RAM y ROM externas al FPGA. La memoria RAM del fabricante Micron    es una DDR2 SDRAM de 512 Mbit y la ROM es una Flash NOR paralela de 32Mbit.    </font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><B>Hardware adicional</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El kit Spartan3AN    incluye varios dispositivos de entrada/salida (E/S), que permiten ser usados    en varios dise&ntilde;os, sin la necesidad de otro componente f&iacute;sico    adicional. Cuatro botones y cuatro conmutadores proporcionan dispositivos de    entrada para uso general y ocho LED proporcionan dispositivos de salida. Para    el manejo de estos dispositivos, se usa el ip-core de Xilinx xps_gpio. El ip-core    XPS GPIO proporciona una interfaz entre dispositivos gen&eacute;ricos de E/S    y el bus PLB. Tiene m&uacute;ltiples opciones de configuraci&oacute;n como son:    ancho del canal, si es entrada, salida o bidireccional, interrupciones etc.    (XILINX, 2010). El kit Spartan3AN posee un puerto serie de dos hilos sobre la    base de un convertidor de voltaje de ST Microelectronics ST3232, que convierte    los niveles de se&ntilde;al utilizada por RS232 a se&ntilde;ales utilizadas    por el FPGA. El puerto serie es &uacute;til para muchas aplicaciones, y, en    particular para el trabajo con el procesador integrado de Xilinx MicroBlaze    como dispositivo est&aacute;ndar de entrada y salida. Para el manejo del puerto    serie, se utilizo el ip-core de Xilinx xps_uarlite. Este proporciona la interfaz    de control para la transferencia asincr&oacute;nica de datos a trav&eacute;s    del puerto serie y el bus PLB. Tiene m&uacute;ltiples opciones de configuraci&oacute;n    como son: velocidad, cantidad de caracteres, bit de parada, paridad, etc. y    adem&aacute;s permite transmitir y recibir de forma independiente (Xilinx, 2010).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El kit Spartan3AN    incluye una interfaz de capa f&iacute;sica Ethernet Standard Microsystems LAN8700    10/100 y un conector RJ-45. Con la implementaci&oacute;n de un MAC (del ingl&eacute;s,    Ethernet Access Controller) en el FPGA, puede conectarse opcionalmente a una    red ethernet est&aacute;ndar. Todos los tiempos tienen como base el oscilador    de cristal del kit de 50 MHz. Esta interfaz de ethernet est&aacute; pensada    principalmente para el uso en aplicaciones con el procesador MicroBlaze. Por    lo tanto, el controlador MAC se implementa en la plataforma EDK usando el ip-core    xps_ethernetlite. El IP Core Ethernet Lite est&aacute; dise&ntilde;ado para    trabajar con las normas descritas en el est&aacute;ndar IEEE 802.3 por medio    de la interfaz MII (del ingl&eacute;s, Media Independant Interface). (Xilinx,    2009).    <br>       <br>   <B>El boot-loader</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Dentro de los componentes    de software se encuentra el boot-loader o gestor de arranque. Este es un programa    sencillo, encargado exclusivamente de preparar todo lo que necesita el sistema    operativo para iniciar. Es com&uacute;n en sistemas embebidos el uso de gestores    de arranque multi-etapas, en los que varios programas peque&ntilde;os se van    sumando, hasta que el &uacute;ltimo de ellos carga el sistema operativo. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En esta investigaci&oacute;n    se ha adoptado la soluci&oacute;n de Petalinux que consiste en dividir el proceso    de arranque en dos etapas, cada etapa es llevada a cabo por dos software diferentes    que en conjunto completan el proceso. En la primera fase se usa FS-boot y en    la segunda U-boot. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">FS-boot es un gestor    de arranque simple desarrollado por PetaLogix, destinado a servir como el mecanismo    de arranque principal cuando se inicia por primera vez el procesador MicroBlaze.    En un escenario t&iacute;pico de ejecuci&oacute;n, el prop&oacute;sito principal    de FS-boot es arrancar el bootloader principal desde memoria flash y permitir    la descarga de im&aacute;genes nuevas (Petalogix, 2009). Su compilaci&oacute;n    y depuraci&oacute;n va ligada al desarrollo del hardware en la plataforma EDK.    El archivo binario a descargar en el FPGA, contiene tanto la configuraci&oacute;n    del hardware como de este peque&ntilde;o software inicializado en los bloques    de RAM (BRAM) interna del dispositivo reprogramable. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">U-boot se conoce    como &ldquo;Universal boot-loader&rdquo; y originalmente fue desarrollado para    la arquitectura PowerPC por Wolfgang Denx. Este ha crecido, dando soporte a    un gran n&uacute;mero de boards y arquitecturas de procesadores, y ahora es    el gestor de arranque de facto para las implementaciones de Linux embebido (Petalogix,    2009). Dentro de las muchas utilidades de este boot-loader se encuentran, comandos:    para manejo de MTD (del ingl&eacute;s, Memory Technology Device), protocolos    de TCP/IP como TFTP, DHCP, NFS, BOOTP y otros, manejo de variables de entorno,    soporta la ejecuci&oacute;n de programas en formato .elf y scripts sencillos    etc. La configuraci&oacute;n se realiza a trav&eacute;s de las directivas del    preprocesador #define en una plantilla que corresponde a la arquitectura determinada.    Su compilaci&oacute;n y desarrollo van unidos al entorno Petalinux. El usuario    decide si cuando crea las im&aacute;genes ejecutables de todo el sistema, incluye    las de U-boot, o puede crear las im&aacute;genes de este de forma separada.    <br>       ]]></body>
<body><![CDATA[<br>   <B>El Kernel &micro;CLINUX</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un Sistema operativo    (SO) o kernel, como tambi&eacute;n se le conoce, es un software que act&uacute;a    de interfaz, entre los dispositivos de hardware y los programas usados para    manejar un ordenador.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&micro;Clinux es    un derivado directo del kernel original de Linux, adaptado para sistemas que    carecen de MMU.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Sus siglas &ldquo;&micro;C&rdquo;    hacen referencia a &ldquo;micro-controlador&rdquo;, para el que fue pensado    en un principio. Se ha optado por &eacute;l en este trabajo debido a que cada    vez es mayor la comunidad de desarrolladores que lo mantienen, adem&aacute;s    de las ventajas que ofrece, como el soporte para Microblaze.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El hecho de que    &micro;Clinux haya sido creado para soportar microprocesadores sin MMU, hace    que la multitarea sea dif&iacute;cil de implementar. La mayor&iacute;a de los    archivos binarios y c&oacute;digo fuente del kernel han sido reescritos para    compactar y reducir el c&oacute;digo base. Todo esto significa que el kernel    de &micro;Clinux es mucho m&aacute;s peque&ntilde;o que el kernel original de    Linux 2.0, manteniendo las principales ventajas de este &uacute;ltimo, como    son: estabilidad, capacidad superior en redes, y excelente soporte en el sistema    de archivos (Fern&aacute;ndez y Garc&iacute;a, 2005).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&micro;Clinux viene    equipado con la torre de protocolos TCP/IP, juntos con soporte para muchos protocolos    adicionales de red. La mayor&iacute;a de los protocolos de red est&aacute;n    implementados y listos para usarse. Adem&aacute;s, es un sistema operativo apto    para Internet y sistemas embebidos, donde no se necesita de una arquitectura    de alto rendimiento como base. Se tiene soporte para varios sistemas de archivos    tales como: NFS, Ext2, FAT32, ROMFS, JFFS y muchos m&aacute;s gracias al sistema    de archivos virtual que desciende de Linux.    <br>       <br>   <B>Aplicaciones</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las aplicaciones    son una parte muy importante en un sistema embebido. Son, en definitiva, las    que le dan el valor real al sistema. Se pueden tener aplicaciones desde una    interfaz de comandos o shell, aplicaciones que corren en segundo plano, hasta    programas de comunicaci&oacute;n de red, conexi&oacute;n remota etc. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este trabajo    se han incluido una serie de aplicaciones b&aacute;sicas, para ilustrar las    ventajas y posibilidades de usar Linux embebido sobre hardware reconfigurable.    La mayor&iacute;a de estas vienen por defecto junto con la plataforma Petalinux    y por medio de un proceso de elecci&oacute;n bastante simple se puede decidir    cu&aacute;l/es se incluir&aacute;n en a imagen final a descargar en el target.    Algunas de ellas son: ls, cat, df, ps, gpio-test, date, vi, printenv, sash,    mkdir, mv , rm, chmod, thttpd, tftpd, y otras m&aacute;s.    ]]></body>
<body><![CDATA[<br>       <br>   <B>Herramientas de desarrollo</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Normalmente, en    el proceso de construcci&oacute;n del hardware y el proceso de generaci&oacute;n    de software embebido Linux, se utilizan ambientes de desarrollo separados. Estos    ambientes separados requieren una compleja sincronizaci&oacute;n, para extender    las configuraciones de uno al otro. Este proceso suele ser propenso a errores    si se realiza manualmente. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para el caso del    hardware, el ambiente de desarrollo va a depender de la plataforma de trabajo    con que se cuenta, en este caso, una cuyo dispositivo FPGA es un Spartan3AN    de Xilinx. Esto conduce a usar el EDK (del ingl&eacute;s, Embedded Development    Kit), plataforma de la misma compa&ntilde;&iacute;a para sistemas embebidos    en sus productos. Este a su vez se integra con el ISE (del ingl&eacute;s, Integrated    Software Environment) que se encarga de los procesos de s&iacute;ntesis e implementaci&oacute;n.    Estas herramientas fueron instaladas sobre un sistema operativo Linux Mint 11.04.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El entorno de desarrollo    para un sistema basado en Linux embebido, requiere componentes de software como    la cadena de herramientas (toolchain), cross-compiler, gestor de arranque, el    kernel de Linux junto con el software GNU, bibliotecas de C y el depurador.    Estos componentes deben ser incorporados en un &uacute;nico marco, construido    y configurado para el hardware de destino (target) antes de que pueda ser utilizado    para generar programas en el dispositivo de destino.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">PetaLinux trae    todo esto en un &uacute;nico entorno de desarrollo, y se integra con las herramientas    ISE y Xilinx EDK. La tecnolog&iacute;a de PetaLogix AutoConfig simplifica la    sincronizaci&oacute;n entre el hardware y el software. Esta tecnolog&iacute;a    propaga los atributos del hardware al gestor de arranque y al kernel de Linux,    eliminando la necesidad de la sincronizaci&oacute;n manual (Petalogix, 2009).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Petalinux &ldquo;no&rdquo;    es un sistema operativo, es un conjunto de herramientas que integra el desarrollo    del kernel &micro;Clinux y software adicional, espec&iacute;ficamente, sobre    tecnolog&iacute;a de hardware reconfigurable.</font></p>     <p>&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>RESULTADOS    Y DISCUSI&Oacute;N</B></font></p>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cada plataforma    de desarrollo tiene caracter&iacute;sticas propias, y por tanto, el proceso    de embeber Linux en cada una, requiere determinadas particularidades. A continuaci&oacute;n    se describe la implementaci&oacute;n del sistema operativo uCLinux en el kit    Spartan3AN. Muchas de las soluciones que aqu&iacute; se explican ser&iacute;an    innecesarias para otro target, pero de forma general no es dif&iacute;cil extender    la experiencia a otras plataformas de desarrollo.    ]]></body>
<body><![CDATA[<br>       <br>   Trabajo con edk y Spartan3AN</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> En el proceso    de configuraci&oacute;n del hardware embebido se us&oacute; fundamentalmente    el asistente BSB (del ingl&eacute;s, Base System Builder). El BSB es un asistente    que automatiza las tareas b&aacute;sicas de configuraci&oacute;n del hardware    y software para la mayor&iacute;a de los dise&ntilde;os basados en las FPGA    de Xilinx. Cada kit de desarrollo tiene sus propias configuraciones y perif&eacute;ricos,    por lo que es necesario especificar cu&aacute;l se va usar en el dise&ntilde;o.    A continuaci&oacute;n se listan los m&oacute;dulos y perif&eacute;ricos usados    as&iacute; como su configuraci&oacute;n.</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - MicroBlaze:    Frecuencia de reloj 50 MHz, usar depuraci&oacute;n, memoria interna BRAM 16    KB, usar cache, no habilitar FPU.</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - XPS GPIO: Controlador    para los dispositivos gen&eacute;ricos de E/S (leds, conmutadores y botones).    Se dej&oacute; la configuraci&oacute;n por defecto.</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - XPS UARTLITE:    Raz&oacute;n de baudios 115200, 8 bits de datos, no usar paridad, usar interrupci&oacute;n.</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - MPMC: Este es    el controlador de memoria RAM externa.</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - XPS MCH EMC:    Este es el controlador de memoria ROM externa.</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - XPS TIMER: Tama&ntilde;o    de 32 bits, con 2 temporizadores presentes, usar interrupci&oacute;n. </font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - XPS ETHERNETLITE:    Este es el controlador MAC, usar interrupci&oacute;n. </font>      ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - El dispositivo    est&aacute;ndar de Entrada y de Salida (STDIN y STDOUT) es el puerto RS232,    la memoria de arranque es la BRAM interna (ilmb_cntlr) y no es necesario adicionar    las aplicaciones de ejemplo. Una vez que se definieron estas opciones, al final    del asistente se generaron autom&aacute;ticamente los ficheros necesarios del    proyecto. Para ver con detalle todos los par&aacute;metros y opciones del proyecto    se pueden editar manualmente los ficheros &ldquo;system.mhs&rdquo;, &ldquo;system.mss&rdquo;,    &ldquo;system.xmp&rdquo; y &ldquo;data/system.ucf&rdquo;. </font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - &ldquo;system.mhs&rdquo;:    Contiene informaci&oacute;n acerca del hardware. En &eacute;l se declaran expl&iacute;citamente    todos los elementos del sistema embebido, su interconexi&oacute;n y los par&aacute;metros    de configuraci&oacute;n para cada uno. Cada m&oacute;dulo o ip-core es declarado    entre las directivas BEGIN y END seg&uacute;n una estructura predeterminada,    muy similar a la programaci&oacute;n modular descrita en VHDL. La directiva    PORT define puertos de E/S en cada ip-core; cuando est&aacute;n fuera de los    m&oacute;dulos hace referencia a puertos externos de la FPGA. Los par&aacute;metros    de configuraci&oacute;n se definen por la directiva PARAMETER. </font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - &ldquo;system.mss&rdquo;:    Contiene informaci&oacute;n acerca de software. En &eacute;l se declaran los    drivers asociados a cada ip-core, as&iacute; como los par&aacute;metros del    sistema operativo y del compilador. Cada uno de estos elementos se define en    secciones limitadas por las directivas BEGIN y END. La herramienta LibGen de    XPS se apoya en este fichero para la generaci&oacute;n de todas las bibliotecas    de software usando la tecnolog&iacute;a BSP.</font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - &ldquo;data/system.ucf&rdquo;:    Se declara la asignaci&oacute;n de pines de la FPGA para cada puerto externo    del sistema embebido. </font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> - &ldquo;system.xmp&rdquo;:    Es el fichero principal que describe todos los detalles del proyecto en desarrollo.    </font>      <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><B>Configuraci&oacute;n    del software</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> Despu&eacute;s    que la plataforma de hardware se ha definido, se requiere generar una colecci&oacute;n    de par&aacute;metros o bibliotecas de software, basadas en la arquitectura subyacente    del target. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En lugar de modificar    el software manualmente para trabajar con la nueva configuraci&oacute;n de hardware,    este se puede configurar de forma autom&aacute;tica r&aacute;pidamente. Esto    es especialmente valioso durante las primeras fases del dise&ntilde;o, cuando    el hardware puede estar cambiando con frecuencia. Para esto se usa la tecnolog&iacute;a    subyacente en la plataforma XPS llamada MLD (del ingl&eacute;s, Micro-processor    Library Definition). (Cameron, 2005) Petalinux incluye un BSP propio que se    integra con la aplicaci&oacute;n en desarrollo sobre la plataforma XPS.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los ficheros BSP    de Petalinux se encuentran ubicados dentro de la carpeta     <br>   &ldquo;hardware/edk_user_repository&rdquo;.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para la configuraci&oacute;n    del software se edit&oacute; el fichero &ldquo;system.mss&rdquo; en la secci&oacute;n    OS, y adem&aacute;s se modific&oacute; la variable ModuleSearchPath en el fichero    &ldquo;system.xmp&rdquo;. Esta es la ruta donde el EDK encontrar&aacute; los    ficheros &ldquo;.mld&rdquo; y &ldquo;.tcl&rdquo; necesarios para la generaci&oacute;n    de las bibliotecas de software usando la tecnolog&iacute;a BSP de Petalinux.    <br>       <br>   <B>Trabajo con Petalinux</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Ya terminada la    generaci&oacute;n del hardware, las bibliotecas de software y la programaci&oacute;n    de la FPGA, se pasa al desarrollo en el entorno Petalinux. Es &uacute;til en    este proceso el manual de usuario (Petalogix, 2009). Todas las operaciones en    este entorno de desarrollo se ejecutan por comandos en la consola est&aacute;ndar    del host. La edici&oacute;n del c&oacute;digo fuente se realiz&oacute; con un    editor de texto com&uacute;n, en este caso Gedit.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En el pr&oacute;ximo    paso se agreg&oacute; la plataforma que se ha creado al entorno Petalinux (ver    <a href="/img/revistas/rcci/v7n1/f0206113.jpg">Figura 2</a>). Espec&iacute;ficamente    este comando crea una determinada estructura de directorios y plantillas de    configuraci&oacute;n con valores por defecto para la plataforma creada. Los    par&aacute;metros indican el nombre del proveedor, del kit y la versi&oacute;n    del kernel que va a usar el sistema embebido final.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Posteriormente    se sincroniz&oacute; las bibliotecas de <em>software</em> generadas con EDK    y el BSP de Petalinux, al &aacute;rbol de directorios de Linux y el U-boot (ver    <a href="/img/revistas/rcci/v7n1/f0306113.jpg">Figura 3</a>). El comando &ldquo;petalinux-copy-autoconfig&rdquo;    es fundamental para la plataforma Petalinux, ya que ahorra una gran cantidad    de tiempo y de posibles errores. Cada vez que se realizan cambios en el <em>hardware</em>    se repite esta operaci&oacute;n ya que el <em>software</em> no tiene otra manera    de &ldquo;enterarse&rdquo; de los cambios y pueden surgir errores graves de    ejecuci&oacute;n. Los par&aacute;metros de este comando tienen que ser los mismos    que los del paso anterior.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Ahora sigue la    selecci&oacute;n de la plataforma que se ha agregado y sincronizado. Este es    el paso inicial para construir el <em>kernel</em> del <em>target</em>. La selecci&oacute;n    consiste en asociar una colecci&oacute;n de configuraciones del <em>kernel</em>    con una plataforma en particular. Esto se realiz&oacute; ejecutando el comando    que aparece en la <a href="#f4">Figura 4</a> a trav&eacute;s de un entorno de    ventanas xWindow como el que muestra la <a href="#f5">Figura 5</a>. </font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f4"></a><img src="/img/revistas/rcci/v7n1/f0406113.jpg" width="411" height="104" longdesc="/img/revistas/rcci/v7n1/f0406113.jpg"></font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f5"></a><img src="/img/revistas/rcci/v7n1/f0506113.jpg" width="342" height="216" longdesc="/img/revistas/rcci/v7n1/f0506113.jpg"></font></p>     <p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Seguidamente    se configur&oacute; el <em>kernel</em> (ver <a href="/img/revistas/rcci/v7n1/f0606113.jpg">figura    6</a>). Estas configuraciones que se realizan visualmente por el entorno de    ventanas, se guardan autom&aacute;ticamente en ficheros dentro del directorio    asignado para la plataforma en particular.</font></p>     ]]></body>
<body><![CDATA[<p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Por    &uacute;ltimo se configuraron las aplicaciones de usuario que ser&aacute;n incluidas    en el sistema embebido. Los par&aacute;metros del sistema tales como: contrase&ntilde;a    del usuario root, nombre del <em>target</em>, particiones en <em>flash</em>    y sistema de archivos, pueden ser cambiados en la secci&oacute;n &ldquo;<em>System    Settings</em>&rdquo; (ver <a href="#f7">Figura 7</a>).</font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f7"></a><img src="/img/revistas/rcci/v7n1/f0706113.jpg" width="474" height="195" longdesc="/img/revistas/rcci/v7n1/f0706113.jpg"></font></p>     <p align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una    vez finalizada la configuraci&oacute;n, el <em>kernel</em> est&aacute; listo    para ser compilado. Para ello se ejecut&oacute; el comando que aparece en la    <a href="#f8">Figura 8</a>. Este proceso se demora alg&uacute;n tiempo en completarse,    apareciendo una serie de mensajes en la consola. Si se muestra alg&uacute;n    mensaje de error, este debe ser corregido (editando el c&oacute;digo fuente    o cambiando la configuraci&oacute;n) y se volver&iacute;a a repetir el proceso.</font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><a name="f8"></a><img src="/img/revistas/rcci/v7n1/f0806113.jpg" width="406" height="105" longdesc="/img/revistas/rcci/v7n1/f0806113.jpg"></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cuando el proceso    de construcci&oacute;n ha terminado, todas las im&aacute;genes correspondientes,    ya listas para descargar en el target, son puestas en el directorio &ldquo;$PETALINUX/software/petalinux-dist/images&rdquo;.    Estas im&aacute;genes consisten en el c&oacute;digo del kernel y el U-boot debidamente    compilado y en diferentes formatos, seg&uacute;n la aplicaci&oacute;n espec&iacute;fica    de cada uno.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El &uacute;ltimo    paso es descargar y ejecutar el kernel de Linux. Al finalizar la inicializaci&oacute;n    del kernel se logr&oacute; obtener el sistema operativo Linux, embebido en el    kit Spartan3AN.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Este sistema operativo    obtenido es totalmente funcional y las aplicaciones que contiene son las b&aacute;sicas    que se pueden encontrar en cualquier ordenador con Linux con soporte para ethernet.    Administraci&oacute;n del sistema de archivos, de procesos, manejo de perif&eacute;ricos,    int&eacute;rprete de comandos, servidor web y servidor ftp son algunas de las    funciones que este realiza. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para comprobar    interacci&oacute;n desde el sistema operativo con los perif&eacute;ricos de    E/S gpio se utiliza la aplicaci&oacute;n gpio-test.</font></p>     <p align="left">&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><B>CONCLUSIONES</B></font></p>     ]]></body>
<body><![CDATA[<P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A trav&eacute;s    de este proyecto de investigaci&oacute;n se ha podido constatar que se puede    lograr la integraci&oacute;n de diferentes m&oacute;dulos y aplicaciones generales    (tanto de <em>hardware</em> como de <em>software</em>) con un alto grado de    flexibilidad y funcionalidad. Para demostrar esto, se ha obtenido Linux embebido    en un FPGA Spartan3AN ejecutando aplicaciones generales sobre dicho entorno;    usando las herramientas de codise&ntilde;o <em>hardware</em>/<em>software</em>    sobre dispositivos de <em>hardware</em> reprogramable, lo cual corrobora que    es posible cambiar favorablemente el enfoque de obtenci&oacute;n en FPGA de    m&oacute;dulos independientes para aplicaciones espec&iacute;ficas (que hace    que su reutilizaci&oacute;n en aplicaciones diferentes sea compleja y que los    tiempos de desarrollo y puesta a punto de los mismos sean considerablemente    elevados) hacia el de sistemas que integren soluciones generales de <em>hardware</em>/<em>software</em>    con flexibilidad.</font>      <P>&nbsp;</p>     <P><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS    BIBLIOGR&Aacute;FICAS</B></font>      <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CAMERON, G. Configure    and Build the Embedded Nucleus PLUS RTOS Using Xilinx EDK. Embedded magazine,    marzo 2005, issue 1: p. 27-29. </font>      <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">FERN&Aacute;NDEZ,    A. M. y GARC&Iacute;A, L. G. Estudio y evaluaci&oacute;n del sistema operativo    &micro;Clinux aplicado a sistemas embebidos m&oacute;viles de alta complejidad.    Medellin: Universidad de Antioquia, 2005.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">HERRERA, R. S&iacute;ntesis    y evaluaci&oacute;n de un procesador DSP empotrado en FPGA. Pinar del R&iacute;o:    UPR &quot;Hermanos Sa&iacute;z Montes De Oca&quot;, 2008.    </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">PETALOGIX Inc.    Petalogix. [en l&iacute;nea] 2009 [Consultado: marzo de 2010]. Disponible en:    [<a href="http://www.petalogix.com/resources/documentation/petalinux/userguide/Bootloaders/FSboot" target="_blank">http://www.petalogix.com/resources/documentation/petalinux/userguide/Bootloaders/FSboot</a>].</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">PETALOGIX Inc.    PetaLinux User Guide. [en l&iacute;nea] 2009 [Consultado: marzo de 2010]. Disponible    en: [<a href="http://petalogix.com/resources/documentation/petalinux/userguide" target="_blank">http://petalogix.com/resources/documentation/petalinux/userguide</a>].    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">XILINX Inc. Spartan-3A/3AN    FPGA Starter Kit Board User Guide. [en l&iacute;nea] 2008 [Consultado: septiembre    de 2011]. Disponible en: [<a href="http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf" target="_blank">http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf</a>].        </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">XILINX Inc. MicroBlaze    Processor Reference Guide. [en l&iacute;nea] 2008 [Consultado: febrero de 2010].    Disponible en: [<a href="http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_4/mb_ref_guide.pdf" target="_blank">http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_4/mb_ref_guide.pdf</a>].    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">XILINX Inc. XPS    General Purpose Input/Output. Product Specification. [en l&iacute;nea] 2010    [Consultado: septiembre de 2010]. Disponible en: [<a href="http://www.xilinx.com/support/documentation/ip_documentation/xps_gpio.pdf" target="_blank">http://www.xilinx.com/support/documentation/ip_documentation/xps_gpio.pdf</a>].    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">XILINX Inc. XPS    UART Lite. Product Specification. [en l&iacute;nea] 2010 [Consultado: septiembre    de 2010]. Disponible en: [<a href="http://www.xilinx.com/support/documentation/ip_documentation/xps_uartlite.pdf" target="_blank">http://www.xilinx.com/support/documentation/ip_documentation/xps_uartlite.pdf</a>].    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">XILINX Inc. XPS    Ethernet Lite Media Access Controller. Product Specification. [en l&iacute;nea]    2009 [Consultado: septiembre de 2011]. Disponible en: [<a href="http://www.xilinx.com/support/documentation/ip_documentation/xps_ethernetlite.pdf" target="_blank">http://www.xilinx.com/support/documentation/ip_documentation/xps_ethernetlite.pdf</a>]</font><p>&nbsp;</p>     <p>&nbsp;</p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 15/01/2013        <br>   Aceptado: 01/03/2013</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CAMERON]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Configure and Build the Embedded Nucleus PLUS RTOS Using Xilinx EDK]]></source>
<year>marz</year>
<month>o </month>
<day>20</day>
<page-range>27-29</page-range><publisher-name><![CDATA[Embedded magazine]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FERNÁNDEZ]]></surname>
<given-names><![CDATA[A. M.]]></given-names>
</name>
<name>
<surname><![CDATA[GARCÍA]]></surname>
<given-names><![CDATA[L. G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Estudio y evaluación del sistema operativo µClinux aplicado a sistemas embebidos móviles de alta complejidad]]></source>
<year>2005</year>
<publisher-loc><![CDATA[Medellin ]]></publisher-loc>
<publisher-name><![CDATA[Universidad de Antioquia]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HERRERA]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
</person-group>
<source><![CDATA[Síntesis y evaluación de un procesador DSP empotrado en FPGA]]></source>
<year>2008</year>
<publisher-loc><![CDATA[Pinar del Río ]]></publisher-loc>
<publisher-name><![CDATA[UPR "Hermanos Saíz Montes De Oca"]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="">
<collab>PETALOGIX Inc.</collab>
<source><![CDATA[PetaLinux User Guide]]></source>
<year>2009</year>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="">
<collab>PETALOGIX Inc.</collab>
<source><![CDATA[PetaLinux User Guide]]></source>
<year>2009</year>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="">
<collab>XILINX Inc.</collab>
<source><![CDATA[Spartan-3A/3AN FPGA Starter Kit Board User Guide]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="">
<collab>XILINX Inc.</collab>
<source><![CDATA[MicroBlaze Processor Reference Guide]]></source>
<year>2008</year>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="">
<collab>XILINX Inc.</collab>
<source><![CDATA[XPS General Purpose Input/Output. Product Specification.]]></source>
<year>2010</year>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="">
<collab>XILINX Inc</collab>
<source><![CDATA[XPS UART Lite. Product Specification]]></source>
<year>2010</year>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<collab>XILINX Inc.</collab>
<source><![CDATA[XPS Ethernet Lite Media Access Controller. Product Specification.]]></source>
<year>2009</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
