<?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-18992017000200002</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Servidor web empotrado en un FPGA para configurar un Controlador Maestro del Sistema Inteligente de Tráfico Cubano]]></article-title>
<article-title xml:lang="en"><![CDATA[FPGA Embedded Web Server to configure the Master Controller of the Cuban Smart Traffic System]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Ríos Pérez]]></surname>
<given-names><![CDATA[Frank Emilio]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Polanco Carrillo]]></surname>
<given-names><![CDATA[Franky]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Moreno Vega]]></surname>
<given-names><![CDATA[Valery]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Centro de Investigación y Desarrollo Técnico  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<aff id="A02">
<institution><![CDATA[,Instituto Superior Politécnico José Antonio Echeverría  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>06</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>06</month>
<year>2017</year>
</pub-date>
<volume>11</volume>
<numero>2</numero>
<fpage>16</fpage>
<lpage>28</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992017000200002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992017000200002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992017000200002&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[RESUMEN En este artículo se presenta la implementación de un servidor web para configurar el Controlador Maestro del Sistema Inteligente de Tráfico desarrollado en Cuba. La programación del servidor se realizó en lenguaje C, para ejecutarse sobre un sistema operativo Linux empotrado en un FPGA. Se logró un mecanismo de configuración sencillo, de bajos recursos de cómputo, rápido y flexible.]]></p></abstract>
<abstract abstract-type="short" xml:lang="es"><p><![CDATA[ABSTRACT The implementation of an Embedded Web Server to configure the Master Controller of the Cuban Intelligent Traffic System is presented. The server program was written using a Ccompiler that runs overa version of an embedded Linux operatingsystem fora FPGA. A simple, low resource demanding, fast and flexible configuration mechanism was accomplished.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[HTTP]]></kwd>
<kwd lng="es"><![CDATA[Módulos IP]]></kwd>
<kwd lng="es"><![CDATA[Petalinux]]></kwd>
<kwd lng="es"><![CDATA[FPGA]]></kwd>
<kwd lng="es"><![CDATA[Servidor Web]]></kwd>
<kwd lng="en"><![CDATA[HTTP]]></kwd>
<kwd lng="en"><![CDATA[IP Module]]></kwd>
<kwd lng="en"><![CDATA[Petalinux]]></kwd>
<kwd lng="en"><![CDATA[FPGA]]></kwd>
<kwd lng="en"><![CDATA[Web Server]]></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 size="4"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Servidor  web empotrado en un FPGA para configurar un Controlador Maestro del Sistema  Inteligente de Tr&aacute;fico  Cubano</font></strong></font></p>     <p>&nbsp;</p>     <p><font size="3"><strong><font face="Verdana, Arial, Helvetica, sans-serif">FPGA  Embedded Web Server to configure the Master Controller of the Cuban Smart  Traffic System</font></strong></font></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Frank Emilio R&iacute;os P&eacute;rez<strong><sup>1</sup></strong>, <strong>Franky Polanco Carrillo<sup>2</sup></strong>, Valery Moreno Vega</font></strong><font face="Verdana, Arial, Helvetica, sans-serif"><strong><sup>2*</sup></strong></font></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><sup>1</sup></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Centro de Investigaci&oacute;n y Desarrollo T&eacute;cnico. <a href="mailto:frankriosperez@yahoo.com">frankriosperez@yahoo.com</a></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">    <br> <sup>2</sup></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Instituto  Superior Polit&eacute;cnico Jos&eacute; Antonio Echeverr&iacute;a. Calle 114 No.11901 entre Ciclov&iacute;a  y Rotonda.{frankyp, <a href="mailto:valery%7d@electrica.cujae.edu.cu">valery}@electrica.cujae.edu.cu</a></font>    ]]></body>
<body><![CDATA[<br> </p>     <p>&nbsp;</p>     <P><font face="Verdana, Arial, Helvetica, sans-serif"><span class="class"><font size="2">*Autor para la correspondencia: </font></span></font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <a href="mailto:valery@electrica.cujae.edu.cu">valery@electrica.cujae.edu.cu</a><a href="mailto:rtrujillo@edistancia.uo.edu.cu"></a><a href="mailto:jova@uci.cu"></a></font><font face="Verdana, Arial, Helvetica, sans-serif"><a href="mailto:losorio@ismm.edu.cu"></a> </font>     <p>&nbsp;</p>     <p>&nbsp;</p> <hr>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b> </font>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este art&iacute;culo se presenta la implementaci&oacute;n de un servidor web para  configurar el Controlador Maestro del Sistema Inteligente de Tr&aacute;fico  desarrollado en Cuba. La programaci&oacute;n del servidor se realiz&oacute; en lenguaje C,  para ejecutarse sobre un sistema operativo Linux empotrado en un FPGA. Se logr&oacute;  un mecanismo de configuraci&oacute;n sencillo, de bajos recursos de c&oacute;mputo, r&aacute;pido y  flexible. </font>      <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Palabras clave:</span></b></font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">HTTP,M&oacute;dulos IP,Petalinux, FPGA, Servidor Web</font></p> <hr>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>ABSTRACT</span></b> </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">The implementation of an Embedded Web Server to configure the Master  Controller of the Cuban Intelligent Traffic System is presented. The server  program was written using a Ccompiler that runs overa version of an embedded Linux  operatingsystem fora FPGA. A simple, low resource demanding, fast and flexible  configuration mechanism was accomplished.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>Key words: </span></b>HTTP, IP Module, Petalinux, FPGA, Web Server</font></p> <hr>     <p>&nbsp;</p>     <p>&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>INTRODUCCI&Oacute;N</b></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Desde hace unos a&ntilde;os, varias entidades, dentro de las cuales se  encuentran el Complejo de Investigaciones Tecnol&oacute;gicas Integradas (CITI) y el  Instituto Superior Polit&eacute;cnico &ldquo;Jos&eacute; Antonio Echeverr&iacute;a&rdquo; (CUJAE), han estado  desarrollando el Sistema Inteligente de Tr&aacute;fico (SIT), dise&ntilde;ado para Controlar  y gestionar intersecciones semaf&oacute;ricas desde un Centro de Control (CC). Uno de  los componentes principales del SIT es el Controlador Maestro (CM). Su funci&oacute;n  principal es establecer un enlace de comunicaci&oacute;n IP entre los Controladores  Locales existentes en una intersecci&oacute;n y el CC&nbsp;(Ruiz   Villalonga, 2013),  como se muestra en la <a href="#f01">Figura 1</a>:</font></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/f0102217.jpg" alt="f01" width="388" height="328"><a name="f01"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El CM es un sistema de procesamiento (procesador, bus, memorias, interfaces,  etc.) basado en m&oacute;dulos de propiedad intelectual sobre hardware reconfigurable,  el cual est&aacute; empotrado en un FPGA. Existen experiencias anteriores de  aplicaciones del FPGA para la s&iacute;ntesis en Cuba de controladores destinados a  funciones espec&iacute;ficas que no se encuentran en otros tipos de dispositivos  electr&oacute;nicos comerciales, o que no garantizan soberan&iacute;a tecnol&oacute;gica al que lo  adquiera (Calleja, y otros, 2013). Las aplicaciones  desarrolladas para cubrir las funcionalidades del CM se ejecutan sobre un  sistema operativo Linux embebido llamado Petalinux (Cabrera, 2009).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para la operaci&oacute;n del SIT es necesario configurar el CM con los par&aacute;metros  necesarios para comunicarse con el CC. Como es conocido, actualmente la mayor  parte de los dispositivos configurables que disponen de direcciones IP permiten  su parametrizaci&oacute;n a trav&eacute;s de un servidor web, sin embargo, la aplicaci&oacute;n con  la que actualmente se lleva a cabo la configuraci&oacute;n en el CM, presenta las  limitantes de que necesita de la instalaci&oacute;n&nbsp;  y configuraci&oacute;n de una serie de drivers y programas, lo que complejiza  el proceso; adem&aacute;s de que posee una serie de funcionalidades que demoran un  tiempo apreciable, durante el cual la interfaz visual no responde a eventos del  usuario y aparenta estar bloqueada. Tambi&eacute;n se se&ntilde;ala que el proceso de  almacenamiento de la configuraci&oacute;n se realiza en una memoria flash que forma  parte del CM, y para escribir en dicha memoria flash se ejecuta un proceso del  SO Petalinux por parte de las aplicaciones que el usuario manipula cuando est&aacute;  configurando el CM. Es, en resumen, un procedimiento t&eacute;cnico para el cual se  necesita de cierta experiencia, y que no responde a la forma est&aacute;ndar en que  hoy en d&iacute;a se configuran muchos dispositivos con IP asociada.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para eliminar estas dificultades,  se propuso configurar el CM a trav&eacute;s de un servidor web, que se ejecute como  una aplicaci&oacute;n m&aacute;s dentro del SO Petalinux. De esta forma el proceso se  simplifica al hecho de conectarse, a trav&eacute;s de un navegador web, a la  aplicaci&oacute;n de configuraci&oacute;ne insertar los par&aacute;metros requeridos&nbsp;(CITI, 2015).Existen servidores  web creados para Petalinux, como es el caso de uWeb&nbsp;(workware,   2015),  que puede utilizarse para implementar el servicio propuesto. No obstante, se  decide no utilizar el servidor uWeb, ya que posee funcionalidades que el CM no  necesita, consume una cantidad innecesaria de recursos del FPGA que pueden  utilizarse en otras funcionalidades, y no garantiza poder realizar la escritura  de la configuraci&oacute;n en la memoria Flash del CM. Es por ello que se desarroll&oacute; sobre  Petalinuxun servidor web personalizado, programado en C, que permite configurar  el CM. </font></p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">MATERIALES Y M&Eacute;TODOS </font></strong></font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">El protocolo http</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un servidor web es b&aacute;sicamente un programa que est&aacute; dise&ntilde;ado para recibir  peticiones por parte de al menos un cliente, utilizando, por lo general, el  protocolo HTTP&nbsp;(Duckett, 2008). La respuesta que  env&iacute;a hacia el cliente es una transferencia de hipertextos, compuesta por im&aacute;genes,  enlaces, reproducciones de audio y/o video, animaciones, formularios, entre  otros&nbsp;(Roy, y otros, 2009).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una petici&oacute;n  HTTP consta de 3 partes:</font></p> <ol>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">L&iacute;nea de solicitud: Esta l&iacute;nea  espec&iacute;fica el m&eacute;todo de petici&oacute;n, la direcci&oacute;n URL y la versi&oacute;n del protocolo  HTTP a utilizar para el intercambio de informaci&oacute;n. </font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Encabezado: Es un conjunto de  l&iacute;neas dedicado a especificar informaci&oacute;n adicional.</font></p>   </li>       <li>         <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cuerpo: Es un conjunto de l&iacute;neas  utilizadas para transmitir datos hacia el servidor.</font></p>   </li>     ]]></body>
<body><![CDATA[</ol>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En las transacciones HTTP se emplean m&eacute;todos de petici&oacute;n para acceder a los  recursos o para enviar datos hacia el servidor. El servidor luego responde con  un c&oacute;digo indicando si la petici&oacute;n fue correcta o no y el recurso solicitado.HTTP/1.1  define 8 m&eacute;todos de petici&oacute;n (GET,&nbsp; HEAD,  POST, PUT, DELETE, TRACE, OPTIONS, CONNECT). Los m&eacute;todos m&aacute;s com&uacute;nmente  utilizados son GET y POST&nbsp;( w3c, 2015).</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El m&eacute;todo GET pide una representaci&oacute;n del recurso especificado. Por  seguridad no deber&iacute;a ser usado por aplicaciones que causen efectos, ya que  transmite informaci&oacute;n a trav&eacute;s de la URL, agregando par&aacute;metros a la misma. El  m&eacute;todo POST, env&iacute;a datos hacia el servidor que pueden ser parte de una base de  datos, mensajes a un grupo de usuarios, etc. A diferencia del m&eacute;todo GET, este  puede enviar cualquier cantidad de datos sin l&iacute;mite, y no env&iacute;a informaci&oacute;n  como parte de la URL. Los datos se incluyen en el cuerpo de la petici&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Es interesante hacer notar que la forma en que se realiza una petici&oacute;n no  es est&aacute;ndar, y puede ser diferente si se usan navegadores diferentes. Por  ejemplo, si se revisa la forma en que se realiza la petici&oacute;n entre los 3  navegadores de mayor uso (Internet Explorer, Google Chrome y Mozilla Firefox)  se aprecia que es diferente entre los dos primeros y Mozilla Firefox.  La diferencia de las peticiones de estos buscadores con Mozilla Firefox, radica  en que este &uacute;ltimo env&iacute;a la l&iacute;nea de solicitud, el encabezado y el cuerpo en la  misma transmisi&oacute;n, mientras que Internet Explorer y Google Chrome env&iacute;an  primeramente la l&iacute;nea de solicitud y el encabezado, y en una segunda  transmisi&oacute;n env&iacute;an el cuerpo de la petici&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Como principio  de dise&ntilde;o se parte de simplificar el c&oacute;digo y el procesamiento, que aumentar&iacute;a  si hubiera que discriminar primero que tipo de navegador est&aacute; realizando las  peticiones al servidor, por lo que se opt&oacute; por optimizar el servidor para un  tipo de navegador, que en este caso es el Mozilla Firefox. De esta manera, el  servidor dise&ntilde;ado para el CM espera recibir en la misma transmisi&oacute;n la l&iacute;nea de  solicitud, el encabezado y el cuerpo de la transmisi&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Plataformas hardware y software</strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para la configuraci&oacute;n del CM, el cliente, conectado a la red del SIT,  realiza solicitudes http al servidor implementado en el CM. La <a href="/img/revistas/rcci/v11n2/f0202217.jpg" target="_blank">Figura 2</a> ilustra  los componentes principales del sistema.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La plataforma hardware del CM  fue implementada sobre la placa TRENZ-TE0300-01. Esta placa cuenta con un chip  FPGA (Field Programable Gate Array) Spartan 3E XC3S500E del fabricante Xilinx,  una memoria din&aacute;mica DDR SDRAM de 512 Mbit y una memoria SPI Flash de 32 Mbit,  entre otras especificaciones. La frecuencia de reloj del sistema es de 125 MHz (Electronic, 2011). </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Sobre el FPGA se implementa el hardware del microprocesador empotrado  Microblaze, junto a otros m&oacute;dulos de Propiedad Intelectual (IP) necesarios  para, conjuntamente con las memorias externas e interfaces de comunicaci&oacute;n,  conformar el sistema de procesamiento. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La plataforma software del CM fue dise&ntilde;ada para ejecutarse sobre el sistema  operativo empotrado Petalinux&nbsp;(Xilinx, 2013). Este sistema  operativo constituye una adaptaci&oacute;n, dentro del limitado espacio de hardware de  los sistemas embebidos, del kernel de Linux. Con ello se aprovechan&nbsp; las&nbsp;  ventajas de utilizar, en un sistema empotrado, un sistema operativo de  c&oacute;digo abierto, maduro, estable y con respaldo&nbsp;(Opdenacker,   2007).</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Sobre el SO Petalinux se ejecutan las aplicaciones que cumplen con las  funcionalidades del CM.Entre ellas figura la que comunica la intersecci&oacute;n  semaf&oacute;rica con el CC, junto a la que presta el servicio web para la  configuraci&oacute;n del CM. Se eligi&oacute; para la programaci&oacute;n de las aplicaciones de  usuario el lenguaje C. Este es un lenguaje orientado a la implementaci&oacute;n de  Sistemas Operativos, concretamente Unix (Kerrisk, 2010). Es apreciado por la eficiencia del  c&oacute;digo que produce y es de los lenguajes m&aacute;s populares para crear software de  sistemas y aplicaciones. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Tanto la configuraci&oacute;n del  controlador maestro, como las credenciales de acceso del funcionario encargado  de realizar dicha configuraci&oacute;n, deben almacenarse en un dispositivo no  vol&aacute;til, que en este caso es la memoria flash (ver <a href="/img/revistas/rcci/v11n2/f0202217.jpg" target="_blank">Figura 2</a>). Dado que el CM es  parte de una intersecci&oacute;n semaf&oacute;rica, que debe estar en funcionamiento  continuo, salvo en ocasiones de aver&iacute;as o mantenimientos, las aplicaciones  principales deben ser configuradas para que funcionen desde el arranque del  sistema. Adem&aacute;s, se estableci&oacute; que, si dichas aplicaciones se cierran por  alguna raz&oacute;n, sean reiniciadas autom&aacute;ticamente por el sistema operativo. </font></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Principio de funcionamiento del  servidor web de configuraci&oacute;n del CM</font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La configuraci&oacute;n del CM cuenta con etapas bien definidas: establecimiento  de la conexi&oacute;n, autenticaci&oacute;n, muestra de la configuraci&oacute;n actual del CM,  cambio de configuraci&oacute;n del CM y cambio de credenciales de acceso al servicio.  El diagrama de la <a href="/img/revistas/rcci/v11n2/f0302217.jpg" target="_blank">figura 3</a> ilustra el tr&aacute;nsito por cada una de las etapas.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Inicialmente se actualiza un fichero asociado a la aplicaci&oacute;n, con la  &uacute;ltima configuraci&oacute;n que se escribi&oacute; en la memoria flash del dispositivo. Desde  este fichero, el servidor consulta los par&aacute;metros de configuraci&oacute;n  actualizados, cada vez que los necesite. Una vez realizadas las actualizaciones  de la configuraci&oacute;n actual, se ejecutan las funciones necesarias para  establecer la comunicaci&oacute;n. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Como medio para el intercambio de informaci&oacute;n entre aplicaciones se utiliz&oacute;  un socket (Mitchell, y otros, 2001). El socket designa el medio por el cual dos programas, posiblemente situados en computadoras distintas, pueden intercambiar cualquier flujo de datos, generalmente de  manera fiable y ordenada, basado en el protocolo TCP/IP.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una vez creado y  configurado el socket para la comunicaci&oacute;n, la aplicaci&oacute;n servidora se queda  escuchando el puerto, en espera de la conexi&oacute;n de un cliente. Un puerto es un  concepto l&oacute;gico para saber a qu&eacute; proceso dirigir la petici&oacute;n del cliente. Esto  ofrece la posibilidad de atender varias conexiones simult&aacute;neas de clientes  independientes. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Espec&iacute;ficamente  para nuestro servicio, se establece solamente aceptar una conexi&oacute;n a la vez, ya  que no tiene sentido pr&aacute;ctico que dos administradores diferentes configuren el  CM al mismo tiempo. Cuando el cliente solicita una conexi&oacute;n y el servidor la  acepta, comienzan las etapas de intercambio de informaci&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para acceder al servicio de configuraci&oacute;n, se requiere  introducir las credenciales que lo autentiquen como usuario autorizado a  realizar la configuraci&oacute;n del CM. Una vez autenticado, el usuario tiene acceso  a la configuraci&oacute;n actual y puede elegir entre cambiar las credenciales de  acceso, configurar el CM o salir de su sesi&oacute;n. Al elegir alguna de las  opciones, se le env&iacute;a la p&aacute;gina web con el correspondiente formulario. A  continuaci&oacute;n, se muestran las vistas de las p&aacute;ginas asociadas a las etapas de  autenticaci&oacute;n (autentica (), ver <a href="/img/revistas/rcci/v11n2/f0402217.jpg" target="_blank">figura 4</a>), muestra de la configuraci&oacute;n actual  (muestra (), ver <a href="/img/revistas/rcci/v11n2/f0502217.jpg" target="_blank">figura 5</a>), captura de credenciales nuevas (credencial (), ver  <a href="/img/revistas/rcci/v11n2/f0602217.jpg" target="_blank">figura 6</a>) y nueva configuraci&oacute;n (configura (), ver <a href="/img/revistas/rcci/v11n2/f0702217.jpg" target="_blank">figura 7</a>) as&iacute; como los  diagramas en bloque asociados a cada una de ellas. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para la  visualizaci&oacute;n de las p&aacute;ginas web asociadas a cada una de las etapas de la  aplicaci&oacute;n, se cre&oacute; un fichero de estilos. Esto permite mantener un formato de  presentaci&oacute;n del sitio web, y evita emplear recursos en un fichero de estilos  para cada p&aacute;gina web. Como se observa en la <a href="/img/revistas/rcci/v11n2/f0302217.jpg" target="_blank">figura 3</a>, el env&iacute;o del fichero de  estilos es independiente de las etapas de la aplicaci&oacute;n, ya que recibir una  solicitud del estilo implica que el cliente recibi&oacute; una p&aacute;gina v&aacute;lida del  sitio.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En el c&oacute;digo de  las p&aacute;ginas web se introdujo un conjunto de m&eacute;todos en lenguaje JavaScript para,  del lado del cliente, validar en cuanto a formato, rango y n&uacute;mero de  caracteres, la entrada de datos en cada uno de los formularios. Con esto se  evita el env&iacute;o y procesamiento de informaci&oacute;n incorrecta y la ocupaci&oacute;n  innecesaria del canal de comunicaci&oacute;n&nbsp;(Flanagan, 2011), a la vez que no se  sobrecarga al servidor con esta validaci&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Del lado del  servidor, se analiza el recurso que acompa&ntilde;a la petici&oacute;n. Esta es le&iacute;da como  una cadena de caracteres, de la cual se extrae el valor de los par&aacute;metros del  formulario adecuado. Para el procesamiento de cadenas, se emplearon funciones  de bibliotecas est&aacute;ndar del lenguaje C, de manera que se garantice la mayor  compatibilidad posible entre versiones del compilador.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Pr&oacute;ximamente, si corresponde, se  actualiza la memoria flash con la nueva informaci&oacute;n. El acceso a la memoria  flash, lectura o escritura, se realiza mediante scripts previamente implementados  y probados, escritos utilizando scripts para el procesador de comandos Bash de  Linux (Albing, y otros, 2007). Cuando es necesaria  una lectura o escritura en la memoria flash, se invoca a las rutinas encargadas  de ejecutar el script correspondiente, utilizando las funciones que invocan a  los procesos de Linux, tal y como se muestra en las <a href="#f08">figura 8</a> y <a href="#f09">figura 9</a>.</font></p>     <p align="center"><img src="/img/revistas/rcci/v11n2/f0802217.jpg" alt="f08" width="357" height="387"><a name="f08"></a></p>     <p align="center">&nbsp;</p>     <p align="center"><img src="/img/revistas/rcci/v11n2/f0902217.jpg" alt="f09" width="472" height="368"><a name="f09"></a></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">RESULTADOS Y DISCUSI&Oacute;N </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El consumo de memoria RAM en tiempo de ejecuci&oacute;n del  servidor web, es de 60 KB. Es la aplicaci&oacute;n del CM que menos memoria RAM  consume. En cuanto a consumo de espacio f&iacute;sico, la uni&oacute;n entre los ficheros  fuente, los ficheros de configuraci&oacute;n, los ficheros HTML m&aacute;s el fichero de  estilos consume 100 KB.    <br>   El tiempo que transcurre entre el env&iacute;o por el cliente de  los datos de configuraci&oacute;n, y la actualizaci&oacute;n de los mismos dentro del CM es  un m&aacute;ximo de 3 segundos. No hay que reiniciar el CM para comenzar a utilizar la  nueva configuraci&oacute;n. Esta se carga online, o en caliente. El tiempo que  transcurre entre la configuraci&oacute;n del CM y que este comience a trabajar con los  datos de configuraci&oacute;n actualizados, es como m&aacute;ximo de 1 minuto, fijado por  dise&ntilde;o, aunque puede ser menor si se requiriera en el futuro. </font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se comprob&oacute; que solamente un usuario a la vez puede  tener acceso al servicio de configuraci&oacute;n, el segundo usuario que intente una  conexi&oacute;n, abandona su intento de conexi&oacute;n despu&eacute;s de un tiempo o se queda  esperando hasta que el primero se desconecte. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>CONCLUSIONES</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se dise&ntilde;aron las p&aacute;ginas web que se corresponden con las etapas de  autenticaci&oacute;n, muestra del estado actual del CM, cambio de las credenciales de  usuario del servicio y cambio de la configuraci&oacute;n del CM.    <br>   Se implement&oacute; el servidor web a trav&eacute;s del cual se puede configurar al  Controlador Maestro del Sistema Inteligente de Transporte sin necesidad de  reiniciarlo. Esta configuraci&oacute;n se puede realizar desde cualquier punto de la  red, a trav&eacute;s del navegador web Mozilla Firefox.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se logr&oacute; simplificar el  proceso de configuraci&oacute;n, adem&aacute;s de un consumo de recursos aceptable para el  sistema empotrado sobre el cual se basa esta soluci&oacute;n. Los tiempos de  programaci&oacute;n superan los tiempos de etapas anteriores del proyecto. </font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>AGRADECIMIENTOS</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se agradece a  los grupos de desarrollo y producci&oacute;n del Sistema Inteligente de Tr&aacute;nsito: MS.  Ernesto Gonz&aacute;lez Zamora, Dr. Alejandro Cabrera Sarmiento, MS. Alejandro Ruiz  Villalonga, MS. Alejandro Cabrera Aldaya e Ing. Ernesto Ortega por su apoyo y  asistencia en el desarrollo de esta soluci&oacute;n.</font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Orgulloso agradezco a mi hermano Jos&eacute; Gabriel R&iacute;os P&eacute;rez, estudiante de  4to a&ntilde;o de Ciencia de la Computaci&oacute;n, por su incondicionalidad y su aporte al  presente trabajo.</font></p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS    BIBLIOGR&Aacute;FICAS</B></font>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">W3C. 2015. [En l&iacute;nea] 2015. [Citado el: 02 de 08 de 2015.]  http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html.     </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ALBING, C., VOSSEN, JP. Y NEWHAM, C.  2007. <em>Bash CookBook. </em>Nueva York&nbsp;:  O'Reilly Media Inc., 2007. 0-596-52678-4.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CABRERA, ALEJANDRO. 2009. <em>Controlador Maestro basado en FPGA para un Sistema  Inteligente de Transporte. </em>La Habana&nbsp;: s.n., 2009. Tesis de Grado de  Ing. en Autom&aacute;tica.    </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CALLEJA, P.E, IGLESIAS, M.E Y  CARMONA, J.F. 2013. Linux embebido  en FPGA para sistemas de monitoreo industrial. <em>RCCI. </em>2013. Vol. 7, 1.  2227-1899.</font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CITI, Grupo Autom&aacute;tica y  Telecomunicaciones. 2015. <em>Documento de  Explotaci&oacute;n del Sistema Inteligente de Transporte. </em>La Habana&nbsp;: CITI, 2015.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">DUCKETT, JON. 2008. <em>Beginning Web Programming with HTML, XHTML and CSS. </em>La  Habana&nbsp;: s.n., 2008. 978-0-470-25931-3.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ELECTRONIC, TRENZ. 2011. <em>Spartan 3E Industrial Micromodule User Manual Rev 1.19. </em>s.l.&nbsp;:  Trenz Electronic, 2011.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">FLANAGAN, DAVID. 2011. <em>Javascript: The Definitive Guide. </em>s.l.&nbsp;:  O'Reilly Media Inc., 2011. ISBN: 978-0-596-80552-4.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">KERRISK, MICHAEL. 2010. <em>The Linux Programming Interface. </em>San Francisco&nbsp;:  s.n., 2010. ISBN-13: 978-1-59327-220-3.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">MITCHELL, MARK, OLDHAM, JEFFREY Y  SAMUEL, ALEX. 2001. <em>Advanced Linux Programming. </em>Indiana&nbsp;:  s.n., 2001. ISBN: 0-7357-1043-0.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">OPDENACKER, MICHAEL. 2007. Reason for choosing Free and Open Source Software in  embedded systems. 2007.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ROY, F., TIM, B. Y DAVE, R. 2009. <em>Hypertext Transfer Protocol. </em>2009.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">RUIZ VILLALONGA, ALEJANDRO.  2013. <em>Tarjeta de Control para  Controlador Inteligente de Tr&aacute;fico. </em>ISPJAE. La Habana&nbsp;: s.n., 2013.  Tesis de M&aacute;ster en Sistemas Digitales.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">WORKWARE. 2015. [En l&iacute;nea] 2015. [Citado el: 02 de 08 de 2015.]  http://www.workware.net.au/workware/index.html.    </font></p>     <!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">XILINX. 2013. <em>Petalinux SDK User Guide - Getting Started Guide  (v2013.04). </em>2013.    </font> </p>     <p name="_ENREF_1">&nbsp;</p>     <p name="_ENREF_1">&nbsp;</p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 14/06/2016    <br> Aceptado: 30/01/2017</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[W3C]]></surname>
</name>
</person-group>
<source><![CDATA[En línea]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ALBING]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[VOSSEN]]></surname>
<given-names><![CDATA[JP]]></given-names>
</name>
<name>
<surname><![CDATA[NEWHAM]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Bash CookBook]]></source>
<year>2007</year>
<publisher-loc><![CDATA[^eNueva York Nueva York]]></publisher-loc>
<publisher-name><![CDATA[O'Reilly Media Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CABRERA]]></surname>
<given-names><![CDATA[ALEJANDRO]]></given-names>
</name>
</person-group>
<source><![CDATA[Controlador Maestro basado en FPGA para un Sistema Inteligente de Transporte]]></source>
<year>2009</year>
<publisher-loc><![CDATA[^eLa Habana La Habana]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CALLEJA]]></surname>
<given-names><![CDATA[P.E]]></given-names>
</name>
<name>
<surname><![CDATA[IGLESIAS]]></surname>
<given-names><![CDATA[M.E]]></given-names>
</name>
<name>
<surname><![CDATA[CARMONA]]></surname>
<given-names><![CDATA[J.F]]></given-names>
</name>
</person-group>
<source><![CDATA[Linux embebido en FPGA para sistemas de monitoreo industrial]]></source>
<year>2013</year>
<volume>Vol. 7</volume>
<publisher-name><![CDATA[RCCI]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CITI]]></surname>
</name>
</person-group>
<source><![CDATA[Documento de Explotación del Sistema Inteligente de Transporte]]></source>
<year>2015</year>
<publisher-loc><![CDATA[^eLa Habana La Habana]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[DUCKETT]]></surname>
<given-names><![CDATA[JON]]></given-names>
</name>
</person-group>
<source><![CDATA[Beginning Web Programming with HTML, XHTML and CSS]]></source>
<year>2008</year>
<publisher-loc><![CDATA[^eLa Habana La Habana]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ELECTRONIC]]></surname>
<given-names><![CDATA[TRENZ]]></given-names>
</name>
</person-group>
<source><![CDATA[Spartan 3E Industrial Micromodule User Manual Rev 1.19]]></source>
<year>2011</year>
<publisher-name><![CDATA[Trenz Electronic]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FLANAGAN]]></surname>
<given-names><![CDATA[DAVID]]></given-names>
</name>
</person-group>
<source><![CDATA[Javascript: The Definitive Guide]]></source>
<year>2011</year>
<publisher-name><![CDATA[O'Reilly Media Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KERRISK]]></surname>
<given-names><![CDATA[MICHAEL]]></given-names>
</name>
</person-group>
<source><![CDATA[The Linux Programming Interface]]></source>
<year>2010</year>
<publisher-loc><![CDATA[^eSan Francisco San Francisco]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MITCHELL]]></surname>
<given-names><![CDATA[MARK]]></given-names>
</name>
<name>
<surname><![CDATA[OLDHAM]]></surname>
<given-names><![CDATA[JEFFREY]]></given-names>
</name>
<name>
<surname><![CDATA[SAMUEL]]></surname>
<given-names><![CDATA[ALEX]]></given-names>
</name>
</person-group>
<source><![CDATA[Advanced Linux Programming]]></source>
<year>2001</year>
<publisher-loc><![CDATA[^eIndiana Indiana]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[OPDENACKER]]></surname>
<given-names><![CDATA[MICHAEL]]></given-names>
</name>
</person-group>
<source><![CDATA[Reason for choosing Free and Open Source Software in embedded systems]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ROY]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[TIM]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[DAVE]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Hypertext Transfer Protocol]]></source>
<year>2009</year>
</nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[RUIZ VILLALONGA]]></surname>
<given-names><![CDATA[ALEJANDRO]]></given-names>
</name>
</person-group>
<source><![CDATA[Tarjeta de Control para Controlador Inteligente de Tráfico]]></source>
<year>2013</year>
<publisher-loc><![CDATA[^eLa Habana La Habana]]></publisher-loc>
<publisher-name><![CDATA[ISPJAE]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[WORKWARE]]></surname>
</name>
</person-group>
<source><![CDATA[En línea]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[XILINX]]></surname>
</name>
</person-group>
<source><![CDATA[Petalinux SDK User Guide - Getting Started Guide]]></source>
<year>2013</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
