Sistemas de Interconexión de dispositivos a redes ethernet INTRODUCCIÓN 4 1.-Los inicios del concepto de conexión de dispositivos 4 2.-Un nuevo: el concepto de conexión de dispositivos a redes ethernet 5 3.-Una mirada general al funcionamiento de un sistema modelo 7 4.-Visión general de los principales componentes de estas placas que se encuentran en el mercado Los controladores MAC Ethernet más comunes: Las placas de desarrollo más comunes: Soluciones para los procesadores: 9 9 9 10 APLICACIONES INDUSTRIALES ETHERNET 11 1.-Redes en tecnología Switching 12 2.-Procesador de comunicaciones con microprocesador 12 3.-Procesadores de comunicaciones sin microprocesador 13 4.-Redundancia en la red 13 5.-Gestión de redes 13 6.-El PC como elemento de comunicación 13 7.-Posibilidades de la comunicación inalámbrica 13 8.-Objetivos conseguidos en las aplicaciones industriales Internet 14 9.-Objetivos generales de esta línea de investigación para los próximos años 14 10.-Ejemplos de aplicación de la industria de producción y de procesos 1.- Fabricación de automóviles 2.- Sector alimenticio 3.-Automatización de edificios 4.- Gestión de aguas residuales 14 14 15 15 15 MICROCHIP PIC16F877 + CIRRUS LOGIC CS8900A-CQ 16 PARTE 1: HARDWARE 16 1.-Introducción 16 2.-Cola de Contacto HORA DE DESCANSAR? 16 17 3.-Software y Firmware ICSP Y LVP 17 18 4.- Ensamblar la ethernet NO FLOATING ALLOWED 18 18 5.-Instalar los condensadores PIN POINT 19 19 6.-Acabando la instalación 20 7.-El resto del proyecto ¿RELAX? 21 21 8.-PARA TERMINAR… BUEN TRABAJO 22 22 PARTE 2: SOFTWARE Y FIRMWARE 23 1.-Los elementos básicos 23 2.-Registros REGISTROS DE BUS REGISTROS DE ESTADO Y CONTROL INITCHIP REGISTROS DE INICIO DE TRANSMISIÓN REGISTROS DE FILTROS DE DIRECCIONES COLOCACIÓN DE LAS TRAMAS A ENVIAR Y RECIBIR LA SIGUIENTE LECTURA 23 24 24 24 25 25 25 26 4.-ARP SIN TRAMPAS PINGING 27 27 28 EL CHIP CS8900 30 1.-Introducción 30 2.-Características principales 30 3.-Esquema principal del chip 30 4.-Arquitectura del CS8900 31 4.-Arquitectura del CS8900 32 5.-Pinouts del CS8900 33 6.-Ejemplo de diseño de una placa 34 7.-Aplicación con un CS8900A 35 Introducción Conceptos a priori: Antes de empezar a profundizar hay que tener claro algunos conceptos: la Internet y la Ethernet. Parecen lo mismo, pero representan diferentes conceptos, así pues la Internet la podríamos definir como la red de redes o la red que une todas las redes. La ethernet es diferente, pues es una capa de hardware o de nivel físico para las redes, como todo el mundo sabe no es la única disponible, aunque si la más utilizada y extendida. El protocolo de Internet (IP) normalmente incluye esta capa física, aunque no siempre: no se incluye por ejemplo en conexiones PPP o punto a punto. La ethernet puede ser usada para trabajar con muchos tipos de protocolos como puedan ser: TCP/IP, UDP/IP, IP/ICMP, IPX/SPX, etcétera. Esta tecnología es usada para intercambiar datos entre PC’S y dispositivos, estos siempre podrán estar en modo servidor o esclavo respecto del PC. Los protocolos soportados serán IP/UDP para el intercambio de datos y el IP/ICMP para hacer pings de comprobación de la comunicación establecida entre ambos. Antes de analizar los sistemas de conexión de dispositivos a redes ethernet, deberíamos comprender el porque de la importancia de estos. Para eso vamos a contrastar este concepto y otro más antiguo, quizás de los primeros, en tratar de controlar dispositivos, en particular mediante PCS. 1.-Los inicios del concepto de conexión de dispositivos La conexión de dispositivos a un PC se remonta a los mismos orígenes de los PC. En aquellos momentos esta tarea se realizaba mediante procedimientos más arcaicos; esto tenía sus consecuencias en diversos aspectos que afectaban al conjunto. Si nos pudiéramos remontar algunos años atrás, podríamos observar el concepto que se utilizaba normalmente para la transmisión de datos entre un PC y un dispositivo cualquiera, por ejemplo una cámara tipo CCD. Este concepto utilizaba un puerto paralelo como el de la impresora como capa física de transmisión de datos entre el PC y la cámara. Este proceso de transmisión se producía de la siguiente manera: el PC enviaba los comandos a través de la interfase del puerto paralelo a un microcontrolador donde estos eran procesados y enviaba devuelta los datos o la información pedida. Este concepto fue fácilmente asentado, a pesar de que su software fue desarrollado rápidamente y con carencias a nuestro día impensables; por ejemplo de drivers, clases, etcétera. Este es el esquema de este viejo concepto para controlar dispositivos como una cámara CCD por un PC. Las principales desventajas de este concepto son: La corta distancia a la que deben estar dispositivo y PC. Los datos se transfieren al PC muy despacio, incluso usando módulos específicos EPP/ECP. Solamente un solo dispositivo puede ser conectado al puerto paralelo LPT1, el uso del segundo LPT2 acarrearía una enorme fuente de posibles errores. El software para los sistemas operativos es difícil de hacer porque requiere acceso a un nivel muy bajo. Una alta sensibilidad a las interferencias eléctricas, pues es un paralelo funcionando en el suelo. Como hemos visto, este concepto está obsoleto pues actualmente la conexión de dispositivos a un PC es una cosa muy habitual y hay muchos sistemas incluidos con los PCS diseñados íntegramente para esa función y muy perfeccionados; por ejemplo el USB2. Ésta evolución, nos ha permitido conectar dispositivos más complejos de forma más sencilla, abriendo nuevos horizontes en estos como el de los multimedia y en un futuro el de la realidad virtual. ¿Pero realmente es necesaria la dependencia del dispositivo con un ordenador, es decir, va a ser siempre necesario tener que conectar el dispositivo a un ordenador directamente, para que a través de él sea controlado y poder así extraer su información? ¿Por que no por varios ordenadores a la vez? ¿Que podríamos hacer para dotar de más independencia a los dispositivos, para que por ejemplo, no tuviesen que estar conectados directamente a un PC, y que al mismo tiempo realizaran su función propia? ¿O como podríamos mejorar el rendimiento de transmisión independientemente del dispositivo y de los ordenadores a los que si pudiéramos lo conectaríamos? ¿O porque no tener muchos ordenadores y muchos dispositivos todos conectados entre si? En principio la respuesta parece sencilla; ya que si fuéramos capaces de conectarlos a la red, habríamos conseguido todo esto debido al aprovechamiento de las características de las redes; además de abrir un nuevo horizonte en la creación de dispositivos y en sus usos. 2.-Un nuevo: el concepto de conexión de dispositivos a redes ethernet Si tenemos en cuenta que actualmente se usan redes de ordenadores en prácticamente todos los sitios, también es razonable pensar que se debería contar con un método para poder pasar la información de cualquier dispositivo a la red para que después se pudiera procesar la información en un servidor. Ahora pues es el momento de abordar un nuevo concepto. Éste está basado en la técnica de montar un sistema que controle la conexión del dispositivo a la Lan ethernet. Estos nuevos sistemas que utilizaremos, están constituidos por una placa asíncrona de comunicación con conexión 10baset. Esta placa habla con el PC usando el estándar IEEE 802.3 como capa física de la transmisión y los protocolos UDP/IP. Por otra parte esta placa se comunica al microcontrolador de la cámara CCD a través de un bus paralelo de 8 bits que puede rodar a más de 50 Mhz. Nuevo esquema para controlar dispositivos como una cámara CCD por un PC. Las principales ventajas que adquirimos con este concepto son: Los datos pueden ser transferidos en modo full dúplex y además a una velocidad mucho más alta. La longitud del cable ethernet puede ser superior a 200 metros, extendiéndose a 500 metros con hubs ethernet y de kilómetros en caso de usar fibra óptica. El software es más fácil de hacer, ya que existen muchas librerías con clases relacionadas con los protocolos IP/UDP para los sistemas operativos WIN NT/2000/LINUX, y también porque no es necesario tener ningún acceso a los recursos del PC de bajo nivel. Baja sensibilidad a las interferencias eléctricas. Muchos dispositivos, incluso de diferentes clases, pueden estar conectados junto con varios PCS y servidores; esto facilita muchísimo el acceso a la información, así como su procesamiento y rendimiento general del sistema. Una muestra del últimos punto de las ventajas, se aprecia en el siguiente esquema; donde se aprecian un numero de ordenadores conectados mediante un hub ethernet junto con un numero de dispositivos esclavos conectados mediante ethernet. Cada dispositivo de la ethernet tendrá su propia dirección IP. Una manera de asociar muchos tipos de dispositivos mediante una red ethernet, los PCS se comportan todos como clientes, los dispositivos (la cámara CCD, la estación meteorológica,...) se comportan como servidores debido a nuestra placa de comunicación ethernet. Si tenemos en cuenta que en el año 2010 el 95% de los dispositivos conectados a la Internet no serán ordenadores, sino que serán dispositivos conectados a la red de redes mediante sistemas de conexión, nos podemos hacer una pequeña idea de la importancia de éstos. 3.-Una mirada general al funcionamiento de un sistema modelo El siguiente dibujo muestra con más profundidad este nuevo concepto, de lo que sería una placa típica: El director de orquesta de esta placa sería el microcontrolador SX52 scenix rodando a 50 Mhz; debido a que controla el controlador ethernet CS8900, las 2K de SRAM y las dos FIFOs. ¿Cómo funcionaria? Una trama ethernet es recibida por el CS8900, esto provoca que se envíe una interrupción al SX52. Este último lee toda la trama ethernet y la graba en las 2K de SDRAM porque el SX25 solamente tiene 262 bytes de memoria. El SX52 decodifica y destripa la trama extrayendo el MAC, la IP y la dirección de UDP destino. Si estas direcciones apuntan al conjunto de direcciones internas del SX52, se procesa el mensaje como una orden la cual es escrita en la FIFO del SX52. El controlador del dispositivo (por ejemplo el de la cámara CCD) mira la FIFO del SX52, y si no está vacía, lee la orden y la procesa. Cuando la orden está completada, el controlador del dispositivo devuelve un ACK a su FIFO. El SX52 lee esta FIFO y envía un ACK al controlador de ethernet CS8900 como una trama ARP/IP/UDP. Finalmente se envía una trama ethernet a través del cable al ordenador correspondiente. Aquí tenemos algunas fotos de este modelo: Parte de arriba de la placa, la entrada conectada es un conector RJ45. Placa funcionando con el KIT usado para programar el microcontrolador SX52. Vista de la parte trasera de la placa, donde se aprecia el SX52 en el centro. 4.-Visión general de los principales componentes de estas placas que se encuentran en el mercado Hay muchas soluciones para estos sistemas (recordemos que nuestro trabajo esta orientado a la ethernet), las más usadas y populares serían usar un microcontrolador de 8 bits como el Rabbit 2000, AVR o PIC y un controlador MAC ethernet como el CS8900A o el RTL8029AS. Vamos a ver cuales son: Los controladores MAC Ethernet más comunes: Hay dos claros competidores en este tipo de componente: el controlador de Realtek, que es favorecido por su generosa SDRAM interna que le ayuda con los paquetes cuando el micro al que lo conectamos tiene limitaciones, y el controlador de Crystal que se ha echo popular en los circuitos de 3,3V. Controlador de Ethernet RealTek RTL8019AS ISA Full-Duplex con función Plug and Play: • 16Kbytes de SDRAM interna. • 100-pines PQFP. • Software compatible con NE2000 para puertos de 8 o 16 bits. • Soporta 4 LEDS de diagnóstico con salidas programables. Controlador ethernet 10Base-T CS8900A de Crystal Semiconductor: • 4 Kbytes de memoria integrada en el chip para buffers dedicados a la transmisión y recibimiento de paquetes. • 100-pines TQFP. • Opera a 3,3V o 5V con 55mA Máx. Las placas de desarrollo más comunes: A continuación se detallan algunas de estas placas. Placa de desarrollo ethernet EDTP CS8900A-CQ a 10Mbps: • Basada en el controlador de Crystal CS9800A. • Incluye ranuras para una EEPROM de serie. • Aproximadamente unos 40 euros. Placa de desarrollo para el CS8900 de EmbeddedEthernet.com: • Basada en el controlador de Crystal CS8900A. • Es muy pequeña 31 x 48mm. • Disponible en versiones de 3,3V y 5V. • Aproximadamente unos 70 euros. Placa de Ethernet EE-100 para el CS8900A: • Basada en el chip de Crystal CS8900A. • Tamaño pequeño 32x 64mm. • Aproximadamente unos 50 euros. Placa EDTP para el RTL8019AS: • Basada en el chip de Realtek RTL8019AS. • Aproximadamente unos 30 euros. Soluciones para los procesadores: Para este tipo de placas destacan dos tipos de soluciones para los procesadores. Los micros de Microchip PICDEM.net TM: • Las placas se basan en sus micros PIC16F877 o PIC18F452 a 19.608 Mhz para estas placas. • Lo más utilizado junto a estos micros es el controlador MAC de Realtek en modo 8 bits. Los micros de AVR: • Este basa estas placas en su micro Atmega103 a 4.608 Mhz. • Suelen utilizar el CS8900A en modo 8 bits. APLICACIONES INDUSTRIALES ETHERNET La evolución de las tecnologías de la información, unida a la existencia previa de los sistemas de comunicación en planta, ha dado paso a la posibilidad de utilizar remotamente la información disponible del proceso permitiendo que los sistemas de producción sean más abiertos y flexibles. La irrupción de las tecnologías Internet en el mundo industrial ha abierto nuevas posibilidades en las aplicaciones de diseño y producción industrial. Así, es clara la tendencia de los últimos años hacia la utilización de sistemas distribuidos de control cada vez más flexibles, fiables y potentes. Esta tendencia es una de las consecuencias de la introducción de las tecnologías de la información, ya que permiten incrementar la fiabilidad y la calidad del producto a la vez que asegurarán una producción eficiente. La tendencia actual en el desarrollo de los sistemas de control y supervisión de procesos industriales está orientada hacia una utilización cada vez mayor de sistemas distribuidos de control. La introducción de este tipo de tecnologías en los procesos industriales aporta una serie de ventajas como son: · Proporcionan las ventajas tradicionales de la programación orientada a objetos, entre las que cabe destacar la flexibilidad, modularidad, reusabilidad de código y escalabilidad de la aplicación. · Permiten independizar la complejidad de la problemática de la comunicación de la funcionalidad de la aplicación. · Es posible re-utilizar objetos ya diseñados en otras aplicaciones de forma independiente a su implementación concreta · Es posible modelar dispositivos físicos, si bien éstos deberían poseer un relativo grado de inteligencia. · Por lo general, aportan una serie de servicios que facilitan las tareas de implementación de la aplicación (como pueden ser, por ejemplo, los servicios de seguridad en el caso de la arquitectura CORBA) · Ofrecen mecanismos para implementar la tolerancia a fallos. Las arquitecturas distribuidas que más implantación tienen hoy en día son CORBA y COM/DCOM. CORBA es una arquitectura abierta apoyada por un conjunto de más de 800 empresas entre las que se encuentran algunas tan representativas como Sun, IBM, Netscape y Oracle (Orfali et al 1998). Por otro lado encontramos la arquitectura COM/DCOM (Emerald et al 1998). Esta arquitectura está apoyada fundamentalmente por Microsoft y su implantación crece día a día. Las aplicaciones industriales ethernet constituyen una potente herramienta para la gestión de la producción. Debido al gran éxito que desde hace años goza Ethernet conjuntamente con las prestaciones de Switching (Conmutación), Full Duplex y Autosensing (Auto detección). Permite adaptarse exactamente a los requisitos y prestaciones de cualquier tipo de red, es por ello que esta herramienta puede ser utilizada prácticamente en cualquier entorno industrial. La interconexión de toda la red industrial se lleva a cabo con normas internacionales (IEEE 802.3, 802.11b) lo que favorece la integración de la red industrial y la red de gestión de una empresa( Ej.- oficinas y producción). Para que tal integración sea completa se necesitan de los siguientes requisitos: Un juego de herramientas de Switching universales que soporten todas la fases de un proyecto desde la selección del hardware a la programación, el empleo, el diagnostico y el mantenimiento. Las herramientas deben acceder a una base de datos común. Esto permite ahorrar introducciones de datos y asegura la coherencia en todo el proyecto. Las prestaciones de comunicación son prácticamente ilimitadas ya que, si es preciso están disponibles unas prestaciones escalables gracias a la tecnología de switching. La comunicación de toda la empresa está garantizada gracias a las opciones de acoplamiento de las redes vía Wan, RDSI o Internet. Incluso es posible la comunicación móvil, la cual puede integrarse a la perfección en una estructura de red industrial. Debido a estas prestaciones de comunicación, la gestión de las redes industriales puede llevarse a cabo remotamente con el software adecuado. La red industrial puede señalizar los fallos que pueda haber (Ej.mandando un correo electrónico al administrador del sistema fijado en la configuración). Los autómatas programables (PLCs) tienen una importancia vital en el mundo de la comunicación. Y la comunicación industrial constituye la parte más importante de la automatización. 1.-Redes en tecnología Switching Ventajas de la funcionalidad switching: • Es posible crear subredes y segmentos de red. • La capacidad de transferencia de datos y, de este modo, las prestaciones de la red pueden aumentarse notablemente gracias a la estructuración del intercambio de datos. • Las reglas sobre la configuración de las redes son de fácil aplicación • Aplicable a redes con hasta 150km sin preocuparse por los tiempos de propagación de las señales. • Es posible ampliar de forma ilimitada la extensión de la red por interconexión de diferentes dominios colisión / subredes. • Mediante switches pueden ampliarse las redes existentes de manera sencilla y sin efectos retroactivos. • Pueden continuar utilizándose los conocimientos tecnológicos existentes. • Las redes existentes pueden integrarse y ampliarse paso a paso. • Se puede migrar escalonadamente de la tecnología de 10 Mbit/s a la de 100 Mbit/s. 2.-Procesador de comunicaciones con microprocesador Presenta las siguientes ventaja: • • • • • Una capacidad de transferencia de datos constante gracias al procesamiento de protocolos en el controlador de comunicaciones. Puede conectarse a cualquier red Ethernet. Libera prestaciones de proceso para otras aplicaciones. Se soporta el empleo de grandes configuraciones de red con una sola tarjeta gracias al alto numero de puertos. El controlador de comunicaciones puede utilizarse para la comunicación redundante. 3.-Procesadores de comunicaciones sin microprocesador • • Los procesadores de comunicaciones están coordinados de manera óptima para los paquetes software. Pueden utilizarse perfectamente en pequeños sistemas. 4.-Redundancia en la red Es imprescindible para aplicaciones industriales un tiempo de reconfiguración cortísimo de la red después de un fallo, ya que, de lo contrario, los terminales acoplados a la red cancelan las conexiones de comunicación lógicas. Las redes redundantes aumentan la seguridad y reducen las paradas de la instalación. Si falla un subsistema o se produce la interrupción de un cable, se cambia al sistema reserva o a la red reserva y, de esta forma, se mantiene la comunicación. El sistema de redundancia puede estar gestionado por software gracias a la integración de la red industrial con PCS. 5.-Gestión de redes La gestión de redes ofrece las siguientes funciones: • • • • • • • Acceso por marcación, protegido por contraseña, para “Administrador” ( con privilegios de escritura y lectura) y “usuario” ( sólo privilegios de lectura). Lectura de informaciones de versión y estado. Configuración de pantalla de mensajes y de standby y de informaciones de direcciones. Parametrización fija de puertos y tabla de filtros Salida de información estadística Diagnóstico de intercambio de datos a través de un puerto espejo parametrizable. Carga de posibles actualizaciones a través de la red y envío de mensajes de error por su propia cuenta. 6.-El PC como elemento de comunicación El PC desempeña un papel importante en la comunicación industrial. Conjuntamente con aplicaciones en tiempo real como WinCC para el entorno Windows NT. Junto con el software desarrollado por cada fabricante, el PC penetra en las aplicaciones de comunicaciones que hasta ahora sólo podían solucionarse con un PLC. Los modernos procesadores de comunicaciones presentan nuevas ventajas: • • • Procesadores de comunicaciones para formato PCI o formato PCMCIA Permiten una aplicación flexible, en función de la demanda de recursos en el PC: procesadores de comunicaciones con o sin microprocesador incorporado. Integración sencilla en el entorno del sistema y en aplicaciones Office gracias a las interfaces abiertas y estandarizadas. 7.-Posibilidades de la comunicación inalámbrica La comunicación inalámbrica constituye la solución ideal siempre que el acoplamiento de estaciones a una infraestructura cableada resulte muy difícil. Entre éstas se incluyen, por ejemplo, la adquisición móvil de datos en producción y logística, la transmisión de datos de servicio a terminales móviles o la puesta en servicio de instalaciones complejas mediante equipos de programación acoplados por vía inalámbrica. Otro aspecto que habla a favor del uso de comunicaciones móviles es la sustitución de las soluciones cableadas para, p. Ej. Resolver el problema de aislamiento de potencial de equipos de comunicaciones remotos. Además, la comunicación móvil permite ahorrar una infraestructura cuya instalación requiere mucho tiempo y dinero, pudiendo emplearse en instalaciones temporales o en sistemas de producción flexibles. Los requisitos básicos para los equipos de comunicaciones móviles en el entorno industrial son, además del acoplamiento inalámbrico a la red, también la robustez para soportar el severo entorno industrial, un manejo sencillo y un diseño compacto. 8.-Objetivos conseguidos en las aplicaciones industriales Internet · Desarrollo de gateways entre diferentes arquitecturas de red (MAP/MMS, PROFIBUS, TCP,...) · Integración a través de red de dispositivos industriales de control (robots, CNs, APIs,...). · Monitorización y Supervisión de Planta · Buses de campo e instrumentación inteligente (PROFIBUS-PA, CAN) 9.-Objetivos generales de esta línea de investigación para los próximos años · Establecer metodologías para el diseño de aplicaciones de monitorización y supervisión remotas utilizando tecnologías internet / Intranet · Modelado de plantas virtuales, utilizando tecnologías orientadas a objetos, que permitan describir de forma abstracta la información de la planta real accesible remotamente · Validar la aplicación de estas tecnologías en procesos industriales con requisitos de tiempo real. · Evaluar la capacidad de los modernos lenguajes de modelado, basados en tecnologías orientadas a objetos, para expresar los requisitos temporales de la aplicación. 10.-Ejemplos de aplicación de la industria de producción y de procesos 1.- Fabricación de automóviles En l a fabricación de automóviles pueden implementarse líneas de producción con velocidades variables u opciones de control del sistema en la explotación en marcha. Numerosas variables deben ser controlables de manera flexible, para hacer posible una producción sin anomalías. La disponibilidad de las instalaciones es cada vez más importante. Un tiempo de no-disponibilidad de un equipo, durante su reparación, suele resultar más caro que una supervisión adecuada de las instalaciones para detectar posibles desgastes o fallos. Con ayuda de potentes componentes integrados en la comunicación pueden, por ejemplo, localizarse y señalizarse rápidamente los fallos. 2.- Sector alimenticio En el sector alimenticio se puede controlar el flujo de transporte que previamente se ha programado y puede modificarse en el ordenador host, dependiendo del grado de carga y de la demanda. Es posible supervisar y controlar los estados operativos y los grupos de los sistemas de transporte. Igualmente se podría controlar la ventilación automática individual de un determinado almacén. 3.-Automatización de edificios Se podría realizar el control de un parking. Las plazas de aparcamiento libres se indicarían a la entrada y el automovilista podría ser conducido hasta las mismas, mediante flechas indicadoras de sentido, por el camino más corto. Un sensor sin contacto, montado en el techo, actúa de monitor de aparcamiento y palpa, por ultrasonidos, con regularidad su plaza de aparcamiento. Si se circula incorrectamente por la rampa de acceso o si se produce un atasco, se activa una alarma en el puesto central de mando. Un potente procesador de comunicaciones recopila y coordina los datos, visualizándolos, p. Ej. En un ordenador. 4.- Gestión de aguas residuales La depuración de las aguas residuales requiere características especificas de los componentes de automatización y comunicación, como p. Ej. La utilización dentro de intervalos de temperatura admisibles, inmunidad a interferencias o señalizaciones rápidas en caso de averías. Las líneas de filtración, bombas o instrumentos de medida pueden supervisarse y maniobrarse desde el puesto central de mando, de modo que pueda asegurarse el perfecto flujo de la instalación. Un sistema de comunicaciones conduce los datos correspondientes de manera fiable hasta e puesto central de mando. Un ordenador en dicho puesto permite visualizar y supervisar los datos correspondientes. Microchip PIC16F877 + Cirrus Logic CS8900A-CQ PARTE 1: HARDWARE En este apartado veremos como implementar el dispositivo de interconexión a un microcontrolador, con el fin de aplicar las más diversas aplicaciones. Con el montaje de este dispositivo podremos realizar todo tipo de funciones, en lo que en el ámbito de redes Ethernet se refiere. 1.-Introducción Para realizar este proyecto se ha elegido el microcontrolador Microchip PIC16F877 debido a que puede ser fácilmente programado usando un pequeño número de componentes externos. El mecanismo de transporte es la red Ethernet estándar con el protocolo IP encapsulado en el nivel de datos de la trama Ethernet. La funcionalidad del TCP/IP es inexistente en este montaje ya que en el firmware no está implementada la pila TCP/IP. De manera que, todas las transferencias de datos que se describen en este apartado están basadas en el formato UDP. Aunque también se pueden aplicar protocolos que uno mismo desarrolle. Los componentes que vamos a utilizar son los siguientes: articulo precio Imagen CS8900A DEV BOARD 40€ PIC16F877 15€ and Dev Board En la primera parte de este pequeño tutorial nos encargaremos de ensamblar la placa, y una vez montada comenzaremos a programarla. 2.-Cola de Contacto Empezaremos la construcción del EDB (Ethernet Development Board) poniendo una pequeña gota de pegamento en el centro del área de pads del CS8900A-CQ, llevando mucho cuidado en no poner mucho, porque cuando se apriete el chip se extenderá el pegamento. El objetivo de esta tarea es sujetar el CS8900A-CQ al circuito impreso para después soldarlo. Foto 1-Con una pequeña gota de adhesivo podemos colocar el CS8900A en su lugar. Es aconsejable utilizar algún tipo de lente de aumento, como una lupa o un microscopio, para asegurarse de que el CS8900A está perfectamente acoplado a los caminos trazados en el circuito impreso. HORA DE DESCANSAR? El chip no se pegará instantáneamente, de manera que tenemos tiempo de alinearlo correctamente hasta que coincida con el circuito impreso, como muestra la foto 2. Foto 2—Pon mucha atención al arrastrar el CS8900A porque sus pines pueden desalinearse. La razón por la que debemos usar pegamento de madera es para después soldar los pines del Circuito Integrado (IC) a los pads del circuito impreso con mayor facilidad. 3.-Software y Firmware Como el pegamento todavía no se habrá secado del todo, y ya sabemos que el EDB está basado en un PIC y usa un programa de PC para cargar al PIC16F877 el código, vamos a comentar un poco acerca de los componentes Software y Firmware. La aplicación que programa la EDB funciona sobre Windows98-XP. La aplicación de PC es un algoritmo ICSP (in-circuit serial programming) que usa LVP (low-voltage programming) a través del puerto paralelo del PC. Los botones y las expresiones de windows de la Foto 3 muestran las características del módulo ICSP. Foto 3—En el caso de que se programe erróneamente el PIC16F877, se puede recuperar con el botón Erase. ICSP Y LVP Además de leer y escribir el PIC16F877, el programa usa el campo ID del dispositivo (localizado en el área de configuración 0x2006) para, automáticamente, configurar las variables programadas. El reloj, los datos, el modo de programa y el control MCLR son las únicas líneas requeridas para efectuar el ICSP en modo LVP para las partes PIC16F877. Fíjate bien y verás que no hay componentes de alto voltaje (13V) o voltajes en la figura 2 o en el EDB. El modo LVP, que es provocado por un TTL de alto nivel, es aplicado por el pin RB3 del PIC16F877, y aplica 5V al pin Vcc del PIC para generar el voltaje requerido para la programación, internamente. Como todos los pins de control están trabajando a niveles TTL, el puerto paralelo del PC, es perfecto para este propósito. Figura 2—El PIC16F877 se podrá programar con un número mínimo de componentes externos. El firmware Ethernet se generará usando el programa de Microchip MPLAB. Después de que el código del PIC esté configurado, el fichero .hex resultante se ha de cargar en la aplicación de PC de la EDB y transmitido por el puerto paralelo al PIC. Aunque parezca un poco complicado, es un proceso realmente sencillo. 4.- Ensamblar la ethernet Todavía quedan muchas cosas que decir sobre el software y el firmware, pero de momento, vamos a continuar con poniendo el hardware Ethernet y el PIC16F877 juntos. Como el componente principal, el CS8900A-CQ, está encapsulado usando tecnología surface-mount1(SMT). NO FLOATING ALLOWED Otra parte esencial de la construcción es la pasta de soldar. La pasta de soldar, además de ayudar in el proceso de soldado, también mantiene los pequeños componentes en su lugar hasta que se les aplica calor. En la foto 4 se observa que sobre los pads no es necesario aplicar pasta. 1 Sistema de montaje de placas en el que los componentes no se incrustan, sino que se montan en la superficie. Foto 4—No pasarse con la cantidad de pasta de soldar, o los pequeños componentes “flotarán” y será difícil su colocación. 5.-Instalar los condensadores Ahora que hemos empezado a aprender a soldar en el campo SMT, vamos a montar los condensadores de 0.1µF (C11, C12 y C15) en la parte de la Ethernet de la placa. Como se puede observar en la foto 5, solo hay 3 condensadores. Las cápsulas del SMT no están marcadas, así que hay que tener cuidado en no confundir las partes que hemos preparado para soldar. Antes de completar el montaje de los componentes más pequeños del SMT en la parte Ethernet, vamos a comentar el por qué están esos componentes ahí. Foto 5—Éstos componentes son una gran práctica. La necesitaremos para la otra parte de la placa. PIN POINT Si echamos un vistazo a los componentes que acompañan al kit CS8900A-CQ, encontraremos un montón de dispositivos que, de momento, no sabemos para que sirven. Pues bien, pongámonos manos a la obra. Para polarizar adecuadamente estos módulos analógicos internos, una resistencia (R1) de 5-kilohm, 1% la instalaremos tan cercano como nos sea posible al pin RES (93) y al pin de Tierra (94). La resistencia R2 (4.7kilohm, 1 %) la colocaremos para dormir el CS8900A-CQ en el pin 77. Realmente, esta resistencia no tiene que ser muy precisa porque únicamente detiene al dispositivo a nivel lógico. Las resistencias R3 y R4 las asociaremos a los LEDs. Estas también han de ser de 4.7-kilohm, 1%. La resistencia R5 (100-ohm, 1%) es la terminación del cable de comunicaciones. Simplemente cambiando las resistencias R6 y R7 junto con la capacidad del condensador C10, el CS8900A-CQ puede ser programado para soportar un cable de comunicaciones de una impedancia de 100, 120 y 150 ohms. El LINKLED es un LED verde manejado por el pin 99 del CS8900A-CQ. El bit HCE0 del control de registro hace que el pin se apague cuando un pulso válido es detectado en el cable de comunicación. El pin 100 maneja el LED rojo (LANLED). Este pin se activa durante una colisión cuando ocurre una colisión o una operación transmisión / recepción. 6.-Acabando la instalación Vamos a usar la foto 6 para completar el LED, las resistencias, condensadores,... Hay que poner especial atención a la instalación del LED, detallada en la foto 7. Si seguimos las indicaciones de las fotografías, todo marchará sobre ruedas. Foto 6—Las líneas que apuntan a los LEDs, normalmente denotan el cátodo de los dispositivos, pero en el LED rojo señala el ánodo. Foto 7—Vista ampliada de los LEDs. 7.-El resto del proyecto Después de montar todo lo que hemos citado hasta ahora, hay que montar y soldar Q1, R8, R9 y R10. Usa la foto 10 como guía. Cuando hallamos terminado con el transistor MCLR y sus resistencias, instalar el 74LS125 y su condensador C15. Ahora podemos instalar el cristal XTAL2 de 20 MHz, en cada cara del circuito impreso. El pin del centro del XTAL2 es tierra, y los externos pueden ir a ambas partes de éste. Foto 10—Asegurarse bien de montar el 2N2222 y todas las resistencias circundantes antes de soldar el enchufe PLCC de 44-pins. Algunas de las resistencias quedan ocultas bajo el PLCC. ¿RELAX? Foto 11—Esto no es tan difícil como parece. Ahora lo deberíamos tener todo instalado excepto el conector hembra RJ-45 (J1), el conector DB-25, el conector de encendido y el enchufe PLCC para el PIC16F877. Aquí es donde, realmente, un buen equipo de soldadura destaca sobre un soldador normal y corriente. Vamos a alinear el enchufe PLCC sobre los pads. Sólo necesitaremos un poco de soldadura para los pins del enchufe. Es aconsejable soldar de arriba hacia abajo a lo largo de cada lado del PLCC e ir rotando el circuito impreso 90º hasta tener las cuatro partes soldadas. 8.-PARA TERMINAR… Después de haber puesto el PLCC, todo lo que queda por hacer limpiar la placa con un disolvente de pasta de soldar. Después de que se seque la placa, deberíamos tener algo como lo que se muestra en las fotos 12 y 13. Foto 12—En la figura se muestran el conector DB25, el RJ-45-45 y el de corriente. El cristal de 20MHz también va colocado en esta cara de la placa. BUEN TRABAJO Ahora toca sentarse y maravillarse con el trabajo que hemos hecho. En nuestras manos tenemos un motor para las redes Ethernet, completamente funcional, respaldado por uno de los microcontroladores con memoria flash más poderosos del arsenal de Microchip. Foto 13—La parte de atrás del monstruito. PARTE 2: SOFTWARE Y FIRMWARE En esta parte del tutorial vamos a aprender a realizar una aplicación para nuestra placa. 1.-Los elementos básicos Lo primero de todo es establecer una dirección IP a la EDB. Cualquier IP válida funcionará, y la elección dependerá de la Ethernet en la que usaremos nuestra placa. Una dirección válida sería la 192.168.1.150, que es una dirección reservada para las redes privadas. La IP de la placa está definida en el área de definición de la dirección IP del código, como se muestra en el anexo 1. El siguiente paso es asignarle una dirección MAC (Control de Acceso al Medio) a la placa. La dirección hardware es una característica que, normalmente, está regulado por el IEEE. Si nuestro objetivo es usar nuestra placa con un fin puramente comercial, necesitaremos adquirir un único identificador del hardware. El objetivo es que no existan dos dispositivos con el mismo identificador. Lo más común en los dispositivos comerciales es que la dirección MAC sea un combinado entre una ID suministrada por IEEE a cada fabricante unido al número de serie del producto. Éstos números vienen impresos en alguna parte visible de todos los dispositivos cuya función sea pertenecer a una red. La dirección MAC de nuestra tarjeta de red, por ejemplo, la podemos conocer con el comando ARP, que ya veremos después. La dirección MAC quedará almacenada en el registro de Dirección Individual (IA) en el CS8900A-CQ. El diseño del registro IA hace necesario situar el octeto más significativo de la dirección MAC en el octeto menos significativo del registro. Tendremos que definir tres variables MYMACXX que pongan los octetos MAC en el orden correcto antes de que sean cargados en el registro IA del chip. En el anexo 2, está la dirección MAC y el esquema de registros del CS8900A-CQ. 2.-Registros Hay numerosos registros en el CS8900A-CQ. La mejor manera de trabajar con ellos es predefinirlos y usar etiquetas que sean legibles. Empecemos con las definiciones PacketPage I/O; todos los registros internos del IC están listados y definidos, tanto si son usados como sino. Las etiquetas que empiezan con ‘pageport’ representan los 16 puertos base de I/O y quedan declaradas en el anexo 3. Los registros internos PacketPage a los que se accede usando los puertos PacketPage I/O están prefijados por ‘ppage.’. Aquí es donde se inicializan los registros. Los contadores y los estados de los registros están agrupados como muestra el anexo 4. Hay 5 eventos PacketPage y todos están definidos por sus nombres de la hoja de características. Alguno de los registros del IC tienen nombres que son demasiado largos para ponerlos tal cual en el código. Aquí tienes un listado con estos registros declarados con el nombre más legible posible: • PacketPage self control • PacketPage self status • PacketPage bus control • PacketPage bus status • PacketPage line control • PacketPage test control • PacketPage receiver configuration • PacketPage receiver event • PacketPage receiver control • PacketPage transmit configuration • PacketPage transmit event • PacketPage transmit command • PacketPage buffer configuration Los registros anteriormente citados junto a todos los registros, pueden ser agrupados en seis categorías más grandes: Registros de bus, Estado y Control, Inicio de transmisión, Filtro de Dirección, Recibir Trama y Enviar Trama. Las seis categorías, además de sus subcategorías, las podemos encontrar en el área de 4K denominada PacketPage. REGISTROS DE BUS El registro de bus lo usa el CS8900A-CQ. El ppageBaseIO forma parte del grupo del registro de bus, y su dirección de I/O es la 0x300, de manera que en el código no la deberemos asignar. Podríamos usar el registro ppagePID para determinar qué nivel del CS8900A-CQ está pegado en la EDB, pero eso sólo sería un desperdicio de código, memoria y ciclos de reloj para esta aplicación. El modo de 8-bits del CS8900A-CQ no permite el uso de interrupciones, EEPROM o DMA. Así es que debemos consultar la línea INTRQX para detectar transmisiones, recepciones o errores. Para realizar la consulta, debemos poner una de las líneas INTRQX en estado de transmisión. La aplicación usará la línea INTRQ0, la cual está definida en el registro ppageINT usando la máscara para la INTRQ0 (0x00), como muestra el anexo 5. Después de que la interrupción quede definida y activada, podemos encender el transmisor y receptor del CS8900A-CQ. REGISTROS DE ESTADO Y CONTROL Estos registros están divididos en dos subgrupos –registros de configuración y control y registros de eventos y estado. Los registros de configuración y control determinan cuántas tramas son transmitidas y recibidas. Además, los éstos registros determinan qué tramas serán enviadas y recibidas y qué eventos causarán una interrupción que será enviada al PIC16F877. La EDB usa muchos registros de configuración y control al principio del código para establecer varias áreas que se encargarán de las funciones de recepción y transmisión. Por ejemplo, en el anexo 6, la rutina InitChip usa definiciones del ppageRxCFG y ppageTxCFG para generar una interrupción cuando: • se reciba una trama sin errores (RXCFG_RX_OK_IE) • un paquete se transmita correctamente (TXCFG_TX_OK_IE) • ocurra una colisión ‘out-of-window’ (TXCFG_OUT_WIN_IE) • una transmisión dure más de 26 ms (TXCFG_JABBER_IE) • ocurra una colisión (TXCFG_ALL_IE bit 0x0B) • ocurran 16 colisiones (TXCFG_16_COLL_IE) Si tomamos aparte el registro de control (ppageRxCTL), encontramos que: • El CS8900A-CQ sólo acepta tramas con el CRC y la longitud correctas (RXCTL_RX_OK_A). • La dirección de destino de la cabecera del paquete debe coincidir con la dirección IA encontrada en el registro ppageA (RXCTL_IND_A). • Las tramas Broadcast con una dirección de destino de FFFFFFFFFFFF hexadecimal es aceptada (RXCTL_BCAST_A). INITCHIP Continuando con nuestro estudio de InitChip, es obvio que la ethernet será 10BaseT (LINECTL_10BASET), y el CS8900A-QC enviará y recibirá bits codificados a la red en modo ‘full duplex’ (TESTCTL_FDX). Las referencias a los registros de estado y control las podemos encontrar a lo largo de todo el código de la EDB debido a que su función es informar sobre el estado de las tramas transmitidas y recibidas. La actividad del registro de control y estado también existirá en situaciones donde se quiera saber el estado del IC. El anexo 7 muestra la secuencia de reset del CS8900A-CQ. El bit de reset con el ppageSelfCTL tiene implementado un retraso de 10ms para permitir que el IC calibre sus circuitos analógicos. El bit de Reset ppageSelfCTL (SELFCTL_RESET) actua una sola vez. El SELFCTL_RESET también determina el comportamiento del LED. Después de 10ms, se realiza un análisis del bit INITD en el registro de estado (SELFSTAT_INIT_DONE_BIT). Cuando se borra este bit, el reset del IC finaliza. La última área de control y estado que analizaremos será el registro de bus, ppageBusStatus. Para conseguir transmitir el buffer, el host debe solicitar un espacio de transmisión en el CS8900A-CQ. BUSSTA_RDY4TXNOW_BIT indica al host que el IC está listo para aceptar una trama. El código para esta operación es un poco complejo, y está mostrado en el anexo 8. REGISTROS DE INICIO DE TRANSMISIÓN Estos registros le dicen al CS8900A-CQ, cómo transmitir el siguiente paquete. Las primeras cuatro definiciones del anexo 9 son valores que pueden ser usados para dar la instrucción al IC de que empiece a transmitir después de que un cierto número de bytes hayan sido transmitidos al buffer de transmisión del CS8900A-CQ. Por ejemplo, TXCMD_AFTER_5 indica que empiece la transmisión después de que en el buffer del IC hayan 5 bytes. En el trozo de código que sigue a los defines, TXCMD_AFTER_ALL, lo que significa que debe esperar a que cada byte enviado sea cargado en el buffer de transmisión del CS8900A-CQ antes de transmitir. Vamos a hablar sobre el byte de mayor importancia del registro TXCMD. Si el bit TXCMD_NO_CRC está incluido en la máscara, el valor CRC generado no se adjuntará a la transmisión. Como estamos adjuntando un CRC y el bit TXCMD_NO_PAD no tiene ningún valor, cualquier paquete con menos de 60 bytes será rellenado hasta alcanzar los 60 bytes y se adjuntará el CRC a la transmisión. La razón del control es permitir que paquetes indebidos también sean transmitidos. Esta actividad ilegal podría ser usada en el desarrollo o la fase de test de un diseño para testear otros dispositivos Ethernet o Software para la captura de datos en una red como un Sniffer. El bit TXCMD_FORCE elimina cualquier trama que esté esperando a ser transmitida y aborta la transmisión de cualquier trama que esté siendo transmitida. REGISTROS DE FILTROS DE DIRECCIONES El CS8900A-CQ viene equipado con un registro de dirección destino (DA). Este filtro de dirección determina qué tramas pasarán el portal de recepción para ser colocadas buffer de recepción del CS8900A-CQ. El primer bit de la dirección física (MAC) debería ser un 0. Esto es debido a que si el primer bit no fuera un cero, se podría confundir con la dirección lógica. La IA de la trama que llega, debe coincidir con la dirección física del registro IA del CS8900A-CQ (ver Anexo 2). Si el primer bit del registro de la dirección de destino (DA) que recibimos, es un 1, entonces la trama es multicast, y la dirección es lógica, no física. El CS8900A-CQ utiliza una técnica de hashing2 para determinar si debe o no aceptar la trama multicast recibida. Echemos un vistazo al anexo 6 bajo la definición PacketPage receiver control register bit, y veremos que el bit multicast (RXCTL_MCAST_A) no está definido. De manera que, nuestra placa ignorará las direcciones multicast. Con otro vistazo al anexo 6 vemos que, además de las direcciones físicas, la EDB también admite direcciones broadcast. A menos que conozcamos cada dirección física o IP de cada host con el que nos queramos comunicar y que cada uno de los host conozca nuestra dirección IP y MAC (muy improbable), lo mejor será poder analizar un mensaje de broadcast. COLOCACIÓN DE LAS TRAMAS A ENVIAR Y RECIBIR Esta parte es la que se utiliza para transmitir tramas entre el CS8900A-CQ y el PIC16F877. Sólo se recibe y transmite una trama si el PIC está disponible, y el espacio que ocupa cada trama está dinámicamente adjudicado por el CS8900A-CQ. Por supuesto que, todos los datos son transmitidos entre la RAM del PIC y el buffer de 4K del CS8900A-CQ a través de los puertos PacketPage I/O. 2 Dividir un archivo en trozos más pequeños 3.-Operaciones de transmisión y recepción del CS8900A-CQ Ahora vamos a ver el anexo 10 antes de continuar leyendo. Este anexo es una lista de los puertos del PIC y la definición de cada pin. El puerto B del PIC16F877 se usa para programar el control de I/O del IC. El bus de datos está contenido en el puerto C y el bus de dirección de 4 bits en la mitad de abajo del puerto D. Los primeros 48 bytes de la RAM del PIC son los contadores, los flags, punteros y los registros scratch que constituyen la mayoría de las aplicaciones del PIC. El buffer de datos empieza en la dirección de registro del PIC 0x32. El anexo 11 consiste en un bucle que analiza la línea INTRQ0 del CS8900A-CQ seguido de un código para determinar si se ha recibido una petición ARP. ServiceISQ envía rutinas basadas en el protocolo contenido en esas tramas. Para recibir una trama, el IC debe aceptarla usando el registro IA y el filtrando la dirección destino. Después de que el paquete sea aceptado, la introducción y el delimitador de principio-de-trama son ignorados y los bits que siguen al SFD son cargados en el buffer de recepción del CS8900A-CQ. Para ayudar a comprender la diferencia entre paquetes y tramas, se ha incluido la figura 1. RXCFG_RX_OK_IE (0x0100) se carga en el registro RxCFG, y el bit BufferCRC (0x0800) se borra. Esto significa que no se incluye el CRC en el buffer de recepción o el cálculo de la longitud. Figura 1—Todo lo que hay en el área de la trama (frame), a excepción del relleno (Padding) y del CRC, lo ponemos nosotros. LA SIGUIENTE LECTURA La siguiente lectura requerida introduce la longitud de la trama, y será transmitida del IC al PIC. Esto es la longitud total de bits que empiezan con el DA y terminan con el último byte antes del valor CRC de 4 bytes. El valor de la longitud de la trama es almacenado al principio de dos ubicaciones del buffer del PIC (0x30 y 0x31). El buffer de recepción del CS8900A-CQ pasa de ser un byte bajo a un byte alto en la RAM del PIC por la longitud de la trama almacenada. El buffer de la trama en el PIC va de 0x32 a 0x7F, o sea, 78 bytes. Sobra mucha memoria RAM en el PIC de otros bancos que pueden ser usados para hacer más grande el buffer, pero para esta aplicación, 78 bytes son suficientes. Esto significa que solo debemos aceptar tramas de 78 bytes o menos o únicamente rellenar el buffer del PIC con 78 bytes, como máximo, e ignorar el resto. Bien, no hay bits para limitar la longitud de la trama recibida, pero podemos despreciar cualquier byte que vaya más allá de los 78 permitidos. En el anexo 12 bajo el nombre GetFrameData, hay un flag bit denominado bitbucket. Si incrementamos el FSR (apuntará al siguiente registro disponible de la RAM del PIC) lo pondremos por encima de 0x7F, el resto de los bytes que sobran son leídos desde el buffer de recepción del IC y vaciado al cubo de bits. En lugar de desechar los bytes que sobrepasen la dirección 0x7F en el buffer de recepción del CS8900A-CQ, podríamos leer el registro RxEvent después de transmitir el byte 0x7F y hacer que el CS8900A-CQ mueva la siguiente trama a su buffer. Pero como se está leyendo la trama entera, no es necesario hacer esto. Foto 1—Imagen del programa que usaremos para programar el PIC. (ampliar) Vamos a suponer que un host envía una petición ARP a la EDB y todas las instrucciones del anexo 12 se ejecuten con éxito. La foto 1 muestra cómo aparece dentro del PIC. En la foto 2 vemos que el Sniffer ve en la misma situación y en la misma trama. Foto 2—Hemos recibido una trama con un tamaño de 60 bytes. (ampliar) La longitud de la trama está indicada en las direcciones 0x30 y 0x31 en el depósito del PIC. El Sniffer simplemente indica el tamaño de la trama. Empieza en la dirección 0x32 en el depósito del PIC en la foto. Echemos otro vistazo a la figura 1 y vayamos comparando los datos de la foto 1 y la foto 2. 4.-ARP Si miramos al principio de la captura del Sniffer, nos daremos cuenta que el segundo evento es una transmisión ARP, y el tercero es la respuesta ARP de la dirección física 00EDTP. La foto 3 parece similar a la captura de pantalla de la respuesta ARP con la excepción de que se le ha agregado una dirección física suministrada por la EDB (000045445450) y un Opcode 2 en la trama ARP define la trama como una respuesta ARP. El proceso ARP es como un problema de álgebra. Usas algo conocido (direcciones IP) para obtener algo desconocido (dirección física). Foto 3—En esta captura se muestra la respuesta ARP que hemos recibido. (ampliar) Si empezamos en la DA y contamos el número total de bytes en la respuesta ARP, tendremos 42. Eso es el total, 60 bytes, menos 18 de relleno. En el anexo 14, al Puerto C se le ordena sacar 0x2A y 42 bytes del buffer de respuesta ARP del CS8900A-CQ. Después de que el IC asigne el espacio y fije el RDY4TXNOW_BIT, los bits de la respuesta ARP salen de la RAM del PIC en el orden que se muestran en la figura 1 y la foto 3, empezando con la DA. Después de que todos los bytes estén acumulados en el buffer de transmisión del CS8900A-CQ, el IC genera una introducción a la que le sigue un SFD. Y suponiendo que no ocurre ninguna colisión, la respuesta ARP alcanza la ethernet seguida de un CRC generado por el CS8900A-CQ. SIN TRAMPAS Si seguimos observando la foto 3, vemos que el cuarto evento es una transmisión UDP entre el PC llamado SPEADY y la EDB. Ahora no vamos a entrar en detalle sobre lo que significa cada campo IP. Podemos observar que los campos del Sniffer coinciden con los campos IP que se muestran en el anexo 15. En la foto 4 se puntualiza el tipo de campo DLC en el contenedor hex. 0800, el cual denota una trama IP. Siguiendo la lógica en el anexo 16, podemos ver que el 0806 crea una trama ARP repetida, y el 0800 envía el código al path para procesar una trama IP. Foto 4—Todo este trabajo para transmitir un solo byte! (ampliar) El firmware de la EDB examina el puerto de destino UDP para determinar cómo manejar los datos UDP. En este caso, el puerto destinatario es el 7. Cuando el puerto UDP esté direccionado en el firmware de la EDB, se produce una operación de ‘eco’. Esto significa que, los datos, en este caso una “a” (0x61), son repetidos y devueltos al puerto del host 5002. Lo podemos ver desde el quinto evento, en la parte de arriba de la foto 5, que este intercambio implica al puerto emisor y al receptor, direcciones IP y direcciones físicas. Esta trama intercambiada es devuelta al puerto emisor UDP con los datos UDP intactos. Vamos a comparar las fotos 5 y 6 para asimilar el concepto. Foto 5—Y te vuelve un byte de datos. (ampliar) PINGING ARP y UDP es el conjunto básico de protocolos que la EDB usa para mover los datos a través de la ethernet. El ping es una aplicación basada en el protocolo ICMP que nos ayuda a determinar si un host remoto está online. Las fotos 7 y 8 muestran el proceso más detalladamente, pero a nosotros no nos hace falta mucho más, simplemente saber que el ping está incorporado en el firmware de la EDB. La foto 9 muestra el comando ping usado bajo un PC sobre Windows 98 a la EDB bajo el control del PICMASTER. Foto 6—La primera vez que falla el ping es porque la aplicación del PIC no estaba ejecutándose. (ampliar) 5.-What’s the point Bien, ya hemos visto como construir un aparato y trabajar en una Ethernet con un PIC y un puñado de componentes. A continuación se incluye un programa en Visual Basic que envía y recibe datos usando el protocolo UDP. Podemos seleccionar la dirección IP y el puerto UDP y transmitir datos entre el PC y cualquier EDB en una red. Este pequeño programa también tiene una función de eco dirigida al puerto UDP 7 y un simple mecanismo de selección de IP y UDP, además de que puede enviar una señal de On/Off al dispositivo por el puerto A del PIC de la EDB. Puedes hacerte una idea de la funcionalidad del programa mirando la foto 7. Foto 7—La aplicación la puedes conseguir aquí. 6.-Y para finalizar... los programas No hemos hablado mucho sobre el código de programación del PIC16F877. El programa funciona con el .hex generado con el entorno de programación MPLAB de Microchip. Sólo hay que escribir el código, ensamblarlo y asegurarse de que la salida .hex y el código estén en el mismo directorio. Entonces, cargar el fichero .hex y pulsar el botón Programar. Foto 8—Captura del programador del PIC16F877 (ampliar) Con todo esto hemos conseguido la base para realizar cualquier tipo de aplicación en la que necesitemos enviar datos a través de una red. El chip CS8900 1.-Introducción El CS8900 es un chip Ethernet, es decir un chip diseñado para ser incrustado en placas caseras para brindar un interfaz completo Ethernet. El chip tiene incorporado un buffer que le permite conectar sistemas lentos a una LAN de 10Mbit/s a través de un RJ45. Cuenta con un modo de ocho bits que le posibilita un interfaz usando solo 14 pins de entrada / salida. Cualquier sistema que tenga dos puertos de 8 bits bidireccionales puede usar este chip. Usando microcontroladores actuales podemos implementarle funcionalidades básicas de TCP/IP. Otra de sus muchas posibilidades es poder ser programado para comunicarse vía Windows Socket desde un Windows 98 o un NT. 2.-Características principales El CS8900 tiene 4K de memoria integrada permitiéndole recibir y enviar paquetes de manera asíncrona al microcontrolador. Esto elimina cualquier problema temporal que normalmente aparece, permitiendo al lento microcontrolador hablar en la ethernet. El CS8900 junto con un microchip, es muchísimo más fácil de utilizar que los típicos receptores-transmisores que se conectan directamente en un puerto ISA o PCI usando DMA para tener acceso a una RAM externa utilizada para recibir los paquetes. Simplemente consta de un bus de direccionamiento de 4 bits, uno de 8 para datos y 4 señales de control (/RD, /WR, /AEN e INTR) es todo lo que necesita esta placa (CS8900 con microcontrolador) para comunicarse en la ethernet. 3.-Esquema principal del chip Cosas a destacar sobre el esquema a simple vista es que no tiene condensadores ya que el CS8900 los implementa en su interior. La resistencia de 4.99K que necesita puede que sea algo bastante difícil de encontrar, esto se puede solucionar con una tres resistencias una de 4.7K, otra de 254 Ohms y una de 51 Ohms. 4.-Arquitectura del CS8900 Como hemos dicho el chip es una solución ethernet, e incorpora toda la circuitería analógica y digital necesaria. Los bloques principales que hacen posible esto son: Interfaz ISA directo Incluido en el CS8900 es un bus con 24 mA de capacidad. Sus opciones de configuración cuatro interruptores y tres canales DMA (uno de ellos se selecciona durante la inicialización). incluyen Memoria integrada Incorpora una pagina de 4-Kbyte de memoria incrustada en el chip eliminando así el coste y el espacio que supondría tenerla externa, de este modo el chip es capaz de transmitir y recibir tramas el solo sin la necesidad de manejar difíciles e ineficientes esquemas de memoria. Además puede operar con controladores DMA proveyendo así al ingeniero de una gran flexibilidad. Máquina ethernet MAC La máquina MAC de este chip cumple completamente con la norma IEE 802.3 (ISO/IEC 8802-3, 1993), y soporta operaciones bidireccionales. Maneja todos los aspectos de una transmisión-recepción de tramas en ethernet incluyendo detección de colisión, preámbulo de generación y detección y generación y test CRC (cyclic redundancy check). Los aspectos programables del MAC incluyen retrasmisión automática cuando hay colisión y relleno automático de tramas transmitidas. Interfaz EERPROM El CS8900 nos provee de un simple y eficiente interfaz EEPROM que nos permite configurar la información almacenada en una opcional EEPROM, y luego cargarla automáticamente al arrancar. Esto elimina el uso de switches costosos y engorrosos jumpers. Frontal completamente analógico El frontal incorpora un codificador-decodificador analógico, un reloj para el recuperamiento del circuito, un transceptor 10BASE-T y una completa AUI (Attachment Unit Interfase). Este frontal prevé de una selección manual o automática entre 10BASE-T o AUI, y ofrece tres LED en el chip para indicar el estado de la comunicación, el estado del bus y la actividad de la línea ethernet. 10BASE-T El transceptor 10BASE-T incluye drivers, receptores y filtros analógicos permitiendo una conexión directa a transformadores aislados eléctricamente de bajo coste. Soporta 100, 120 y 150 Ohm de cables sin blindaje, cables largos, y recepción automática de polaridad inversa de detección y corrección. 5.-Pinouts del CS8900 Para poder montar cualquier chip necesitamos conocer el diagrama que describe el funcionamiento de cada pin del chip: 8 3 2 1 4 7 6 5 1) Vcc Entrada de corriente +5V DC (en continua) 2) GND La toma a tierra (Ground) 3) D7-D0 Entrada/salida del bus de datos del CS8900A 4) /AEN Adress Enable se activa a nivel bajo y esta también referido a Chip Select 5) /WR Control de escritura (write) 6) /RD Control de lectura (read) 7) /IRQ Interrupciones simbolizadas con este pin cuando se pone a nivel alto 8) A3-A0 Estos se usan para el bus de direcciones *Puse más o menos las correspondencias de los pins aunque no son totalmente exactas debido a que la precisión de las flechas no me lo permitió. 6.-Ejemplo de diseño de una placa Las piezas que nos harían falta serían las siguientes: • • • • • • • el chip de Crystal propiamente dicho un HALO TG42-1406IN1 resistencias de 24, 51, 100, 240 y 680 Ohm y una de 4.7 además de dos condensadores de 68pf y 100nF dos leds uno verde y uno amarillo un cristal de cuarzo de 20Mhz y un conector RJ45 Simplemente con esto podemos hacer nuestra pequeña placa conectada a una red ethernet, el diseño a seguir sería el siguiente: 7.-Aplicación con un CS8900A Un ejemplo de lo que podemos hacer con esta este chip, es un pequeño pero efectivo sniffer. Un sniffer es explicado rápidamente un programa que captura paquetes en una red los analiza y los interpreta para poder mostrarlos en pantalla. Una placa con este chip presenta un aspecto fantástico (solo hemos de usar 15 puertos de entrada salida) para ser usado como sniffer, simplemente tenemos que adquirir una placa muy barata de la casa Jameco, más exactamente el modelo “Jameco #162536” sobre la cual conectaremos nuestro chip CS8900 del siguiente modo: • • • • • • • Los pins a0 a a3 a los p0 a p3 de la placa de Jameco Conectaremos el /RD del chip al p4 Conectamos el /WR al p5 El AEN (es decir el /CHIPSEL) al p6 Dejaremos colgado el INTR, porque no lo vamos a usar Conectaremos el bus de datos “d0-d8” a los pines “p8-p15” de la placa de Jameco El p7 de la placa de Jameco no lo usaremos Gráfico de la placa de Jameco: *Nota: la verdad es que la placa para ser con fines educacionales es un poco cara cuesta unos 56€, se puede comprar en la página de Jameco ( http://www.jameco.com ) Una vez hecho esto solo nos queda programar el chip, el código fuente del sniffer lo podéis encontrar en http://embeddedethernet.com . Cuando ya tenemos programado el chip solo nos queda enchufar nuestro pequeño experimento a nuestro PC mediante el puerto COM, una de las facilidades que nos da la placa de Jameco Electronics, como podemos ver en el gráfico del pie de esta página. Nos conectaremos a la placa a través de una sesión Hyperterminal en Windows; por ejemplo. Cosas a tener en cuento al programar el chip son poner una IP de nuestra red y tener muchísimo cuidado al programar la MAC ya que esto es algo muy delicado, debido a que la MAC es un número que se compra y esta estandarizado por la IEE. Este número tiene la finalidad de hacernos posible la comunicación. El mayor problema que podemos tener es que nuestra MAC coincida con alguna de la red, hemos de evitar esto, y en el caso que fuéramos a poner esta placa en una red comercial entonces si que tendríamos que comprar una MAC buena. Un ejemplo de lo que devolverá nuestro sniffer se encuentra en la siguiente página: Este ejemplo es una solicitud de un ping (ICMP) a la dirección 192.168.1.2 la cual fue capturada. El autor fue 192.168.100.1 y su MAC la 006008DFD9A3, todo esto lo podemos ver en el cuadro de arriba que es lo que ha capturado nuestro sniffer. Bien, si seguimos observando también podemos ver que el destino de esta petición es la dirección 192.168.1.2 que tiene de MAC 000000123456. El paquete completo fue de tamaño 74 menos doce de la cabecera ethernet. Podemos sacar mucha más información del paquete capturado para ello solo hemos de entender la trama ethernet, para lo cual podemos apoyarnos en los numerosos libros que podemos encontrar en el mercado. Código del sniffer Signature=3124 EISA=630E ProdID=0700 ppSelfCtl=0015 ppSelfSt=0896 CS8900 RESET Init complete Recv packet length=74 Dest MAC=$000000123456 Src MAC=$006008DFD9A3 Packet type=$0800 IP Ver 4, HDR Length=20, TOS=$00 Packet Length=60 Datagram ID=$6F01 Fragment Offset=0 TTL=32 Protocol=ICMP Checksum=$0218 Source IP Address=192.168.100.1 Destination IP Address=192.168.1.2 Packet Data: 0800 3E5C 0200 0D00 6162 6364 6566 6768 696A 6B6C 6D6E 6F70 7172 7374 7576 7761 6263 6465 6667 6869 0000