Download “Desarrollo de aplicaciones para la conectividad IP de

Document related concepts
no text concepts found
Transcript
Departamento de Electrónica
“Desarrollo de aplicaciones para
la conectividad IP de
microcontroladores”.
Trabajo de título de Pablo Hernán Naveas Farías,
como requisito parcial para optar al título de
Ingeniero Civil Electrónico, mención Computadores.
Desarrollo de aplicaciones para la
conectividad IP de microcontroladores
„
Introducción a los Embedded Internet
Systems y objetivos del trabajo.
„
Tarjeta Easyweb y su interfaz de red.
„
Aplicaciones de red desarrolladas.
„
Conclusiones y trabajos futuros.
2
Introducción
„
Presencia de microprocesadores en la
vida cotidiana:
„
„
„
„
„
Electrodomésticos.
Juguetes.
Teléfonos celulares.
Equipos médicos.
Indispensables en actividad industrial.
3
Introducción
„
Conectividad de estos dispositivos:
„
„
„
Obtención y transferencia de información.
Control y configuración en forma remota.
Maneras de conectar estos dispositivos a
la red:
„
Solución por hardware.
http://www.lantronix.com
4
Introducción
„
Implementación de protocolos en el
dispositivo:
„
„
„
„
Programar stack TCP/IP.
Ocupar proyectos open source (uIP, lwIP).
Adquirir la solución por software.
“En el 2010, el 95% de los sistemas
conectados a Internet serán embebidos,
no PCs...”
5
Objetivos
„
„
Programar aplicaciones de red para la tarjeta
Easyweb.
Desarrollar aplicaciones que permitan el
control y el monitoreo del estado de la tarjeta
desde un PC.
6
Tarjeta Easyweb
MSP430 F149 más:
•
•
•
•
•
•
LCD de 16 x 2 caracteres.
Cuatro pulsadores.
2 salidas activadas por relé.
Un buzzer.
1 LED de propósito general.
Un conector para los pines JTAG del
microcontrolador.
• Conector P6 (ADC12).
Interfaz de red:
• Un controlador de red CS8900A de Cirrus
Logic, con sus componentes externos.
7
Interfaz de red: conexión MSP430 a
controladora de red CS8900.
Direccionamiento
IOR
/
Datos
IOW
uC
CS8900
8
Interfaz de red: conexión CS8900 a
componentes externos.
Link / Data
Leds
Conector
RJ- 45
Transformador de
aislación de pulsos
9
Interfaz de red: packet driver y stack
TCP/IP.
„
Se escogen:
„
„
„
„
„
cs8900a.c (packet driver).
Stack uIP.
Programados en C.
Código abierto.
Portados a la tarjeta Easyweb.
10
Interfaz de red: packet driver y stack
TCP/IP.
„
Interacción uIP con packet driver :
„
Inicialización (cs8900a_init())
„
Envío de datos (cs8900a_send())
„
Verificación de llegada de nuevos paquetes
(cs8900a_poll())
11
Interfaz de red: packet driver y stack
TCP/IP.
„
Stack TCP/IP: uIP.
„
Múltiples conexiones TCP/IP.
„
Detección de errores.
„
Permite paquetes fragmentados.
„
Tiene soporte para datagramas UDP.
12
Para programar una aplicación, ¿qué
archivos se deben incluir al proyecto?
Packet driver
Stack TCP/IP
Alg. Checksum.
ARP
+ main.c
+ aplicacion.c
Inicializaciones más Loop control
Aplicación a programar
13
Aplicaciones de red desarrolladas (1).
Conexión de la tarjeta a la red
14
Uso de la API del stack uIP.
„
„
uIP invoca periódicamente a una función de la
aplicación: UIP_APPCALL.
La API de uIP define el modo en que la aplicación
interactúa con las funciones del stack:
„
„
Manejo de conexiones.
Recepción y envío de datos.
15
Aplicaciones de red desarrolladas.
„
Desarrollo de primera aplicación y
programación de cliente TCP/IP (1):
„
„
„
Aplicación simple -> “msp430”
Configuración opciones ->uipopt.h
Definición de la función invocada periódicamente
16
Aplicaciones de red desarrolladas (1).
Primera aplicación:
//*************app1.c***********************
#include "uip.h"
#include “app1.h"
#include <string.h>
void app1_init(void) {
uip_listen(HTONS(1234));
}
void app1_appcall(void) {
if( uip_newdata() ) {
uip_send("msp430\n", 7);
}
}
//******************************************
17
Aplicaciones de red desarrolladas (1).
Primera aplicación:
//*************app1.h**********************
#include "uipopt.h"
#define UIP_APPCALL
app1_appcall
void app1_init(void);
void app1_appcall(void);
Configuración de
opciones del stack:
-IP (host, gateway)
-MAC
-Archivo de encabezado de la aplicación
Invocada periódicamente por el stack
18
Aplicaciones de red desarrolladas (1).
„
Programación de un cliente TCP/IP
„
„
Orientado a objetos
Rápido desarrollo de aplicaciones de red:
Sockets y Streams.
19
Aplicaciones de red desarrolladas (1).
Esquema cliente TCP/IP programado
20
Aplicaciones de red desarrolladas (1).
Instancia de un socket con Java
21
Aplicaciones de red desarrolladas (1).
Ejecución del cliente
22
Aplicaciones de red desarrolladas.
„
Segunda aplicación (2):
„
„
Diseño estructurado de aplicaciones:
administrador de eventos.
Estados en la aplicación.
23
Aplicaciones de red desarrolladas (2).
„
Diseño estructurado de aplicaciones con uIP.
#define UIP_APPCALL
eventhandler_app
void eventhandler_app(void) {
if(uip_aborted()) {aborted();}
if(uip_timedout()) {timedout();}
if(uip_closed())
{closed();}
if(uip_connected()){connected();}
if(uip_acked())
{acked();}
if(uip_newdata()) {newdata();
senddata();}
}
Administrador de eventos
24
Aplicaciones de red desarrolladas (2).
„
Segunda aplicación:
9 app2_init()
9 connected()
9 newdata(),senddata()
9 acked()
25
Aplicaciones de red desarrolladas (2).
Ejecución del cliente
26
Aplicaciones de red desarrolladas.
„
Tercera Aplicación (3):
„
„
„
Cliente de correo para el envío de e-mail.
Protocolo cliente – servidor SMTP
Se analizan datos recibidos para elaboración de
respuesta.
27
9uip_connect(,)
9connected()
9 newdata(),
senddata()
9 acked()
28
Aplicaciones de red desarrolladas (3).
29
Aplicaciones de red desarrolladas.
„
Cliente TCP/IP con GUI (4):
„
„
Control en forma remota del estado de la
tarjeta.
Desarrollo de una interfaz gráfica para la clase
programada.
30
Aplicaciones de red desarrolladas (4).
Control en forma remota de la tarjeta Easyweb:
Cliente TCP/IP con GUI.
Interfaz de desarrollo de aplicación GUI
31
32
Aplicaciones de red desarrolladas (4).
Control en forma remota de la tarjeta Easyweb:
33
Aplicaciones de red desarrolladas (4).
„
Cliente TCP/IP con GUI:
„
„
„
Escalable (agregar componentes).
Requerimientos (Java, plugins Swing –
AWT).
Interfaz más ‘universal’ -> Web
34
Aplicaciones de red desarrolladas.
„
Conectividad web:
„
„
„
„
uIP contiene la implementación de un
servidor web (fs.c, cgi.c, httpd.c)
Recursos de memoria -> escasos
Poca flexibilidad en el mantenimiento de la
aplicación.
Función de un microcontrolador: adquirir y
procesar datos, controlar procesos.
35
Aplicaciones de red desarrolladas (5).
„
Conectividad web:
„
Nuevo esquema -> Aplicaciones Web.
36
Aplicaciones de red desarrolladas.
„
Primera aplicación web (5):
„
Html más Servlet
„
Accionamiento remoto de un relé.
„
Página de respuesta con contenido dinámico.
37
Aplicaciones de red desarrolladas (5).
Página web de entrada
38
Aplicaciones de red desarrolladas (5).
<form action="/WebApp1/EasywebServer" method="post">
<input name="iphost" type="text" id="iphost" value="200.1.17.94">
<input name="puerto" type="text" id="puerto" value="1510">
<%botón de envío del formulario%>
<input type="submit" name="Submit" value="Conectar">
</form>
Código página web de entrada
39
Aplicaciones de red desarrolladas (5).
Página web de respuesta
40
Aplicaciones de red desarrolladas.
„
Desventaja de servlets:
„
„
Nula separación entre la presentación de la
página de respuesta y el código ‘funcional’.
Solución: Segunda aplicación web (6)
„
„
„
Uso de templates -> JSP.
Componentes web -> JSF.
JavaBeans
41
Aplicaciones de red desarrolladas.
Procesamiento de una página JSP en el servidor
42
Aplicaciones de red desarrolladas (6).
„
JavaBeans:
„
Clases de Java que cumplen dos convenciones
„
„
Constructor sin argumentos
Métodos get y set
43
Aplicaciones de red desarrolladas (6).
„
Estructura de la aplicación:
Bean de sesión
44
Aplicaciones de red desarrolladas (6).
Programación de una página JSP con componentes JSF
45
Aplicaciones de red desarrolladas (6).
<h:form binding="#{Page1.form1}" id="form1">
<h:inputText binding="#{Page1.textField1}" id="textField1“
value="#{SessionBean1.ip}"/>
<h:inputText binding="#{Page1.textField2}" id="textField2"
value="#{SessionBean1.puerto}"/>
<h:commandLink action="Conectar"
actionListener="#{SessionBean1.Conectar}"
<h:outputText binding="#{Page1.linkAction1Text}"
value="Conectar"/>
</h:commandLink>
</h:form>
Código de la página de bienvenida JSP con componentes JSF
46
Aplicaciones de red desarrolladas (6).
#{SessionBean1.lcd_send}
#{SessionBean1.toggleLed}
#{SessionBean1.toggleRele}
#{SessionBean1.buzzer}
#{SessionBean1.disconnect}
#{SessionBean1.adcAdq}
Página de control de la tarjeta Easyweb
47
Aplicaciones de red desarrolladas.
„
Control simultáneo de dos o más tarjetas?
Aplicación web final (7):
-> un Bean y una página JSP por tarjeta.
-> cambio página de bienvenida, la conexión se
realiza desde la página de control.
DEMO
48
Conclusiones
„
„
„
Documentación del proceso de diseño
de aplicaciones de red con stack uIP
para tarjeta Easyweb.
Documentación del desarrollo de
aplicaciones de red en Java.
Nuevo esquema para la conectividad
web de la tarjeta Easyweb.
49
Trabajos Futuros
„
Seguridad.
„
Red de microcontroladores.
„
Programación del microcontrolador vía
interfaz web.
50
Departamento de Electrónica
“Desarrollo de aplicaciones para
la conectividad IP de
microcontroladores”.
Trabajo de título de Pablo Hernán Naveas Farías,
como requisito parcial para optar al título de
Ingeniero Civil Electrónico, mención Computadores.
Interfaz de red: Rx y Tx de paquetes con
CS8900.
„
Transmisión:
„
„
Envío de trama desde el packet driver del
microcontrolador hacia el buffer del
CS8900.
CS8900 prepara el paquete y lo envía hacia
la red.
52
Interfaz de red: Rx y Tx de paquetes con
CS8900.
„
Recepción:
„
„
Llegada de un paquete desde la red, se
desempaqueta y se almacena en buffer de
CS8900.
La trama es transferida hacia el buffer del
stack.
53
Protocolos para la implementación de TCP/IP en
microcontroladores.
Fuente: www.ixxat.de ©2003 IXXAT Automation GmbH
54
Estados conexión TCP.
„
„
„
„
„
„
„
„
„
„
„
/* The TCP states used in the uip_conn->tcpstateflags. */
#define CLOSED
0
#define SYN_RCVD 1
#define SYN_SENT 2
#define ESTABLISHED 3
#define FIN_WAIT_1 4
#define FIN_WAIT_2 5
#define CLOSING
6
#define TIME_WAIT 7
#define LAST_ACK 8
#define TS_MASK
15
„
„
#define UIP_STOPPED
16
„
#define UIP_TCPIP_HLEN 40
55
Loop de control del stack uIP (main.c)
UIP_APPCALL();
56