java_y_usb

Post on 08-Apr-2018

236 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

  • 8/7/2019 java_y_usb

    1/45

    Java y USBEn este documento se presentar la definicin dellenguaje de programacin Java, la definicin del estndarUSB, y la forma de lograr una comunicacin o interaccinentre ellos.

    Jess David Meneses Snchez

    Juan David Marn Martnez

    30/05/2008

  • 8/7/2019 java_y_usb

    2/45

    2

    CONTENIDO

    1 JAVA .......................... ...................... ............................ .................... ........................... ............ 4

    1.1 Historia ............................ ...................... ............................ .................... ......................... 4

    1.2 Filosofa ........................... ...................... ............................ .................... ......................... 7

    1.2.1 Orientado a Objetos ......................... ....................... ............................ .................... 7

    1.2.2 Independencia de la plataforma ......................... ............................ ................... ...... 8

    1.2.3 El recolector de basura ...................... ........................... ........................ ................ 10

    1.3 Entornos de funcionamiento ..................... ........................... ........................ ................ 10

    1.3.1 En dispositivos mviles y sistemas empotrados ........................ ............................ . 11

    1.3.2 En el navegador web ......................... ............................ ....................... ................. 11

    1.3.3 En sistemas de servidor ....................... .......................... ......................... ............... 11

    1.3.4 En aplicaciones de escritorio ..................... ............................ .................... ............ 12

    1.3.5 Plataformas soportadas ....................... ...................... .............................. ............. 12

    1.4 Recursos .......................... ...................... ............................ .................... ....................... 13

    1.4.1 JRE ........................... ...................... ............................ .................... ....................... 13

    2 USB ........................... ...................... ............................ .................... .............................. ....... 15

    2.1 Componentes Del Sistema De Bus Serie Universal USB ........................... ..................... 16

    2.1.1 Controlador ........................ ...................... ............................ ...................... .......... 16

    2.1.2 Concentradores o Hubs ........................ ............................ ....................... .............. 16

    2.1.3 Perifricos ........................... ...................... ............................... .................... ......... 17

    2.2 Caractersticas de Transmisin ..................... ............................... ................... ............... 18

    2.3 La Topologa del Bus ......................... ...................... ............................ ................... ....... 19

    2.3.1 La Capa Fsica ............................ ...................... ............................ ................... ....... 21

    2.3.2 La Capa Lgica .......................... ...................... ............................ ................... ....... 22

    2.3.3 La relacin "software del cliente-funcin" ........................ ............................ ......... 232.4 El flujo de datos del bus USB ..................... ............................ ..................... ................... 23

    2.4.1 Endpoints y direcciones de dispositivo .................. .............................. .................. 24

    2.4.2 Tuberas ........................... ....................... ........................... .................... ............... 24

    2.4.3 Frames y microframes ........................ ........................... ........................ ................ 26

    2.4.4 Sync ............................... ................... ............................ ................... ..................... 26

    2.4.5 Tipos de transferencias ....................... .......................... ......................... ............... 26

  • 8/7/2019 java_y_usb

    3/45

    3

    2.5 Capa de protocolo ............................ ...................... ............................ ................... ....... 27

    2.5.1 Formato de los campos ....................... .......................... ......................... ............... 29

    2.5.2 Codificacin de datos ....................... ....................... ............................ .................. 30

    2.5.3 Relleno de bits .......................... ...................... ............................ ................... ....... 30

    2.5.4 Formato de los paquetes ..................... ............................ ....................... .............. 30

    2.5.5 Transacciones ........................... ...................... ............................ ................... ....... 32

    2.5.6 Split ............................... ................... ............................ ................... ..................... 34

    2.5.7 El protocolo y las transferencias ......................... ............................ ................... .... 36

    2.6 La elctrica ......................... ...................... ............................ ................... ..................... 38

    2.6.1 Identificacin de la velocidad del dispositivo ............................ ....................... ...... 38

    2.7 La mecnica ........................ ...................... ............................ ................... ..................... 39

    2.7.1 Cable estndar de quita y pon ...................... ............................ ................... .......... 39

    2.7.2 Cable fijo de velocidad alta y media ........................ ............................ .................. 40

    2.7.3 Cable fijo de velocidad baja .................. ............................ ...................... ............... 40

    2.8 Estndar IEEE 1394 o FireWire. ......................... ............................ .................... ............ 41

    3 COMUNICACIN USB A TRAVS DE JAVA ..................... ............................ ................... .......... 42

    3.1 JSR-80 API ........................... ...................... ............................ ................... ..................... 42

    3.2 API jUSB .......................... ...................... ............................ .................... ....................... 43

  • 8/7/2019 java_y_usb

    4/45

    4

    1 JAVAJava es un lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems a

    principios de los aos 90. El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene

    un modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a

    muchos errores, como la manipulacin directa de punteros o memoria.

    Las aplicaciones Java estn tpicamente compiladas en un bytecode, aunque la compilacin en

    cdigo mquina nativo tambin es posible. En el tiempo de ejecucin, el bytecode es

    normalmente interpretado o compilado a cdigo nativo para la ejecucin, aunque la ejecucindirecta por hardware del bytecode por un procesador Java tambin es posible.

    La implementacin original y de referencia del compilador, la mquina virtual y las libreras de

    clases de Java fueron desarrolladas por Sun Microsystems en 1995. Desde entonces, Sun ha

    controlado las especificaciones, el desarrollo y evolucin del lenguaje a travs del Java Community

    Process, si bien otros han desarrollado tambin implementaciones alternativas de estas

    tecnologas de Sun, algunas incluso bajo licencias de software libre.

    Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus

    tecnologas Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community

    Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre (aunque labiblioteca de clases de Sun que se requiere para ejecutar los programas Java todava no es

    software libre).

    1.1 HistoriaLa tecnologa Java se cre como una herramienta de programacin para ser usada en un proyecto

    de set-top-box en una pequea operacin denominada the Green Project en Sun Microsystems en

    el ao 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling,

    trabaj durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.

    El lenguaje se denomin inicialmente Oak (por un roble que haba fuera de la oficina de Gosling),luego pas a denominarse Green tras descubrir que Oak era ya una marca comercial registrada

    para adaptadores de tarjetas grficas y finalmente se renombr a Java.

    Los objetivos de Gosling eran implementar una mquina virtual y un lenguaje con una estructura y

    sintaxis similar a C++. Entre junio y julio de 1994, tras una sesin maratnica de tres das entre

    John Gaga, James Gosling, Joy Naughton, Wayne Rosing y Eric Schmidt, el equipo reorient la

    plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic, propiciara que

    Internet se convirtiese en un medio interactivo, como el que pensaban era la televisin por cable.

  • 8/7/2019 java_y_usb

    5/45

    5

    Naughton cre entonces un prototipo de navegador, WebRunner, que ms tarde sera conocido

    como HotJava.

    En 1994, se les hizo una demostracin de HotJava y la plataforma Java a los ejecutivos de Sun. Java1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995,

    durante las conferencias de SunWorld, a que vieran la luz pblica Java y HotJava, el navegador

    Web. El acontecimiento fue anunciado por John Gage, el Director Cientfico de Sun Microsystems.

    El acto estuvo acompaado por una pequea sorpresa adicional, el anuncio por parte de Marc

    Andreessen, Vicepresidente Ejecutivo de Netscape, que Java sera soportado en sus navegadores.

    El 9 de enero del ao siguiente, 1996, Sun fund el grupo empresarial JavaSoft para que se

    encargase del desarrollo tecnolgico. Dos semanas ms tarde la primera versin de Java fue

    publicada.

    La promesa inicial de Gosling era Write Once, Run Anywhere (Escrbelo una vez, ejectalo encualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de

    ejecucin (la JVM) ligero y gratuito para las plataformas ms populares de forma que los binarios

    (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.

    El entorno de ejecucin era relativamente seguro y los principales navegadores web pronto

    incorporaron la posibilidad de ejecutar applets Java incrustadas en las pginas web.

    Java ha experimentado numerosos cambios desde la versin primigenia, JDK 1.0, as como un

    enorme incremento en el nmero de clases y paquetes que componen la librera estndar.

    Desde J2SE 1.4, la evolucin del lenguaje ha sido regulada por el JCP (Java Community Process),

    que usa Java Specification Requests (JSRs) para proponer y especificar cambios en la plataforma

    Java. El lenguaje en s mismo est especificado en la Java Language Specification (JLS), o

    Especificacin del Lenguaje Java. Los cambios en los JLS son gestionados en JSR 901.

    JDK 1.0 (23 de enero de 1996) Primer lanzamiento.

    JDK 1.1 (19 de febrero de 1997) Principales adiciones incluidas. Una

    reestructuracin intensiva del modelo de eventos AWT (Abstract Windowing

    Toolkit). Clases internas (inner classes). JavaBeans. JDBC (Java Database

    Connectivity), para la integracin de bases de datos. RMI (Remote Method

    Invocation)

    J2SE 1.2 (8 de diciembre de 1998) Nombre clave Playground. Esta y las

    siguientes versiones fueron recogidas bajo la denominacin Java 2 y el nombre

    "J2SE" (Java 2 Platform, Standard Edition), reemplaz a JDK para distinguir la

    plataforma base de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2

    Platform, Micro Edition). Otras mejoras aadidas incluan: la palabra reservada

    (keyword) strictfp, reflexin en la programacin la API grfica (Swing) fue

    integrada en las clases bsicas. La mquina virtual (JVM) de Sun fue equipada con

  • 8/7/2019 java_y_usb

    6/45

    6

    un compilador JIT (Just in Time) por primera vez. Java Plug-in. Java IDL, una

    implementacin de IDL (Interfaz para Descripcin de Lenguaje) para la

    interoperabilidad con CORBA. Colecciones (Collections)

    J2SE 1.3 (8 de mayo de 2000) Nombre clave Kestrel. Cambios notables: la

    inclusin de la mquina virtual de HotSpot JVM (la JVM de HotSpot fue lanzada

    inicialmente en abril de 1999, para la JVM de J2SE 1.2). RMI fue cambiado para

    que se basara en CORBA. JavaSound. Se incluy el Java Naming and Directory

    Interface (JNDI) en el paquete de libreras principales (anteriormente disponible

    como una extensin). Java Platform Debugger Architecture (JPDA).

    J2SE 1.4 (6 de febrero de 2002) Nombre Clave Merlin. Este fue el primer

    lanzamiento de la plataforma Java desarrollado bajo el Proceso de la Comunidad

    Java como JSR 59. Los cambios ms notables fueron: Palabra reservada assert

    (Especificado en JSR 41). Expresiones regulares modeladas al estilo de lasexpresiones regulares Perl. Encadenacin de excepciones Permite a una excepcin

    encapsular la excepcin de bajo nivel original. Non-blocking NIO (New

    Input/Output) (Especificado en JSR 51.). Logging API (Specified in JSR 47). API I/O

    para la lectura y escritura de imgenes en formatos como JPEG o PNG. Parser XML

    integrado y procesador XSLT (JAXP) (Especificado en JSR 5 y JSR 63). Seguridad

    integrada y extensiones criptogrficas (JCE, JSSE, JAAS). Java Web Start incluido (El

    primer lanzamiento ocurri en Marzo de 2001 para J2SE 1.3) (Especificado en JSR

    56)

    J2SE 5.0 (30 de septiembre de 2004) Nombre clave: Tiger. (Originalmente

    numerado 1.5, esta notacin an es usada internamente) Desarrollado bajo JSR176, Tiger aadi un nmero significativo de nuevas caractersticas comunicado de

    prensa. Plantillas (genricos) provee conversin de tipos (type safety) en

    tiempo de compilacin para colecciones y elimina la necesidad de la mayora de

    conversin de tipos (type casting). (Especificado por JSR 14). Metadatos

    tambin llamados anotaciones, permite a estructuras del lenguaje como las clases

    o los mtodos, ser etiquetados con datos adicionales, que puedan ser procesados

    posteriormente por utilidades de proceso de metadatos. (Especificado por JSR

    175). Autoboxing/unboxing Conversiones automticas entre tipos primitivos

    (Como los int) y clases de envoltura primitivas (Como Integer). (Especificado por

    JSR 201). Bucle for mejorado. Java SE 6 (11 de diciembre de 2006) Nombre clave Mustang. Estuvo en

    desarrollo bajo la JSR 270. En esta versin, Sun cambi el nombre "J2SE" por Java

    SE y elimin el ".0" del nmero de versin. Los cambios ms importantes

    introducidos en esta versin son Incluye un nuevo marco de trabajo y APIs

    que hacen posible la combinacin de Java con lenguajes dinmicos como PHP,

    Python, Ruby y JavaScript. Incluye el motor Rhino, de Mozilla, una implementacin

    de Javascript en Java. Incluye un cliente completo de Servicios Web y soporta las

  • 8/7/2019 java_y_usb

    7/45

    7

    ltimas especificaciones para Servicios Web, como JAX-WS 2.0, JAXB 2.0, STAX y

    JAXP. Mejoras en la interfaz grfica y en el rendimiento.

    Java SE 7 Nombre clave Dolphin. En el ao 2006 an se encontraba en las

    primeras etapas de planificacin. Se espera que su desarrollo d comienzo en la

    primavera de 2006, y se estima su lanzamiento para 2008. Soporte para XML

    dentro del propio lenguaje. Un nuevo concepto de sper paquete. Soporte para

    closures. Introduccin de anotaciones estndar para detectar fallos en el software.

    Adems de los cambios en el lenguaje, con el paso de los aos se han efectuado muchos ms

    cambios dramticos en la librera de clases de Java (Java class library) que ha crecido de unos

    pocos cientos de clases en JDK 1.0 hasta ms de tres mil en J2SE 5.0. APIs completamente nuevas,

    como Swing y Java2D, han sido introducidas y muchos de los mtodos y clases originales de JDK

    1.0 estn obsoletos.

    Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus

    tecnologas Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community

    Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre (aunque la

    biblioteca de clases de Sun que se requiere para ejecutar los programas Java todava no es

    software libre).

    1.2 FilosofaEl lenguaje Java se cre con cinco objetivos principales:

    1. Debera usar la metodologa de la programacin orientada a objetos.

    2. Debera permitir la ejecucin de un mismo programa en mltiples sistemas operativos.

    3. Debera incluir por defecto soporte para trabajo en red.

    4. Debera disearse para ejecutar cdigo en sistemas remotos de forma segura.

    5. Debera ser fcil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como

    C++.

    Para conseguir la ejecucin de cdigo remoto y el soporte de red, los programadores de Java a

    veces recurren a extensiones como CORBA (Common Object Request Broker Architecture),Internet Communications Engine u OSGi respectivamente.

    1.2.1 Orientado a ObjetosLa primera caracterstica, orientado a objetos (OO), se refiere a un mtodo de programacin y al

    diseo del lenguaje. Aunque hay muchas interpretaciones para OO, una primera idea es disear el

    software de forma que los distintos tipos de datos que use estn unidos a sus operaciones. As, los

    datos y el cdigo (funciones o mtodos) se combinan en entidades llamadas objetos. Un objeto

    puede verse como un paquete que contiene el comportamiento (el cdigo) y el estado (datos).

    El principio es separar aquello que cambia de las cosas que permanecen inalterables.

  • 8/7/2019 java_y_usb

    8/45

    8

    Frecuentemente, cambiar una estructura de datos implica un cambio en el cdigo que opera sobre

    los mismos, o viceversa. Esta separacin en objetos coherentes e independientes ofrece una base

    ms estable para el diseo de un sistema software. El objetivo es hacer que grandes proyectos

    sean fciles de gestionar y manejar, mejorando como consecuencia su calidad y reduciendo el

    nmero de proyectos fallidos. Otra de las grandes promesas de la programacin orientada a

    objetos es la creacin de entidades ms genricas (objetos) que permitan la reutilizacin del

    software entre proyectos, una de las premisas fundamentales de la Ingeniera del Software. Un

    objeto genrico cliente, por ejemplo, debera en teora tener el mismo conjunto de

    comportamiento en diferentes proyectos, sobre todo cuando estos coinciden en cierta medida,

    algo que suele suceder en las grandes organizaciones. En este sentido, los objetos podran verse

    como piezas reutilizables que pueden emplearse en mltiples proyectos distintos, posibilitando as

    a la industria del software a construir proyectos de envergadura empleando componentes ya

    existentes y de comprobada calidad; conduciendo esto finalmente a una reduccin drstica del

    tiempo de desarrollo. Podemos usar como ejemplo de objeto el aluminio. Una vez definidos datos

    (peso, maleabilidad, etc.), y su comportamiento (soldar dos piezas, etc.), el objeto aluminio

    puede ser reutilizado en el campo de la construccin, del automvil, de la aviacin, etc.

    La reutilizacin del software ha experimentado resultados dispares, encontrando dos dificultades

    principales: el diseo de objetos realmente genricos es pobremente comprendido, y falta una

    metodologa para la amplia comunicacin de oportunidades de reutilizacin. Algunas

    comunidades de cdigo abierto (open source) quieren ayudar en este problema dando medios a

    los desarrolladores para diseminar la informacin sobre el uso y versatilidad de objetos

    reutilizables y libreras de objetos.

    1.2.2 Independencia de la plataformaLa segunda caracterstica, la independencia de la plataforma, significa que programas escritos en

    el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware. Es lo que significa

    ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal

    como reza el axioma de Java, write once, run everywhere.

    Para ello, se compila el cdigo fuente escrito en lenguaje Java, para generar un cdigo conocido

    como bytecode (especficamente Java bytecode) instrucciones mquina simplificadas

    especficas de la plataforma Java. Esta pieza est a medio camino entre el cdigo fuente y el

    cdigo mquina que entiende el dispositivo destino. El bytecode es ejecutado entonces en lamquina virtual (VM), un programa escrito en cdigo nativo de la plataforma destino (que es el

    que entiende su hardware), que interpreta y ejecuta el cdigo. Adems, se suministran libreras

    adicionales para acceder a las caractersticas de cada dispositivo (como los grficos, ejecucin

    mediante hilos o threads, la interfaz de red) de forma unificada. Se debe tener presente que,

    aunque hay una etapa explcita de compilacin, el bytecode generado es interpretado o

    convertido a instrucciones mquina del cdigo nativo por el compilador JIT (Just In Time).

  • 8/7/2019 java_y_usb

    9/45

    9

    Hay implementaciones del compilador de Java que convierten el cdigo fuente directamente en

    cdigo objeto nativo, como GCJ. Esto elimina la etapa intermedia donde se genera el bytecode,

    pero la salida de este tipo de compiladores slo puede ejecutarse en un tipo de arquitectura.

    La licencia sobre Java de Sun insiste que todas las implementaciones sean compatibles. Esto dio

    lugar a una disputa legal entre Microsoft y Sun, cuando ste ltimo aleg que la implementacin

    de Microsoft no daba soporte a las interfaces RMI y JNI adems de haber aadido caractersticas

    dependientes de su plataforma. Sun demand a Microsoft y gan por daos y perjuicios (unos

    20 millones de dlares) as como una orden judicial forzando la acatacin de la licencia de Sun.

    Como respuesta, Microsoft no ofrece Java con su versin de sistema operativo, y en recientes

    versiones de Windows, su navegador Internet Explorer no admite la ejecucin de applets sin un

    conector (o plugin) aparte. Sin embargo, Sun y otras fuentes ofrecen versiones gratuitas para

    distintas versiones de Windows.

    Las primeras implementaciones del lenguaje usaban una mquina virtual interpretada para

    conseguir la portabilidad. Sin embargo, el resultado eran programas que se ejecutaban

    comparativamente ms lentos que aquellos escritos en C o C++. Esto hizo que Java se ganase una

    reputacin de lento en rendimiento. Las implementaciones recientes de la JVM dan lugar a

    programas que se ejecutan considerablemente ms rpido que las versiones antiguas, empleando

    diversas tcnicas, aunque sigue siendo mucho mas lento que otros lenguajes.

    La primera de estas tcnicas es simplemente compilar directamente en cdigo nativo como hacen

    los compiladores tradicionales, eliminando la etapa del bytecode. Esto da lugar a un gran

    rendimiento en la ejecucin, pero tapa el camino a la portabilidad. Otra tcnica, conocida comocompilacin JIT (Just In Time, o compilacin al vuelo), convierte el bytecode a cdigo nativo

    cuando se ejecuta la aplicacin. Otras mquinas virtuales ms sofisticadas usan una

    recompilacin dinmica en la que la VM es capaz de analizar el comportamiento del programa

    en ejecucin y recompila y optimiza las partes crticas. La recompilacin dinmica puede lograr

    mayor grado de optimizacin que la compilacin tradicional (o esttica), ya que puede basar su

    trabajo en el conocimiento que de primera mano tiene sobre el entorno de ejecucin y el conjunto

    de clases cargadas en memoria. La compilacin JIT y la recompilacin dinmica permiten a los

    programas Java aprovechar la velocidad de ejecucin del cdigo nativo sin por ello perder la

    ventaja de la portabilidad.

    La portabilidad es tcnicamente difcil de lograr, y el xito de Java en ese campo ha sido dispar.

    Aunque es de hecho posible escribir programas para la plataforma Java que acten de forma

    correcta en mltiples plataformas de distinta arquitectura, el gran nmero de estas con pequeos

    errores o inconsistencias llevan a que a veces se parodie el eslogan de Sun, "Write once, run

    anywhere" como "Write once, debug everywhere" (o Escrbelo una vez, ejectalo en cualquier

    parte por Escrbelo una vez, depralo en todas partes)

  • 8/7/2019 java_y_usb

    10/45

    10

    El concepto de independencia de la plataforma de Java cuenta, sin embargo, con un gran xito en

    las aplicaciones en el entorno del servidor, como los Servicios Web, los Servlets, los Java Beans, as

    como en sistemas empotrados basados en OSGi, usando entornos Java empotrados.

    1.2.3 El recolector de basuraUn argumento en contra de lenguajes como C++ es que los programadores se encuentran con la

    carga aadida de tener que administrar la memoria solicitada dinmicamente de forma manual:

    En C++, el desarrollador puede asignar memoria en una zona conocida como heap (montculo)

    para crear cualquier objeto, y posteriormente desalojar el espacio asignado cuando desea

    borrarlo. Un olvido a la hora de desalojar memoria previamente solicitada puede llevar a una fuga

    de memoria, ya que el sistema operativo seguir pensando que esa zona de memoria est siendo

    usada por una aplicacin cuando en realidad no es as. As, un programa mal diseado podra

    consumir una cantidad desproporcionada de memoria. Adems, si una misma regin de memoriaes desalojada dos veces el programa puede volverse inestable y llevar a un eventual cuelgue. No

    obstante, se debe sealar que C++ tambin permite crear objetos en la pila de llamadas de una

    funcin o bloque, de forma que se libere la memoria (y se ejecute el destructor del objeto) de

    forma automtica al finalizar la ejecucin de la funcin o bloque.

    En Java, este problema potencial es evitado en gran medida por el recolector automtico de

    basura (o automatic garbage collector). El programador determina cundo se crean los objetos y el

    entorno en tiempo de ejecucin de Java (Java runtime) es el responsable de gestionar el ciclo de

    vida de los objetos. El programa, u otros objetos pueden tener localizado un objeto mediante una

    referencia a ste (que, desde un punto de vista de bajo nivel es una direccin de memoria).Cuando no quedan referencias a un objeto, el recolector de basura de Java borra el objeto,

    liberando as la memoria que ocupaba previniendo posibles fugas (ejemplo: un objeto creado y

    nicamente usado dentro de un mtodo slo tiene entidad dentro de ste; al salir del mtodo el

    objeto es eliminado). An as, es posible que se produzcan fugas de memoria si el cdigo almacena

    referencias a objetos que ya no son necesarioses decir, pueden an ocurrir, pero en un nivel

    conceptual superior. En definitiva, el recolector de basura de Java permite una fcil creacin y

    eliminacin de objetos, mayor seguridad y puede que ms rpida que en C++.

    La recoleccin de basura de Java es un proceso prcticamente invisible al desarrollador. Es decir, el

    programador no tiene conciencia de cundo la recoleccin de basura tendr lugar, ya que sta no

    tiene necesariamente que guardar relacin con las acciones que realiza el cdigo fuente.

    Debe tenerse en cuenta que la memoria es slo uno de los muchos recursos que deben ser

    gestionados.

    1.3 Entornos de funcionamientoEl diseo de Java, su robustez, el respaldo de la industria y su fcil portabilidad han hecho de Java

    uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintos mbitos de la

    industria de la informtica.

  • 8/7/2019 java_y_usb

    11/45

    11

    1.3.1 En dispositivos mviles y sistemas empotradosDesde la creacin de la especificacin J2ME (Java 2 Platform, Micro Edition), una versin del

    entorno de ejecucin Java reducido y altamente optimizado, especialmente desarrollado para el

    mercado de dispositivos electrnicos de consumo se ha producido toda una revolucin en lo que a

    la extensin de Java se refiere.

    Es posible encontrar microprocesadores especficamente diseados para ejecutar bytecode Java y

    software Java para tarjetas inteligentes (JavaCard), telfonos mviles, buscapersonas, set-top-

    boxes, sintonizadores de TV y otros pequeos electrodomsticos.

    El modelo de desarrollo de estas aplicaciones es muy semejante a las applets de los navegadores

    salvo que en este caso se denominan MIDlets.

    Vase Sun Mobile Device Tecnology

    1.3.2 En el navegador webDesde la primera versin de java existe la posibilidad de desarrollar pequeas aplicaciones

    (Applets) en Java que luego pueden ser incrustadas en una pgina HTML para que sean

    descargadas y ejecutadas por el navegador web. Estas mini-aplicaciones se ejecutan en una JVM

    que el navegador tiene configurada como extensin (plug-in) en un contexto de seguridad

    restringido configurable para impedir la ejecucin local de cdigo potencialmente malicioso.

    El xito de este tipo de aplicaciones (la visin del equipo de Gosling) no fue realmente el esperado

    debido a diversos factores, siendo quizs el ms importante la lentitud y el reducido ancho de

    banda de las comunicaciones en aquel entonces que limitaba el tamao de las applets que seincrustaban en el navegador. La aparicin posterior de otras alternativas (aplicaciones web

    dinmicas de servidor) dej un reducido mbito de uso para esta tecnologa, quedando hoy

    relegada fundamentalmente a componentes especficos para la intermediacin desde una

    aplicacin web dinmica de servidor con dispositivos ubicados en la mquina cliente donde se

    ejecuta el navegador.

    Las applets Java no son las nicas tecnologas (aunque s las primeras) de componentes complejos

    incrustados en el navegador. Otras tecnologas similares pueden ser: ActiveX de Microsoft, Flash,

    Java Web Start, etc.

    1.3.3 En sistemas de servidorEn la parte del servidor, Java es ms popular que nunca, desde la aparicin de la especificacin de

    Servlets y JSP (Java Server Pages).

    Hasta entonces, las aplicaciones web dinmicas de servidor que existan se basaban

    fundamentalmente en componentes CGI y lenguajes interpretados. Ambos tenan diversos

    inconvenientes (fundamentalmente lentitud, elevada carga computacional o de memoria y

    propensin a errores por su interpretacin dinmica).

    Los servlets y las JSPs supusieron un importante avance ya que:

  • 8/7/2019 java_y_usb

    12/45

    12

    El API de programacin es muy sencilla, flexible y extensible.

    Los servlets no son procesos independientes (como los CGIs) y por tanto se

    ejecutan dentro del mismo proceso que la JVM mejorando notablemente el

    rendimiento y reduciendo la carga computacional y de memoria requeridas.

    Las JSPs son pginas que se compilan dinmicamente (o se pre-compilan

    previamente a su distribucin) de modo que el cdigo que se consigue una ventaja

    en rendimiento substancial frente a muchos lenguajes interpretados.

    La especificacin de Servlets y JSPs define un API de programacin y los requisitos para un

    contenedor (servidor) dentro del cual se puedan desplegar estos componentes para formar

    aplicaciones web dinmicas completas. Hoy da existen multitud de contenedores (libres y

    comerciales) compatibles con estas especificaciones.

    A partir de su expansin entre la comunidad de desarrolladores, estas tecnologas han dado paso amodelos de desarrollo mucho ms elaborados con frameworks (pe Struts, Webwork) que se

    sobreponen sobre los servlets y las JSPs para conseguir un entorno de trabajo mucho ms

    poderoso y segmentado en el que la especializacin de roles sea posible (desarrolladores,

    diseadores grficos, ...) y se facilite la reutilizacin y robustez de cdigo. A pesar de todo ello, las

    tecnologas que subyacen (Servlets y JSPs) son substancialmente las mismas.

    Este modelo de trabajo se ha convertido en un estndar de-facto para el desarrollo de aplicaciones

    web dinmicas de servidor y otras tecnologas (pe. ASP) se han basado en l.

    1.3.4 En aplicaciones de escritorioHoy en da existen multitud de aplicaciones grficas de usuario basadas en Java. El entorno de

    ejecucin Java (JRE) se ha convertido en un componente habitual en los PCs de usuario de los

    sistemas operativos ms usados en el mundo. Adems, muchas aplicaciones Java lo incluyen

    dentro del propio paquete de la aplicacin de modo que su ejecucin en cualquier PC.

    En las primeras versiones de la plataforma Java existan importantes limitaciones en las APIs de

    desarrollo grfico (AWT). Desde la aparicin de la librera Swing la situacin mejor

    substancialmente y posteriormente con la aparicin de libreras como SWT hacen que el desarrollo

    de aplicaciones de escritorio complejas y con gran dinamismo, usabilidad, etc. sea relativamente

    sencillo.

    1.3.5 Plataformas soportadasUna versin del entorno de ejecucin Java JRE (Java Runtime Environment) est disponible en la

    mayora de equipos de escritorio. Sin embargo, Microsoft no lo ha incluido por defecto en sus

    sistemas operativos. En el caso de Apple, ste incluye una versin propia del JRE en su sistema

    operativo, el Mac OS. Tambin es un producto que por defecto aparece en la mayora de las

    distribuciones de Linux. Debido a incompatibilidades entre distintas versiones del JRE, muchas

    aplicaciones prefieren instalar su propia copia del JRE antes que confiar su suerte a la aplicacin

  • 8/7/2019 java_y_usb

    13/45

    13

    instalada por defecto. Los desarrolladores de applets de Java o bien deben insistir a los usuarios en

    la actualizacin del JRE, o bien desarrollar bajo una versin antigua de Java y verificar el correcto

    funcionamiento en las versiones posteriores.

    1.4 Recursos1.4.1 JREEl JRE (Java Runtime Environment, o Entorno en Tiempo de Ejecucin de Java) es el software

    necesario para ejecutar cualquier aplicacin desarrollada para la plataforma Java. El usuario final

    usa el JRE como parte de paquetes software o plugins (o conectores) en un navegador Web. Sun

    ofrece tambin el SDK de Java 2, o JDK (Java Development Kit) en cuyo seno reside el JRE, e incluye

    herramientas como el compilador de Java, Javadoc para generar documentacin o el depurador.

    Puede tambin obtenerse como un paquete independiente, y puede considerarse como elentorno necesario para ejecutar una aplicacin Java, mientras que un desarrollador debe adems

    contar con otras facilidades que ofrece el JDK.

    Componentes [editar]

    Bibliotecas de Java, que son el resultado de compilar el cdigo fuente desarrollado por quien

    implementa la JRE, y que ofrecen apoyo para el desarrollo en Java. Algunos ejemplos de estas

    libreras son:

    Las bibliotecas centrales, que incluyen:

    Una coleccin de bibliotecas para implementar estructuras de datos como listas, arrays,

    rboles y conjuntos.

    Bibliotecas para anlisis de XML.

    Seguridad.

    Bibliotecas de internacionalizacin y localizacin.

    Bibliotecas de integracin, que permiten la comunicacin con sistemas externos. Estas libreras

    incluyen:

    La API para acceso a bases de datos JDBC (Java DataBase Conectivity). La interfaz JNDI (Java Naming and Directory Interface) para servicios de directorio.

    RMI (Remote Method Invocation) y CORBA para el desarrollo de aplicaciones distribuidas.

    Bibliotecas para la interfaz de usuario, que incluyen:

    El conjunto de herramientas nativas AWT (Abstract Windowing Toolkit), que ofrece

    componentes GUI (Graphical User Interface), mecanismos para usarlos y manejar sus

    eventos asociados.

  • 8/7/2019 java_y_usb

    14/45

    14

    Las Bibliotecas de Swing, construidas sobre AWT pero ofrecen implementaciones no

    nativas de los componentes de AWT.

    APIs para la captura, procesamiento y reproduccin de audio.

    Una implementacin dependiente de la plataforma en que se ejecuta de la mquina

    virtual de Java (JVM), que es la encargada de la ejecucin del cdigo de las libreras y las

    aplicaciones externas.

    Plugins o conectores que permiten ejecutar applets en los navegadores Web.

    Java Web Start, para la distribucin de aplicaciones Java a travs de Internet.

    Documentacin y licencia.

    APIs [editar]

    Sun define tres plataformas en un intento por cubrir distintos entornos de aplicacin. As, ha

    distribuido muchas de sus APIs (Application Program Interface) de forma que pertenezcan a cadauna de las plataformas:

    Java ME (Java Platform, Micro Edition) o J2ME orientada a entornos de

    limitados recursos, como telfonos mviles, PDAs (Personal Digital Assistant), etc.

    Java SE (Java Platform, Standard Edition) o J2SE para entornos de gama media y

    estaciones de trabajo. Aqu se sita al usuario medio en un PC de escritorio.

    Java EE (Java Platform, Enterprise Edition) o J2EE orientada a entornos

    distribuidos empresariales o de Internet.

    Las clases en las APIs de Java se organizan en grupos disjuntos llamados paquetes. Cada paquetecontiene un conjunto de interfaces, clases y excepciones relacionadas. La informacin sobre los

    paquetes que ofrece cada plataforma puede encontrarse en la documentacin de sta.

    El conjunto de las APIs es controlado por Sun Microsystems junto con otras entidades o personas a

    travs del programa JCP (Java Community Process). Las compaas o individuos participantes del

    JCP pueden influir de forma activa en el diseo y desarrollo de las APIs, algo que ha sido motivo de

    controversia.

    En 2004, IBM y BEA apoyaron pblicamente la idea de crear una implementacin de cdigo

    abierto (open source) de Java, algo a lo que Sun, a fecha de 2006, se ha negado.

  • 8/7/2019 java_y_usb

    15/45

    15

    2 USB

    En un principio se tena la interfaz serie y paralelo, pero era necesario unificar todos los conectores

    creando uno ms sencillo y de mayores prestaciones. As naci el USB (Universal Serial Bus) con

    una velocidad de 12Mb/seg. y como su evolucin, USB 2.0, apodado USB de alta velocidad. Con

    velocidades en este momento de hasta 480 Mb/seg, es decir, 40 veces ms rpido que las

    conexiones mediante cables USB 1.1.

    El Universal Serial Bus sirve para conectar perifricos a una computadora. Fue creado en 1996 por

    siete empresas: IBM, Intel, Northern Telecom, Compaq, Microsoft, Digital Equipment Corporationy NEC.

    USB es una nueva arquitectura de bus o un nuevo tipo de bus que forma parte de los avances

    plug-and-play y permite instalar perifricos sin tener que abrir el computador para instalarle el

    hardware, es decir, basta con conectar dicho perifrico en la parte posterior del computador y

    listo.

    Una caracterstica importante es que permite a los dispositivos trabajar a velocidades mayores, en

    promedio a unos 12 Mbps, esto es ms o menos de 3 a 5 veces ms rpido que un dispositivo de

    puerto paralelo y de 20 a 40 veces ms rpido que un dispositivo de puerto serial.

    El estndar incluye la transmisin de energa elctrica al dispositivo conectado. Algunos

    dispositivos requieren una potencia mnima, as que se pueden conectar varios sin necesitar

    fuente de alimentacin extra. La gran mayora de los concentradores incluyen fuentes de

    alimentacin que brindan energa a los dispositivos conectados a ellos, pero algunos dispositivos

    consumen tanta energa que necesitan su propia fuente de alimentacin. Los concentradores con

    fuente de alimentacin pueden proporcionarle corriente elctrica a otros dispositivos sin quitarle

    corriente al resto de la conexin (dentro de ciertos lmites).

    El diseo del USB tena en mente eliminar la necesidad de adquirir tarjetas separadas para poner

    en los puertos bus ISA o PCI, y mejorar las capacidades plug-and-play permitiendo a esos

    dispositivos ser conectados o desconectados al sistema sin necesidad de reiniciar. Cuando se

    conecta un nuevo dispositivo, el servidor lo enumera y agrega el software necesario para que

    pueda funcionar.

    El USB puede conectar los perifricos como mouse, teclados, escneres, cmaras digitales,

    telfonos celulares, reproductores multimedia, impresoras, discos duros externos, tarjetas de

    sonido, sistemas de adquisicin de datos y componentes de red. Para dispositivos multimedia

    como escneres y cmaras digitales, el USB se ha convertido en el mtodo estndar de conexin.

    Para impresoras, el USB ha crecido tanto en popularidad que ha empezado a desplazar a los

  • 8/7/2019 java_y_usb

    16/45

    16

    puertos paralelos porque hace sencillo el poder agregar ms de una impresora a un computador

    personal.

    Esta arquitectura trabaja como interfaz para transmisin de datos y distribucin de energa, queha sido introducida en el mercado de los computadores y perifricos para mejorar las lentas

    interfaces serie (RS-232) y paralelo. Esta interfaz de 4 hilos, 12 Mbps y "plug and play", distribuye

    5V para alimentacin, transmite datos y est siendo adoptada rpidamente por la industria

    informtica.

    Es un bus basado en el paso de un testigo, semejante a otros buses como los de las redes locales

    en anillo con paso de testigo y las redes FDDI. El controlador USB distribuye testigos por el bus. El

    dispositivo cuya direccin coincide con la que porta el testigo responde aceptando o enviando

    datos al controlador. Este tambin gestiona la distribucin de energa a los perifricos que lo

    requieran.

    Emplea una topologa de estrellas apiladas que permite el funcionamiento simultneo de 127

    dispositivos a la vez. En la raz o vrtice de las capas, est el controlador anfitrin o host que

    controla todo el trfico que circula por el bus. Esta topologa permite a muchos dispositivos

    conectarse a un nico bus lgico sin que los dispositivos que se encuentran ms abajo en la

    pirmide sufran retardo. A diferencia de otras arquitecturas, USB no es un bus de almacenamiento

    y envo, de forma que no se produce retardo en el envo de un paquete de datos hacia capas

    inferiores.

    2.1 Componentes Del Sistema De Bus Serie Universal USB2.1.1 ControladorReside dentro del computador y es responsable de las comunicaciones entre los perifricos USB y

    la CPU del computador. Es tambin responsable de la admisin de los perifricos dentro del bus,

    tanto si se detecta una conexin como una desconexin. Para cada perifrico aadido, el

    controlador determina su tipo y le asigna una direccin lgica para utilizarla siempre en las

    comunicaciones con el mismo. Si se producen errores durante la conexin, el controlador lo

    comunica a la CPU, que, a su vez, lo transmite al usuario. Una vez se ha producido la conexin

    correctamente, el controlador asigna al perifrico los recursos del sistema que ste precise para su

    funcionamiento.

    El controlador tambin es responsable del control de flujo de datos entre el perifrico y la CPU.

    2.1.2 Concentradores o HubsSon distribuidores inteligentes de datos y alimentacin, y hacen posible la conexin a un nico

    puerto USB de 127 dispositivos. De una forma selectiva reparten datos y alimentacin hacia sus

    puertas descendentes y permiten la comunicacin hacia su puerta de retorno o ascendente, un

    hub de 4 puertos, por ejemplo, acepta datos del computador para un perifrico por su puerta de

    retorno o ascendente y los distribuye a las 4 puertas descendentes si fuera necesario.

  • 8/7/2019 java_y_usb

    17/45

    17

    Adems del controlador, el computador tambin contiene el concentrador raz. Este es el primer

    concentrador de toda la cadena que permite a los datos y a la energa pasar a uno o dos

    conectores USB del PC, y de all a los 127 perifricos que, como mximo, puede soportar el

    sistema. Esto es posible aadiendo concentradores adicionales. Por ejemplo, si el PC tiene una

    nica puerta USB y a ella le conectamos un hub o concentrador de 4 puertas, el computador se

    queda sin ms puertas disponibles. Sin embargo, el hub de 4 puertas permite realizar 4 conexiones

    descendentes conectando otro hub de 4 puertas a una de las 4 puertas del primero, habremos

    creado un total de 7 puertas a partir de una puerta del PC. De esta forma, es decir, aadiendo

    concentradores, el PC puede soportar hasta 127 perifricos USB.

    2.1.3 PerifricosUSB soporta perifricos de baja y media velocidad. Empleando dos velocidades para la transmisin

    de datos de 1,5 y 12 Mbps se consigue una utilizacin ms eficiente de sus recursos . Los

    perifricos de baja velocidad tales como teclados, ratones, joysticks, y otros perifricos parajuegos, no requieren 12 Mbps. Empleando para ellos 1,5 Mbps, se puede dedicar ms recursos del

    sistema a perifricos tales como monitores, impresoras, mdems, scanner, equipos de audio. que

    precisan de velocidades ms altas para transmitir mayor volumen de datos o datos cuya

    dependencia temporal es ms estricta.

    A continuacin se muestra la interconexin de dispositivos mediante el puerto USB:

  • 8/7/2019 java_y_usb

    18/45

    18

    2.2 Caractersticas de TransmisinLos dispositivos USB se clasifican en cuatro tipos segn su velocidad de transferencia de datos:

    Baja Velocidad (1.0): Bitrate de 1.5Mbit/s (192KB/s). Utilizado en su mayor parte por Dispositivos

    de Interfaz Humana (HID) como los teclados, los ratones y los joysticks.

    Velocidad Completa (1.1): Bitrate de 12Mbit/s (1.5MB/s). Esta fue la ms rpida antes de que se

    especificara la USB 2.0 y muchos dispositivos fabricados en la actualidad trabajan a esta velocidad.

    Estos dispositivos, dividen el ancho de banda de la conexin USB entre ellos basados en un

    algoritmo FIFO.

    Alta Velocidad (2.0): Bitrate de 480Mbit/s (60MB/s).

    Sper Velocidad (3.0) Actualmente en fase experimental. Bitrate de 4.8Gbit/s (600MB/s). Esta

    especificacin ser lanzada a mediados de 2008 por la compaa Intel, de acuerdo a informacin

    recabada de Internet. Las velocidades de los buses sern 10 veces ms rpidas que la de USB 2.0

    debido a la inclusin de un enlace de fibra ptica que trabaja con los conectores tradicionales de

    cobre. Se espera que los productos fabricados con esta tecnologa lleguen al consumidor en 2009

    o 2010.

    Las seales del USB son transmitidas en un cable par trenzado con impedancia de 90 15%

    llamados D+ y D-. stos, colectivamente utilizan sealizacin diferencial en half dplex para

    combatir los efectos del ruido electromagntico en enlaces largos. D+ y D- usualmente operan en

    conjunto y no son conexiones simplex. Los niveles de transmisin de la seal varan de 0 a 0.3V

    para bajos (ceros) y de 2.8 a 3.6V para altos (unos) en las versiones 1.0 y 1.1, y en 400mV en Alta

    Velocidad (2.0). En las primeras versiones, los alambres de los cables no estn conectados a tierra,

    pero en el modo de alta velocidad se tiene una terminacin de 45 a tierra o un diferencial de 90

    para acoplar la impedancia del cable.

    Pin NombreColor del

    CableDescripcin

    1 VCC Rojo +5V

  • 8/7/2019 java_y_usb

    19/45

    19

    Algunos aspectos bsicos en el funcionamiento del USB son:

    La topologa

    El flujo de datos

    La capa de protocolo

    La elctrica

    La mecnica

    2.3 La Topologa del BusEl Universal Serial Bus conecta los dispositivos USB con el host USB. La interconexin fsica USB es

    una topologa de estrellas apiladas donde un hub es el centro de cada estrella. Cada segmento de

    cable es una conexin punto-a-punto entre el host y los hubs o funcin, o un hub conectado a otro

    hub o funcin.

    El nmero mximo de dispositivos que puede conectar USB es de 127, pero debido a las

    constantes de tiempo permitidas para los tiempos de propagacin del hub y el cable, el nmero

    mximo de capas permitido es de siete incluida la capa raz, con un mximo de longitud de cable

    entre el hub y el dispositivo de 5 metros.

    2 D Blanco Data

    3 D+ Verde Data +

    4 GND Negro Tierra

  • 8/7/2019 java_y_usb

    20/45

    20

    La topologa del bus USB se puede dividir en tres partes:

    La capa fsica: Como estn conectados los elementos fsicamente

    La capa lgica: Los roles y las responsabilidades de los elementos USB

    La relacin software del cliente- funcin: Como se ven mutuamente el software del

    cliente y los interfaces de las funciones relacionadas

  • 8/7/2019 java_y_usb

    21/45

    21

    2.3.1 La Capa FsicaLa arquitectura fsica del USB se centra en las piezas de plstico y de metal con las que el usuario

    debe tratar para construir un entorno USB. Cada entorno fsico USB esta compuesto por cinco

    tipos de componentes:

    El host

    El controlador del host

    Los enlaces

    Los dispositivos

    Los hubs

    Los dispositivos estn conectados fsicamente al host a travs de una topologa en estrella, como

    se muestra en la siguiente figura. Los puntos de acople estn provistos de una clase de dispositivos

    USB llamados hubs, los cuales tienen puntos de acople adicionales llamados puertos. Estos hubs se

    conectan a otros dispositivos a travs de enlaces que son cables de cuatro hilos.

    El host proporciona uno o mas puntos de acople a travs del hub raz. Para prevenir los acoples

    circulares, se impone una estructura ordenada por capas en la topologa de estrella y como

    resultado se obtiene una configuracin al estilo de un rbol.

  • 8/7/2019 java_y_usb

    22/45

    22

    Todas las comunicaciones fsicas son iniciadas por el host. Esto quiere decir que cada milisegundo,

    o en cada ventana de tiempo que el bus lo permita, el host preguntar por nuevos dispositivos en

    el bus USB. Adems el host inicia todas las transacciones fsicas y soporta todas las transferenciasde datos sobre la capa fsica

    2.3.2 La Capa LgicaEl punto de vista lgico presenta capas y abstracciones que son relevantes para los distintos

    diseadores e implementadores. La arquitectura lgica describe como unir el hardware del

    dispositivo USB a un driver del dispositivo en el host para que tenga el comportamiento que el

    usuario final desea.

    La vista lgica de esta conexin es la mostrada en el esquema siguiente. En el podemos ver como

    el host proporciona conexin al dispositivo, donde esta conexin es a travs de un simple enlace

    USB. La mayora de los dems buses como PCI, ISA, etc. proporcionan mltiples conexiones a los

    dispositivos y los drivers lo manipulan mediante algunas combinaciones de estas conexiones (I/O y

    direcciones de memoria, interrupciones y canales DMA).

    Fsicamente el USB tiene slo un cable simple de bus que es compartido por todos los dispositivos

    del bus. Sin embargo, desde el punto de vista lgico cada dispositivo tiene su propia conexin

    punto a punto al host.

    Si lo miramos desde el punto de vista lgico, los hubs son tambin dispositivos pero no se

    muestran en la figura para la simplificacin del esquema.

  • 8/7/2019 java_y_usb

    23/45

    23

    Aunque la mayora de las actividades de los hosts o de los dispositivos lgicos usan esta

    perspectiva lgica, el host mantiene el conocimiento de la topologa fsica para dar soporte al

    proceso de desconexin de los hubs. Cuando se quita un hub, todos los dispositivos conectados a

    l son quitados tambin de la vista lgica de la topologa.

    2.3.3 La relacin "software del cliente-funcin"A pesar de que la topologa fsica y lgica del USB refleja la naturaleza de comparticin del bus, la

    manipulacin del interfaz de una funcin USB por parte del software del cliente se presenta con

    una vista distinta.

    El software del cliente para las funciones USB debe usar el interfaz de programacin software USB

    para manipular sus funciones en contraposicin de las que son manipuladas directamente a travs

    de la memoria o los accesos I/O como pasa con otros buses (PCI,EISA,PCMCIA,...). Durante esta

    operacin, el software del cliente debera ser independiente a otros dispositivos que puedanconectarse al USB.

    2.4 El flujo de datos del bus USBUn dispositivo USB desde un punto de vista lgico hay que entenderlo como una serie de

    endpoints, a su vez los endpoints se agrupan en conjuntos que dan lugar a interfaces, las cuales

    permiten controlar la funcin del dispositivo.

  • 8/7/2019 java_y_usb

    24/45

    24

    Como ya se ha visto la comunicacin entre el host y un dispositivo fsico USB se puede dividir en

    tres niveles o capas. En el nivel mas bajo el controlador de host USB se comunica con la interfaz

    del bus utilizando el cable USB, mientras que en un nivel superior el software USB del sistema se

    comunica con el dispositivo lgico utilizando la red de control por defecto. En lo que al nivel de

    funcin se refiere, el software cliente establece la comunicacin con las interfaces de la funcin a

    travs de los enlaces asociados a endpoints.

    2.4.1 Endpoints y direcciones de dispositivoCada dispositivo USB est compuesto por una coleccin de endpoints independientes, y una

    direccin nica asignada por el sistema en tiempo de conexin de forma dinmica. A su vez cada

    endpoint dispone de un identificador nico dentro del dispositivo al que pertenece, a este

    identificador se le conoce como nmero de endpoint y viene asignado de fbrica. Cada endpoint

    tiene una determinada orientacin de flujo de datos. La combinacin de direccin, nmero de

    endpoint y orientacin, permite referenciar cada endpoint de forma inequvoca. Cada endpoint espor si solo una conexin simple que soporta un flujo de datos en una nica direccin, bien de

    entrada o bien de salida.

    Cada endpoint se caracteriza por:

    Frecuencia de acceso al bus requerida

    Ancho de banda requerido

    Nmero de endpoint

    Tratamiento de errores requerido

    Mximo tamao de paquete que el endpoint puede enviar o recibir

    Tipo de transferencia para el endpoint

    La orientacin en la que se transmiten los datos

    Existen dos endpoints especiales que todos los dispositivos deben tener, los endpoints con

    nmero 0 de entrada y de salida, que deben de implementar un mtodo de control por defecto al

    que se le asocia la tubera de control por defecto. Estos endpoints estn siempre accesibles

    mientras que el resto no lo estarn hasta que no hayan sido configurados por el host.

    2.4.2 TuberasUna tubera USB es una asociacin entre uno o dos endpoints en un dispositivo, y el software en el

    host. Las tuberas permiten mover datos entre software en el host, a travs de un buffer, y un

    endpoint en un dispositivo. Hay dos tipos de tuberas:

    Stream: Los datos se mueven a travs de la tubera sin una estructura definida.

    Mensaje: Los datos se mueven a travs de la tubera utilizando una estructura USB.

    Adems una tubera se caracteriza por:

  • 8/7/2019 java_y_usb

    25/45

    25

    Demanda de acceso al bus y uso del ancho de banda

    Un tipo de transferencia.

    Las caractersticas asociadas a los endpoints

    Como ya se ha comentado, la tubera que esta formada por dos endpoints con nmero cero se

    denomina tubera de control por defecto. Esta tubera est siempre disponible una vez se ha

    conectado el dispositivo y ha recibido un reseteo del bus. El resto de tuberas aparecen despus

    que se configure el dispositivo. La tubera de control por defecto es utilizada por el software USB

    del sistema para obtener la identificacin y requisitos de configuracin del dispositivo, y para

    configurar al dispositivo.

    El software cliente normalmente realiza peticiones para transmitir datos a una tubera va IRPs y

    entonces, o bien espera, o bien es notificado de que se ha completado la peticin. El softwarecliente puede causar que una tubera devuelva todas las IRPs pendientes. El cliente es notificado

    de que una IRP se ha completado cuando todas las transacciones del bus que tiene asociadas se

    han completado correctamente, o bien porque se han producido errores.

    Una IRP puede necesitar de varias tandas para mover los datos del cliente al bus. La cantidad de

    datos en cada tanda ser el tamao mximo de un paquete excepto el ltimo paquete de datos

    que contendr los datos que faltan. De modo que un paquete recibido por el cliente que no

    consiga llenar el buffer de datos de la IRP puede interpretarse de diferentes modos en funcin de

    las expectativas del cliente, si esperaba recibir una cantidad variable de datos considerar que se

    trata del ltimo paquete de datos, sirviendo pues como delimitador de final de datos, mientrasque si esperaba una cantidad especfica de datos lo tomar como un error.

    2.4.2.1 Tuberias StreamsNo necesita que los datos se transmitan con una cierta estructura. Las tuberas stream son

    siempre unidireccionales y los datos se transmiten de forma secuencial: "first in, first out". Estn

    pensadas para interactuar con un nico cliente, por lo que no se mantiene ninguna poltica de

    sincronizacin entre mltiples clientes en caso de que as sea. Un stream siempre se asocia a un

    nico endpoint en una determinada orientacin.

    2.4.2.2 Tuberias MensajesLas tuberas mensajes hay una interaccin de la tubera con el endpoint consta de tres fases.

    Primero se realiza una peticin desde el host al dispositivo, despus se transmiten los datos en la

    direccin apropiada, finalmente un tiempo despus se pasa a la fase estado. Para poder llevar a

    cabo este paradigma es necesario que los datos se transmitan siguiendo una determinada

    estructura.

    Las tuberas de mensajes permiten la comunicacin en ambos sentidos, de hecho la tubera de

    control por defecto es una tubera de mensajes. El software USB del sistema se encarga de que

    mltiples peticiones no se enven a la tubera de mensajes concurrentemente. Un dispositivo ha

  • 8/7/2019 java_y_usb

    26/45

    26

    de dar nicamente servicio a una peticin de mensaje en cada instante por cada tubera de

    mensajes.

    2.4.3 Frames y microframesUSB establece una unidad de tiempo base equivalente a 1 milisegundo denominada frame y

    aplicable a buses de velocidad media o baja, en alta velocidad se trabaja con microframes, que

    equivalen a 125 microsegundos. Los microframes no son ms que un mecanismo del bus USB para

    controlar el acceso a este, en funcin del tipo de transferencia que se realice. En un microframe se

    pueden realizar diversas transacciones de datos.

    2.4.4 SyncTeniendo en cuenta que K y J representan respectivamente nivel bajo y nivel alto, el patrn de

    seal Sync emitido, con los datos codificados, es de 3 pares KJ seguidos de 2 K para el caso de

    velocidad media y baja. Para velocidad alta es una secuencia de 15 pares KJ seguidos de 2 K. Acontinuacin el caso de velocidad media y baja:

    El patrn de seal Sync siempre precede al envo de cualquier paquete, teniendo como objetivo

    que el emisor y el receptor se sincronicen y se preparen para emitir y recibir datos

    respectivamente.

    Si partimos de que el estado de reposo de la seal es J, podemos interpretar Sync como una

    secuencia impar de "0's" y un "1" que se inserta antes de los datos.

    2.4.4.1 EOP ("End Of Packet")A todo paquete le sigue EOP, cuya finalidad es indicar el final del paquete.

    En el caso de velocidad media y baja el EOP consiste en que, despus del ltimo bit de datos en el

    cual la seal estar o bien en estado J, o bien en estado K, se pasa al estado SEO durante el

    periodo que se corresponde con el ocupado por dos bits, finalmente se transita al estado J que se

    mantiene durante 1 bit. Esta ltima transicin indica el final del paquete.

    En el caso de la velocidad alta se utilizan bits de relleno errneos, que no estn en el lugarcorrecto, para indicar el EOP. Concretamente, el EOP sin aplicar codificacin consisitira en aadir

    al final de los datos la secuencia 0111 1111.

    2.4.5 Tipos de transferenciasLa interpretacin de los datos que se transmitan a travs de las tuberas, independientemente de

    que se haga siguiendo o no una estructura USB definida, corre a cargo del dispositivo y del

    software cliente. No obstante, USB proporciona cuatro tipos de transferencia de datos sobre las

    tuberas para optimizar la utilizacin del bus en funcin del tipo de servicio que ofrece la funcin.

  • 8/7/2019 java_y_usb

    27/45

    27

    Estos cuatro tipos son:

    Transferencias de control

    Transferencias iscronas Transferencias de interrupcin

    Transferencias de bultos

    2.5 Capa de protocoloLa forma en la que las secuencias de bits se transmiten en USB es la siguiente; primero se

    transmite el bit menos significativo, despus el siguiente menos significativo y as hasta llegar al bit

    ms significativo. Cuando se transmite una secuencia de bytes se realiza en formato "LITTLE-

    ENDIAN", es decir del byte menos significativo al byte ms significativo.

    En la transmisin se envan y reciben paquetes de datos, cada paquete de datos viene precedido

    por un campo Sync y acaba con el delimitador EOP, todo esto se enva codificado adems de los

    bits de relleno insertados. En este punto cuando se habla de datos se refiere a los paquetes sin el

    campo Sync ni el delimitador EOP, y sin codificacin ni bits de relleno.

    El primer campo de todo paquete de datos es el campo PID. El PID indica el tipo de paquete y por

    lo tanto, el formato del paquete y el tipo de deteccin de errores aplicado al paquete. En funcin

    de su PID podemos agrupar los diferentes tipos de paquetes en cuatro clases:

    Tipo PID NombrePID

    PID Descripcin

    Token

    OUT

    IN

    SOF

    SETUP

    0001B

    1001B

    0101B

    1101B

    Direccin + nmero de endpoint en una transaccin host a funcin.

    Direccin + nmero de endpoint en una transaccin funcin a host.

    Indicador de inicio de frame (Start Of Frame) y nmero de frame.

    Direccin + nmero de endpoint en una transaccin host a funcin para

    realizar un Setup de una tubera de control.

    Data

    DATA0

    DATA1

    DATA2

    MDATA

    0011B

    1011B

    0111B

    1111B

    PID de paquete de datos par.

    PID de paquete de datos impar.

    PID de paquete de datos de alta velocidad, elevado ancho de banda en

    una transferencia iscrona en un microframe.

    PID de paquete de datos de alta velocidad para split y elevado ancho de

  • 8/7/2019 java_y_usb

    28/45

    28

    Tipo PIDNombre

    PIDPID Descripcin

    banda en una transferencia iscrona.

    Handshake

    ACK

    NAK

    STALL

    NYET

    0010B

    1010B

    1110B

    0110B

    El receptor acepta el paquete de datos libre de errores.

    El dispositivo receptor no puede aceptar los datos o el dispositivo emisor

    no puede enviar los datos.

    Endpoint sin servicio o una peticin de control sobre una tubera no est

    soportado.

    An no se ha recibido una respuesta del receptor.

    Special

    PRE

    ERR

    SPLIT

    PING

    Reservado

    1100B

    1100B

    1000B

    0100B

    0000B

    (Token) Habilita trafico de bajada por el bus a dispositivos de velocidad

    baja.

    (Handshake) Error de transferencia Split.

    (Token) Transferencia de alta velocidad Split.

    (Token) Control de flujo sobre endpoints de tipo control o bulk.

    PID reservado.

    A continuacin el formato de los campos y los paquetes, adems de una vista general de comofunciona el protocolo:

    El formato de los campos

    El formato de los paquetes

    Transacciones

    Split

    El protocolo y las transferencias

  • 8/7/2019 java_y_usb

    29/45

    29

    2.5.1 Formato de los camposLos paquetes se dividen en campos, a continuacin el formato de los diferentes campos.

    2.5.1.1 Campo identificador de paquete (PID)Es el primer campo que aparece en todo paquete. El PID indica el tipo de paquete, y por tanto el

    formato del paquete y el tipo de deteccin de error aplicado a este. Se utilizan cuatro bits para la

    codificacin del PID, sin embargo el campo PID son ocho bits, que son los cuatro del PID seguidos

    del complemento a 1 de esos cuatro bits. Estos ltimos cuatro bits sirven de confirmacin del PID.

    Si se recibe un paquete en el que los cuatro ltimos bits no son el complemento a 1 del PID, o el

    PID es desconocido, se considera que el paquete est corrupto y es ignorado por el receptor.

    2.5.1.2 Campo direccinEste campo indica la funcin, a travs de la direccin, que enva o es receptora del paquete de

    datos. Se utilizan siete bits, de lo cual se deduce que hay un mximo de 128 direcciones.

    2.5.1.3 Campo endpointSe compone de cuatro bits e indica el nmero de enpoint al que se quiere acceder dentro de una

    funcin, como es lgico este campo siempre sigue al campo direccin.

    2.5.1.4 Campo nmero de frameEs un campo de 11 bits que es incrementado por el host cada (micro)frame en una unidad. El

    mximo valor que puede alcanzar es el 7FFH, si se vuelve a incrementar pasa a cero.

    2.5.1.5 Campo de datosLos campos de datos pueden variar de 0 a 1024 bytes. En el dibujo se muestra el formato para

    mltiples bytes.

    2.5.1.6 Cyclic Redundancy Checks (CRC)El CRC se usa para proteger todos los campos no PID de los paquetes de tipo token y de datos. El

    CRC siempre es el ltimo campo y se genera a partir del resto de campos del paquete, a excepcin

    del campo PID. El receptor al recibir el paquete comprueba si se ha generado de acuerdo a los

  • 8/7/2019 java_y_usb

    30/45

    30

    campos del paquete, si no es as, se considera que alguno o mas de un campo estn corruptos, en

    ese caso se ignora el paquete.

    El CRC utilizado detecta todos lo errores de un bit o de dos bits. El campo de CRC es de cinco bitspara los paquetes de tipo IN, SETUP, OUT, PING y SPLIT. El polinomio generador es el siguiente:

    En el caso de los paquetes de datos se utiliza un campo CRC de 16 bits, el polinomio generador es

    el siguiente:

    2.5.2 Codificacin de datosEl USB utiliza la codificacin NRZI para la transmisin de paquetes. En esta codificacin los "0" serepresentan con un cambio en el nivel, y por el contrario los "1" se representan con un no cambio

    en el nivel. De modo que las cadenas de cero producen transiciones consecutivas en la seal,

    mientras que cadenas de unos produce largos periodos sin cambios en la seal. A continuacin un

    ejemplo:

    2.5.3 Relleno de bitsDebido a que cadenas de unos pueden producir largos periodos en los que la seal no cambia

    dando lugar a problemas de sincronizacin, se introducen los bits de relleno. Cada 6 bits

    consecutivos a "1" se inserta un bit a "0" para forzar un cambio, de esta forma el receptor puede

    volverse a sincronizar. El relleno bits empieza con el patrn de seal Sync. El "1" que finaliza el

    patrn de seal Sync es el primer uno en la posible primera secuencia de seis unos.

    En las seales a velocidad media o baja, el relleno de bits se utiliza a lo largo de todo el paquete sin

    excepcin. De modo que un paquete con siete unos consecutivos ser considerado un error y por

    lo tanto ignorado.

    En el caso de la velocidad alta se aplica el relleno de bits a lo largo del paquete, con la excepcin

    de los bits intencionados de error usados en EOP a velocidad alta.

    2.5.4 Formato de los paquetes2.5.4.1 Paquetes de tipo tokenUn token est compuesto por un PID que indica si es de tipo IN, OUT o SETUP. El paquete especial

    de tipo PING tambin tiene la misma estructura que token. Despus del campo PID viene seguido

    de un campo direccin y un campo endpoint, por ltimo hay un campo CRC de 5 bits.

  • 8/7/2019 java_y_usb

    31/45

    31

    En los paquetes OUT y SETUP esos campos identifican al endpoint que va a recibir el paquete

    datos que va a continuacin. En los paquetes IN indican el endpoint que debe transmitir un

    paquete de datos. En el caso de los paquetes PING hacen referencia al endpoint que debe

    responder con un paquete "handshake".

    2.5.4.2 Paquete inicio de frame (SOF)Estos paquetes son generados por el host cada un milisegundo en buses de velocidad media y

    cada 125 microsegundos para velocidad alta. Este paquete est compuesto por un campo nmerode frame y un campo de CRC de 5 bits.

    2.5.4.3 Paquete de datosEste paquete est compuesto por cero o ms bytes de datos seguido de un campo de CRC de 16

    bits. Existen cuatro tipos de paquetes de datos: DATA0, DATA1, DATA2 y MDATA. El nmero

    mximo de bytes de datos en velocidad baja es de ocho bytes, en media de 1023 bytes y en alta de

    1024 bytes. El nmero de bytes de datos ha de ser entero.

    2.5.4.4 Paquetes "Handshake"Los paquetes "handshake", en castellano apretn de manos, se utilizan para saber el estado de

    una transferencia de datos, indicar la correcta recepcin de datos, aceptar o rechazar comandos,

    control de flujo, y condiciones de parada. El nico campo que contiene un paquete de este tipo es

    el campo PID.

  • 8/7/2019 java_y_usb

    32/45

    32

    Existen cuatro paquetes de tipo "handshake" adems de uno especial:

    ACK: Indica que el paquete de datos ha sido recibido y decodificado correctamente. ACK slo es

    devuelto por el host en las transferencias IN y por una funcin en las transferencias OUT, SETUP o

    PING.

    NAK: Indica que una funcin no puede aceptar datos del host (OUT) o que no puede transmitir

    datos al host (IN). Tambin puede enviarlo una funcin durante algunas fases de transferencias IN,

    OUT o PING. Por ltimo se puede utilizar en el control de flujo indicando disponibilidad. EL host

    nunca puede enviar este paquete.

    STALL: Puede ser devuelto por una funcin en transacciones que intervienen paquetes de tipo IN,

    OUT o PING. Indica que una funcin es incapaz de transmitir o enviar datos, o que una peticin a

    una tubera control no est soportada. El host no puede enviar bajo ninguna condicin paquetes

    STALL.

    NYET: Slo disponible en alta velocidad es devuelto como respuesta bajo dos circunstancias. Como

    parte del protocolo PING, o como respuesta de un hub a una transaccin Split indicando que la

    transaccin de velocidad media o baja an no ha terminado, o que el hub no est an habilitado

    para realizar la transaccin.

    ERR: De nuevo slo disponible en alta velocidad y de nuevo formando parte del protocolo PING,

    permite a un hub de alta velocidad indicar que se ha producido un error en un bus de media o baja

    velocidad.

    2.5.5 TransaccionesLos paquetes de tipo token tiene como objetivo indicar el incio de una transaccin de datos de una

    determina forma.

    2.5.5.1 Transaccin INLa transaccin empieza con el envo de un paquete de tipo IN por parte del host a un determinado

    endpoint en una funcin. Un endpoint cuando recibe un paquete de tipo IN debe comportarse

    como muestra la siguiente tabla.

  • 8/7/2019 java_y_usb

    33/45

    33

    Token recibido

    corrupto

    Estado de

    endpoint

    La funcin puede transmitir los

    datosAccin

    Si -- -- No responde

    No Deshabilitado -- Enva STALL

    No Habilitado No Enva NAK

    No Habilitado SiEnva el paquete de

    datos

    La respuesta que del host al recibir un paquete de datos en la transaccin se puede observar en la

    siguiente tabla:

    Paquete de datos corrupto El host puede aceptar los datos Respuesta del host

    Si -- Descarta el paquete, no responde

    No No Descarta el paquete, no responde

    No Si Enva ACK

    2.5.5.1.1 Sincronizacin mediante conmutacin de bits

    USB ofrece un mecanismo que garantiza la sincronizacin entre el emisor y el receptor de datos a

    lo largo de mltiples transacciones. La idea es garantizar que los dos sean conscientes de que los

    handshakes han sido recibidos correctamente. Para ello se utilizan los dos PID DATA0 y DATA1 que

    slo varan en un bit. De manera que inicialmente tanto el emisor y el receptor estn sincronizados

    en la secuencia de bits. De modo que, el que recibe datos conmuta su bit cuando puede aceptar

    datos y ha recibido un paquete de datos libre de errores. Por su parte el que enva conmuta su bit

    cuando recibe un ACK, tal que si el ltimo paquete de datos tena PID DATA0 el siguiente tendr

    DATA1, y viceversa, adems si todo ha salido bien, el PID del paquete coincidir con la secuencia

    de bits del receptor.

  • 8/7/2019 java_y_usb

    34/45

    34

    2.5.5.2 Transaccin OUTEl host enva un paquete OUT a un determinado endpoint y seguidamente enva el paquete de

    datos. Suponiendo que el endpoint ha decodificado correctamente el token, en caso contrario se

    ignora el token y lo datos, espera a recibir un paquete de datos. El comportamiento del endpoint

    cuando recibe el paquete de datos es el siguiente.

    Paquete de datos

    corrupto

    Estado del

    receptor

    Coincidencia de la

    secuencia de bits

    La funcin puede

    aceptar los datosAccin

    Si -- -- --No

    responde

    No Deshabilitado -- -- EnvaSTALL

    No Habilitado No -- Enva ACK

    No Habilitado Si Si Enva ACK

    No Habilitado Si No Enva NAK

    2.5.5.3

    Transaccin SETUPLa transaccin SETUP es una transaccin especial que tiene las mismas fases que una transaccin

    OUT, que slo se puede utilizar con endpoints de tipo control y cuya finalidad es la de indicar el

    inicio de la fase setup.

    2.5.6 SplitEl token especial SPLIT es utilizado para poder soportar transacciones en varias partes entre un

    hub que trabaja a velocidad alta con dispositivos de velocidad media o baja. Se definen nuevas

    transacciones que utilizan el token SPLIT, en concreto dos transacciones con sus respectivos

    paquetes: "start-split transaction (SSPLIT)" y "complete-split transaction (CSPLIT)".

    2.5.6.1 Transacciones SplitLa transaccin split es utilizada solamente por el host y un hub cuando se quiere comunicar con un

    dispositivo de velocidad media o baja conectado con el hub. El host puede iniciar una transaccin

    por partes a travs del paquete SSPLIT y puede completarla, recibiendo las respuestas de la

    funcin de velocidad baja o media, a travs del paquete CSPLIT. Esto permite al host realizar otras

    transacciones a velocidad alta sin tener que esperar a que acabe la transaccin.

    A continuacin un ejemplo de una transaccin por partes para establecer una transaccin de tipo

    IN.

  • 8/7/2019 java_y_usb

    35/45

    35

    2.5.6.2 Formato del paquete SPLITCampos del paquete SSPLIT y CSPLIT:

    El campo "Hub Addr" es un campo direccin que indica la direccin del hub. El bit SC indica el tipo

    de paquete, si SC=0 se trata de un SSPLIT, y si SC=1 de un CSPLIT. El campo "puerto del hub

    destino" hace referencia al puerto del hub al que est destinado esta transaccin por partes, el

    formato de este campo es idntico al de un campo direccin. El significado de los bits S y E

    dependen del tipo de transferencia de datos que se est utilizando, y puede hacer referencia a

    como se relaciona los tamaos de los paquetes de datos de alta y media velocidad, o hacer

    referencia a la velocidad de la transaccin. El bit E en los paquetes CSPLIT nunca se utiliza, de

    hecho se llama bit U. Por ltimo el campo de dos bits ET indica el tipo de transferencia de datos, es

    decir, el tipo de endpoint. En la siguiente tabla se puede observar el funcionamiento de ET.

    ET Tipo de endpoint

    00 Control

    01 Iscrono

    10 "Bulk"

  • 8/7/2019 java_y_usb

    36/45

    36

    ET Tipo de endpoint

    11 Interrupcin

    2.5.7 El protocolo y las transferenciasEn este apartado se muestra de forma general las transacciones que se realizan, y las

    particularidades de cada tipo de transferencia. De forma general toda funcin en principio est

    esperando a que el host le enve un paquete, si este paquete es de tipo token entonces cambia el

    estado de la funcin inicindose una transaccin. Tambin se debe de tener en cuenta, que

    cuando o bien el host, o bien una funcin se encuentran en un estado que no es el de reposo,

    aparecen los timeouts como otra causa de error.

    2.5.7.1 Transferencias de bulto ("Bulk")En las transferencias de bulto se puede hablar en parte de transacciones de bulto, pues la idea es

    enviar datos de paquete en paquete sin que tenga que haber un flujo de datos continuo. La

    diferencia reside en que si hablamos de transferencia, no se puede considerar que haya terminado

    hasta que el host haya conseguido enviar los datos, o bien que despus de varios intentos fallidos

    de un error.

    Cada transaccin de bulto se puede dividir en tres fases: token, datos y"handshake"

    , si biengracias al token PING pueden haber transacciones de dos fases: token y "handshake". A

    continuacin un esquema de una transaccin de bultos.

  • 8/7/2019 java_y_usb

    37/45

    37

    2.5.7.2 Transferencias de controlEstas transferencias constan de tres fases: transaccin setup, fase de datos y transaccin de

    estado. La transaccin siempre la inicia el host, y sirve para enviar informacin de control para

    indicar al endpoint que se quiere realizar. El siguiente esquema representa una transaccin setup.

    A continuacin se inicia la fase de transferencia de datos, que consiste en una secuencia de

    transacciones de datos siempre en la misma direccin alternando DATA0 y DATA1. Esta fase no es

    obligatoria, la direccin se establece en la fase setup. Finalmente tiene lugar una transaccin

    estado, esta transaccin es idntica a una transaccin de bultos. La direccin de esta transaccin

    es siempre la contraria a la de la fase de transferencia de datos, y si esta no exisitiese, la direccin

    es del endpoint al host.

    2.5.7.3 Transferencias de interrupcinLas transferencias de interrupcin son solamente transacciones de tipo IN y OUT. Desde el punto

    de vista de las transacciones es muy similar a una transferencia de bultos. A continuacin el

    esquema de una transaccin de interrupcin.

  • 8/7/2019 java_y_usb

    38/45

    38

    2.5.7.4 Transferencias iscronasUna transferencia iscrona se plantea como una secuencia de transacciones muy sencillas para

    enviar o recibir datos. Estas transacciones no utilizan "handshakes"y por lo tanto no se reenvan

    paquetes, ya que el objetivo de la transferencia es simular un flujo constante de datos. A

    continuacin un esquema de una transaccin.

    2.6 La elctrica2.6.1 Identificacin de la velocidad del dispositivoPara poder iniciar cualquier tipo de transaccin cuando se conecta el dispositivo al host, es

    necesario que este conozca la velocidad a la que trabaja. Con esa finalidad existe un mecanismo a

    nivel elctrico. La diferencia entre los dispositivos de velocidad media y los de velocidad baja, es

    que en velocidad media tiene una resistencia conectada al D+, en velocidad baja la mismaresistencia se encuentra en D- y no en D+ como se puede observar en la siguiente figura.

  • 8/7/2019 java_y_usb

    39/45

  • 8/7/2019 java_y_usb

    40/45

    40

    funcionamiento del cable con dispositivos de velocidad baja no est garantizado porque podra

    superar la longitud mxima del cable de velocidad baja.

    2.7.2 Cable fijo de velocidad alta y mediaCon la denominacin de fijo nos referimos a los cables que son proporcionados por el fabricantedel dispositivo fijos a este, o bien sin ser fijos, con un conector especifico del fabricante. Es

    obligatorio que en un extremo tenga un conector macho de Serie A. Dado que lo suministra el

    fabricante, puede ser utilizado por dispositivos tanto de velocidad alta y media, como de velocidad

    baja. En el caso de que se utilice para un dispositivo de velocidad baja, adems de poder ser

    utilizado con dispositivos de velocidad media y alta, deber cumplir con todos los requisitos

    propios de la velocidad baja.

    2.7.3 Cable fijo de velocidad bajaAl igual que el cable fijo de alta y media velocidad tiene un conector macho de Serie A en un

    extremo, mientras que el otro depende del fabricante. La diferencia es que este tipo de cables slo

    funciona con dispositivos de velocidad baja.

    Contacto Seal Cable

    1 VBUS Rojo

    2 Datos- Blanco

  • 8/7/2019 java_y_usb

    41/45

    41

    3 Datos+ Verde

    4 GND Negro

    2.8 Estndar IEEE 1394 o FireWire.Apple y Sony inventaron el FireWire a mediados de los 90 y lo desarrollaron hasta convertirlo en

    el estndar multiplataforma IEEE 1394. FireWire es una tecnologa para la entrada/salida de datos

    en serie a alta velocidad y la conexin de dispositivos digitales como videocmaras o cmaras

    fotogrficas digitales que ha sido ampliamente adoptado por fabricantes de perifricos digitales

    como Sony, Canon, JVC y Kodak.

    FireWire es uno de los estndares de perifricos ms rpidos que se han desarrollado,

    caracterstica que lo hace ideal para su uso con perifricos del sector multimedia (como cmaras

    de vdeo) y otros dispositivos de alta velocidad como, por ejemplo, lo ltimo en unidades de disco

    duro e impresoras. Se ha convertido en la interfaz preferida de los sectores de audio y vdeo

    digital, ya que rene numerosas ventajas, entre las que se encuentran la elevada velocidad, la

    flexibilidad de la conexin y la capacidad de conectar un mximo de 63 dispositivos. Adems de

    cmaras y equipo de vdeo digital, la amplia gama de productos FireWire comprende

    reproductores de vdeo digital, sistemas domsticos para el ocio, sintetizadores de msica,

    escneres y unidades de disco duro.

    Con un ancho de banda 30 veces mayor que el conocido estndar de perifricos USB 1.1, el

    FireWire 400 se ha convertido en el estndar ms respetado para la transferencia de datos a alta

    velocidad. Apple fue el primer fabricante de ordenadores que incluy FireWire en toda su gama de

    productos. Una vez ms, Apple ha vuelto a subir las apuestas duplicando la velocidad de

    transferencia con su implementacin del estndar IEEE 1394b o FireWire 800.

    La velocidad sobresaliente del FireWire 800 frente al USB 2.0 convierte al primero en un medio

    mucho ms adecuado para aplicaciones que necesitan mucho ancho de banda, como las de

    grficos y vdeo, que a menudo consumen cientos o incluso miles de megabytes de datos por

    archivo.

    Algunas de las caractersticas ms importantes del FireWire son:

    Flexibles opciones de conexin. Admite un mximo de 63 dispositivos con cables de hasta 4,25

    metros. Distribucin en el momento. Fundamental para aplicaciones de audio y vdeo, donde un

    fotograma que se retrasa o pierde la sincronizacin arruina un trabajo. Alimentacin por el bus.

    Mientras el USB 2.0 permite la alimentacin de dispositivos sencillos que consumen un mximo de

    2,5 W, como un ratn, los dispositivos FireWire pueden proporcionar o consumir hasta 45 W, ms

    que suficiente para discos duros de alto rendimiento y bateras de carga rpida.

  • 8/7/2019 java_y_usb

    42/45

    42

    Es conectable/desconectable en uso. Lo que significa que no se necesita desactivar un dispositivo

    para conectarlo o desconectarlo y que no es necesario reiniciar el ordenador. Funciona tanto con

    Mac como con PC. Lo que garantiza la compatibilidad con una larga lista de productos con

    FireWire a precios razonables. [App]

    3 COMUNICACIN USB A TRAVS DE JAVA3.1 JSR-80 APIEl proyecto JSR-80 fue creado por Dan Streetman a IBM en 1999. En 2001, el proyecto fue

    aceptado como candidato para llegar a ser un estndar extendido del lenguaje Java a travs de la

    Solicitud de Especificacin Java (JSR). El proyecto que ahora se llama JSR-80 y ha sido asignadooficialmente el paquete Java javax.usb. El proyecto est bajo la licencia Common Public License y

    es desarrollado utilizando la Java Community Process. El objetivo de este proyecto es desarrollar

    una interfaz USB para la plataforma Java que permitir el acceso pleno al sistema USB para

    cualquier aplicacin Java o componentes middleware. El JSR-80 API ofrece pleno apoyo a la

    transferencia de los cuatro tipos que se definen por la especificacin USB. Actualmente, la

    implementacin de la API para Linux trabaja en las ms recientes distribuciones de GNU / Linux

    con soporte kernel 2.4, tales como Red Hat 7.2 y 9.0.

    El proyecto JSR-80 incluye tres paquetes: javax-usb (API javax.usb), javax-usb-ri (la parte comn

    del sistema operativo independiente de la implementacin de referencia), y javax-usb-ri-linux (la

    implementacin de referencia para la plataforma Linux, que conecta la implementaci de

    referencia comn a la pila USB de Linux USB). Las tres partes son necesarias para lograr un

    completo funcionamiento de API java.usb en la plataforma Linux.

    Aunque la dependencia del sistema operativo de la implementacin de la JSR-80 API vara de un

    sistema operativo a otro, el programador de Java debe entender slo el paquete javax.usb para

    iniciar el desarrollo de aplicaciones. En el siguiente recuadro se enumeran las interfaces y clases en

    javax.usb con la que un programador Java debe estar familiarizado:

    Interfaz DescripcinUsbConfiguration Representa la configuracin de un dispositivo

    USB

    UsbConfigurationDescriptor Interfaz para un descriptor de configuracinUSB

    UsbDevice Interfaz para un dispositivo USB

    UsbDeviceDescriptor Interfaz para un descriptor de dispositivo USB

    UsbEndpoint Interfaz para un End Point USBUsbEndpointDescriptor Interfaz para un descriptor de End Point USB

    UsbHub Interfaz para un Hub USB

  • 8/7/2019 java_y_usb

    43/45

    43

    UsbInterface Interfaz para una Interfaz USB

    UsbInterfaceDescriptor Interfaz para un descriptor de interfaz USB

    UsbPipe Interfaz para una Pipe USB

    UsbPort Interfaz para un Puerto USBUsbServices Interfaz para una implementacin javax.usbClases Descripcin

    UsbHostManager Punto de entrada para javax.usb

    El procedimiento normal para acceder a un dispositivo USB con el JSR-80 API es el siguiente:

    1. Arrancar obteniendo el apropiado UsbServices de la UsbHostManager.

    2. Acceda a la raz a travs del centro UsbServices. El concentrador raz est considerado como una

    UsbHub en la solicitud.

    3. Obtenga una lista de los UsbDevices que estn conectados a la raz central. Recorra a travs de

    todos los centros de nivel inferior para encontrar el apropiado UsbDevice.

    4. Interactuar con el UsbDevice directamente con un mensaje de control (UsbControlIrp), o

    reclamar una UsbInterface de la apropiada UsbConfiguration del UsbDevice y realizar I / O con el

    UsbEndpoint disponible en la UsbInterface.

    5. Si un UsbEndpoint se utiliza para realizar I / O, abra la UsbPipe asociada a l. Puede presentarse

    ya sea sincrnica o asincrnicamente tanto las fases

top related