INTERFAZ USB DE ALMACENAMIENTO DE DATOS EN MEMORIAS FLASH PORTÁTILES, PARA SISTEMAS EMBEBIDOS HOST USB-DSP ANDRÉS BADILLO RODRÍGUEZ ROBERTO DURÁN CASTELLANOS UNIVERSIDAD INDUSTRIAL DE SANTANDER FACULTAD DE INGENIERÍAS FÍSICO-MECÁNICAS ESCUELA DE INGENIERÍAS ELÉCTRICA, ELECTRÓNICA Y TELECOMUNICACIONES BUCARAMANGA 2006 1 INTERFAZ USB DE ALMACENAMIENTO DE DATOS EN MEMORIAS FLASH PORTÁTILES, PARA SISTEMAS EMBEBIDOS HOST USB-DSP ANDRÉS BADILLO RODRÍGUEZ ROBERTO DURÁN CASTELLANOS Trabajo Final desarrollado como requisito para optar por el titulo de Ingeniero Electrónico Director. Ing. JAIME GUILLERMO BARRERO PÉREZ, Mpe. Codirector. Físico & ing. DAVID ALEJANDRO MIRANDA MERCADO, Msc. UNIVERSIDAD INDUSTRIAL DE SANTANDER FACULTAD DE INGENIERÍAS FÍSICO-MECÁNICAS ESCUELAS DE INGENIERÍAS ELÉCTRICA, ELECTRÓNICA Y TELECOMUNICACIONES BUCARAMANGA 2006 2 3 4 A Dios Padre amoroso en quien pongo en sus manos este logro en acción de gracias por sus bendiciones y por iluminar siempre mi camino. A la memoria de mi padre Roberto José; su ejemplo de dedicación, trabajo y solidaridad serán siempre mi motivación para dar de todo corazón lo mejor de mí. A mi madre Rosalba y a mis hermanitas Diana y Yenny por su gran amor, su apoyo e inconmensurable preocupación; por enseñarme que nada es imposible y que el amor y la fortaleza de una familia unida puede más que cualquier obstáculo por difícil que parezca superar. A mi Silvis porque su amor incondicional ha sido una bella luz que ha llenado de resplandor y de aliento mi vida, y ha hecho de mí una mejor persona. A aquellos amigos que han sido ejemplo vivo de Jesús y han amado a su prójimo como a sí mismos: Marco, Carlos, Andrés Badillo, Claudia, Pedro, Daniel, Gladys, Christian y Jaime. Roberto Durán Castellanos Al amigo y compañero paciente que esta en el momento adecuado para alegrar, proteger y escuchar, al que lo da todo y no quita nada, gracias Dios Padre, Hijo y Espíritu Santo por este regalo en las necesidades temporales y por permitirme escribir estas palabras. A La Virgen Maria por la misericordia y por sus “palancas”, las intercesiones. A mi familia, en especial a mi mamá Análida, a mi papá Aubanel Aníbal y a mi hermano Alejandro, por ayudarme a descubrir que las decisiones y los caminos que se siguen hasta el final no se hacen por compromiso sino por amor y que la pasión es el amor extremo, donde se soportan los sacrificios y el dolor con el fin de obtener el bienestar de los que se aprecian. “Dar ejemplo no es la principal manera de influir sobre los demás; es la única.” Albert Einstein A mis amigos y compañeros de estudio Roberto y Silvia por compartir enseñanzas de vida y valores humanos; por mostrarme que un equipo no es un grupo de personas reunidas; sino guerreros que luchan para lograr metas y valoran la victoria del equipo sobre la victoria individual. Andrés Badillo Rodríguez 5 AGRADECIMIENTOS Los autores de este trabajo agradecemos en primera medida a Dios todo poderoso por permitirnos llevar a cabo satisfactoriamente el proyecto; a nuestros familiares y amigos por el apoyo incondicional que recibimos de su parte; a nuestro orientador y guía de este proyecto, Msc. David Miranda porque nos mostró el camino a recorrer y nos dio las herramientas para hacerlo, a nuestro director Msc. Jaime Barrero por sus valiosos aportes y comentarios. También agradecemos a los grupos de investigación CEMOS y CIMBIOS por el respaldo y colaboración. Al grupo estudiantil Rama IEEE y a todas las personas que nos ofrecieron su apoyo en la elaboración de este trabajo. 6 RESUMEN TÍTULO: INTERFAZ USB DE ALMACENAMIENTO DE DATOS EN MEMORIAS FLASH PORTÁTILES PARA SISTEMAS EMBEBIDOS HOST USB-DSP*. AUTORES: BADILLO RODRÍGUEZ, Andrés y DURÁN CASTELLANOS, Roberto **. PALABRAS CLAVE: Clase USB de almacenamiento masivo (MSC), Controlador Host, FAT32, Host USB embebido, Memorias Flash USB, USB. DESCRIPCIÓN: Se presenta el desarrollo de un sistema basado en un Host USB embebido que, sin la asistencia de un PC, controla memorias Flash USB portátiles. Con ello se busca adaptar un medio de almacenamiento de alta capacidad y portátil al diseño del medidor de bioimpedancia eléctrica para detección temprana de cáncer de cuello uterino desarrollado en la Universidad Industrial de Santander. El sistema posee en hardware una arquitectura distribuida conformada por dos controladores: un controlador Híbrido DSP-µC (56F805 de Freescale) encargado del control principal del sistema, y un controlador secundario ASIC Controlador Host (EZHost de Cypress), encargado de dar soporte en hardware para el manejo y control de dispositivos USB Para la ejecución de las diversas tareas del sistema que son realizadas por el Software, se diseñó una arquitectura de Software modular, en donde las diferentes entidades o capas se encargan respectivamente del manejo del sistema de archivos FAT32; del control de dispositivos de la clase de almacenamiento masivo; de la configuración y control de dispositivos USB; y de la administración de la comunicación entre el DSP y el EZ-Host. Adicionalmente se desarrolló un módulo de aplicación que le permite al usuario del sistema verificar la escritura de datos en las memorias USB. El sistema cuenta con la capacidad de configurar y controlar dispositivos USB de almacenamiento Masivo, actuando como un Host USB embebido. Fue probado con diferentes dispositivos de almacenamiento, donde se logró la exitosa escritura de archivos en memorias Flash USB y en discos duros USB con formato FAT32 y con partición primaria de hasta 31GB. El sistema cumple con los requerimientos y recomendaciones del USB Implementers Forum (USB-IF) para el desarrollo de Hosts Embebidos. * Trabajo de grado Facultad de ingenierías físico-mecánicas. Escuela de ingenierías eléctrica, electrónica y telecomunicaciones. Director: Ing. Jaime Guillermo Barrero, Mpe. Codirector: Ing & Físico David Alejandro Miranda, Msc ** 7 ABSTRACT TITLE: USB INTERFACE OF DATA STORAGE IN PORTABLE FLASH MEMORIES FOR HOST-USB-DSP EMBEDDED SYSTEMS* AUTHORS: BADILLO RODRÍGUEZ, Andrés and DURÁN CASTELLANOS, Roberto ** KEYWORDS: FAT32, Host Controller, USB, USB Flash memories, USB Embedded Host, USB Mass Storage Class. DESCRIPTION: It is presented the development of a system for data storage in portable USB Flash memories, based on a USB Embedded Host. The goal is to adapt a high-capacity and portable storage device to the design of the electric bioimpedance measurement system for early cervix cancer detection developed in the Industrial University of Santander. The system has, in hardware, a distributed architecture conformed by two controllers: a Hybrid controller DSP-µC (56F805 of Freescale) that is in charge of the system main control, and a secondary controller, an ASIC Host Controller (EZ-Host of Cypress), in charge of giving support in hardware, for the handling and control of USB devices For the execution of diverse duties of the system, done by the software, it was designed a modular software architecture, in where the different entities or layers are in charge respectively of the FAT32 files system’s management, of the control of mass storage class kind devices, of the configuration and control of USB devices; and the administration of the communication between the DSP and the EZ–Host. Additionally, it was developed an application module that allows the user of the system verify the data writing in USB memories. The system has the capacity to configure and to control USB mass storage devices, acting as a USB embedded Host. It was proved with different storage devices, where was achieved successfully the writing of files in USB Flash memories and in USB hard disks with FAT32 format and primary partition of up to 31GB. The system fulfills the requirements and recommendations of the USB Implementers Forum (USB-IF) for the implementation of embedded Hosts. * Degree project School of electrical, electronic and telecommunications engineering. Director: Ing. Jaime Guillermo Barrero, Mpe. Codirector: Ing & Físico David Alejandro Miranda, Msc ** 8 TABLA DE CONTENIDO INTRODUCCIÓN ...........................................................................................................18 1. FUNDAMENTACIÓN TEÓRICA.............................................................................21 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 ANTECEDENTES DEL PROYECTO .............................................................................................21 TRABAJOS PREVIOS EN LA E3T..........................................................................................................21 MEMORIAS FLASH PORTÁTILES .........................................................................................................23 SISTEMAS HOST USB..............................................................................................................................25 NUESTRO PROYECTO.............................................................................................................................27 METODOLOGÍA .........................................................................................................................................28 1.2 MODELO DE CAPAS DE USB ......................................................................................................30 1.3 BUS SERIAL UNIVERSAL USB ....................................................................................................32 1.3.1 GENERALIDADES .....................................................................................................................................33 1.3.2 ARQUITECTURA........................................................................................................................................34 1.3.2.1 Topología Física..........................................................................................................................34 1.3.2.2 Topología Lógica. .......................................................................................................................35 1.3.2.3 Flujo de la comunicación, Pipes y Transferencias. ...........................................................36 1.3.3 CONFIGURACIÓN DE DISPOSITIVOS PERIFÉRICOS USB ............................................................39 1.3.4 PROTOCOLO..............................................................................................................................................40 1.3.5 INTERFAZ FÍSICA......................................................................................................................................43 1.3.5.1 Interfaz Eléctrica. ........................................................................................................................43 1.3.5.2 Interfaz Mecánica. .......................................................................................................................44 1.3.5.3 Consumo de Potencia. ..............................................................................................................46 1.3.6 CLASES USB..............................................................................................................................................47 1.4 HOST USB ......................................................................................................................................47 1.4.1 HOST Y PERIFÉRICO ...............................................................................................................................48 1.4.2 EL HOST USB COMO ADMINISTRADOR DEL BUS ..........................................................................50 1.5 CLASE USB DE ALMACENAMIENTO MASIVO MSC .................................................................51 1.5.1 PROTOCOLO DE TRANSPORTE BOT .................................................................................................52 1.6 2. 2.1 SISTEMA DE ARCHIVOS FAT32 ..................................................................................................53 DISEÑO DEL HARDWARE Y REVISIÓN DEL SISTEMA EMBEBIDO .................56 PLANTEAMIENTO DEL PROBLEMA Y REQUERIMIENTOS DEL SISTEMA.............................56 2.2 HARDWARE DEL SISTEMA H-ARD .............................................................................................58 2.2.1 SISTEMA H-ARD Y TARJETA HC-USB ................................................................................................58 2.2.2 CONTROLADOR HOST ............................................................................................................................59 2.2.3 INTERFACES DE COMUNICACIÓN.......................................................................................................65 2.2.3.1 Puertos USB.................................................................................................................................65 2.2.3.2 Otras Interfaces de Comunicación en la tarjeta HC-USB. ................................................66 2.2.4 MANEJO DE POTENCIA ..........................................................................................................................67 9 2.2.4.1 Etapa de Alimentación de los Puertos Host USB...............................................................68 2.2.4.2 Etapa de alimentación general de la Tarjeta HC-USB. ......................................................70 2.2.5 PROTECCIONES ELECTROMAGNÉTICAS .........................................................................................71 2.2.6 SERVICIOS A NUEVAS APLICACIONES .............................................................................................73 2.2.7 DISEÑO DEL CIRCUITO IMPRESO DE LA TARJETA HC-USB.......................................................74 2.2.7.1 Compatibilidad Electromagnética. .........................................................................................75 2.2.7.2 Diseño de Rutas del PCB..........................................................................................................75 2.2.7.3 Planos de Tierra y Protección Contra Ruido. ......................................................................76 2.2.7.4 Criterios para el Desarrollo de Hardware con Interfaz USB. ...........................................76 2.2.7.5 Agrupación de los Dispositivos en Bloques Funcionales en la Tarjeta.......................76 2.2.8 CONTROLADOR CENTRAL DSP...........................................................................................................79 2.2.9 INTERFAZ DE HARDWARE CON EL USUARIO .................................................................................81 2.2.10 TARJETA DE ADAPTACIÓN DE CONEXIONES .......................................................................83 2.3 3. IMPLEMENTACIÓN FINAL TARJETA HC-USB ...........................................................................84 SOFTWARE DEL SISTEMA EMBEBIDO ..............................................................86 3.1 HERRAMIENTAS ...........................................................................................................................86 3.2 CRITERIOS DE DISEÑO ................................................................................................................88 3.3 ARQUITECTURA DEL SOFTWARE..............................................................................................91 3.3.1 MÓDULO DE SISTEMA DE ARCHIVOS FAT32...................................................................................93 3.3.2 MÓDULO DE DRIVER DE LA CLASE USB DE ALMACENAMIENTO DE DATOS.......................97 3.3.3 MÓDULO DE DRIVER DEL SISTEMA USB..........................................................................................99 3.3.3.1 Bloque de configuración USB. ..............................................................................................101 3.3.3.2 Bloque de Transferencias de Control..................................................................................102 3.3.3.3 Bloque de Transferencias Bulk. ...........................................................................................104 3.3.3.4 Bloque de Driver del Controlador Host...............................................................................106 3.3.4 MÓDULO DE INTERFAZ CON EL CONTROLADOR HOST USB ..................................................107 3.3.4.1 Manejo del LCP..........................................................................................................................107 3.3.4.2 Manejo de la interfaz eléctrica...............................................................................................109 3.3.5 MÓDULO DE APLICACIÓN ...................................................................................................................110 3.4 ARQUITECTURA DE LA MEMORIA DEL SISTEMA ..................................................................113 3.5 INTERFAZ GRÁFICA EN MATLAB PARA LECTURA DE ARCHIVOS .....................................116 4. PRUEBAS.............................................................................................................119 4.1 PROCEDIMIENTO PRELIMINAR.................................................................................................119 4.2 PRUEBA 1. PROTOCOLO LCP...................................................................................................119 4.3 PRUEBA 2. DRIVER DE USB ......................................................................................................120 4.4 PRUEBA 3. DRIVER DE LA CLASE USB DE ALMACENAMIENTO MASIVO (MSC) ..............121 4.5 PRUEBA 4. SISTEMA DE ARCHIVOS FAT 32 ...........................................................................122 10 4.6 4.6.1 4.6.2 4.6.3 4.6.4 PRUEBAS GENERALES DEL SISTEMA ....................................................................................123 NÚMERO DE ARCHIVOS .......................................................................................................................123 TAMAÑO DE ARCHIVOS .......................................................................................................................124 ESCRITURA EN DOS MEMORIAS CONECTADAS SIMULTÁNEAMENTE .................................124 DETECCIÓN DE CONEXIÓN Y DESCONEXIÓN ...............................................................................124 4.7 REQUERIMIENTOS Y RECOMENDACIONES DEL USB IMPLEMENTERS FORUM...............125 4.7.5 Requerimientos para Puertos Host Embebidos..............................................................................126 4.7.6 REQUERIMIENTOS PARA HOST USB EMBEBIDOS CON MÚLTIPLES CONECTORES RECEPTORES TIPO A. .....................................................................................................................................127 4.7.7 RESULTADOS DE LA EVALUACIÓN DEL H-ARD BAJO LOS REQUERIMIENTOS DEL USBIF 128 CONCLUSIONES Y OBSERVACIONES.....................................................................129 NUEVAS PERSPECTIVAS..........................................................................................134 REFERENCIAS BIBLIOGRÁFICAS............................................................................137 ANEXOS ......................................................................................................................142 ANEXO A. DESCRIPTORES DE LOS DISPOSITIVOS DE LA CLASE MSC.............142 A.1 DESCRIPTOR DE DISPOSITIVO .......................................................................................................142 A.2 DESCRIPTOR DE CONFIGURACIÓN ...............................................................................................142 A.3. DESCRIPTOR DE INTERFAZ ...........................................................................................................144 A.4 DESCRIPTOR DE ENDPOINT............................................................................................................145 ANEXO B. BLOQUES DE COMANDOS DEL PROTOCOLO BOT ............................146 B.1 COMMAND BLOCK WRAPPER CBW...............................................................................................146 B.2 COMMAND STATUS WRAPPER CSW .............................................................................................148 ANEXO C. SISTEMA PARA ALMACENAMIENTO DE DATOS EN MEMORIAS FLASH USB PORTÁTILES, H-ARD, GUÍA DE USUARIO DE LA APLICACIÓN ...................149 C.1. CONFIGURACIONES DE HARDWARE PARA EL SISTEMA H-ARD .............................................149 C.2. DESCRIPCIÓN GENERAL DEL SOFTWARE DE APLICACIÓN DEL SISTEMA H-ARD...............150 C.2.1 Inicio del sistema.....................................................................................................................................150 C.2.2 Pantalla principal.....................................................................................................................................150 C.2.3 Proceso de creación de un archivo....................................................................................................151 C.3. SOFTWARE ADICIONAL PARA PC, LECTOR DE ARCHIVOS......................................................153 ANEXO D. FORMULARIO PARA LA MEDICIÓN DE ESPECTRO DE IMPEDANCIA ELÉCTRICA EN CUELLO UTERINO ..........................................................................154 ANEXO E. ESQUEMATICO Y LAYOUT DE LA TARJETA HC-USB .........................155 11 ANEXO F. DESCRIPCIÓN DE LAS FUNCIONES IMPLEMENTADAS EN EL SISTEMA H-ARD..........................................................................................................................157 F.1. LIBRERÍAS .........................................................................................................................................157 F.2. RUTINAS DE INICIO. .........................................................................................................................157 F.3. FUNCIONES DE APLICACIÓN..........................................................................................................158 F.4 FUNCIONES API (APPLICATION PROGRAM INTERFACE) ...........................................................158 F.5. FUNCIONES DEL SISTEMA DE ARCHIVOS FAT32........................................................................158 F.6. FUNCIONES DEL DRIVER DE CLASE USB MSC ...........................................................................159 F.7. FUNCIONES DEL DRIVER DE USB .................................................................................................160 F.8. FUNCIONES DE INTERACCIÓN CON EL EZ-HOST .......................................................................160 12 LISTA DE FIGURAS Pag. Figura 1. Metodología para el desarrollo del proyecto..…….………………………….….29 Figura 2. Modelo de capas de USB…………………..……………………………………..31 Figura 3. Configuración de escalones sistema USB………………………………………35 Figura 4. Topología del BUS USB………..………………………….………………...……36 Figura 5. Comunicación USB a través de las Pipes…………………………………….…37 Figura 6. Pasos en la Enumeración de un Dispositivo Periférico. ………………………39 Figura 7. Estructura de un Paquete. …………………………………….……………….…40 Figura 8. Componentes de una Transacción……………………………………………….42 Figura 9. Envío de datos del Host a un Periférico, mediante una Transacción…..........43 Figura 10. Conformación de las Unidades de Datos en las diversas capas de USB….44 Figura 11. Conectores USB…………………………………………………………………..46 Figura 12. Esquema de las entidades presentes en el Host………………………..…….50 Figura 13. Intercambio de datos entre el Host y un dispositivo USB MSC……………...53 Figura 14. Estructura lógica de una unidad de almacenamiento con formato FAT32…55 Figura 15. Diagrama de Bloques del Sistema H-ARD…………………………………….60 Figura 16. Configuraciones de los puertos USB en el EZ-Host..…………………………64 Figura 17. Diagrama de bloques del controlador EZ-Host…………………………….….65 Figura 18. Conectores USB..……………………………………..……………………….…66 Figura 19. Interfaces de conexión en la tarjeta HC-USB……...…….……………………68 Figura 20. Lazos virtuales de alimentación en un circuito………………...………………72 Figura 21. Modelo de conexión de los protectores ESD…………….….…………………73 Figura 22. Etapa de Alimentación de la tarjeta HC-USB…………….…..…………..……78 Figura 23. Etapa de Alimentación los puertos USB………………….….…………………79 Figura 24. Diagrama esquemático de la tarjeta TA1……………….……………..……….84 Figura 25. Implementación final Tarjeta HC-USB………………….………………………85 13 Figura 26. Arquitectura del Software del Sistema………………….………………………92 Figura 27. Diagrama de flujo de la configuración de una unidad de almacenamiento con formato FAT32………………………………………………………….………………………94 Figura 28. Algoritmo del sistema de archivos implementado, basado en FAT32………95 Figura 29. Interacción entre el Driver de SCSI y el Driver de MSC……...………………97 Figura 30. Diagrama de estados del Driver de SCSI……………………….………..……98 Figura 31. Algoritmo del Driver de la Clase USB Mass Storage…………..……………100 Figura 32. Estructura del Driver de USB…………………………..………..……………..101 Figura 33. Configuración de un dispositivo USB…………………………..…….……….103 Figura 34. Transferencias en el bus USB………………………………………....…..…..105 Figura 35. Driver del Controlador Host………………………………………….…………108 Figura 36. Diagrama de Estados del Módulo de Aplicación. ..………….………………111 Figura 37. Distribución de memoria del Sistema H-ARD. ..…………………..…………114 Figura 38. Flujo lógico de datos del sistema H-ARD. …..……….....……………………115 Figura 39. Cuadro de controles de la herramienta LectorA. ….….…………..…………118 Figura 40. Mensajes de conexión, configuración y desconexión de un dispositivo USB...…………………………………………………………………………………………..125 Figura A1. Descriptor de Dispositivo. …………………………….….……………………143 Figura A2.Descriptor de configuración. …………………………..…..………..…………143 Figura A3. Descriptor de Interfaz Bulk-Only. …………………..….………..……………144 Figura A4. Descriptores de Endpoint……………………………..………….…………….145 Figura B1. Estructura CBW. ………………………..……………………….…………..…147 Figura B2. Estructura CSW. ………………………………….…………….………………148 Figura C1. Mensaje de tarjeta HC-USB desconectada. ……………………...…………150 Figura C2.Estado principal de medición sin ejecutar. …………………..….……………151 Figura C3. Estado principal de medición ejecutada. ………………....……….…………151 Figura C4. Mensaje de memorias disponibles. ………………………….….……………152 Figura C5. Mensaje de memorias USB sin conectar. …..………………….……………152 Figura C6. Mensaje de selección de memorias. ……………….………..……………….152 Figura E1. Layout de la Tarjeta HC-USB……………………………...…………………..155 14 Figura E2. Esquemático de la Tarjeta HC-USB…………………………………………..156 15 LISTA DE TABLAS Pag. Tabla 1. Descripción de pines del bus USB. ……………………………………………….44 Tabla 2. Clases USB. …………………………………………………………………………48 Tabla 3. Controladores Host disponibles en el mercado. ………………………………...61 Tabla 4. SISTEMA HC-USB. Dispositivos conectados a 3.3V. ………………………..…71 Tabla 5. Puertos de comunicación de la Tarjeta DSP805. …………………………….…80 Tabla 6. Descripción de pines de la pantalla LCD y su respectiva conexión. ………….82 Tabla 7. Conexión entre los botones pulsadores y el DSP. ………………………………82 Tabla 8. Señales presentes en el puerto J2 de TA1. ……………………………………..83 Tabla 9. Comandos SCSI Implementados. ………………………………………….……..99 Tabla 10. Comandos LCP Implementados. ………………………………………………109 Tabla 11. Configuración de los módulos de SPI en el DSP y en el EZ-Host. …………110 Tabla 12. Comandos LCP probados. ……………………………………………………...120 Tabla 13. Resultado de la prueba de configuración de dispositivos USB. …………….121 Tabla 14. Lista de periféricos objetivo del sistema H-ARD. …………………………….127 Tabla C1. Configuración del DIP-SWITCH para la tarjeta HC-USB. ………….……….149 16 GLOSARIO Controlador Host Host Controller. Es la entidad de hardware que gestiona el protocolo USB y le permite al Host USB la ejecución de transacciones. EP Endpoint, es un espacio de memoria inmerso en un dispositivo USB que sirve como buffer de datos de entrada o salida. H-ARD Sistema Embebido para el Almacenamiento de Datos en memorias Flash portátiles USB. Sistema desarrollado en este trabajo. HC-USB Tarjeta de hardware integrada en el sistema H-ARD, diseñada para el funcionamiento del controlador Host y de los puertos USB. LBA Dirección del sector o bloque lógico en la unidad de almacenamiento. Periférico USB Es un dispositivo USB que se conecta al bus para ofrecer una función específica al Host. Sector Es el bloque lógico básico en una unidad con formato FAT. Típicamente para las memorias portátiles es de 512bytes. Sistema USB Es el sistema de comunicación que comprende el protocolo USB y todas las funciones y procesos que este sistema lleva a cabo Tdesc Transaction Descriptor. Es una estructura de datos mediante la cual el Driver del Controlador Host le indica al Controlador cómo debe ejecutar una determinada transacción. 17 INTRODUCCIÓN A medida que el avance de la electrónica permite el desarrollo de aplicaciones y sistemas embebidos más complejos, la necesidad de medios de almacenamiento de datos de alta capacidad y con facilidad de expansión es cada vez más significativa. Esta necesidad se acentúa aún más con la actual cultura de lo portátil, donde el interés se centra en que los nuevos dispositivos ofrezcan mayores servicios en un menor tamaño, con menor consumo de potencia y sin comprometer el precio. Un caso específico de esta situación se puede observar en la Universidad Industrial de Santander donde se está llevando a cabo el diseño de un Bioimpedanciometro para caracterizar tejido humano [MIRANDA]. Una de las limitaciones de los diseños realizados hasta el momento es su dependencia con un PC para el almacenamiento de los datos. Esta limitación ha llevado a estudiar tecnologías tales como memorias Flash, DSP y Host USB embebidos con el fin de hacer un Bioimpedanciometro completamente autónomo y con una gran capacidad de almacenamiento de datos. Por otra parte, debido a la necesidad de simplificar el manejo del dispositivo y después de evaluar diferentes estrategias con el equipo médico que da soporte al proyecto, encabezado por el doctor Jorge Humberto Echeverry, se optó por una forma de almacenamiento que fuera de bajo costo, comercial, removible y reemplazable, y de fácil uso para el cuerpo médico. Con base a esto y las necesidades técnicas se seleccionaron memorias flash USB portátiles. Por tal motivo, en el presente texto se expone el desarrollo de un sistema embebido que, sin la asistencia de un PC, controla dispositivos USB portátiles de almacenamiento masivo de datos. Con ello se busca adaptar un medio de almacenamiento de alta capacidad y portátil al diseño del medidor de bioimpedancia eléctrica para detección 18 temprana de cáncer de cuello uterino (entre otras aplicaciones) desarrollado en el grupo de investigación CEMOS de la Universidad Industrial de Santander. Así mismo, se espera que el sistema implementado sea de fácil incorporación a nuevos diseños de sistemas embebidos y pueda ser aprovechado en aplicaciones que requieran almacenamiento masivo de datos. En este orden de ideas, el proyecto presentado en este texto es una propuesta que pretende ofrecer tanto a los dispositivos que se desarrollen en la investigación como a los sistemas embebidos en general, capacidades de almacenamiento mayores, con los beneficios de las memorias portátiles. El presente texto expone en su primer capitulo los fundamentos teóricos en los cuales se sustenta el trabajo desarrollado. Específicamente, estos fundamentos exponen las ideas fundamentales para el desarrollo de un sistema Host USB embebido, y permiten adquirir un concepto propio sobre la incidencia de la tecnología USB y de las aplicaciones que se pueden desarrollar con base en esta. Adicionalmente, se exponen los antecedentes del proyecto y se hace una revisión del estado del arte con el fin de evidenciar el punto de partida y las herramientas tecnológicas disponibles. Los capítulos 2 y 3 presentan con más detalle el trabajo desarrollado en este proyecto; se muestran respectivamente, el diseño de un hardware y el diseño del software para un Host USB embebido, y en general del sistema de almacenamiento desarrollado. En el capitulo 4 se resumen las pruebas realizadas al sistema, diseñadas para evaluar sus características y analizar la versatilidad del dispositivo desarrollado. El capitulo 5 presenta las conclusiones y observaciones que surgieron con la realización del proyecto; se exponen las ideas relevantes, las recomendaciones y nuevas perspectivas que pueden servir como punto de partida para nuevos proyectos, de tal 19 forma que se plantean las ventajas que USB puede ofrecer en aplicaciones basados en Host USB embebidos. 20 1. FUNDAMENTACIÓN TEÓRICA En el presente capítulo se resumen los conceptos básicos necesarios para poder entrar en detalle en el diseño del sistema de almacenamiento de datos basado en un Host USB embebido desarrollado en este trabajo. Como parte de la metodología, se presenta una descripción general del proyecto, una recopilación de los antecedentes de trabajos anteriores realizados en la Universidad Industrial de Santander relacionados con el tema de USB y una revisión del estado del arte de las tecnologías en las cuales el sistema diseñado se sustenta. 1.1 ANTECEDENTES DEL PROYECTO 1.1.1 TRABAJOS PREVIOS EN LA E3T* La comunicación por el puerto USB ha sido en los últimos años el camino para la estandarización de las diversas interfaces que permiten la conexión de dispositivos periféricos con el computador. Así mismo, es la tecnología que se impone a nivel mundial en la conectividad de todo dispositivo periférico y/o portátil. Este fenómeno no es ajeno a la Universidad Industrial de Santander, donde la Escuela de Ingenierías Eléctrica, Electrónica y Telecomunicaciones en su interés por fortalecer la academia, se preocupa por estar avante en los procesos que conllevan a la implementación de tecnologías de punta. Los trabajos que se mencionan a continuación son proyectos de grado desarrollados en la Escuela de Ingeniería Eléctrica, Electrónica y Telecomunicaciones de la Universidad Industrial de Santander, en los cuales se aborda en cierta medida el tema de la comunicación USB. * E3T entiéndase como Escuela de Ingenierías Eléctrica, Electrónica y Telecomunicaciones de la Universidad Industrial de Santander 21 La conectividad USB se presenta como tema central de proyecto, en trabajos como el de Nathalie Hernández e Ivonne Mantilla [HERNANDEZ-MANTILLA], así como el de Fredy Ascencio [ASCENCIO], con el propósito de estudiar las características que provee el protocolo USB. Hernández y Mantilla [HERNANDEZ-MANTILLA], dos de las pioneras en la E3T en la utilización del puerto USB, exponen la implementación de una tarjeta de adquisición de datos basada en el microcontrolador MC68HC908JB8JP, que actúa como un dispositivo USB Periférico* de aplicación específica. Dicho dispositivo trabaja la interfaz USB a 1.5Mbps (denominado Low Speed de acuerdo a las especificaciones USB 1.1) y utiliza transferencias† de tipo Interrupción (utilizadas por los Dispositivos de Interfaz Humana HID) para la transmisión de datos por el bus. Las autoras recomiendan trabajar la interfaz USB a velocidades mayores (Full Speed a 12Mbps ó High Speed a 480Mbps, de acuerdo con USB 2.0) para dispositivos de adquisición de datos que requieran altas tasas de transferencia de datos, dado que la velocidad de transferencia de datos efectiva obtenida fue más baja en comparación con otras interfaces seriales de comunicación, como el RS232. Por otra parte, Ascencio [ASCENCIO] en su trabajo expone el diseño de una tarjeta de adquisición de datos por medio del puerto USB, basado en una versión más reciente de USB (USB 2.0). Presenta algunas modificaciones con relación al trabajo anterior respecto a la implementación de transferencias de volumen de datos (Bulk) además de las de tipo Interrupción. Adicionalmente, el dispositivo final trabaja la interfaz USB a 12Mbps y logra una tasa de transferencia efectiva de datos de 960Kbps con un DSP a una frecuencia interna de bus de 60Mhz y 124.8Kbps con un microcontrolador a una frecuencia interna de bus de 7.9872Mhz. * Dispositivo USB Periférico se entiende como un dispositivo que está conectado al Bus y es parte pasiva de la comunicación USB, donde el administrador de la comunicación es el HOST. † Véase apartado 1.3.1.3, Flujo de la comunicación, Pipes y Transferencias. 22 Así mismo, en la E3T se han desarrollado trabajos de grado que han abordado, de forma menos profunda, el tema de la comunicación USB, como es el caso de los trabajos de Monroy y Zabala [MONROY-ZABALA], y de Conde y Santos [CONDE–SANTOS] en donde se utiliza el puerto USB como una interfaz serial de alta velocidad. De manera global se ha observado la utilización de la comunicación USB en dispositivos catalogados como Periféricos (de acuerdo a las especificaciones USB 2.0), donde la parte activa o administrador del Bus ha sido el PC (Host). 1.1.2 MEMORIAS FLASH PORTÁTILES El mercado de dispositivos de uso personal y doméstico (como es el caso de los celulares, cámaras digitales y reproductores de audio) ha generado una cultura que demanda productos portátiles, de tamaño reducido y de bajo consumo de potencia. Este comportamiento se ha extendido hacia todos los campos de la electrónica, donde se requiera de hardware especializado para la realización de tareas explícitas. Con el avance de la electrónica, la reducción en el tamaño de los dispositivos y disminución en el consumo de potencia de los mismos, el desarrollo de sistemas embebidos portátiles dejó de ser una opción a ser una necesidad. En consecuencia ha surgido una gama de herramientas y nuevas tecnologías que proporcionan un valor agregado al diseño, la implementación y la utilización de estos sistemas. En el campo de las memorias o dispositivos de almacenamiento de datos se observa el mismo comportamiento. Desde el surgimiento de las memorias RAM y ROM para computadores personales, pasando por la EPROM y la EEPROM, hasta las más recientes memorias Flash (cuya tecnología de fabricación ha permitido mayor capacidad de almacenamiento en un menor espacio, con características de escritura y borrado con muy bajo consumo de potencia), el campo de las memorias ha tenido un gran avance, entre otros factores impulsado por la misma necesidad de diseñar sistemas de menor tamaño y con mayores prestaciones. 23 Existen dos tipos de memoria flash: las que están basadas en compuertas NOR (tipo NOR) y las que están basadas en compuertas lógicas NAND (tipo NAND). Cada tipo tiene sus ventajas y desventajas con respecto a la otra. No obstante, pese a que las memorias tipo NOR manejan una mayor velocidad de escritura, las memorias NAND son actualmente las más utilizadas en dispositivos portátiles por ser más económicas y permitir una mayor densidad de almacenamiento [WIKIPEDIA1] (lo que implica mayor capacidad a un mismo tamaño). Además, de acuerdo con Kaplan [KAPLAN], la tecnología de memorias NAND ha evolucionado tan drásticamente que ha superado la ley de Moore*, doblando la capacidad cada 12 meses, en comparación con los 18 meses que dicta dicha ley. La necesidad latente de darle el carácter de portátil a un dispositivo, junto con las grandes ventajas que presentan las memorias Flash, han propiciado el surgimiento de lo que se conoce hoy en día como memorias portátiles. Actualmente existe una gran variedad de formatos de memorias portátiles, la mayoría basadas en tecnología NAND Flash. Un aspecto importante de una memoria portátil es su interfaz de comunicación. Con el auge de USB y el fenómeno de estandarización de interfaces de comunicación, los fabricantes de diversos dispositivos que hacen uso de memorias portátiles (las cámaras fotográficas, los PDA, los reproductores de MP3 y las mismas memorias USB) han optado por la utilización de USB como interfaz de comunicación con el PC para la transferencia de archivos y datos en general. La proyección de la utilización de memorias portátiles en nuevos diseños de dispositivos es grande. Con la tecnología de memorias Flash y el protocolo USB de la mano, los * La ley de Moore es una predicción hecha por el co-fundador de Intel, Gordon Moore, quien afirmó que el número de transistores en un chip se duplicaría cada 18 meses. 24 recursos disponibles para el diseñador de sistemas embebidos serán cada vez mayores y las aplicaciones más completas y robustas. 1.1.3 SISTEMAS HOST USB USB es un sistema de comunicación cuyo protocolo tiene una arquitectura tipo MaestroEsclavo, donde se ha definido como un Bus de un sólo Host (quien es el que coordina toda la comunicación) y muchos Periféricos. La definición de dispositivo USB Periférico implica la ejecución de tareas muy específicas y dependientes de un Host (que generalmente es el PC). Desde el punto de vista de un sistema portátil, esta definición limita su funcionalidad en el sentido de que no se puede comunicar con otros dispositivos USB. Además, está forzado a depender de un computador para hacer uso del Bus. La tendencia de la estandarización de protocolos ha llevado a que las interfaces de conexión de los diversos dispositivos periféricos tiendan a unificarse. Como consecuencia de ello, interfaces de comunicación como el RS232, PS/2 y demás, están siendo cada vez menos implementadas. Muestra de ello lo podemos ver en los PCs más actuales, en los cuales no se encuentran puertos como estos. En cambio, se pueden encontrar cinco o más puertos USB y en algunos casos puertos IEEE 1394 (Firewire). Lo anterior ha generado que la gran mayoría de nuevos diseños de dispositivos incluyan estándares de conectividad vigentes como USB, para dar solución a la comunicación con el PC. Desde dispositivos Periféricos (como teclados, ratones e impresoras) hasta dispositivos de aplicación específica (como tarjetas de adquisición de Datos y equipos médicos), ya incluyen puertos USB como interfaz de comunicación. ¿Pero que sucede con la conexión con los dispositivos entre sí? Dentro de la concepción original de USB, los dispositivos Periféricos no poseen la capacidad de comunicarse entre si, debido principalmente a que, como se mencionó anteriormente, 25 este protocolo se definió con una arquitectura Maestro-Esclavo, donde el Maestro es quien controla la comunicación (que usualmente es el PC). Con el avance de los sistemas portátiles, el requerimiento de conectividad entre dispositivos se hace cada vez más notorio. El concepto de Host USB se aplica a los dispositivos que administran la comunicación USB y pueden acceder a los servicios que ofrecen los dispositivos Periféricos. Estos sistemas hasta el momento siempre se han relacionado con el PC. Sin embargo, dentro del concepto de Host USB, ha surgido una clasificación para identificar a dos grupos representativos de Host USB: de propósito general y Host embebidos. Un Host de propósito general es un sistema que está en capacidad de soportar una gran variedad de dispositivos USB, siempre y cuando cuente con los Drivers apropiados. En la comunicación USB, el concepto de Host de propósito general se aplica al PC. Un sistema Host USB embebido es un concepto reciente que surge en respuesta a la necesidad de los sistemas embebidos de poseer no sólo características propias de un dispositivo USB Periférico sino también la capacidad de desempeñar las tareas de un Host USB, para poder comunicarse con otros dispositivos sin la asistencia de un PC. Esta clase de dispositivos interactúan con un conjunto específico de periféricos y su complejidad o soporte de dispositivos periféricos va acorde con la capacidad del sistema embebido en el que se implemente. El desarrollo de nuevos diseños basados en Host USB amplía los horizontes en materia de recursos. Cualquier dispositivo USB Periférico puede potencialmente proporcionar servicios y funciones adicionales a un sistema Host USB. En el caso específico del presente proyecto, un diseño que fue concebido inicialmente para medición de 26 impedancia eléctrica de tejido de cuello uterino puede acceder a los servicios de almacenamiento de una memoria USB, gracias a la incorporación de un Host USB*. Cabe resaltar que el desafío de adicionar a un sistema embebido la capacidad de Host USB no es sencillo. El Host, como administrador del Bus, tiene que lidiar con la complejidad del protocolo. Hasta ahora era tarea del PC cumplir con las labores del Host. Ahora, están siendo necesarios nuevos mecanismos para incorporar un Host USB a sistemas embebidos (como el propuesto en este trabajo), para ampliar la cobertura de conexión de dispositivos. Existe un campo en la tecnología USB que aún queda por explorar, el OTG [PHILIPS] (On The Go por sus siglas en inglés). OTG es un suplemento de las especificaciones USB 2.0, el cual habilita la posibilidad que los dispositivos USB puedan cumplir con cualquiera de los dos roles, el de Host y el de Periférico. Se diferencia con la tecnología de los sistemas Host USB embebidos en que estos últimos por lo general comprenden puertos dedicado para Host y puertos dedicados para Periféricos. En cambio OTG permite que un dispositivo tenga en un mismo puerto la posibilidad de conectarse como Host o como Periférico. OTG, así como todo el concepto de USB, simplifica para el usuario el manejo del dispositivo a costa de aumentar la complejidad de su implementación. 1.1.4 NUESTRO PROYECTO Con el presente proyecto se buscó desarrollar un sistema embebido que, sin la asistencia de un PC, controle memorias Flash USB portátiles. Con ello se pretende ofrecer a nuevos diseños de dispositivos mayor capacidad de almacenamiento, con las ventajas de las memorias portátiles de facilidad para el transporte de datos y flexibilidad de expansión o reemplazo del medio de almacenamiento. * Véase apartado 1.1.4, Nuestro Proyecto. 27 El proyecto se encuentra dentro del marco de una investigación adelantada por el físico e ing. David Alejandro Miranda, Msc. y el ing. Jaime Guillermo Barrero, Mpe., en el grupo CEMOS [MIRANDA]. La investigación busca, como objetivo principal, proponer una técnica para la detección precoz de cáncer de cuello uterino basada en espectro de impedancia eléctrica y para ello se requiere diseñar un dispositivo de medición del espectro de impedancia eléctrica para estudiar el tejido de cuello uterino. La aplicación de este proyecto está orientada al almacenamiento de los datos obtenidos en la medición del espectro de impedancia eléctrica de las muestras del tejido de cérvix, en una memoria USB y autónomo del PC, de tal forma que se facilite el transporte de la información y se aumente significativamente la capacidad de almacenamiento de datos. En resumen, el presente trabajo propone, por un lado, el desarrollo de un sistema de almacenamiento de datos con memorias Flash portátiles, y por otro lado, la implementación de un sistema embebido capaz de controlar dispositivos USB de almacenamiento de datos.* 1.1.5 METODOLOGÍA En el proyecto se utilizó una metodología de adaptación de tecnología, en la cual se siguieron parámetros generales para resolver un problema de ingeniería, tales como la definición del problema, la recopilación bibliográfica, el estudio de los antecedentes, la revisión del estado del arte y el diseño del sistema final, entre otros. La figura 1 ilustra el proceso metodológico que se implementó para el desarrollo del proyecto, donde se resaltan tres grandes fases: el estudio de la factibilidad, el análisis de herramientas y el diseño del sistema final. * Refierase al apartado 2.1, Planteamiento del Problema y Requerimientos del Sistema. 28 Figura 1. Metodología para el desarrollo del proyecto Definición Del Problema Revisión Bibliográfica Estudio de Antecedentes Consulta Especialistas Estudio de los requerimientos SI No ¿Es necesario consultar especialistas? No SI ESTUDIO DE LA FACTIBILIDAD ANÁLISIS DE HERRAMIENTAS ¿Suficiente información? Conclusión de la factibilidad Revisión del Estado del Arte División de Tareas entre el Software y el Hardware DISEÑO DEL SISTEMA FINAL Diseño del Hardware Diseño del Firmware Integración del sistema Pruebas, Informe Final y Conclusiones Fuente: Los Autores 29 Del estudio de factibilidad vale la pena resaltar que, debido a la escasa información técnica disponible y a la falta de antecedentes estrechamente relacionados con el problema, fue necesario la consulta de especialistas en el tema, de otros países, para obtener una orientación acerca de cómo llevar a cabo el sistema Host USB para el almacenamiento de datos propuesto en este proyecto. Una vez definida la factibilidad, se inició la segunda fase con el proceso de selección de las herramientas útiles para el proyecto. Se hizo énfasis en la revisión del estado del arte con el fin de evaluar las herramientas tecnológicas disponibles y el impacto técnico del proyecto. En la tercera fase llevó a cabo el desarrollo del sistema final. Se identificaron las limitaciones y las tareas que podía ejecutar el hardware, para así determinar las funciones que se tendrían que implementarse en software. El diseño tanto del hardware como del software se enfocó en el aprovechamiento de los recursos; en software se implementaron técnicas de programación para mejorar la velocidad de ejecución y el espacio en memoria de la aplicación*, mientras que en hardware se buscó un bajo consumo de potencia† y una reducción de efectos electromagnéticos negativos, entre otras estrategias. 1.2 MODELO DE CAPAS DE USB En el análisis de un protocolo es conveniente determinar o definir un modelo de capas que permite esclarecer las entidades que participan en el sistema y evaluar la complejidad del protocolo Por tal motivo, en este apartado se presenta el modelo de capas del sistema USB y se describe cada una de estas entidades. De esta forma se pretenden esclarecer los * † Véase Capítulo 3 de este texto. Véase Capítulo 2 de este texto. 30 servicios que ofrece USB como sistema de comunicación y a su vez, las funciones de cada capa del protocolo. El modelo USB consta básicamente de tres capas: La capa de Interfaz del Bus USB, la capa del Driver del sistema USB y la capa de Función, tal como ilustra la figura 2. La capa de Interfaz del Bus USB se divide a su vez en dos subcapas: la subcapa de Interfaz Física y la subcapa de Protocolo USB*. La subcapa de Interfaz Física permite la conexión eléctrica y física en el bus. Así mismo, se encarga de la señalización y codificación de los bits que transmiten. La subcapa de Protocolo se encarga de la elaboración y envío de los Paquetes USB, los cuales son la unidad de datos del protocolo o PDU y la esencia de la comunicación por el Bus (Refiérase al apartado 1.3.4, Protocolo). Figura 2. Modelo de capas de USB MODELO DE CAPAS DE USB CAPA DE FUNCIÓN CAPA DE DRIVER DEL SISTEMA USB NUCLEO DEL PROTOCOLO USB CAPA DE INTERFAZ DEL BUS USB INTERFAZ FÍSICA Fuente: Los Autores * Esta división es una abstracción hecha por los autores y no se describe explícitamente en las especificaciones USB. 31 La capa de Driver del sistema USB es quien se encarga del manejo de todo el sistema USB y de que la comunicación por el bus sea exitosa. Para ello realiza funciones, tales como: la administración del acceso al Bus y de las transacciones de datos que tienen lugar en el mismo; la configuración del Sistema USB (que corresponde a la configuración de un dispositivo recién conectado y la asignación de un driver para este), y la ejecución de las peticiones de la capa superior, entre otras. Esta capa hace uso de los servicios de la subcapa de protocolo para llevar a cabo la comunicación entre el Host y el Periférico. La capa de Función comprende las aplicaciones que hacen uso de todo el sistema USB para entablar una comunicación con otra entidad. En el caso del Host, un dispositivo conectado al bus puede proporcionarle uno o varios servicios adicionales. Cada clase de servicio que le proporciona es visto como un ente independiente catalogado como Función (refiérase al apartado 1.3.2. Arquitectura). Así, la capa de Función comprende el software de la aplicación en el lado del Host y la o las funciones en el lado del dispositivo Periférico. En el diseño del sistema Host USB embebido del presente proyecto, se utiliza una memoria USB que le provee la función de almacenamiento de datos al Host. Así mismo, en el lado del Host, es la aplicación quien hace uso de este servicio. 1.3 BUS SERIAL UNIVERSAL USB USB es un sistema de comunicación que se ha concebido para unificar las interfaces eléctricas de comunicación con el PC así como para facilitar el uso y la conexión de los dispositivos. Esta última característica es posible gracias a complejos procesos que lleva a cabo el Host o administrador de la comunicación. Con el fin de sentar las bases para el diseño de un Host USB, en la presente sección se exponen los conceptos básicos de USB así como una abstracción del funcionamiento 32 de este sistema y una breve descripción de los procesos que un Host USB realiza para controlar los dispositivos USB conectados al Bus. 1.3.1 GENERALIDADES USB ha sido en los últimos años la interfaz de comunicación que ha unificado la forma de conexión de los dispositivos Periféricos con un Host (PC). Utiliza un bus serial para la transmisión de información y soporta la conexión y direccionamiento de hasta 127 dispositivos. USB gestiona el acceso al medio mediante el envío de Testigos o Tokens. Algunas de las características principales de USB son: ¾ Unificación de la interfaz de comunicación de los dispositivos Periféricos, eléctrica y mecánicamente. ¾ Soporte para conexión y desconexión en caliente así como la detección y configuración automática del dispositivo (Plug and Play). ¾ Soporte para la conexión de nuevos diseños de dispositivos. La versión más actual de USB (2.0) define tres velocidades diferentes de transmisión, las cuales permiten soportar y aprovechar de la mejor forma los recursos de un dispositivo y al mismo tiempo mejorar el rendimiento del sistema. Las velocidades son: • Low Speed: 1.5Mbps • Full Speed: 12Mbps • High Speed: 480Mbs USB es un protocolo tipo Maestro-Esclavo. Ha sido definido como un bus de un sólo Host o administrador y muchos Esclavos o Periféricos. El Host es el encargado de controlar la comunicación, además de proporcionar la alimentación a los dispositivos que requieren una fuente externa, mientras que el Periférico es quien le provee servicios adicionales al Host. Toda la complejidad del sistema USB se recargó sobre el Host, por tanto se delegó al PC esta tarea, permitiendo la implementación del protocolo en los dispositivos de forma sencilla y por ende de bajo costo. 33 Los nuevos desarrollos con interfaz USB se están orientando al concepto de dispositivos OTG (dispositivos que usan la tecnología emergente On The Go)* los cuales son dispositivos periféricos que además de ofrecer una función especifica, pueden interactuar con otros Periféricos USB. 1.3.2 ARQUITECTURA El sistema USB tiene una arquitectura que permite la interconexión simultanea de diversos dispositivos con el administrador (Host) de la comunicación, aun así debido a las características físicas de esta tecnología, la interconexión antes mencionada requiere la presencia de nodos que expandan el BUS, los cuales hacen que la conexión física entre el Host y los Periféricos difiera de la conexión lógica. Por lo anterior en USB existe una Topología física y una Topología lógica, las cuales se presentan a continuación. 1.3.2.1 Topología Física. En una interconexión común de USB básicamente se hacen presentes el administrador de la comunicación (Host), y los Periféricos que están conectados a él por medio del Bus USB. En esta interconexión pueden existir nodos que permiten la expansión del Bus para que más dispositivos se conecten a este. Estos nodos son entidades de USB definidas como Hubs. La interconexión de todos los dispositivos Periféricos al Host por el bus USB presenta una topología en forma de estrella y se organiza en escalones de acuerdo a los niveles de expansión del bus. El centro de la comunicación es el Host y los Periféricos se conectan a él directamente o a través de los Hubs. Cada nivel se genera por la extensión de un Hub. La figura 3 ilustra la posible conexión entre diferentes dispositivos y el Host. * Referirse al apartado 1.1.3. 34 Figura 3. Configuración de escalones sistema USB Fuente: Los Autores Un dispositivo es identificado por el Host de acuerdo a la clase de función que ofrece. Pueden existir dispositivos que ofrecen más de una función conocidos como dispositivos multifuncionales o compuestos. Estos dispositivos son representados como un Hub el cual reúne las diferentes funciones que son vistas por el Host como entidades lógicas independientes, como lo muestra la figura 4. El Host puede soportar una conexión de 127 dispositivos y es posible implementar máximo 7 niveles de propagación incluyendo el Hub raíz (el Hub que esta contenido dentro del Host). 1.3.2.2 Topología Lógica. La topología lógica de USB difiere un poco de la configuración física ya que la comunicación USB es una interacción punto a punto entre el Host y un Periférico, es decir, el Host ve a las funciones de todos los dispositivos como entidades independientes que están conectadas directamente a él (figura 4). Analizando las dos topologías de sistema, se puede ver como en USB la inserción de un Hub resulta transparente en la comunicación entre el Host y un dispositivo Periférico. 35 Figura 4. Topología del bus USB HOST Función Función HUB Función HUB Función HUB Función Dispositivo compuesto HOST Función Función Función Función Función a) Topología física b) Topología lógica Fuente: Los Autores 1.3.2.3 Flujo de la comunicación, Pipes y Transferencias. USB, como un protocolo estructurado, maneja un flujo de datos entre entidades lógicas paritarias (las entidades entre el Host y el Periférico de la misma capa del protocolo), y un flujo de datos entre una capa superior y su capa de servicio. En el sistema USB el Host <<ve>> al dispositivo Periférico como una colección de Endpoints. Los Endpoints se pueden definir como espacios de memoria en los dispositivos donde finalmente se envían o reciben los datos en una transmisión; son configuraciones de hardware que el Host puede direccionar. El dispositivo mantiene información relevante sobre la naturaleza de los Endpoint, que comprende tanto el sentido de la transmisión como la capacidad máxima de datos que puede manejar. El Host debe solicitar esta información y con ella controlar adecuadamente el intercambio de datos con el Periférico. Aunque los Periféricos pueden tener diferentes tipos de Endpoints, como mínimo deben tener el Endpoint de control o <<Endpoint cero>>, el cual se usa en la configuración y el 36 control del dispositivo Periférico, por ejemplo para el proceso de enumeración (refiérase al apartado 1.3.3, Configuración de Dispositivos USB). El Endpoint cero utiliza únicamente transferencias de control. En un sistema USB, la comunicación entre el Host y los Endpoints en el dispositivo se maneja a través de caminos o interconexiones lógicas identificadas como Pipes. La figura 5 ilustra una representación de las Pipes y la forma como el Host ve a un Periférico como un conjunto de Enpoints a través de las Pipes. Por otro lado, USB soporta distintos tipos de transferencias que presentan características específicas dependiendo de las necesidades de transmisión del dispositivo. Esto, en cierta medida, permite evidenciar la flexibilidad y versatilidad que ofrece el bus USB para trabajar con distintos tipos de Periféricos con requerimientos de comunicación diferentes. Específicamente, en el protocolo USB existen 4 tipos de transferencias posibles para la comunicación, las cuales son: la transferencia de control, por volumen de datos (BULK), isócronas y por interrupción. Figura 5. Comunicación USB a través de las Pipes Fuente: ANDERSON, Don. USB System Architecture. Menlo Park, CA : ADDISON-WESLEY. 2001. ISBN: 0-201-46137-4 37 Las transferencias de control son usadas en el proceso de configuración de un dispositivo. El Host implementa las transferencias de control para transportar peticiones propias de USB que sirven para configurar, enumerar y controlar un dispositivo. Todos los dispositivos USB soportan las transferencias de control y un Host USB debe tener implementado mínimo las transferencias de control. Las transferencias por volumen de datos (BULK) son transferencias utilizadas, como su nombre lo indica, en casos de manejo de grandes cantidades de datos y donde no es critico el tiempo de transmisión de estos. Estas transferencias están soportadas en fullspeed y high-speed. Son utilizadas en los dispositivos de almacenamiento de datos como discos duros y memorias Flash portátiles. Las transferencias isócronas son transferencias de datos periódicas que se usan cuando el tiempo es un factor relevante. En este tipo de transferencia existe una comunicación continua entre el Host y el dispositivo. Los dispositivos de audio y video y aplicaciones de manejo de datos en tiempo real que requieren una tasa constante de transmisión, soportan este tipo de transferencia Las transferencias por interrupción se manejan en aplicaciones donde el ancho de banda no es relevante para la transmisión de datos. Estas transferencias se manejan en dispositivos de interfaz humana* como teclados y mouses. La capacidad del bus USB de manejar diferentes tipos de transferencias permite al sistema USB aprovechar las ventajas de comunicación que cada dispositivo ofrece. Un caso que ilustra este hecho son los dispositivos que trabajan con transferencias de interrupción y no necesitan el establecimiento de una comunicación continua con el Host. * Referirse al apartado 1.3.6. Clases USB 38 1.3.3 CONFIGURACIÓN DE DISPOSITIVOS PERIFÉRICOS USB Se mencionó anteriormente que una de las características de USB es la detección y configuración automática de un dispositivo. Como USB soporta la conexión de dispositivos con características diferentes, el administrador de la comunicación (el Host) debe obtener información específica de éstos para identificarlos y asignarles un Driver adecuado. Este procedimiento, que permite la configuración automática de un dispositivo USB, es denominado Enumeración y consta de las fases mostradas en la figura 6. En las fases de conexión y alimentación, un Periférico USB es conectado físicamente al Bus y alimentado por el Host (en el caso de que el dispositivo Periférico no sea autoalimentado). Posteriormente, el dispositivo es <<reinicializado>> por el Host y pasa a un estado en el cual presenta una Configuración por Defecto. Allí, el Host le asigna una dirección al dispositivo, lo que le permite a este último entrar en la fase de enumerado. En esta fase el Host solicita los Descriptores del dispositivo, los cuales Figura 6. Pasos en la enumeración de un dispositivo Periférico BI BUS INACTIV O SA A CTIV IDA D EN EL BUS CONEXIÓN De n x ió ne o sc BI SA A L IMENTA CIÓN S A BI Inter rup ción de la alimentación SA BI CONFIGURA CIÓN PO R DE FE CT O ENUMERA DO SA BI A Rese t o Inter rup ción de la a limentación S Direc ción A signad a SUSPENDIDO BI Res et CONFIGURADO Fuente: Los Autores 39 contienen información útil que le permiten al Host asignarle un Driver al dispositivo para que sea controlado adecuadamente. Un dispositivo físico, como se mencionó en el apartado 1.3.2, puede estar compuesto por una o varias funciones, que son vistas por el Host como dispositivos lógicos diferentes (como por ejemplo un teclado que tenga la capacidad de Hub). Cada función es interpretada por el Host como una posible configuración del dispositivo. A su vez, cada configuración puede estar conformada por una o varias interfaces de comunicación lógica con la aplicación y cada interfaz maneja sus propios buffers o Endpoints. Es importante para el Host conocer las características generales del dispositivo, para saber sus posibles configuraciones. De cada configuración es necesario conocer las interfaces que maneja y los EndPoints que abarca cada interfaz. Por ello existen descriptores de dispositivo, de configuración, de interfaz y de EndPoint, los cuales suministran esta información y permiten la adecuada comunicación entre el Host y el dispositivo Periférico (Cada descriptor se expone en el anexo A). 1.3.4 PROTOCOLO La unidad de datos del protocolo o PDU se conoce como Paquete. USB coordina toda la comunicación en el bus mediante el envío y recepción de paquetes. Un paquete USB está usualmente conformado por tres partes: una cabecera, un campo de datos y una cola, tal y como lo ilustra la figura 7. Figura 7. Estructura de un paquete CABECERA SYNC DATOS PID COLA CRC Fuente: Los Autores 40 La cabecera consiste en un byte de sincronización, que permiten que el reloj del receptor se sincronice a la misma velocidad que se hizo la transmisión, y un identificador de paquete ó PID (Package ID), que permite reconocer el tipo o la función del paquete. El campo de datos del paquete contiene la información que se quiere enviar en este y la cola comprende un campo de código de redundancia cíclica (CRC) para detección de errores. Dado que USB maneja un protocolo complejo, existen varios tipos de paquetes con funciones específicas que permiten el intercambio de información por el bus. Estos paquetes son: Token, Datos, Validación y Preámbulo*. El paquete Token contiene la información necesaria para establecer la comunicación en el bus. Estos paquetes especifican la dirección del dispositivo, el Endpoint y el sentido o el objetivo de los datos a transmitir. Para lo último utiliza cuatro clases de identificadores de paquete diferentes: IN (datos hacia el Host), OUT (datos desde el Host), SETUP (datos de control) y SOF (inicio del Frame). El Host es quien siempre hace uso de los paquetes Token puesto que son la herramienta principal para administrar el acceso al medio. El paquete de Datos contiene la información que el Host desea enviar o recibir. La longitud generalmente está determinada por el tamaño del EndPoint de destino, sin embargo, la longitud puede estar entre 0 y1023 bytes. Existen además dos clases de paquetes de Datos: Data0 y Data1. USB hace uso de ellos alternadamente, como medida para detectar la pérdida o la corrupción de paquetes. El paquete de Validación es enviado por el Periférico receptor de los datos y permite reportar al Host la correcta entrega de estos. Existen tres tipos de paquetes de Validación: Ack que indica una transacción exitosa, Nak que indica que el dispositivo está ocupado y no puede atender los datos que llegan y Stall que indica que el * El paquete preámbulo solo se maneja para dispositivos Low Speed y no se contempla en el presente texto. 41 dispositivo no está en condiciones de recibir datos. De esta forma USB permite un control de flujo, evitando la saturación del dispositivo Periférico. USB organiza el intercambio de datos con los diferentes dispositivos mediante la transmisión de una secuencia de paquetes denominada Transacción. En una Transacción se lleva a cabo la transmisión de datos del tamaño permitido por el EndPoint y consta generalmente de un paquete Token, un paquete de Datos y un paquete de Validación. La figura 8 muestra la secuencia de paquetes que conforman una transacción. De manera global, se puede decir que el protocolo USB procede de la siguiente manera: el Host envía un paquete Token cuando desea establecer la comunicación con un dispositivo, especificando la dirección, el EndPoint y la naturaleza de la transacción a realizar. Seguidamente, quien va a hacer uso del Bus, ya sea el Periférico o el Host, envía un paquete de datos con la información correspondiente. Si el Host fue quien envió los datos, el Periférico le confirma la entrega enviando un paquete de Validación tipo Ack, completando de esta manera una transacción USB. La figura 9 ilustra todo el procedimiento de una transacción. USB divide el tiempo de transmisión de datos en intervalos de 1ms denominados tramas o frames para velocidades de Low Speed y Full Speed, ó en intervalos de 125us denominados microframes para High Speed K [USB-IF5]. Figura 8. Componentes de una Transacción TRANSACCIÓN PAQUETE TOKEN IN OUT SETUP SOF PAQUETE DATOS DATA 0 DATA 1 Fuente: Los Autores 42 PAQUETE VALIDACIÓN ACK NAK STALL Figura 9. Envío de datos del Host a un Periférico, mediante una Transacción HOST Paquete Tok en Paquete Datos CLIENTE To k e n IN D a ta 0 A CK Paquete Validación Fuente: Autores El Host USB controla la comunicación con los diversos dispositivos conectados al Bus estableciendo transacciones y organizándolas en un Frame, mediante la técnica de multiplexación por división de Tiempo. De igual manera, las transacciones son conformadas de acuerdo con la petición de algún tipo de transferencia específica, hecha por la aplicación. Así, una transferencia se lleva a cabo mediante varias transacciones y una transacción mediante el intercambio de paquetes. La figura 10 ilustra este proceso. 1.3.5 INTERFAZ FÍSICA 1.3.5.1 Interfaz Eléctrica. USB tiene una configuración de 4 cables por los cuales se transmiten, datos y señales de alimentación. El Bus provee la alimentación de los dispositivos en el mismo puerto de conexión. Esto se analizará en el apartado de consumo de potencia donde se verán algunas características que los dispositivos USB tienen respecto a la alimentación. La tabla 1 muestra los cables que están presentes en el puerto USB y su propósito. 43 Figura 10. Conformación de las unidades de datos en las diversas capas de USB Fuente: ANDERSON, Don. USB System Architecture. Menlo Park, CA : ADDISON-WESLEY. 2001. ISBN: 0-201-46137-4 Tabla 1. Descripción de pines del bus USB Pin de conexión 1.3.5.2 Señal Descripción 1 VBUS Alimentación USB 5V 2 D- Datos 3 D+ Datos 4 GND Tierra de la alimentación Interfaz Mecánica. En USB una conexión desde el Host a un dispositivo recibe el nombre de downstream mientras que un puerto orientado de un dispositivo al Host recibe el nombre de conexión upstream. 44 USB tiene diversos tipos de conectores con características mecánicas determinadas que facilitan su identificación. Según el tipo de conector se puede identificar la función del dispositivo en USB, es decir si se trata de un dispositivo periférico o un Host. Esta característica de la interfaz mecánica permite un uso sencillo de los dispositivos USB sin lugar a errores en la conexión entre estos. A continuación se listan los tipos de conectores existentes actualmente: ¾ Conectores tipo A: estos conectores están asociados a los dispositivos Host ya sea un PC o un Host USB embebido. Los conectores plug se implementan para las conexiones upstream (hacia el Host o hacia un Hub) y los receptores Tipo A se usan en los dispositivos Host para las conexiones downstream (desde el Host o un Hub hacia los periféricos). ¾ Conectores tipo B: tiene relación con los dispositivos periféricos. Los conectores plug están implementados para las conexiones downstream hacia los dispositvos periféricos. Los receptores B se implementan en los periféricos o en los Hub. Actualmente existen otros tipos de conectores USB que se están introduciendo al mercado con los dispositivos portátiles con tecnología OTG [PHILIPS]. Estos conectores son de dimensiones reducidas y se conocen como conectores tipo MiniA, MiniB y MiniAB. Los conectores miniA y miniB están diseñados para la conexión de Hosts y periféricos respectivamente y tienen dimensiones muy reducidas respecto a los conectores tipo A y B. Los receptores miniAB están implementados en los dispositivos que usan la tecnología OTG. A pesar de que los conectores miniB se implementaron antes de la aparición de la tecnología OTG, ésta ya estaba prevista, por lo cual estos puertos son compatibles para conectarse con los dispositivos OTG. Los conectores USB se presentan en la figura 11 donde se pueden identificar algunas diferencias entre los conectores estándar y los nuevos tipos de conectores (los puertos presentados en la figura no tienen la misma escala). 45 Figura 11. Conectores USB. a. Conector y receptor tipo A b. Conector y receptor tipo B c. Conector miniA y receptor MiniAB d. Conector y receptor MiniB e. Conector MiniB vs conector estándar B Fuente: Los autores. 1.3.5.3 Consumo de Potencia. En USB los dispositivos se identifican de forma distinta según el tipo de alimentación que usan. Existen dispositivos que se alimentan directamente al bus USB (bus-powered devices) y dispositivos que tienen su propios terminales de alimentación, denominados dispositivos autoalimentados (self-powered devices). Cualquier dispositivo que se conecta al bus (ya sea autoalimentado o alimentado por el bus) no puede consumir mas de 100mA antes de ser configurado. En el momento de la enumeración, un dispositivo o un Hub proveen la información respectiva de los requerimientos de demanda de corriente al Host y este determinará si está en capacidad de cumplir con dichos requerimientos. Sin embargo, un dispositivo alimentado por el bus no podrá consumir más de 500mA. 46 1.3.6 CLASES USB En la tecnología USB se han definido conjuntos de dispositivos que poseen características y servicios similares. Estos conjuntos se denominan Clases USB y permiten identificar las características principales del grupo, como la forma de transferencias de datos y los servicios que pueden prestar, para que todos los dispositivos que conforman una clase puedan ser controlados por un mismo Driver que se acomode a las exigencias de una clase o conjunto de dispositivos y no de cada dispositivo individualmente. En USB, las características principales de las clases están detalladas en las especificaciones de clase, las cuales determinan la forma como un dispositivo se comunican con el Host y los servicios que pueden ofrecer. Con base en estas, se configuran Drivers que puedan controlar las diversas clases de dispositivos. También existen drivers adaptativos o genéricos, que el Host implementa para dispositivos que no pertenecen a una clase definida y Drivers propietarios, que son diseñados por los fabricantes de dispositivos de aplicación específica. Debido a la gran variedad de dispositivos con conectividad USB, actualmente se encuentran establecidas varias clases USB. Dentro de las clases también pueden existir subclases, donde se manejan protocolos especiales desarrollados por los fabricantes. La tabla 2 resume algunas de las clases USB que están actualmente definidas. Algunas de las clases más comunes y de mayor uso son: la clase de interfaz humana HID, la clase de dispositivos de comunicación, los Hubs, la clase de almacenamiento masivo MSC y la clase de impresoras entre otras. 1.4 HOST USB Para tener una idea más clara de la participación del Host en el sistema USB, de las tareas que este lleva a cabo y de las entidades que lo conforman, a continuación se 47 Tabla 2. Clases USB CLASE Características o ejemplos Audio Dispositivos de audio y música, sistemas de sonido Chip/Smart Card interface Devices (CCID) Dispositivos con Tarjetas inteligentes (Smart Card) Common Class (CCS) Dispositivos genéricos Communications Device Módems, teléfonos e interfaces de redes HID Dispositivos de interfaz humana como el mouse o el teclado. Hub Hub o concentradores de USB IrDA Dispositivos de infrarojo Mass Storage Discos duros, CD-ROMs, DVD-ROMs y memorias Flash portátiles Monitor Monitores de PCs y dispositivos de despliegue Physical Interface Devices Joystics y controles de juegos POS Terminals Dispositivos de Puntos de salida como registradoras Power Dispositivos con control de alimentación Printer Class Impresoras Imaging Class Scaners y cámaras exponen con más detalle las principales diferencias entre un dispositivo Periférico y un Host USB y se presentan las funciones que el Host esta encargado de realizar como administrador de la comunicación. 1.4.1 HOST Y PERIFÉRICO En el camino de estudiar la tecnología USB, para el desarrollo de un sistema basado en Host USB, es necesario analizar los actores que interactúan en una comunicación por el Bus. Estos entes son el Host y el Periférico. Como se mencionó anteriormente, USB es un protocolo tipo Maestro-Esclavo, donde el Periférico se encarga de proveerle servicios adicionales al Host y este último administra la complejidad del sistema USB a su cargo. 48 Las características principales de un dispositivo Periférico son: ¾ Provee servicios adicionales al Host, de acuerdo a funciones o aplicaciones implementadas en el dispositivo. ¾ Es un ente pasivo en la comunicación USB. Está atento a las indicaciones que sean enviadas por el Host. ¾ Hace uso del protocolo USB para establecer una comunicación lógica entre la función que ofrece y el software de aplicación en el Host. ¾ Puede soportar uno o más tipos de transferencias, dependiendo de la naturaleza del Hardware y de la clase a la cual pertenece (como mínimo soporta transferencias de control). ¾ Mantiene información con características relevantes de si mismo, que le proporciona al Host para que realice el proceso de configuración. Entre tanto, USB es un sistema que proporciona una interfaz de comunicación flexible y robusta donde no sólo maneja un protocolo de comunicación sino también proporciona, mediante procesos adicionales, servicios que hacen fácil para el usuario la conexión de dispositivos USB, como la configuración automática y la capacidad de soportar diversidad de dispositivos, entre otras (véase apartado 1.3, Generalidades de USB). El Host como administrador de la comunicación USB es el encargado de llevar a cabo este compendio de tareas, además de las funciones de controlar el acceso de los dispositivos al Bus, el control de errores, el control del flujo de la comunicación y de configurar (de acuerdo a la naturaleza del dispositivo Periférico) los mecanismos necesarios para establecer una comunicación con un Periférico. Con base en lo anterior, se evidencia que el desarrollo de un Host USB es de mayor complejidad que el de un dispositivo Periférico USB, y por ello generalmente es el PC quien tiene inmerso el Host. Sin embargo, nuevos mecanismos para incorporar un Host USB a sistemas embebidos (como el propuesto en este trabajo) están siendo desarrollados para ampliar la cobertura de conexión de dispositivos. 49 Figura 12. Esquema de las entidades presentes en el Host SOFTWA RE CLIENTE PETICIONES Inter faz de USBD USBD Interf az d e HCD HCD TRA NSFERENCIA S TRA NS ACCIÓN TRANSACTIO N LIST TRA NSA CCIONES TRA NSA CCIÓN Interf az Ha rdw ar e-Sof tw ar e CONTROLA DOR HOST USB PA QUETES Fuente: Los Autores 1.4.2 EL HOST USB COMO ADMINISTRADOR DEL BUS El Host, como el encargado del funcionamiento del sistema USB, distribuye todos los procesos en cuatro entidades principales: El Software Cliente, el Driver de USB (USB Driver), el Driver del Controlador Host (Host Controller Driver) y el Controlador Host (Host Controller). Así mismo, entre cada entidad existen interfaces que permiten el flujo de datos entre ellas, tal y como lo muestra la figura 12. El software Cliente es la entidad donde se encuentra inmersa la aplicación. Esta entidad se encarga de determinar el tipo de transferencias necesarias para comunicarse con los Endpoints de la Función en el dispositivo y enviar el flujo de datos por medio de las Pipes. 50 El Driver de USB se encarga de realizar tareas propias del sistema USB como el control del acceso al Bus, la configuración de los dispositivos y la administración de recursos (ancho de banda y consumo de potencia). Esta entidad configura automáticamente un dispositivo tan pronto detecta su conexión al bus. Posteriormente se habilita para atender las peticiones del software Cliente. Se encarga también de organizar las diferentes transacciones, necesarias para llevar a cabo una transferencia [ANDERSON]. El Driver del Controlador Host (Host Controller Driver) se encarga de convertir la información de las transacciones en un formato especial que entiende el controlador Host, denominado Transaction Descriptor, el cual contiene parámetros como el tamaño de los datos en bytes, la dirección del dispositivo y el número del Enpoint destinatario. El conjunto de transacciones que tendrán lugar en un Frame es denominado Transaction List. El Controlador Host traduce la información contenida en el Transaction List a paquetes USB, para ser enviados por el Bus. Esta entidad posee mecanismos para reportar el estado de la transacción y asegura que los requerimientos del protocolo y de la capa física se cumplan. 1.5 CLASE USB DE ALMACENAMIENTO MASIVO MSC La clase de almacenamiento masivo (MSC por sus siglas en inglés) agrupa a los dispositivos que requieren grandes transferencias de datos. Soporta un número diverso de dispositivos como discos duros USB externos y memorias Flash portátiles. De acuerdo a las especificaciones de clase de almacenamiento masivo [USB-IF4], los dispositivos de esta clase soportan un determinado juego de comandos estándar que le indican las acciones a ejecutar (como lectura o escritura). Estos comandos son 51 transferidos entre el Host y el dispositivo mediante protocolos de transporte de comandos definidos por MSC. Entre los juegos de comandos estándar más utilizados se encuentran: • Juego de comandos primarios SCSI [NCITS1], [NCITS2] • Juego de comando ATAPI Las especificaciones de clase de MSC definen dos protocolos para el transporte de comandos: el Bulk only transport BOT y el Command Block Interrupt CBI. Cada uno de estos modos de transporte de datos maneja diferentes tipos de transferencias. El BOT maneja transferencias tipo Bulk y de control mientras que el modo de transmisión CBI maneja transferencias de control, de tipo Bulk y de interrupción. El BOT es el modo de transporte más usado actualmente por los dispositivos de almacenamiento. Generalmente los sistemas operativos soportan ambos tipos de transporte. El Host, mediante la petición de descriptores, extrae información específica de los dispositivos de la clase MSC, donde identifica protocolo de transporte, el juego de comandos que soporta el dispositivo y la capacidad de los buffers de transmisión y recepción de datos. 1.5.1 PROTOCOLO DE TRANSPORTE BOT En el protocolo de transporte BOT, el Host se comunica con el dispositivo mediante el intercambio de tres transacciones, con el objeto de enviar: el comando de la acción a tomar por el dispositivo de almacenamiento, los datos que se desean transmitir y el acuse respectivo de la transmisión [USB-IF2]. Los juegos de comandos se encapsulan en paquetes de datos USB especiales, denominados CBW (Command Block Wrapper), los cuales tienen una longitud y una estructura definida (véase anexo B). Los datos se envían en paquetes de datos regulares. Existe también un tipo de paquete de datos especial denominado CSW 52 Figura 13. Intercambio de datos entre el Host y un dispositivo USB MSC CLIENTE MSC HOST Transacción con el paquete CBW del Comando encapsulado C BW Transacciones de Datos D a to s CS W Res puesta del estado de la transferencia a) CLIENTE MSC HOST Transacción con el paquete CBW del Comando encapsulado C BW Da to s Transacciones de Datos CS W Respuesta del estado de la transferencia b) a) Envío de datos del Host al Periférico. b) Envío de datos del Periférico al Host Fuente: Los Autores (Command Status Wrapper) que es enviado por el dispositivo Periférico como acuse de la transmisión. La figura 13 ilustra el protocolo de transporte BOT. De la misma forma, en el protocolo BOT existen peticiones de clase propias para los dispositivos de almacenamiento, como son: el Reset de MSC y la petición de número de unidades lógicas. 1.6 SISTEMA DE ARCHIVOS FAT32 El sistema de archivos es el mecanismo principal que usan sistemas operativos como Windows para el manejo de archivos y carpetas. Los dispositivos de almacenamiento portátiles que interactúan con un PC deben soportar uno de los sistemas de almacenamiento compatibles con el sistema operativo, para que el intercambio de información sea exitoso. Por lo general, estos dispositivos tienen implementado el sistema FAT32 para manejo de datos. 53 El sistema de archivos FAT (más específicamente FAT32), posee unidades o bloques lógicos, denominados Sectores, generalmente de 512 bytes. La información de archivos y carpetas se almacena en conjuntos de Sectores llamados Clusters. Por otra parte, FAT permite la existencia de particiones (divisiones lógicas de la memoria física), siendo necesario que cada partición tenga: un Sector de información general de esta (llamado Volume ID), una tabla donde se encuentra la ubicación de los clusters de los diferentes archivos y carpetas, exceptuando el primero, llamada tabla de FAT y un espacio de Clusters donde se guardan los datos de los archivos. En este último se localiza el directorio raíz que es el directorio donde se encuentra almacenada la información de las características de los archivos y carpetas (como los nombres, las extensiones, la longitud y la ubicación del primer cluster) [MICROSOFT2]. Todo lo anterior hace ver a la memoria como una estructura lógica, tal y como lo muestra la figura 14. Cabe resaltar que un archivo puede requerir varios clusters y no siempre se encuentran todos consecutivamente, por lo que en la tabla de FAT suele ser necesario seguir la <<cadena>> de Clusters para dar con el paradero del archivo. Si se desea profundizar en los conceptos del sistema de archivos FAT32, las referencias [MICROSOFT1], [MICROSOFT2] y [DOBIASH] que están disponibles en la pagina web de Microsoft detallan los conceptos presentados en este apartado y describen específicamente las estructuras de los campos de información que se usan en este tipo de formato. 54 Figura 14. Estructura lógica de una unidad de almacenamiento con formato FAT32 Sector 0 Información general de la Partición Volume ID Sectores Reservados FAT1 FAT2 Espacio de Cluster s ( donde se encuentran los ar chivos y las carpetas) Fuente: Los Autores 55 Partición 2. DISEÑO DEL HARDWARE Y REVISIÓN DEL SISTEMA EMBEBIDO La descripción de los conceptos expuestos hasta el momento permiten una comprensión general de los requerimientos presentes en el desarrollo de un sistema que pueda controlar dispositivos USB y específicamente un sistema capaz de soportar memorias portátiles Flash USB. El presente capítulo detalla el proceso de diseño de hardware de un sistema embebido con las anteriores características. Previamente a ello se contextualiza el problema que este sistema pretende solucionar y se presentan los requerimientos que orientaron su diseño. 2.1 PLANTEAMIENTO DEL PROBLEMA Y REQUERIMIENTOS DEL SISTEMA El desarrollo de sistemas embebidos con mayores funciones y prestaciones, ha acentuado la necesidad de medios de almacenamiento con alta capacidad, flexibles para su expansión o reemplazo y que ofrezcan facilidad para el transporte de los datos. Con el objetivo de ofrecer a nuevos diseños de sistemas embebidos las características antes mencionadas, se propone la utilización de una memoria Flash USB portátil gracias a su alto volumen de almacenamiento (ligado al avance de la tecnología de memorias Flash), facilidad de conexión con el PC por el puerto USB (facilitando el manejo y el acceso de los datos al usuario), posibilidad de reemplazo y expansión sin afectar el hardware, reducido costo y creciente incidencia en el mercado. Debido a que esta clase de dispositivos interactúan únicamente con un Host USB (que generalmente es un PC), consecuencia de la característica Maestro-Esclavo del protocolo USB, se propone el desarrollo de un sistema embebido que, sin la asistencia 56 de un PC, controle memorias Flash USB portátiles. La puesta en marcha de éste sistema requiere básicamente: • Una etapa de Hardware para el manejo de potencia de las entidades presentes en el sistema total, incluyendo los dispositivos USB conectados al Bus. • Un controlador, núcleo del sistema, responsable de la ejecución del programa y de la administración de los recursos del sistema (Hardware y Software). • La implementación de un Host USB embebido para la configuración y soporte de dispositivos Clientes USB, dada la característica Maestro-Esclavo del protocolo USB. El Host USB embebido implica el desarrollo de una plataforma de hardware basada en un controlador Host que se encargue de las capas inferiores del protocolo USB, un Driver para dicho controlador y un Driver para el control del sistema USB y la gestión de la comunicación por el bus. • Un Driver para controlar dispositivos USB de la clase de almacenamiento masivo de datos (MSC), dado que es la clase a la que pertenecen las memorias Flash USB. • La implementación de un sistema de archivos basado en FAT32 para la escritura de archivos dentro de la memoria portátil USB, debido a que este es un formato ampliamente usado por estos dispositivos para poder interactuar con un sistema operativo como Windows y Linux. Como se mencionó en el apartado 1.1.4, la aplicación específica* que hará uso del sistema a desarrollar está orientada al almacenamiento de los datos procesados del espectro de impedancia eléctrica de tejido de cuello uterino [MIRANDA]. Por tanto, los requerimientos que tienen relación con dicha aplicación son: • El sistema debe desarrollarse basado en un Controlador Híbrido-Procesador de Señales Digitales (DSP) de la familia 56800 de Freescale, debido a que este el controlador que ha sido seleccionado para llevar a cabo la medición del espectro de impedancia eléctrica,[GARCIA-VARGAS]. * Cabe resaltar que el diseño del sistema H-ARD servirá para dar soporte a diversas aplicaciones 57 • Es necesario que se puedan almacenar datos en una memoria USB. • Se debe contar con una interfaz en hardware amigable para el usuario. • Se debe desarrollar un software adicional para PC con el cual se puedan visualizar los datos del espectro de impedancia almacenados en la memoria portátil. 2.2 HARDWARE DEL SISTEMA H-ARD El Sistema Embebido para el almacenamiento de datos en Memorias Flash USB, H-ARD diseñado e implementado en este trabajo, es un sistema que controla dispositivos USB, pertenecientes a la clase USB de almacenamiento masivo MSC. Este sistema requiere un Host USB embebido* que le permita interactuar con una memoria conectada al puerto USB. En esta sección se describe el diseño, desde el punto de vista de hardware, del Host USB embebido en el sistema H-ARD. Se muestran los requerimientos tomados en cuenta para la selección de dispositivos y las características de diseño del circuito impreso de la tarjeta. El diseño de este módulo de hardware junto con los requisitos iniciales del proyecto permitirán sentar las bases para el diseño de software del sistema final. 2.2.1 SISTEMA H-ARD Y TARJETA HC-USB Como ya se mencionó, los requerimientos de la aplicación plantean que el proyecto este basado en un controlador híbrido-DSP de la familia 56800 de Freescale™ y dado que estos no tienen una interfaz física de comunicación que permita la implementación de un Host USB, se hace necesario la utilización de un Controlador Host independiente que trabaje en conjunto con el controlador principal del sistema. De esta forma se propone un sistema que, con una arquitectura distribuida, utilice un controlador híbrido-DSP de la familia 56800 de Freescale encargado del control principal del * Host USB embebido se denomina a los dispositivos, diferentes a un PC que pueden interactuar con periféricos de USB los cuales tienen una aplicación específica. 58 sistema y un ASIC Controlador Host como co-procesador, el cual proporciona las herramientas de hardware necesarias para el diseño de un Host USB embebido. Cabe resaltar que el diseño y la implementación del hardware relacionado con el controlador central (el controlador híbrido-DSP) pertenecen a otros trabajos relacionados con la investigación de la cual este proyecto hace parte [MIRANDA]. Específicamente se trabajó con el dispositivo diseñado por Juan Carlos Vargas y Cristihan García [GARCIA-VARGAS], el cual utiliza un Controlador Híbrido DSP56F805 de Freescale™ (este sistema será denominado Tarjeta DSP805 para efectos de referencia en este texto)*. El Controlador Híbrido-DSP ejecuta las tareas principales del sistema de almacenamiento, controlando a su vez, la tarjeta HC-USB y el módulo de interfaz con el usuario (representada por los controles de decisión y la pantalla LCD). En consecuencia, el desarrollo de hardware para este proyecto se centra en la implementación de la tarjeta del controlador Host (denominada Tarjeta HC-USB), que junto con un firmware embebido ofrece soporte de las capas bajas del protocolo USB, permitiendo al sistema H-ARD el acceso a los dispositivos USB, tal como un Host USB embebido. El diseño de la tarjeta HC-USB se orientó bajo los criterios de reducción en consumo de potencia, tamaño de implementación, independencia del PC, inmunización del dispositivo frente a los efectos eléctricos de sobrecargas e interferencias y a la selección de dispositivos construidos con tecnología actual, entre otros. La figura 15 ilustra los módulos funcionales presentes en el hardware del sistema H-ARD los cuales se describen a continuación. 2.2.2 CONTROLADOR HOST El controlador Host es la entidad en Hardware más importante para la implementación de un sistema Host USB embebido debido a que este módulo tiene a su cargo la * Véase 2.2.8 Controlador Central DSP 59 Figura 15. Diagrama de Bloques del Sistema H-ARD ETAPA DE POTENCIA PRO TECTOR DE CO RRIENTE NO MONTADO REG ULADORES DE TENSIÓN 5V Y 3.3V Selector de Modo de Operación DIP SWITCH EEPROM STAND ALONE COPROCESSOR PUERTO S USB Tipo A Tipo A HOST_A HOST_B HOST_C μ GPIO_30-31 EZ_Host GPIO_0-31 HOST_D GPIO_8-11 PERIFERICO _A Tipo MINIB Supervisor de Tensión RESET MANUAL SELECTOR SPI/HPI Reset Exter no SPI GPIO _0-7,12- 31 Pr otectores ESD SERIAL HPI . I NTERFACES DE COMUNICACIÓN LCD SI STEM A H-USB SI DSP* Archivo &P000001 GUARDAR? Si_ No No_ BO TO NES DE DECISIÓN *El Har dwar e corr es pondiente al DSP hace par te de otr o trabajo as oc iado a la investigación Fuente: Los Autores ejecución de las tareas de la Capa de Interfaz del Bus USB*, las cuales permiten entablar una comunicación con un cliente USB. Como ya se ha descrito, la característica maestro-esclavo de la comunicación USB facilita la implementación de dispositivos periféricos aumentando por otro lado la complejidad en el Host, con base en el hecho de que toda la carga de control del Bus recae sobre este último. Por lo tanto, el desarrollo de un Host USB requiere entidades de hardware y software especializados y con un mayor grado de complejidad para la administración de la comunicación USB. * La capa de interfaz de BUS se refiere a las capas física y al núcleo del protocolo USB. 60 En el sistema H-ARD específicamente, el Controlador Host trabaja como un coprocesador, bajo el mando del controlador principal (Controlador Híbrido-DSP). La tabla 3 resume las principales características de diversos controladores Host actualmente disponibles en el mercado, capaces de ofrecer el soporte para desarrollar un Host USB. Tabla 3. Controladores Host Disponibles en el Mercado Referencia Fabricante Cypress CY7C67300 EZ Host CY7C67200 EZ-OTG SL811HS Host-Peripheral SL811HST-AC Host-Peripheral ISP1362BD OTG controller ISP1160BD Host controller ISP1161A1 Host / Device Controller ISP1561BM Host Controller CSC1206 OTG Flash Disk Controller 82C871 OTG Controller Empaquetado Puertos USB Característica 4 TQFP Pines No. min. conexiones con el DSP 100 4 Precio USD 6.7 2 Interfaces: UART, HPI, IDE, PWM, HSS, SPI, I C EEPROM. Soporte: OTG, Host y periférico; 32 GPIO; memoria interna de datos RAM 15Kbytes; DMA; Procesador de 16 bits; soporte para memorias Ram y/o ROM Cypress FBGA 2 48 3 6.0 Interfaces: UART, HPI 16 bits, HSS, SPI, I2C EEPROM. Soporte OTG, Host y periférico; 25 GPIO; soporte para memorias externas; DMA; memoria interna RAM 8kx16 bits; Procesador de 16 bits Cypress PLCC 1 28 14 8.56 Bus de datos de 8 bits; DMA (como esclavo); SRAM 256 bytes; reloj de 12 o 48 MHz. Cypress TQFP 1 48 14 8.36 Bus de datos de 8 bits; DMA (como esclavo); buffer SRAM 256 bytes, reloj de 12 o 48 MHz Philips LQFP 2 64 21 min. 7.10 DMA; interfaz paralela de 16 bits; protección contra sobrecarga; reloj de 12 MHz; buffer de 4096 bytes (Host) y 2462 bytes (device). Philips LQFP 2 64 21 min 5.5 interfaz paralela de 16 bits; reloj externo de 6MHz (interno de 48MHz); DMA Philips LQFP 3 64 21 min 7.0 2 puertos de host (Transferencia de datos máxima 15 Mbyte/s); 1 puerto de dispositivo (Transferencia de datos máxima 11.1 Mbyte/s); reloj de 6MHz (48MHz interno); reloj de salida programable: 3 a 45MHz; DMA; interfaz paralela de 16 bits Philips LQFP 4 128 -6.50 Soporta High speed (480Mbps), interfaz PCI 32-bit 33 Mhz; reloj de 12MHz (48MHz interno), soporta conexión de mouse y teclado (PS/2). Chesen Electronics LQFP 1 128 --Actúa como una memoria flash, soporta conexión con memorias USB. OPTI Technologies CSP 1 81 22 min QFP 64 Bus de datos de 16 bits, bus de direcciones de 8 bits, reloj de 12 MHz, DMA, 61 -- Entre otras características adicionales, el sistema H-ARD debe contar con un espacio de memoria para manejar los datos tanto de la aplicación (teniendo en cuenta que se va a implementar un sistema de archivos) como de las diferentes capas que lo conforman. Debido a que el espacio de memoria del procesador central (el Controlador HíbridoDSP) está destinado al proceso de la aplicación* y en el proceso de control del sistema total, se hace necesario que en el diseño de la tarjeta HC-USB se incremente la capacidad de memoria RAM del sistema total. Entre las posibles soluciones para extender la memoria volátil se puede recurrir a la implementación de memorias RAM externas; otra posibilidad es aprovechar las herramientas que ofrecen los Controladores Host que se analizan y seleccionar un dispositivo con capacidad en memoria interna que permita implementar buffers de datos con volúmenes apreciables. La última solución permite aprovechar las herramientas que el controlador ofrece sin adicionar elementos externos al hardware e incurrir en el uso de más conexiones con el Controlador Híbrido-DSP. El controlador Host debe proveer un soporte robusto en la comunicación USB y en las funciones de Host, de tal forma que permita que el Driver del Controlador Host que se desarrolle en software tenga una complejidad reducida y pueda tener disponible la mayor cantidad de recursos para controlar un dispositivo USB. A su vez, debe ofrecer interfaces de comunicación que permitan minimizar la cantidad de conexiones necesarias con el Controlador Híbrido-DSP. Con base en los parámetros mostrados anteriormente, se seleccionó el controlador EZ-HOST™ de Cypress como controlador Host, el cual ofrece diversidad de interfaces de comunicación como SPI, HPI y HSS, que le permiten interactuar con otros * Esta aplicación se refiere al proceso de calculo del espectro de impedancia eléctrica o a otro proceso que se este manejando dentro del controlador principal. 62 procesadores, y ofrece la interfaz IDE para la comunicación con discos duros. Posee 32 pines de propósito general compartidos con dichas interfaces y tiene un espacio en memoria de datos de aproximadamente 15Kbytes, el cual permite aumentar la capacidad de memoria RAM del sistema H-ARD. El EZ-Host es un controlador que cuenta con un procesador RISC de 16 Bits que opera a 48 MHz. Puede actuar como un controlador independiente (Stand-alone) o como un controlador alterno (Coprocessor). Es un dispositivo multifunción* que puede trabajar como Host USB o como dispositivo Cliente USB, orientado a diversas aplicaciones donde se use la comunicación USB. Cuenta con 4 puertos de USB controlados por dos SIE† configurables (Host/Peripherial) y tiene soporte para direccionar 127 dispositivos USB por cada SIE, comportándose como un Hub raíz. En cada puerto es capaz de manejar las velocidades Low Speed y Full speed (1.5Mbps y 12Mbps respectivamente), compatibles con la versión más actual de USB (USB 2.0) y soporta en uno de sus puertos la tecnología emergente OTG (On The Go). Tiene 8Kbytes en una memoria estática Masked ROM‡ que contiene un Firmware BIOS que controla las funciones básicas de las diferentes interfaces de comunicación, incluyendo los puertos USB. Soporta memorias externas SRAM y/o ROM; tiene dos módulos de Timers y un módulo Watch Dog configurables. Adicionalmente tiene un módulo PWM. Otras de las ventajas que el EZ-Host ofrece como dispositivo controlador Host, es el conjunto de configuraciones de sus puertos USB, que se pueden implementar. Con estas configuraciones se pueden desarrollar diversas aplicaciones ya sea para Host embebidos o para dispositivos periféricos. La figura 16 ilustra las configuraciones posibles para los puertos USB mediante los SIEs del EZ-Host. * Dispositivo Multifunción (Multirole Device): término usado para dispositivos que tienen soporte para actuar como Host y como dispositivo periférico USB. † Serial Interface Engine por sus siglas en inglés. ‡ Una memoria Masked ROM es un tipo de memorias programables que pueden ser borradas para re-programarse. 63 Figura 16. Configuraciones de los puertos USB en el EZ-Host. Fuente: CYPRESS SEMICONDUCTOR. EZ-Host™, Programmable Embedded USB Host/Peripheral Controller : Data sheet. San Jose, CA : CYPRESS, 2003. 120p. : il. [online]. Disponible en: www.cypress.com. El EZ-Host ofrece la posibilidad de cargar varios Transaction Descriptors al mismo tiempo (que en conjunto se denominan Tlist) en un espacio de memoria de tal forma que puedan llevarse a cabo varias transacciones con el traspaso de un sólo Tlist (una interacción entre el DSP y el controlador Host). Esta característica se presenta como una ventaja frente a otros controladores Host que manejan los Tdesc a través de registros de memoria pues, en estos casos, cada ejecución de un TDescriptor requeriría una interacción entre el Host Controller Driver* (implementado en el Controlador Híbrido-DSP) y el controlador Host. La figura 17 muestra el diagrama de bloques del * Véase 1.4, Host USB. 64 Figura 17. Diagrama de bloques del controlador EZ-Host Fuente: CYPRESS SEMICONDUCTOR. EZ-Host™, Programmable Embedded USB Host/Peripheral Controller : Data sheet. San Jose, CA : CYPRESS, 2003. 120p. : il. [online]. Disponible en: www.cypress.com. EZ-Host. Para mayor información acerca de este dispositivo, referirse a su hoja de datos [CYPRESS2]. 2.2.3 INTERFACES DE COMUNICACIÓN Gracias al soporte que ofrece el EZ-Host, la tarjeta HC-USB cuenta con diversas interfaces de comunicación que lo hacen versátil para aplicaciones con requerimientos de conexión y tasas de transferencias diferentes pues, además de manejar el protocolo de alta velocidad USB, puede comunicarse con sistemas que utilicen puertos SPI, UART, HPI y HSS. 2.2.3.1 Puertos USB. Los puertos de conexión USB en la tarjeta HC-USB se implementan para tener 2 puertos Host (con posibilidad de expansión a cuatros puertos 65 Host) de acuerdo a las posibilidades de configuración de los puertos en el EZ-Host mencionada en el apartado 2.2.1. Los puertos seleccionados son receptores tipo A (definidos para los Host USB). Para la tarjeta HC-USB se seleccionaron puertos de doble receptor que permiten implementar 2 receptores USB en el mismo espacio de área de uno sólo. Por otro lado, en la tarjeta HC-USB se implementó un puerto receptor miniB que permite a la tarjeta conectarse a un Host ya sea un PC u otro sistema Host USB embebido. Este puerto, de tamaño reducido, permite conectarse con dispositivos que utilicen la tecnología complementaria OTG*. En La figura 18 se ilustran los conectores seleccionados. 2.2.3.2 Otras Interfaces de Comunicación en la tarjeta HC-USB. En el diseño de la tarjeta HC-USB, se habilitaron todos los pines GPIO del EZ-Host (excepto los GPIO 30 y 31) mediante conectores tipo Pin Header. Estos GPIO, como se mencionó en el apartado 2.2.2 en las características del Controlador Host, son compartidos con las diferentes interfaces de comunicación que tiene el controlador. Por tal motivo la tarjeta HC-USB tiene soporte para todas las interfaces de comunicación que ofrece el EZ-Host. Figura 18. Conectores USB. Receptores Tipo A y tipo MiniB Fuente: los autores. * Refiérase al apartado de 1.1.3. 66 Sin embargo, en la tarjeta HC-USB se implementaron como puertos de conexión independientes, las interfaces HPI y SPI para la comunicación con otro controlador. Estas interfaces de comunicación comparten pines del EZ-Host, por lo que se requirió adicionar un buffer para aislar y demultiplexar, en hardware, los dos puertos de conexión. El circuito esta encargado de habilitar una de las dos interfaces para evitar un posible corto circuito. El dispositivo usado para esta etapa es el bus switch de diez pines SN74CBTLV3384 de Texas Instruments el cual es un circuito integrado de tecnología CMOS diseñado para aplicaciones de bajo consumo de potencia. Es un arreglo de switches bidireccionales que provee las herramientas necesarias para demultiplexar los pines GPIO que comparten puertos de comunicación SPI y HPI. Debido a que se deben habilitar pines de entrada y salida, este bus switch se presenta como una mejor alternativa que un bus transceiver dado que este último actúa como un switch que habilita un camino en una sola dirección. Este integrado del fabricante Texas, tiene dos buses de 5 pines cada uno de los cuales se pueden habilitar de forma independiente. Un circuito inversor de bajo consumo de potencia, el 74AC04 de FAIRCHILD (veáse [FAIRCHILD]) se implementa para habilitar uno de los dos buses. La figura 19 ilustra el circuito lógico del bus switch y su diagrama de conexión en la tarjeta HC-USB. 2.2.4 MANEJO DE POTENCIA El manejo de potencia en el sistema embebido HC-USB esta conformado por la etapa de alimentación de los puertos Host USB* y la etapa de alimentación general de la tarjeta. La tarjeta se diseñó orientada al bajo consumo de potencia donde los niveles de tensión de alimentación para los dispositivos seleccionados son de 3.3V y con corrientes de operación reducidas, mientras que en la etapa de alimentación de USB, el * Un puerto Host USB es definido por los autores como el receptor tipo A que utiliza el Host para conectarse con los Periféricos. 67 Figura 19. Interfaces de conexión en la tarjeta HC-USB. Habilitadores nSPI/HPI 1A EZ_ HOST Bu s Switch 1B GPIO8 SPI GPIO8 2A 2B GPIO8 HPI a) b) a) Diagrama lógico del bus implementado. b) Diagrama de conexión con el EZ-Host Fuente: Los Autores sistema debe manejar niveles de tensión de 5V y consumos de corrientes más elevados (hasta 500mA por puerto). 2.2.4.1 Etapa de Alimentación de los Puertos Host USB. Las especificaciones de USB definen al Host como la entidad que debe proporcionar la alimentación a los dispositivos que, al conectarse al bus, la requieran (USB Bus Powered Devices)*. La tensión de alimentación definida por USB es de 5V y la corriente consumida por un dispositivo no puede exceder los 500mA. En el diseño de la tarjeta HC-USB se presupuestó la conexión simultánea de dos memorias USB con posibilidad de expansión de cuatro, teniendo en cuenta que el EZ-Host tiene 4 puertos de conexión que pueden actuar como Host. Esto representa una posible corriente de alimentación de 2A (asumiendo un dispositivo conectado a cada puerto, con un consumo máximo de 500mA). El manejo de potencia en USB presenta dos fases: la fase de regulación donde se ajustan los niveles de tensión a 5V y el presupuesto de corriente a un consumo superior * Refiérase al apartado 1.3.5,Interfaz Física. 68 a 2A, y la fase de protección donde se controla el consumo de corriente de los dispositivos conectados al bus USB. En la fase de regulación es necesario ajustar los niveles de tensión a un valor constante libre de alteraciones (rizado). El nivel de tensión se debe estabilizar mediante la implementación de un regulador de tensión que permita suministrar los 5V necesarios en la etapa de alimentación de los puertos Host USB y pueda soportar niveles de entrada de hasta 15V (basados en la variedad de fuentes de DC disponibles en el mercado). Dentro de los criterios más relevantes para la selección del regulador se analizó el consumo de corriente de operación del dispositivo (Quiescent Current) y la eficiencia de este. La búsqueda de los reguladores, tanto para la etapa de alimentación de los puertos Host USB como para la etapa de alimentación general de la tarjeta, se realizó dentro de la clase de reguladores lineales, debido a sus características de baja distorsión en la regulación, sus reducidos requerimientos de hardware (configuración mínima de elementos pasivos) y a su costo promedio [CATSOULIS]. El regulador LT1529CQ-5 del fabricante Linear Tech fue seleccionado para la etapa de alimentación de los puertos Host USB, el cual tiene capacidad de entregar 3A en la corriente de salida. Es un regulador que presenta muy bajo consumo de potencia (50µA) con relación a su corriente de salida y respecto a otros reguladores presentes en el mercado. Este regulador tiene la característica de shutdown donde, en este estado, no consume mas de 16uA. Presenta estabilidad con capacitancias de valores más bajos que otros reguladores con la misma salida de corriente (normalmente se usan capacitancias de carga superiores a 100uF mientras que el LT1529CQ-5 puede operar con capacitancias de 22uF). Se destaca entre otros reguladores por su eficiencia debido a sus reducida disipación de potencia frente a demandas de corriente; además este regulador se mantiene la tensión de salida estable (con cambios de unos pocos milivoltios) a altas temperaturas de operación, [LINEAR-TECH2]. 69 La fase de control está representada por un protector de corriente que alimenta directamente a los dispositivos conectados al bus USB. Esta fase se debe implementar debido a que los dispositivos periféricos pueden demandar altos consumos de corriente que, si exceden el valor limite (en caso de dispositivos no soportados o que presenten fallos) establecido en las especificaciones de USB, afectarían de forma negativa a la tarjeta HC-USB. Cabe destacar que el sistema diseñado en hardware soporta un dispositivo USB en cada puerto, por lo cual se debe tener un presupuesto de corriente mayor al valor límite especificado por USB, el cual es de 500mA. El protector del fabricante Texas Instruments con referencia TPS2054B fue seleccionado para la etapa de control en la alimentación de USB. El dispositivo tiene cuatro puertos de salida, implementados con tecnología CMOS; tiene protección de temperatura y de corto circuito [TEXAS1]. Ofrece señales de salida o banderas de aviso de sobrecorriente. Consume una corriente máxima de operación de 140uA; puede soportar una demanda continua de corriente de 500mA con un límite máximo de hasta 1.25A de corriente de salida. Por otro lado, el dispositivo fue diseñado para aplicaciones en sistemas que requieren múltiples puertos para distribución de alimentación. Entre las ventajas más representativas esta la implementación de switches de potencia con valores bajos de resistencias (70mΩ), gracias a su elaboración en tecnología CMOS. 2.2.4.2 Etapa de alimentación general de la Tarjeta HC-USB. El regulador para la alimentación del sistema debe manejar las demandas de corrientes máximas de operación de todos los dispositivos y los elementos pasivos presentes en la tarjeta HCUSB. La tabla 4 ilustra los valores máximos aproximados del consumo de corriente de los dispositivos de la tarjeta HC-USB. El regulador LT1129-3.3 fue el dispositivo seleccionado; soporta una corriente máxima de de 700mA con bajo consumo de potencia (corriente de consumo de 50uA); tiene la característica de trabajar con valores bajos de condensadores (desde 3.3uF), y 70 Tabla 4. Sistema HC-USB. Dispositivos conectados a 3.3V CORRIENTE NÚMERO DE DISPOSITIVO MÁXIMA DE DISPOSITIVOS EN ALIMENTACIÓN EL SISTEMA IMPLEMENTADO [mA] EZ-Host 1 180 SI Generador de reset 1 0.015 SI Bus switch 1 0.3 SI Inversor 1 0.020 SI Protectores ESD 6 1u*6 = 0.006 SI Memoria EEPROM 1 3 NO Otros Elementos 6 9.5 SI (resistencias, leds) Consumo aproximado de corriente [mA] 192,841 presenta una salida de tensión regulada de 3.3V. Este dispositivo esta diseñado específicamente para aplicaciones de bajo consumo de potencia y sistemas alimentados por baterías [LINEAR-TECH1]. 2.2.5 PROTECCIONES ELECTROMAGNÉTICAS En el diseño de la tarjeta HC-USB se tuvo en cuenta la protección del sistema de interferencias producidas por el mismo circuito y por fuentes externas invasivas. Así mismo, se tuvo en cuenta la protección para posibles descargas Electro-Estáticas y la protección de corrientes elevadas, entre otros efectos electromagnéticos indeseables presentes en un circuito impreso. Entre los dispositivos adicionados se mencionan: ¾ Capacitores de desacople: Las actividades de switcheo de todo el circuito producen variaciones en la fuente de alimentación, lo que puede generar degradación en el rendimiento de los diferentes integrados y a su vez, degradación en el rendimiento del sistema. Por tal motivo se utilizaron capacitores de desacople en los pines 71 conectados a fuente de los circuitos integrados con el fin de reducir el rizado de la tensión de alimentación y garantizar un correcto funcionamiento. Así mismo, los capacitores ayudan a reducir el ruido presente en la alimentación de los dispositivos. ¾ Bobinas: Se adicionaron bobinas para reducir la interferencia electromagnética producida por las alteraciones en la corriente a través de los lazos virtuales de alimentación presentes en el circuito; alteraciones que los capacitores de desacople no pueden reducir y que son producidas por la actividad de switcheo de los dispositivos digitales del circuito [TEXAS2]. La figura 20 ilustra los posibles lazos que se forman en un circuito. Un ejemplo de un lazo virtual de alimentación es A-C-D-B. ¾ Dispositivos contra ESD*: Aún cuando la mayoría de dispositivos implementados en la tarjeta tienen protección de ESD, es importante mantener al controlador EZ-Host libre de estos efectos. Por lo cual, se protegieron los pines del controlador que conectan directamente con los puertos para conexiones externas tipo pin Headers, debido a que estas conexiones directas son posibles medios de riesgo para que el usuario produzca una descarga electrostática al EZ-Host. Los protectores seleccionados, MSQA6V1W5T2 de ON Semiconductor, son de bajo consumo de potencia y tienen una capacitancia de carga baja (90pF) [ON-SEMICONDUCTOR]. La Figura 20. Lazos virtuales de alimentación en un circuito Fuente: TEXAS INSTRUMENTS. Printed-Circuit-Board Layout for Improved Electromagnetic Compatibility [online].1996. 14p. Disponible en: www.ti.com. * ESD por sus siglas en ingles Electrostatic Discharge o Descargas electrostáticas. 72 Figura 21. Modelo de conexión de los protectores ESD Fuente: Los Autores figura 21 ilustra el modelo de conexión para protección de los pines del Circuito integrado. ¾ Fusible: Se implementó un fusible de 3A de operación continua para proteger todo el circuito de corrientes excesivas o corto circuitos que se puedan producir por manejos inadecuado de la tarjeta o por incorrecto funcionamiento de dispositivos externos conectados a la misma (ya sea mediante USB, SPI o mediante cualquier otro puerto). 2.2.6 SERVICIOS A NUEVAS APLICACIONES Además de diseñar la tarjeta HC-USB a partir de los requerimientos iniciales del problema, se buscó realizar una implementación de hardware que permitiera ofrecer servicios a nuevas aplicaciones, aprovechando las herramientas que el controlador EZHost ofrece. Por lo cual para en el diseño del PCB de la tarjeta HC-USB se tuvo en cuenta el soporte para posibles expansiones y servicios adicionales a los usados en este proyecto, entre los cuales están: ¾ Puertos USB: Tanto el presupuesto de consumo de corriente como el diseño de la tarjeta permiten la posibilidad de expansión de 2 a 4 puertos USB tipo A (Host) con el fin de usar todos los puertos Host disponibles en el EZ-Host. 73 ¾ Modo Stand Alone: Se habilitó un switch para seleccionar manualmente el modo de operación del controlador, ya sea independiente (Stand Alone) o como coprocesador, abriendo campo a nuevas aplicaciones donde se pretenda explorar el uso del EZ-Host como un controlador independiente. ¾ Memoria externa EEPROM: Con base en las especificaciones del EZ-Host, un programa (una aplicación) puede ser cargado en una memoria EEPROM para que el BIOS pueda descargarlo a la memoria RAM interna de programa y posteriormente pueda ser ejecutado, por lo cual en el diseño del circuito impreso se dejó la posibilidad para adicionar una memoria externa, con interfaz I2C, mayor a 2Kbits*. El dispositivo de referencia utilizado fue AT24C512 de Atmel®. ¾ USB Periférico: Como ya se ha mencionado, el EZ-Host es un dispositivo multifunción que se puede configurar como un Host USB o como un Cliente USB. El BIOS del controlador acepta por defecto la descarga de programas desde el PC directamente a la RAM interna o a una memoria EEPROM externa, a través de un puerto USB tipo B (cliente), razón por la cual en la tarjeta se implementó un puerto minib para accesar al EZ Host y descargar programas. Adicionalmente, este puerto permite que el controlador se pueda trabajar como un dispositivo Cliente para cualquier aplicación que así lo requiera. La ventaja de usar un conector tipo minib en contraste con uno tipo B es que permite el soporte a la tecnología emergente OTG: 2.2.7 DISEÑO DEL CIRCUITO IMPRESO DE LA TARJETA HC-USB La tarjeta HC-USB se compone principalmente de dispositivos de montaje superficial y su implementación está basada en una placa de doble cara. El diseño del PCB de dicha tarjeta se planteó bajo los criterios básicos de diseño de Circuitos Impresos constituidos por dispositivos tipo SMT(Surface Mount Technology por sus siglas en inglés) y los criterios para el desarrollo de hardware con interfaz USB. Adicionalmente se tuvo en cuenta tanto las recomendaciones de profesionales en el diseño de PCB y la * Este valor se define de acuerdo a los pines del Ez-Host. 74 experiencia de trabajos de grados anteriores* como las recomendaciones de los fabricantes de los dispositivos seleccionados. 2.2.7.1 Compatibilidad Electromagnética. Para el diseño del PCB la tarjeta se tuvo en cuenta las técnicas para el mejoramiento de compatibilidad electromagnética [TEXAS2], dentro de las cuales se atacó principalmente las interferencias electromagnéticas EMI y las descargas electrostáticas ESD. La protección de EMI fue un factor importante de diseño debido a que las interferencias electromagnéticas afectan en gran medida los circuitos impresos. Además de los condensadores de desacople y de las bobinas para la reducción de interferencias por cambios en la corriente de alimentación, se protegió la tarjeta mediante la reducción de área de lazo de corriente, véase [CATSOULIS] para la reducción de flujos magnéticos, ubicando caminos de retorno de señal (tierras) tan cerca como fue posible. Otra técnica para la protección de la tarjeta respecto a las interferencias EMI fue la reducción del tamaño y complejidad de las pistas para evitar la generación de impedancias con componentes inductivas y capacitivas. La tarjeta se protegió contra descargas electrostáticas conectando los protectores de ESD descritos anteriormente, en los pines de los dispositivos más sensibles a estos efectos. 2.2.7.2 Diseño de Rutas del PCB. Entre otras características se estableció el ancho de caminos en 0.4 mm para los caminos entre dispositivos (0.2mm de acuerdo a los caminos con el chip EZ-Host), 1mm para los caminos de alimentación y aislamiento entre caminos de 0.4mm. La disposición de caminos se hizo buscando linealidad con curvaturas suaves de 135° y se ubicaron vías de 0.6mm y 1mm de diámetro. * Desarrollados en la escuela de ingeniería Eléctrica, Electrónica y Telecomunicaciones de la Universidad Industrial de Santander. 75 2.2.7.3 Planos de Tierra y Protección Contra Ruido. La HC-USB en su mayoría, excepto por la etapa de alimentación, es un sistema digital el cual maneja datos de alta velocidad, por lo cual, el circuito presenta principalmente tres planos de tierra que deben ubicarse independientes y unirse en puntos determinados con el objetivo de que los datos digitales no afecten el plano de alimentación. Los planos de tierra en el circuito son la tierra analógica, la tierra digital y el blindaje de USB. 2.2.7.4 Criterios para el Desarrollo de Hardware con Interfaz USB. Los sistemas que implementan la tecnología USB tienen recomendado el uso de planos de alimentación dedicados. Por esta razón y con el fin de ofrecer un blindaje adecuado, en el diseño del PCB se procuró dejar en una de las caras un plano de tierra tan grande como fuera posible [CYPRESS3]. Otra de las recomendaciones para el enrutamiento de los caminos en los puertos de USB fue mantener las pistas de datos paralelos entre sí, minimizando su longitud ubicando los puertos los más cerca posible al EZ-Host y adyacentes al plano de tierra. En las recomendaciones de diseños de PCB con USB, al igual que en la mayoría de circuitos impresos, también se plantea la necesidad de proteger los pines de alimentación con capacitores de Bypass para reducir el rizado en la tensión. También se recomienda el uso de capacitores de carga en los pines de salida de alimentación de los puertos y en los reguladores de tensión. Las recomendaciones principalmente advierten de la necesidad de aislar los conectores USB con <<penínsulas USB>> de tierra que están ubicadas en la cara posterior a los conectores USB y se ubican para reducir los efectos de EMI, así mismo recomiendan la protección de la señal del cristal que gobierna la operación del controlador Host. 2.2.7.5 Agrupación de los Dispositivos en Bloques Funcionales en la Tarjeta. El circuito está dividido en tres etapas: alimentación, BUS USB y Central o del EZ-Host, 76 las cuales se diseñaron con el fin de agrupar en bloques funcionales los dispositivos con características similares. Dichas agrupaciones permiten reducir la distancia entre los dispositivos del mismo bloque funcional; reducir la complejidad en el trazado de los caminos de cobre y reducir los efectos indeseados que puede inducir de un bloque funcional en otro. En la etapa de alimentación están reunidas las señales analógicas de entrada del adaptador y las señales de los reguladores; en las dos etapas restantes se manejan datos digitales de alta velocidad. 2.2.7.5.1 Etapa de Alimentación. Esta etapa esta constituida por los reguladores de tensión y por el conector para el adaptador. Así mismo, contiene los protectores de tensión como el fusible y la bobina de alimentación, además del protector de corriente para los puertos USB. En esta etapa se encuentran dos leds que indican el estado de la alimentación tanto para USB como para el sistema embebido. Los leds seleccionados, LTST-C150KGKT del fabricante Lite-On, tienen características de alta intensidad luminosa con respecto a otros leds al mismo consumo de corriente (35mcd a 20 mA) y un amplio ángulo de visón (130°). La etapa de alimentación esta blindada con un plano de tierra analógica aislado del plano de tierra digital y del blindaje de USB para evitar que el ruido digital interfiera en las señales de alimentación. La figura 22 ilustra los dispositivos que componen la etapa de alimentación. 2.2.7.5.2 Etapa del BUS USB. La etapa de USB tiene un blindaje de tierra recomendado para protección EMI [CYPRESS3]. Los puertos de USB se distribuyen tan cerca como sea posible del EZ-Host donde se busca reducir la resistencia que se adiciona al enrutar los caminos. Así mismo, las rutas de datos mantienen longitudes cercanas y una distancia constante entre sí. Todo lo anterior evita la degradación de las señales de datos. 77 Figura 22. Etapa de Alimentación de la tarjeta HC-USB Fuente: Los Autores En los puertos USB la península del plano de tierra se ubica en la cara posterior a los conectores y se hace un blindaje de estos con un plano que se une a la península por medio de una resistencia. Con el fin de permitir una expansión de los puertos para nuevas aplicaciones, en la tarjeta HC-USB se dibujaron los caminos para los puertos del SIE2 que dejan la opción de adicionar otro receptor tipo A dual. El conector miniB se ubicó dentro de la península de USB procurando mantener los caminos de las señales de datos paralelas y de la mínima distancia posible. La figura 23 ilustra de los conectores USB con el protector de corriente. 2.2.7.5.3 Etapa Central o del EZ-Host. Esta etapa esta constituida por todos los dispositivos digitales del sistema HC-USB (El EZ-Host, el cristal y el bus swtich, entre otros). La disposición de los dispositivos en la tarjeta final, al igual que en la mayoría de los diseños de circuitos impresos, se diseñó para mantener todos los circuitos integrados muy cercanos entre sí, reduciendo la distancia y complejidad de los caminos enrutados. 78 Figura 23. Etapa de Alimentación los puertos USB Fuente: Los Autores El cristal se ubicó de tal forma que los caminos al EZ-Host fueran de la mínima longitud posible; se protegió con planos de tierra alrededor y en la cara posterior a este y se aisló de otras señales del circuito. Los caminos del cristal se mantuvieron en una sola cara de la tarjeta para evitar cambios de impedancia. 2.2.8 CONTROLADOR CENTRAL DSP El controlador central del sistema H-USB es el encargado de supervisar y manejar todas las tareas del sistema. Este controlador ejecuta el software desarrollado para el almacenamiento de datos en memorias USB y trabaja en conjunto con el controlador EZ-Host para la comunicación con dispositivos USB. Como se mencionó en el apartado 2.2.1, el hardware de referencia utilizado como controlador central del sistema H-ARD es la tarjeta desarrollada por los ingenieros Juan Carlos Vargas y Cristihan García en su trabajo de grado [GARCIA-VARGAS], la cual está basada en el Controlador Híbrido DSP56F805 de Freescale™. De las prestaciones que ofrece esta tarjeta, sólo fueron utilizadas las estrictamente necesarias para el desarrollo del sistema H-ARD; las demás 79 se dejan a disposición para el desarrollo de la aplicación principal en la medición del espectro de impedancia eléctrica de tejido de cuello uterino. Es importante para el desarrollo del sistema y para la conexión con la tarjeta HC-USB verificar los puertos de conexión de la Tarjeta DSP805. Por tal motivo, la tabla 5 muestra algunos de los conectores que esta última ofrece. Tabla 5. Puertos de comunicación de la Tarjeta DSP805 Conector Tarjeta Descripción DSP805 J2 Conector pin Header para la interfaz SPI del DSP J3 Conector pin Header que abarca: los pines GPIOB0-7 y GPIOD0-1 del DSP; señales de tensión 5V y GND. P1 Conector puerto paralelo DB25M para la interfaz JTAG P2 Conector serial DE9F para la interfaz RS-232 Con base en la tabla 5, se seleccionó SPI como interfaz de comunicación entre la tarjeta DSP805 y la tarjeta HC-USB. A su vez, el puerto J3 es utilizado para el control de la interfaz de hardware con el usuario (LCD y botones de selección) y para las demás señales de control necesarias para el sistema H-ARD. Dentro de las características del DSP 56F805, que son influyentes en el desarrollo del software, se destacan: ¾ Controlador híbrido de 16 bits de la familia 56800, con doble arquitectura Harvard. Incorpora las características de procesamiento de un DSP con la funcionalidad de un microcontrolador con un amplio conjunto de periféricos. ¾ Trabaja a una frecuencia de 80MHz y 40MIPS ¾ En memoria interna posee: 63Kbytes de memoria Flash de programa; 8Kbytes de memoria RAM de datos. ¾ Una interfaz SPI ¾ Dos interfaces SCI 80 ¾ Compilador eficiente de lenguaje C. ¾ Tecnología CMOS con 3.3V de alimentación y compatible con tecnología TTL. Para más información acerca de las características de la Tarjeta DSP805 y del DSP, referirse al trabajo de los ingenieros [GARCÍA-VARGAS]. 2.2.9 INTERFAZ DE HARDWARE CON EL USUARIO Para facilitar la interacción entre el usuario y el sistema HUSB se implementó un módulo de salida de datos mediante una pantalla LCD (Liquid Crystal Display por sus siglas en inglés) y un módulo de entrada o selector de acciones mediante botones pulsadores. El control de dichas entidades de hardware se llevó a cabo gracias al desarrollo de módulos dedicados de software (véase capítulo 3, Software) y su soporte en hardware se efectuó mediante la tarjeta de adaptación TA1, la cual es una extensión diseñada por los autores (véase numeral 2.2.10) a la Tarjeta DSP805, y que conecta a esta con la LCD y los botones de selección. La LCD incorporada al sistema HUSB utiliza caracteres de matriz de puntos de 5x8 (incluyendo el cursor); utiliza dos líneas de 20 caracteres por línea. Su funcionamiento e interfaz con controladores externos se basa en controlador LCD de matriz de puntos HD44780A del fabricante Hitachi, el cual se puede configurar para un bus de datos de 8 o de 4 bits[HITACHI]. Con motivo de disminuir la cantidad de pines GPIO necesarios, la LCD es trabajada con una interfaz de bus de 4 bits. La tabla 6 describe los pines o terminales del dispositivo LCD y su respectiva conexión con la tarjeta DSP805. Por otra parte, debido a la limitada disposición de pines GPIO en el DSP, se utilizaron dos botones pulsadores normalmente abiertos para que el usuario pueda seleccionar una de dos opciones específicas en situaciones que requieran decisión e intervención por parte de este; las opciones son mostradas mediante mensajes textuales en la LCD. 81 Tabla 6. Descripción de pines de la pantalla LCD y su respectiva conexión No. Pin Señal 1-4 DB7 a DB4 Función Conexión Cuatro bits más significativos del bus GPIO B3 a GPIO B0 del DSP bidireccional de datos. Son los que se usan cuando la interfaz es de 4 bits 5-8 DB3 a DB0 Cuatro bits menos significativos del bus No conectados bidireccional de datos. 9 E Con el flanco de bajada, esta señal inicia GPIO B4 del DSP la lectura o escritura 10 R/nW Selecciona lectura o escritura Este pin es conectado a GND para realizar operaciones de solo escritura. 11 RS Seleccionador de Registro: GPIO B5 del DSP 0: Registro de instrucción (escritura) 1: Registro de datos 12 VEE Tensión para ajustar el contraste 13 VCC Tensión de alimentación (2.7V a 5.5V) 5V 14 GND Tierra de alimentación 0V 15 NC No conectado No conectado 16 NC No conectado No conectado La implementación de los botones no requirió la conexión de resistencias de amarre de tensión (pull up o pull down) gracias a que el DSP cuenta con resistencias internas de pull-up que permiten que la señal de entrada esté normalmente en alto o uno lógico (véase siguiente sección). La tabla 7 muestra la conexión de los botones pulsadores con la tarjeta DSP. Tabla 7. Conexión entre los botones pulsadores y el DSP Botón Pin DSP Selector 1 GPIO D0 Selector 2 GPIO D1 82 2.2.10 TARJETA DE ADAPTACIÓN DE CONEXIONES La tarjeta de adaptación TA1 permite interconectar los diferentes módulos de hardware que conforman el sistema general HUSB (La tarjeta DSP, el módulo HCUSB, la LCD y los botones de control y selección), mediante la adecuación de las conexiones entre los diferentes puertos e interfaces de comunicación. Se compone básicamente de conectores tipo pin header, conectores receptores de pines (female header) y botones pulsadores. El diagrama esquemático de la tarjeta se presenta en la figura 24. Cabe resaltar que para no introducir más componentes de hardware, el control del antirebote de los pulsadores se realiza por software. Las especificaciones de los diferentes puertos son: • El puerto J1 de TA1 va conectado al puerto J2 de la tarjeta DSP (interfaz SPI del DSP). El pin 1 del primero corresponde al pin 1 del segundo. • El puerto J3 va conectado al puerto J3 de la tarjeta DSP [GARCIA-VARGAS]. El pin 18 del primero debe conectar con el pin 1 del segundo • Las conexiones realizadas al puerto J4 (que corresponden al puerto hembra que conecta con la LCD) se presentan en la tabla 4 del apartado anterior, al igual que las conexiones de los botones pulsadores con el DSP. • Las señales del puerto J2 se presentan en la tabla 8. Este puerto está acondicionado para conectar directamente con el puerto SPI de la tarjeta HCUSB, donde el pin 1 de J2 de TA1 va conectado al pin 1 de el puerto SPI en HCUSB Tabla 8. Señales presentes en el puerto J2 de TA1 Pin No. 1 2 3 4 5 6 Señal GND GPIOB7/RESET CLK nSS MISO MOSI 83 Figura 24. Diagrama esquemático de la tarjeta TA1 Fuente: Los Autores 2.3 IMPLEMENTACIÓN FINAL TARJETA HC-USB La figura 25 muestra la implementación final de la tarjeta HC-USB. La tarjeta tiene dimensiones de 72mmx95mm. 84 Figura 25. Implementación final Tarjeta HC-USB Fuente: Los Autores 85 3. SOFTWARE DEL SISTEMA EMBEBIDO El H-ARD fue concebido como un sistema de comunicación estructurado por capas cuyas tareas fueron distribuidas a lo largo de diferentes entidades. Aunque el Hardware es un componente importante que cumple con tareas a nivel físico, la mayoría de las entidades que conforman el sistema fueron implementadas por Software. En consecuencia de lo anterior, el presente capítulo hace énfasis en el diseño y desarrollo del software del sistema H-ARD. Se presenta la arquitectura diseñada para el Software junto con los diferentes algoritmos implementados para la ejecución de tareas. También se exponen las herramientas de programación y estrategias que fueron utilizadas para dar solución a criterios de diseño como velocidad de cómputo, tamaño del programa, tamaño de los datos y portabilidad, entre otras. Adicionalmente se muestra la distribución de memoria de datos del sistema, diseñada con base en los recursos de hardware disponibles. 3.1 HERRAMIENTAS Como se mencionó en el capítulo 2 (Diseño de Hardware), el sistema comprende dos controladores trabajando en una arquitectura distribuida: un Controlador Host (EZ-Host de CYPRESS) actuando como esclavo y un Controlador Híbrido-DSP (de la familia 56800 de Freescale) actuando como maestro o procesador principal. A continuación se mencionan algunas de las herramientas utilizadas en el desarrollo del software del sistema H-ARD (tanto firmware disponible como herramientas de programación). CYPRESS Semiconductor, el fabricante del EZ-Host, ofrece para éste controlador un firmware de sistema básico de entrada y salida (BIOS) [CYPRESS1], inmerso en la memoria ROM interna, que permite la comunicación con controladores externos y el control de dispositivos conectados al Bus. 86 Por otra parte, Freescale ofrece el entorno de desarrollo de software CodeWarrior para el DSP, el cual es una herramienta completa y sencilla, y permite tanto la implementación como el monitoreo de los algoritmos que se desarrollan para el DSP. Con base en las herramientas disponibles para el desarrollo de software, se eligió trabajar el EZ-Host bajo su BIOS e implementar los diferentes módulos que componen la arquitectura del software del sistema H-ARD (ver apartado 3.3) en el DSP, principalmente por las siguientes razones: • La aplicación a la que está orientado el sistema H-ARD, como se dijo en el apartado 2.1, se soporta en un DSP de la familia 56800 de Freescale * • El DSP tiene una arquitectura Harvard y una frecuencia de Bus mayor, lo cual le permite trabajar a velocidades de procesamiento más altas. • Freescale ofrece la herramienta de desarrollo de software CodeWarrior con un entorno de trabajo amigable y sencillo de usar. Dicha herramienta permite que el proceso comprendido por la compilación, el enlace de archivos (linking), la creación del archivo objeto y la descarga de este al DSP sea automática y transparente para el usuario. • CodeWarrior adicionalmente ofrece herramientas de debug y monitoreo completas y sencillas de usar. • En la Escuela de Ingenierías Eléctrica, Electrónica y Telecomunicaciones se cuenta con la experiencia de trabajos anteriores donde se han utilizado DSPs de la familia 56800 de Freescale. • El BIOS del EZ-Host es un software completo que le permite a un controlador externo coordinar las transacciones que tienen lugar en el Bus. Además, se encarga del control de errores de la capa física del protocolo USB. * Refiérase al apartado 2.1, Planteamiento del problema y requerimientos del sistema. 87 Basados en las especificaciones del BIOS del EZ-Host, se coordinó toda la comunicación y el trabajo en conjunto entre éste y el DSP. Para la implementación de los diferentes algoritmos se eligió al lenguaje de programación C porque, además de ser ampliamente utilizado en sistemas embebidos, es un lenguaje de nivel medio que permite que el software desarrollado no dependa de una plataforma de hardware específica (como ocurre con el lenguaje Assembler), lo que facilita a su vez una mayor portabilidad del programa. Además, el lenguaje C facilita el entendimiento los algoritmos para una rápida expansión o modificación. 3.2 CRITERIOS DE DISEÑO Para la adecuada programación de un sistema embebido, es fundamental conocer los recursos ofrecidos por el hardware y las herramientas que brinda el lenguaje de programación seleccionado con el fin de solucionar las limitaciones y criterios elementales de diseño como: velocidad de cómputo, tamaño de los datos (espacio en memoria RAM), tamaño del programa (espacio en memoria ROM), portabilidad y flexibilidad. El software del sistema fue desarrollado buscando, entre otras características, un equilibrio entre la velocidad de cómputo y el tamaño del programa (pues como es sabido, en el desarrollo del software de un controlador programable existe un compromiso entre estas dos características [BARR]). Así mismo, toda la programación se orientó a maximizar la flexibilidad y portabilidad; en otras palabras, se buscó que el software del sistema permitiera una fácil utilización y modificación y a su vez una rápida adaptación a cualquier plataforma de hardware. Lo anterior se llevó a cabo mediante el diseño de la arquitectura de software (véase apartado 3.3) en combinación con la explotación de las herramientas del lenguaje de 88 programación. Algunas de las herramientas de programación utilizadas para el desarrollo del software fueron: • Punteros: se utilizaron punteros especialmente en la introducción de parámetros de funciones, para aumentar la eficiencia del programa, puesto que reducen la sobrecarga de datos a la pila y aumentan a su vez la velocidad con la que se llama una función. • Macros: se implementaron macros para eliminar la necesidad de crear variables constantes y en algunos casos, de crear funciones, dado que funcionan como código insertado al momento de la compilación, permitiendo reducir el tamaño de datos y de programa. Además, ayudan a la comprensión de los algoritmos. • Estructuras y campos de bits: a lo largo del desarrollo del sistema de comunicación H-ARD fue indispensable el manejo de campos de bits y/o bytes en las cabeceras de los diferentes protocolos. Así mismo, fue necesaria la creación de una base de datos para almacenar información propia de los dispositivos USB y de unidades de almacenamiento con formato FAT. Para todo lo anterior se utilizaron estructuras y campos de bits buscando facilitar la manipulación de dicha información en forma de variables y mantener los datos debidamente agrupados y organizados. A su vez, se trabajaron punteros a estructuras para reducir significativamente la carga computacional y de datos. Una característica importante de las estructuras es que estas permiten que los dispositivos USB sean manipulados como objetos (conjunto de características), facilitando el acercamiento a la programación o modelamiento de software, [MARWEDEL] orientado a objetos. Entre tanto, ciertas técnicas fueron necesarias para mejorar la eficiencia del programa y el uso de memoria, tales como: • Decrementar el tamaño del Heap: el Heap es un espacio en RAM que permite asignación dinámica de memoria mediante funciones especiales de librerías estándar de C [BARR]. En principio se usó esta herramienta para ubicar buffers temporales de datos. Sin embargo, su utilización además de aumentar 89 significativamente el tamaño del programa, arrojó una serie de inconsistencias que obligaron a abandonar esta alternativa. Por ello se optó por reducir este espacio en memoria para aumentar el espacio para las variables y así poder ubicar los buffers como variables de arreglos de tipo temporal, en las funciones requeridas. • Equilibrar código insertado con creación de funciones: en ciertas situaciones fue pertinente reemplazar las funciones por código insertado para reducir el tiempo de ejecución de una rutina, teniendo en cuenta de que ésta no afectara significativamente el tamaño del programa. No obstante, cuando se utilizaron funciones para rutinas que fueran llamadas constantemente, se procuró reducir al máximo la cantidad parámetros de la función para reducir la sobrecarga y aumentar la eficiencia. Como último paso, pero no menos importante, se tuvo en cuenta aquellos factores negativos que afectan directamente el hardware y que pueden generar una inadecuada operación del sistema. Entre los factores más relevantes se encuentran: • Interferencia y ruido en las interfaces de comunicación que puedan degradar la señal transmitida. • Capacitancias presentes en las pistas del PCB y en general en todo conductor por donde se transmita una señal, generando retardos significativos y violaciones en los tiempos especificados por las interfaces de comunicación de los diversos dispositivos. Para contrarrestar en el software estos factores negativos*, se implementaron sistemas de corrección de errores basados en el reenvío de la información (para el primer caso) y ajustar adecuadamente las tolerancias de tiempos para alejarlas de las tolerancias marginales (para el segundo caso). * La incidencia de estos y otros factores negativos que afectan el funcionamiento del sistema fueron tenidos en cuenta en el diseño del hardware (véase capítulo 2) 90 3.3 ARQUITECTURA DEL SOFTWARE La arquitectura del software ha sido diseñada con base en los requerimientos del sistema y enfocada a una estructura por capas, como lo ilustra la figura 26, lo que proporciona beneficios como: • Flexibilidad en soporte de hardware, aumentando la portabilidad del programa. • Flexibilidad en modificaciones. • Reducción en la complejidad de implementación, al dividir las tareas en varias entidades. • Control de errores por entidades, aumentando su rigurosidad. • Identificación de la jerarquía de cada capa y su dependencia con otras entidades. Para la ejecución de las diversas tareas del sistema que son realizadas por el Software, se han diseñado 4 Módulos o capas fundamentales: el módulo de sistema de archivos FAT32, el módulo de Driver de la clase USB de almacenamiento masivo, el módulo de Driver del sistema USB y el módulo de interfaz con el controlador Host USB (EZ-HOST). Es importante resaltar que el sistema base, compuesto por estas cuatro entidades, es independiente de la aplicación y por tanto está orientado a ser incorporado a cualquier otro sistema de aplicación específica que requiera el almacenamiento de altos volúmenes de datos. Para ello se ha diseñado una interfaz de Software de aplicación compuesta por funciones en C que hacen las veces de APIs (Aplication Program Interface por sus siglas en inglés) y que facilitan la interacción entre el sistema diseñado una aplicación (véase Anexo F). Adicionalmente se desarrolló un módulo de aplicación con miras a adaptar el sistema H-ARD al dispositivo de medición que se desarrolla en la investigación que enmarca este proyecto. A su vez, se espera con este módulo verificar el funcionamiento de todo el sistema. 91 Figura 26. Arquitectura del software del sistema DSP Aplicación Medición del Espectro de impedancia eléctrica (Simulación) APIs Sistema de archivos Configuración de la Unidad FAT32 Driver de FAT32 Driver de la Clase USB Juego de Comandos (SCSI) USB Mass Storage Class Driver Driver del Sistema USB Configuración del Dispositivo USB Comunicación y Control USB EZ-HOST Driver del Controlador Host para el EZ-Host BIOS Interfaz con el EZ-Host Driver LCP Driver SPI Interfaz SPI Interfaz SPI HARDWARE Fuente: Los Autores 92 S O F T W A R E 3.3.1 MÓDULO DE SISTEMA DE ARCHIVOS FAT32 Como se mencionó en el apartado 1.6, el sistema de archivos FAT32 es ampliamente utilizado por las memorias Flash portátiles para el intercambio de archivos y carpetas con el PC. Por tal razón, este módulo es el encargado del soporte y manejo del sistema de archivos FAT32 y de la configuración, a nivel de FAT, de las memorias con este tipo de formato. Las tareas más relevantes a resolver son: • Inicialización de la unidad de almacenamiento mediante la lectura de sus características y de su estructura lógica (tamaño en bytes de los Sectores, el número de particiones y el número de FATs que posee, entre otras). • La escritura de archivos, que comprende la búsqueda en el directorio raíz de nombres de archivos, la búsqueda de clusters o espacios vacíos en la FAT, la escritura de archivos en clusters vacíos y el respectivo registro del nombre en el directorio raíz. La fase de inicialización de una unidad de almacenamiento se ilustra en la figura 27. Con este algoritmo se busca extraer las características principales y la estructura lógica de la unidad. Del sector 0 de la memoria se obtiene la información del tipo de formato el LBA (Logical Block Address ó dirección del bloque lógico) y del inicio de la partición (por lo general las memorias portátiles sólo tienen una partición). Posteriormente, del primer sector de la partición (Volume ID) se obtienen los datos de bytes por sector, sectores por cluster, número de sectores reservados, número de FATs, sectores por FAT y el número del primer cluster del directorio Raíz. Con esta información es posible completar la estructura lógica de la memoria y así proceder a leer o escribir archivos en ella. El Driver de sistema de archivos basado en FAT 32 implementado, se muestra en el diagrama de la figura 28. Para crear un archivo, primero se realiza una búsqueda en la tabla de FAT de Clusters libres, de acuerdo a la cantidad de datos que se deseen almacenar. Esto implica actualizar la tabla con la ubicación de los clusters del nuevo archivo (la cual es una tarea compleja y puede requerir un mayor tiempo de comunicación con la memoria debido a que, como se mencionó en apartados 93 Figura 27. Diagrama de flujo de la configuración de una unidad de almacenamiento con formato FAT32 Inicio Lectura del Sector 0 de la memoria No Si ¿Es Tipo FAT32? Lectura del Volume ID No ¿Bytes por Sector Si =512 ? Memoria no soportada Sectores por cluster Número de sectores reservados Número de FATS Sectores por FAT Primer Cluster del directorio Raíz Fin Fuente: Los Autores anteriores, no siempre los clusters están ubicados consecutivamente). Los datos son almacenados en los clusters libres encontrados. Posteriormente, para que el archivo aparezca creado en el directorio raíz y pueda ser visualizado por el sistema operativo, se ejecuta la actualización del campo de información del archivo (nombre, extensión, etc.) en dicho directorio. Para esta última tarea es necesaria la búsqueda, en el directorio Raíz, tanto de un campo libre como de un nombre que coincida con el archivo que se desea crear (puesto que no puede haber nombres repetidos). 94 Figura 28. Algoritmo del sistema de archivos implementado, basado en FAT32 Inicio 1 Cálculo del número de Clusters Necesar ios para almac enar la información Búsqueda de clusters vacíos en la FAT No Si ¿Hay Espacio en Memor ia ? Actualización de la FAT con la ubicación de los clusters del nuevo arc hivo Escritura de la información en los clusters vacíos Espacio Insuficiente No Si ¿Primera vez que ingresa ? 1 Busqueda de la s ec uencia más alta del nombre de archivo, en el directorio Raíz Búsqueda de un campo libre en el directorio Raíz No ¿Hay campos Si libre s? Asignación de un nuevo cluster para el directorio Raíz Actualización del direc torio Raíz con el nombre del archivo, la extensión, la longitud y la ubic ac ión del primer cluster de datos Incremento de la secuencia del nombre 1 Fuente: Los Autores 95 Con el objeto de evitar complicaciones en el hardware por el ingreso de los caracteres del nombre del archivo, se decidió dejar un nombre o cadena de caracteres constante con una secuencia o número variable generado por el sistema (por ejemplo Datos1, Datos2, etc) y con el formato de nombre 8.3*, de tal forma que el nuevo archivo almacenado continúe progresivamente con la sucesión. Para ello es necesario determinar el mayor valor de la secuencia de archivos almacenados en la memoria. El siguiente ejemplo ilustra lo mencionado: Archivos localizados en la memoria Datos0, Datos1, Datos2 y Datos3 Mayor valor de la secuencia 3 Nombre del archivo a crear Datos4 De esta forma el sistema de archivos asegura que no se almacenen en la memoria archivos con nombre repetido. El nombre del archivo que genera el sistema es &P___, con un espacio de seis dígitos decimales para la numeración, lo que permite almacenar 1 millón de archivos con nombre diferente para una misma extensión. El caracter “&” es utilizado para facilitar la búsqueda de un nombre en la Unidad de almacenamiento, dada su baja probabilidad de uso. El caracter P, inicial de Paciente, también posee baja frecuencia de uso en el Castellano (2.77% de acuerdo con [WIKIPEDIA2]). Cabe resaltar que todos los archivos creados son almacenados en el directorio raíz. Para ahorrar tiempo de procesamiento, la búsqueda de clusters libres en la FAT se inicia en los sectores finales de estos, debido a que la probabilidad de encontrar espacios libres es mayor. * El formato de nombre 8.3 de FAT indica que el nombre del archivo tiene un máximo de 8 caracteres ASCII y la extensión comprende 3 caracteres ASCII 96 3.3.2 MÓDULO DE DRIVER DE LA CLASE USB DE ALMACENAMIENTO DE DATOS En el apartado 1.5 se mencionó que los dispositivos pertenecientes a la clase USB de almacenamiento masivo de datos (MSC) hacen uso de un protocolo de transporte (compatible con las especificaciones de clase) para el intercambio de comandos de acción como lectura, escritura y verificación de errores. Para el caso de las memorias portátiles, el juego de comandos más ampliamente utilizado es el SCSI y el protocolo de transporte más utilizado para el envío de estos es el Bulk Only Transport (BOT). Por tal motivo, el presente módulo está constituido por dos bloques funcionales, que se encargan tanto de la implementación del protocolo de transporte BOT como del juego de comandos SCSI, respectivamente. Estos bloques son: el Driver de SCSI y el Driver de la clase USB de almacenamiento masivo de datos (Driver de MSC). La interacción entre estas dos entidades se muestra en la figura 29. El Driver de juego de comandos SCSI implementado se encarga de traducir las peticiones del Driver del sistema de archivos FAT en comandos de SCSI como lectura y escritura, para que sean enviados a la unidad o dispositivo de almacenamiento y posteriormente ejecutados por esta; dicho Driver hace uso de los servicios que le proporciona el Driver de MSC para transferir tanto comandos como datos. Figura 29. Interacción entre el Driver de SCSI y el Driver de MSC Driver de SCSI Reporte de Error de Ejecución de Comando Bloque de Comando SCSI Driver de MSC Fuente: Los Autores 97 Figura 30. Diagrama de estados del Driver de SCSI Sistema de Archiv os FAT Inicio Configuración Control Escr itura Lectura Fuente: Los Autores Adicionalmente, lleva a cabo un proceso de configuración de SCSI que habilita a la memoria USB a su estado normal de trabajo. Este proceso de configuración sigue lo estipulado en [USB-IF3] y consiste en el envío del comando Inquiry, el envío reiterado del Test Unit Ready y el envío de Read Capacity, en secuencia. Los comandos implementados de acuerdo a las especificaciones de SCSI, [NCITS1] y [NCITS2], se presentan en la tabla 9. El diagrama de estado de la figura 30 muestra el funcionamiento del Driver de SCSI. Por otra parte el Driver de Clase USB MSC se encarga de llevar a cabo el protocolo de transporte de comandos Bulk Only Transport, [USB-IF2] (BOT). Tiene como entrada el bloque de comando SCSI, obtenido del Driver de SCSI. Este bloque de comando es encapsulado en el paquete de datos CBW y enviado a la unidad de almacenamiento a través del bus USB. Posteriormente son enviados o recibidos los datos mediante una transferencia USB tipo Bulk. Por último se recibe el acuse de la transmisión, representado por el paquete de datos CSW, el cual informa al Host si el comando SCSI 98 Tabla 9. Comandos SCSI implementados COMANDO SCSI PROCESO Inquiry Configuración Test Unit Ready Configuración Read Capacity Configuración Read (10) Lectura Write (10) Escritura Control de Errores Request Sense ha sido ejecutado con éxito. De ser negativa la ejecución, el Driver de USB MSC informa al Driver de SCSI el error para que tomen las medidas pertinentes. Es relevante mencionar que cada fase de envío o recepción de datos a la unidad de almacenamiento tiene incorporado una rutina de control de errores, acorde a las especificaciones de la Clase USB MSC. El proceso que ejecuta el Driver de la Clase USB MSC implementado se expone en el diagrama de la figura 31. 3.3.3 MÓDULO DE DRIVER DEL SISTEMA USB El módulo de Driver del sistema USB abarca la configuración y control del dispositivo USB, el manejo de las transferencias USB y el Driver del Controlador Host. La figura 32 muestra la estructura básica del Driver de USB implementado, donde se observan los diversos bloques funcionales que fueron desarrollados para llevar a cabo la comunicación por el bus. De las cuatro transferencias especificadas por USB, se implementaron las transferencias de control para el envío de peticiones USB (USB Requests definidas por las especificaciones USB) y las transferencias Bulk para la ejecución del protocolo de transporte BOT de MSC. Lo anterior favorece una reducción en tamaño de código y una reducción en la complejidad del sistema. 99 Figura 31. Algoritmo del driver de la clase USB Mass Storage 1 Inicio Bloque de comando SCSI Cr eación del paquete CBW Env ío del paquete CBW Si ¿Error Reportado? No Envío o Recepción de Datos mediante una transfer encia tipo Bulk Si ¿Err or Reportado? No Recepción del paquete CSW Si ¿Error Reportado? No Revisión del paquete CSW Si ¿Error en la ejecución del comando SCSI? Control de Errores No Reporte de Err or de SCSI 1 Fuente: Los autores De los bloques funcionales que componen el Driver del sistema USB, cabe resaltar: el bloque de configuración USB, el bloque de transferencias de Control, el bloque de transferencias Bulk y el bloque de Driver del Controlador Host. 100 Figura 32. Estructura del Driver de USB Interfaz del Driver de USB Configuración USB Peticiones de Configuración Creación de la estructura USB Request Get Descriptor Peticiones de Control Set Address … Set Configuration Transferencias de Control D a t o s Transferencias Tipo Bulk Host Controller Driver Interfaz del Controlador Host Fuente: Los autores 3.3.3.1 Bloque de configuración USB. El bloque de configuración USB lleva a cabo la identificación y la configuración del dispositivo USB en caso de detectarse su conexión al bus, mediante el proceso de Enumeración mencionado en el apartado 1.3.3 y que consiste básicamente en el reset del puerto, la asignación de una dirección, la petición de los descriptores y la asignación de una configuración. Estas acciones se llevan a cabo mediante peticiones de USB, [USB-IF5] (USB requests), que a su vez hacen uso exclusivamente de transferencias de Control para transmitir la información respectiva al EndPoint Control (o EP 0). 101 Cuando se obtienen los diferentes descriptores del dispositivo, específicamente el descriptor de interfaz, se configura todo dispositivo que cumpla con las siguientes especificaciones: • Pertenezca a la clase USB de almacenamiento masivo • Utilice el protocolo de clase BOT • Utilice el juego de comandos SCSI Entre tanto, gran parte de la información extraída de los descriptores es redundante para el sistema, por lo que sólo se almacenan los datos estrictamente necesarios, para no comprometer demasiado el espacio en memoria. El diagrama de la figura 33 muestra el proceso implementado para la configuración de un dispositivo USB. Dado que el sistema soporta una conexión de hasta 2 dispositivos (con posibilidades de expansión de 4 de acuerdo al hardware) fue necesario crear una base de datos para almacenar la información respectiva del dispositivo, como el puerto de conexión en el Controlador Host, la dirección del dispositivo y los tamaños y las direcciones de los EndPoints. Para ello se recurrió a la utilización de estructuras, propias del lenguaje de programación C, para almacenar dicha información en los diferentes campos de las estructuras. Estas estructuras también se usaron para trabajar a los dispositivos como objetos, en el marco global de todo el software, puesto que facilitan el acceso a sus características y la manipulación de los mismos. 3.3.3.2 Bloque de Transferencias de Control. El bloque de transferencias de control se encarga de realizar las tres fases necesarias para este tipo de transferencia: Setup, Data y Status [USB-IF5]. En la fase de Setup, se crea una transacción en cuyo paquete de datos va encapsulado el bloque de información de la petición USB (USB Request) que se desea enviar. En la fase de Data, se crean tantas transacciones del tamaño del EndPoint de control como sean necesarias para recibir los datos solicitados en la fase de Setup (puesto que en esta fase, el Host no envía datos al dispositivo), para ello es necesario actualizar el tamaño del EndPoint de control del dispositivo (vale 102 Figura 33. Configuración de un dispositivo USB Inicio Puerto de conexión del dispositivo USB Lectura de los descriptores de Configuración,de Interfaz y de End Point Reset de USB Petición de los desc riptores de Dispositivo Asignación de una dir ección al dispositivo USB ¿Consumo de cor riente del bus mayor a 500mA? Si No ¿Pertenec e a la clase de almacenamiento masivo? No Si No ¿Usa comandos SCSI? Si Si No ¿Utiliza el protocolo BOT de la clase MSC? Dirección del EP OUT Tamaño del EP O UT Dirección del EP IN Tamaño del EP IN Tamaño del EndPoint de Contr ol Dispositivo no soportado Asignación de una Configuración en el dispositivo USB Fin Fuente: Los autores la pena recordar que en una transacción, sólo se pueden enviar o recibir datos como máximo del tamaño del EndPoint en cuestión)*. En la fase de Status se crea una transacción con un paquete de datos nulo. * Por ser un buffer de datos con espacio de memoria limitada. 103 Para la creación de las transacciones es fundamental tener especial cuidado en asignar bien los identificadores del paquete Token de cada transacción y llevar con exactitud la secuencia del paquete de datos. Luego de creadas todas las transacciones que conforman la transferencia, estas son enviadas al dispositivo mediante el Driver del Controlador Host. La figura 34 muestra la operación de este bloque funcional. 3.3.3.3 Bloque de Transferencias Bulk. El bloque de transferencia Bulk se encarga principalmente de realizar las transferencias tipo Bulk necesarias para enviar o recibir datos <<en volumen>>. Para ofrecer un mayor ancho de banda a la transferencia en curso y favorecer el intercambio de datos, este bloque asigna un Frame completo a la transferencia Bulk en curso. Para asegurar un adecuado ancho de banda de transmisión, se ajustó la cantidad de datos a transmitir en un Frame teniendo en cuenta el compromiso entre el espacio en memoria del buffer de transmisión, la carga computacional y la tasa efectiva de datos (debido a que entre más reducido sea el buffer, menos requerimientos de memoria tendrá el sistema, pero menos datos podrán ser enviados en un Frame). Además, se tuvo en cuenta las limitantes en cuanto a número de transacciones que impone las especificaciones de USB2.0 para transferencias tipo Bulk [USB-IF5]. De acuerdo con las especificaciones USB 2.0 para transferencias Bulk en Full Speed*(12Mbps), considerando un caso crítico† de una memoria USB con un tamaño de buffer o EP de 8bytes, en un Frame se pueden transmitir 568 bytes como máximo‡. * Refiérase a la tabla 5-9 de la página 54 de [USB-IF5] Se puede llamar crítico debido a que generalmente las memorias USB tienen EndPoints de 64bytes ‡ La tasa efectiva de datos es menor a la velocidad de transferencia debido a la sobrecarga de datos que producen las cabeceras de los paquetes del protocolo USB † 104 Figura 34. Transferencias en el bus USB. 1 Inicio Inicio Tamaño del EP0 Bloque de Comando del USB Request Tamaño y Dirección del EP Sec uencia Actual del paquete de Datos Sec uencia de datos=0 Cálculo del número de transferencias necesarias Creación de la transacción de SetUp con los datos del Request Cálculo del número de transacciones necesarias para cada tr ansferencia ¿Hay datos provenientes de dispositivo? Si N Transferenc ias No N Transacciones Cálculo del número de transacciones necesarias Creación de la transacción N Transacciones Alternar secuencia del paquete de datos Alternar secuencia del paquete de datos Secuencia de datos=1 Creación de las transacciones Creación de la transacción de Status Envío de todas las transacciones de la transferencia Bulk No Envío de todas las transacciones de la transferencia de Control Error en la Transferencia? Si No Error en la Transferencia? Si Reporte del Error Reporte del Error 1 1 Actualizar Secuencia del paquete de Datos b) a) a) Algoritmo para las Transferencias de Control. b) Algoritmo para las Transferencias Bulk (de volumen) Fuente: Los Autores 105 1 Teniendo en cuenta que la unidad básica de datos del sistema de archivos implementado (FAT32) es de 512 bytes (cuyo espacio en memoria es asequible*), se puede establecer en 512bytes la longitud de los datos que tendrán lugar en un Frame a Full Speed (1ms), lo que permite tener una tasa de transferencia de datos de 500KBytes/s ó 3.9Mbps†. La figura 34.b muestra el proceso para llevar a cabo las transferencias tipo Bulk. Al igual que con las transferencias de control, se debe asegurar que el Driver asigne correctamente los identificadores del paquete Token de cada transacción, para indicar el sentido de los datos (IN u OUT). Así mismo, debe llevarse estrictamente la secuencia del paquete de datos y un registro permanente de esta secuencia, para los EP Bulk puesto que el dispositivo no la reinicia a cero hasta tanto haya una actividad de configuración en los EP, [USB-IF5]. 3.3.3.4 Bloque de Driver del Controlador Host. El bloque de Driver del controlador Host es el encargado de la configuración del Controlador Host (EZ-Host de Cypress) y del manejo de las herramientas concernientes al protocolo USB. Se encarga de crear los Transaction Descriptors‡(Tdesc), de cargarlos en la memoria del EZ-Host, de enviar el comando necesario para que sean ejecutados y del control de errores relacionado con la ejecución de las transacciones. Todo en concordancia con las especificaciones del BIOS del EZ-Host. Cada Transaction Descriptor es creado bajo petición específica de una entidad superior (por ejemplo el bloque de transferencias Bulk) que requiera organizar una transacción USB. Cada Tdesc creado es apilado en un espacio de memoria del DSP. Cuando toda una transferencia esté lista para enviar por el bus, el Driver del Controlador Host carga al EZ Host todos los Tdesc (que en conjunto se denominan Tlist) creados hasta el * Véase apartado 3.4 Esta tasa de transferencia se puede ver reducida por retardos en el flujo de datos del sistema y/o retardos en la respuesta del dispositivo USB ‡ Véase Apartado 1.4.2 † 106 momento y da la orden de que sean ejecutados. Posteriormente se verifica mediante una señal de semáforo que el TList ha sido ejecutado y se procede a revisar el reporte del estado de cada Tdesc en busca de cualquier error presentado. Errores como Nak y Time Out son atendidos reenviando de nuevo la información. Errores más complejos como STALL son solucionados con la asistencia de entidades superiores. La rutina de ejecución del Driver es presentada en la figura 35. La configuración del EZHost consiste en ajustar una o ambas SIE (Serial Interface Engine) como Host, borrar interrupciones pendientes, ejecutar Tlist pendientes y configurar el EOT [CYPRESS5]. 3.3.4 MÓDULO DE INTERFAZ CON EL CONTROLADOR HOST USB El presente se encarga específicamente de coordinar la comunicación por hardware con el EZ-Host y se ha diseñado de tal forma que independice los demás módulos con el hardware sobre el que se soporta el sistema, haciendo al software desarrollado más portable y flexible. El módulo está conformado por dos entidades: la primera, encargada de llevar a cabo el Link Control Protocol (LCP), [CYPRESS1], requerido por el EZ-HOST para la comunicación con procesadores externos, y la segunda encargada de la comunicación por las interfaz eléctrica SPI. 3.3.4.1 Manejo del LCP. Haciendo uso del LCP, es posible comunicarse con el EZ- Host desde un procesador externo, mediante la interfaz SPI, HPI o HSS. Para el sistema H-ARD se utilizó SPI por las limitaciones de pines del hardware del DSP, mencionadas en el apartado 2.2.8. Por otro lado, el LCP utiliza el intercambio de comandos específicos que permiten la ejecución de diversas tareas, tales como escritura en memoria, lectura de memoria y ejecución de interrupciones, entre otras. Además, sólo permite, en el caso de SPI, el intercambio de datos en modo Half Duplex. 107 Figura 35. Driver del Controlador Host Inicio Configuración del Controlador Host PID, Tamaño del EP, Dirección del EP, dirección del Dispositivo, Longitud de los datos de la transacción, tipo de transferencia, Secuencia de datos 1 Creación del Transaction Descriptor No Si ¿Es el último TDescriptor ? Copia del Transaction List al Controlador Host Envío de la orden de ejecución del Transaction List al Controlador Host No ¿Tr ansaction List ejecutado? Si Verificación del estado del Tr ansaction list Si ¿Er ror en la ejec ución del Tlist? No Control y Reporte de Errores 1 Fuente: Los Autores 108 Aunque el sistema completo sólo requiere la utilización de 6 comandos LCP, esta entidad soporta un juego completo de 10 comandos que enriquecen las opciones para controlar y manejar el EZ-Host. La lista de comandos implementados se muestra en la tabla 10. Tabla 10. Comandos LCP Implementados Comando LCP Comando Soportado Comando Utilizado COMM_RESET SI SI COMM_JUMP2CODE SI NO COMM_CALL_CODE SI NO COMM_EXEC_INT SI SI COMM_READ_CTRL_REG SI SI COMM_WRITE_CTRL_REG SI SI COMM_READ_MEM SI SI COMM_WRITE_MEM SI SI COMM_READ_XMEM SI NO COMM_WRITE_XMEM SI NO 3.3.4.2 Manejo de la interfaz eléctrica. Para comunicar el EZ-Host con el DSP fue necesario poner en común acuerdo las características de funcionamiento de las interfaces de dichos controladores. En el EZ Host, la configuración por defecto del puerto SPI es quien determina las condiciones iniciales de trabajo. Por tanto, se configuró el módulo SPI del DSP para ajustarlo a las características del módulo SPI del EZ-Host. Cabe presentar los terminales que conforman el puerto SPI: • SS o Slave Select, el cual se utiliza para habilitar el Esclavo. • MOSI: es la salida de datos del Maestro y la entrada del Esclavo • MISO: es la salida del Esclavo y la entrada del Maestro • SCLK: es el reloj serial que se utiliza para sincronizar la comunicación El módulo SPI del DSP fue ajustado de acuerdo a las siguientes características presentadas en la tabla 11: 109 Tabla 11. Configuración de los módulos de SPI en el DSP y en el EZ-Host Configuración en el EZ- Característica Configuración en el DSP Modo de operación Orden de transmisión de Bits Maestro El más significativo primero Esclavo El más significativo primero Frecuencia del reloj (SCLK) 1.25MHz Soporta hasta 2 MHz Fase del reloj (SCLK) En atraso En atraso Polaridad del reloj (SCLK) Negativa Negativa Modo de comunicación Full Duplex (no se puede configurar de otra forma) Longitud de datos a transmitir 8 bits Host (por defecto) Half Duplex 8 bits La transmisión y recepción de datos por el puerto SPI se lleva a cabo mediante la escritura del registro de transmisión y la lectura del registro de recepción, del módulo SPI en el DSP. Sin embargo, dado que el DSP trabaja en modo Full Duplex y el EZHost en modo Half Duplex, para la lectura de datos es necesario enviar un bloque de datos prueba de tal forma que active el reloj para que el esclavo retorne los datos respectivos. Cabe resaltar que como el DSP ha sido designado para trabajar como Maestro, se destinó un terminal de propósito general del DSP para controlar la señal de selección de esclavo (terminal SS en el EZ-Host). 3.3.5 MÓDULO DE APLICACIÓN El módulo de aplicación fue desarrollado con miras al acople del sistema H-ARD con la aplicación de la Investigación global [MIRANDA]. La estructura se muestra en la figura 36 y consta de un estado principal de donde se puede acceder a procesos como la medición del espectro de impedancia eléctrica y el almacenamiento de datos en memorias USB. La implementación de este módulo se basó en el funcionamiento de un sistema operativo, donde hay un estado principal, que es el escritorio, y de ahí se accede a los demás programas. 110 Figura 36. Diagrama de estados del módulo de aplicación Medición del Espectro de Impedancia Eléctrica Memoria Conectada Configuración del dispositivo USB Proceso Principal Memoria Configurada Almacenamiento terminado Almacenar Almacenar Datos en memor ia USB Fuente: Los Autores Una vez el sistema se encuentre en el estado principal, el usuario puede ejecutar el proceso de medición del espectro de impedancia eléctrica del tejido de cerviz o el proceso de almacenamiento de datos en memoria USB. En este estado el sistema también habilita la detección de dispositivos conectados al puerto USB. En caso de haber una conexión, se da paso a la ejecución del proceso de configuración del dispositivo donde se retorna el reporte de memoria configurada si el dispositivo es una unidad de almacenamiento o el reporte de no soportado si es de otra clase. Cabe resaltar que el proceso de medición del espectro de impedancia eléctrica es solamente simulado (dado que no corresponde a este proyecto [GARCIA-VALLE]). El resultado de esta simulación son datos que han sido almacenados previamente en la memoria del sistema y que corresponden a datos reales obtenidos de la investigación del Físico e Ingeniero David Miranda, en su trabajo de maestría, [MIRANDA]. Lo anterior permite el acercamiento a las condiciones reales de la medición. Los datos 111 corresponden a 8 mediciones diferentes por paciente, con 7 datos por medición, los cuales mantienen un formato de punto flotante de 4bytes; en total son 56 datos por paciente. Para el proceso de la aplicación se desarrolló un sistema de archivos muy específico donde los datos obtenidos de la medición del espectro de impedancia son almacenados en la memoria interna del sistema como un archivo con una cabecera especial. Dicha cabecera corresponde a una cadena de caracteres ASCII específica (con una longitud de 48bytes), que sirve como identificador especial del sistema H-ARD, y a los parámetros del equipo de medición del espectro de impedancia eléctrica, tales como la ganancia y la corriente, con formato de punto flotante de 4bytes. De esta forma, los datos quedan preparados para ser almacenados en la memoria USB. Gracias a la codificación en punto flotante de las mediciones, el sistema ofrece seguridad y privacidad en la lectura de los mismos debido a que los editores de texto solamente permiten ver la cabecera del archivo y no la información de las medidas. Los archivos creados y almacenados en la memoria USB podrán ser analizados con una herramienta especial de Matlab desarrollado por los autores (véase apartado 3.5). Igualmente para cuestiones de seguridad, una vez realizado el almacenamiento de datos en la memoria USB, el usuario no podrá realizar copias de los datos en la misma memoria ni en otras memorias diferentes. El total de datos a almacenar en la memoria USB son 280bytes que corresponden a 48bytes de la cabecera, 8bytes de los parámetros de medición y 224bytes de los datos medidos. El proceso de medida del espectro de impedancia debe seguir el procedimiento documentado en el numeral 3.3 del trabajo de investigación, [MIRANDA]. Debe llenarse también el FORMULARIO PARA LA MEDICIÓN DE ESPECTRO DE IMPEDANCIA ELÉCTRICA EN CUELLO UTERINO, de la tabla 3.1 de la misma tesis (ver anexo D). Dado que el formulario requiere que se anote el nombre del archivo, el sistema despliega el nombre del archivo almacenado cada vez que son guardados los datos en 112 la memoria USB, resaltando que el sistema no permite que existan nombres repetidos en la memoria. Para orientar al usuario en el uso de la aplicación, se ha elaborado una guía de usuario (documentada en el anexo C) donde se explican los pasos a seguir y se muestran los diferentes mensajes que el sistema muestra como información y para la toma de decisiones. 3.4 ARQUITECTURA DE LA MEMORIA DEL SISTEMA Dadas las limitaciones en memoria RAM que presenta el DSP y al gran volumen de datos que maneja el sistema de almacenamiento H-ARD, se utilizó la memoria interna del EZ Host* como extensión de la memoria RAM del DSP. De esta forma, la memoria interna de datos del DSP junto con la memoria de datos del EZ-Host conforman la memoria general del sistema, como se muestra en figura 37. El espacio de memoria del DSP fue destinado para datos relevantes, de acceso constante y de tamaño reducido (por ejemplo las características de los dispositivos USB conectados al sistema y las características de las unidades de almacenamiento, en cuanto a su estructura lógica, incluidas en estos dispositivos†). Entre tanto, en la memoria del EZ-Host fueron ubicados los buffers de las diferentes entidades de la arquitectura de software. El tamaño y la ubicación de estos Buffers son totalmente modificables por software pues es el DSP quien realmente administra esta memoria. La figura 37 expone la distribución de la memoria del EZ-Host. Teniendo en cuenta que, por limitaciones de hardware, la interfaz SPI es la que permite el intercambio de datos entre el DSP y el EZ-Host y que el volumen de datos manejado * El EZ Host ofrece cerca de 15kBytes de memoria RAM interna Una memoria USB ofrece dos tipos de información: la que es propia del dispositivo USB y la correspondiente a la estructura lógica relacionada con el formato de archivos de la unidad de almacenamiento. † 113 Figura 37. Distribución de memoria del sistema H-ARD SISTEMA H-ARD Memoria RAM EZ Host Buffer del sistema de Archivos FAT32 520Bytes Buffer de datos de la Aplicación 2KBytes Buffer del Driver de MSC 40Bytes Buffer del Dr iver de SCSI 50Bytes Buffer de datos de Control y Configuración de USB (Requests, Dscr ipto res, etc .) 110By tes Memoria RAM DSP 4Kbytes Variables del sis tema Estructur as con la infor mación de los dispositivos USB Estructur as con la infor mación de los volúmenes o unidades de almacenamiento Buffer del Driver del Controlador Host (almacenamiento de los Transaction Lis t) 860 Bytes Fuente: Los autores es elevado, es necesario buscar mecanismos que mejoren los tiempos de transferencia entre controladores. Para ello, es necesario analizar los requerimientos de memoria y manejo de datos de cada entidad de software, de tal forma que se pueda obtener una noción del comportamiento del flujo de datos entre los controladores y en sí del manejo de memoria del sistema. El análisis es realizado en torno al módulo de sistema de archivos FAT desarrollado puesto que, aparte del módulo de aplicación, es la entidad con manejo de volúmenes de datos más crítico. Se asumirá un comportamiento similar para las demás capas que conforman el sistema. 114 El sistema de archivos FAT requiere, para aspectos de configuración y control, la lectura de sectores específicos del dispositivo de almacenamiento USB, los cuales tienen una longitud de 512 bytes. De estos sectores de datos usualmente se extraen o se actualiza información para luego enviarlos nuevamente al dispositivo. Este es un volumen de datos crítico para la memoria del DSP. En la mayoría de casos no todos los bytes del sector leído son relevantes. Por tanto, se ha implementado un sistema de manejo de memoria donde los datos que se reciben del puerto USB permanezcan en Buffers dedicados del EZ-Host (cada entidad de hardware maneja su propio buffer) y únicamente los campos que sea menester extraer o modificar son los que se transportan por SPI al DSP. Así se disminuyen los tiempos de flujo de datos por SPI y a su vez se evitan excesivos volúmenes de datos en la memoria RAM del DSP. La figura 38 muestra el mecanismo implementado para el flujo de datos a través de todo el sistema. Figura 38. Flujo lógico de datos del sistema H-ARD EZ-HOST Buffer Aplicación Buffer FAT DSP M EM ORIA USB BUS USB Buffer Driver SCSI Memoria Flash SPI M emoria RAM DSP Buffer Driver MSC Buffer Driver USB Interfaz USB Buffer Driver Contr olador Host Fuente: Los Autores 115 Interfaz SPI 3.5 INTERFAZ GRÁFICA EN MATLAB PARA LECTURA DE ARCHIVOS Con el objetivo de ofrecer un software para PC que realice la lectura de los archivos creados con en sistema H-ARD, se ha creado la herramienta gráfica LectorA, con el editor de interfaces gráficas Guide, del software Matlab, la cual permite de una forma amigable para el usuario, visualizar los datos de las diferentes mediciones del espectro de impedancia eléctrica de tejido de cuello uterino, tomadas para un paciente y almacenadas en una memoria USB. A continuación se explica de forma general el funcionamiento de la herramienta y se muestran los elementos que la componen y que hacen posible su uso. Cuando un archivo es leído mediante LectorA, la herramienta verifica que la cabecera corresponda a la cadena de caracteres válida prealmacenada, para proseguir con la apertura del archivo, de lo contrario no se leen los datos. Posteriormente se extraen los parámetros de medición, corriente y ganancia, propios del equipo con que se tomaron los datos del espectro de impedancia de tejido. Por último, se extraen los datos, almacenados en punto flotante, correspondientes a las ocho mediciones* por paciente y se habilitan para que el usuario pueda graficar la medición que desee. LectorA.m contiene el código de ejecución de la herramienta. La figura 39 muestra su entorno gráfico, donde se puede apreciar los diferentes elementos que la conforman. Los más representativos son: 1. Abrir Archivo: Seleccionando el botón Abrir Archivo, el usuario puede elegir la unidad de almacenamiento o la ubicación de donde desee abrir el archivo .BIN (dado que el sistema H-ARD crea archivos con esta extensión). 2. Mediciones: después de que la herramienta verifica que la cabecera del archivo sea la adecuada, se habilita el selector de opciones Mediciones el cual * Refiérase al apartado 3.3.5 116 permite escoger para graficar, una de las ocho mediciones del espectro de impedancia. 3. Nombre del Archivo: Lectora permite mediante este cuadro de despliegue de texto, ver el nombre del archivo abierto para facilitarle al usuario la identificación del paciente y la correspondencia de los datos. 4. Cuadro de Gráficas: el cuadro de gráficas permite visualizar los datos de las mediciones. El eje X corresponde a las frecuencias utilizadas en la señal de medición [MIRANDA] y el eje Y corresponde a la parte real del espectro de impedancia del tejido de cuello uterino. 5. Parámetros del Equipo de Medición: LectorA despliega en los cuadros de los parámetros del equipo de medición, la ganancia y la corriente utilizadas en la toma de muestras. 6. Ayuda: mediante el botón de ayuda, LectorA permite desplegar una ventana adicional que contiene una breve información acerca del procedimiento para utilizar la herramienta. 7. Menú: El menú ubicado en la parte superior contiene las opciones Ayuda y Créditos, las cuales orientan al usuario en la función y la utilización de la herramienta, y le permite saber de los creadores de la herramienta, respectivamente. 117 Figura 39. Cuadro de controles de la herramienta LectorA Fuente: Los Autores 118 4. PRUEBAS Con el fin de establecer el grado de rendimiento del sistema H-ARD y de verificar y resaltar sus características, en este capitulo se exponen las pruebas realizadas al sistema, las cuales se realizaron desde la capa física o hardware hasta las capas superiores; teniendo en cuenta que el sistema H-ARD tiene una arquitectura estructurada en capas. Finalmente, se evaluó el sistema H-ARD bajo los requerimientos y recomendaciones de la autoridad en materia de USB, el USB Implementers Forum (USB-IF), para el desarrollo de sistemas Host USB embebidos, [USB-IF1]. Para todas las pruebas se utilizó una memoria USB marca Flash Drive de 128MB, mientras no se especifique lo contrario. 4.1 PROCEDIMIENTO PRELIMINAR Las diferentes pruebas del sistema requieren la ejecución preliminar de la configuración del sistema H-ARD, que incluye la configuración del puerto SPI y de los pines GPIO del DSP; la configuración de la LCD y la configuración del controlador EZ-Host desde el DSP. 4.2 PRUEBA 1. PROTOCOLO LCP Tiene como objetivo verificar el protocolo LCP (Link Control Protocol)[CYPRESS1] usado en la comunicación entre el DSP y el EZ-Host. Para ello son enviados los diferentes comandos LCP usados por el sistema, desde el DSP hacia el EZ-Host. Mediante la recepción del ACK y la respectiva ejecución del comando, se verifica tanto 119 su correcta creación y transmisión por parte del DSP como su entendimiento del lado del EZ-Host. La tabla 12 muestra los comandos utilizados para la prueba y el respectivo resultado. Tabla 12. Comandos LCP probados COMANDO LCP COMM_RESET COMM_EXEC_INT COMM_READ_CTRL_REG COMM_WRITE_CTRL_REG COMM_READ_MEM COMM_WRITE_MEM RECEPCIÓN ACK SI SI SI SI SI SI EJECUCIÓN SI SI SI SI SI SI RESULTADO Aprobado Aprobado Aprobado Aprobado Aprobado Aprobado 4.3 PRUEBA 2. DRIVER DE USB Esta prueba verifica el funcionamiento del Driver de USB en la configuración de dispositivos periféricos y a su vez en la ejecución de las transferencias de control, en cumplimiento de las funciones de un Host embebido para el control de los dispositivos USB conectados a los puertos tipo A. De acuerdo con la figura 31 del apartado 3.3.3, en la estructura del Driver de USB se vislumbran dos flujos de datos: el primero abarca desde la entidad de Configuración de dispositivos USB, pasando por la entidad de creación de USB request, las transferencias de control y llegando al Driver del Controlador Host; el segundo comprende los datos provenientes de la capa superior (Driver de la Clase de Almacenamiento Masivo), pasando por las transferencias Bulk y finalizando con el Driver del Controlador Host nuevamente. Por tal motivo, la prueba del Driver de USB se centra en la comprobación del flujo de datos correspondiente a la Configuración USB; la comprobación de las transferencias Bulk se realiza junto con la prueba del Driver de MSC. 120 El desarrollo de la prueba consiste en ejecutar todo el proceso de enumeración de un dispositivo USB, llevado a cabo mediante Requests USB específicos [USB-IF5] y a su vez mediante transferencias de control. El dispositivo debe responder adecuadamente a los Requests que conforman el proceso de enumeración (sin retornar STALL). Así mismo, el sistema debe identificar y aceptar los dispositivos USB de almacenamiento masivo de datos (pertenecientes a la clase MSC) que utilicen el protocolo de transporte BOT y que hagan uso del juego de comandos SCSI. La tabla 13 muestra los resultados de la prueba. Tabla 13. Resultado de la prueba de configuración de dispositivos USB. DISPOSITIVO CONECTADO RESULTADOS OBSERVACIONES Memorias Flash USB: Sony 512MB Configurado Flash Drive 128MB Configurado Kingston 512MB Configurado Avixe 256MB No Configurado Pertenece a MSC* pero no cumple con SCSI Otros Dispositivos: Optical Wheel Mouse USB, Dell No configurado No Pertenece a MSC* Impresora USB, LexMark Z715 No configurado No Pertenece a MSC* Cámara Fotográfica Digital, Sony No configurado Pertenece a MSC* pero no DSC-P93A cumple con SCSI ni con BOT Las pruebas siguientes requieren que el dispositivo USB se encuentre previamente configurado a nivel de USB (enumerado). 4.4 PRUEBA 3. DRIVER DE LA CLASE USB DE ALMACENAMIENTO MASIVO (MSC) Esta prueba verifica el funcionamiento del protocolo de transporte BOT y de las transferencias Bulk. Adicionalmente son probados los comandos SCSI de configuración * Mass Storage Class 121 únicamente (de acuerdo con la tabla 9 del apartado 3.3.2) debido a que los demás comandos necesitan una dirección de bloque lógico (LBA) o número de sector específico (cuyo manejo es propio del Driver de FAT). Por ello, comandos como lectura y escritura son probados junto con el sistema de archivos FAT32. El procedimiento consiste en enviar un comando SCSI mediante el protocolo BOT y a su vez mediante las transferencias Bulk. La prueba se considera aprobada si el dispositivo responde correctamente ante el comando SCSI enviado. Para esta prueba se utilizaron las memorias USB configuradas en el apartado anterior (ver tabla 13). En los resultados obtenidos, se observó la correcta respuesta de los dispositivos de almacenamiento ante los comandos SCSI utilizados para configuración (Inquiry, Test Unit Ready y Read Capacity). 4.5 PRUEBA 4. SISTEMA DE ARCHIVOS FAT 32 Las pruebas para el sistema de archivos FAT32 consisten en la verificación de procesos como la configuración de FAT (extracción de las características y estructura lógica de la unidad), la búsqueda y actualización de sectores libres en la tabla de FAT, la búsqueda y actualización de entradas libres y de nombres de archivos en el directorio raíz, y la escritura de datos en clusters. Igualmente son probados los comandos SCSI de lectura y escritura. La prueba concluyó con el correcto funcionamiento de todos los procesos necesarios para la escritura de un archivo en las unidades de almacenamiento, de la tabla 13, configuradas. 122 4.6 PRUEBAS GENERALES DEL SISTEMA Las pruebas generales del sistema consisten en el análisis, comprobación y obtención de diversas características y parámetros generales de funcionamiento. 4.6.1 NÚMERO DE ARCHIVOS Esta prueba permite observar de manera general la cantidad de archivos (independiente de su tamaño) que el sistema es capaz de almacenar en una misma memoria USB, de acuerdo a lo especificado con el formato del nombre (ver apartado 3.3.1). A su vez, la prueba permite evaluar la capacidad del sistema H-ARD para mantener una interacción continua con una memoria USB. El procedimiento que se siguió para la prueba fue el almacenamiento reiterado de un archivo de 2Kbytes en una memoria con suficientes espacio. La memoria Flash USB utilizada en esta prueba fue la Kingston, Data Traveler® de 512MB. Dentro del desarrollo de la prueba el sistema mantuvo intercomunicaciones con una memoria permenetemente escribiendo entre 140 y 180 archivos de forma continua y siendo detenido manualmente por el ususario (por cuestiones de tiempo de ejecución). Para verificar el número de archivos que el sistema es capaz de crear (de acuerdo al formato de nombre estipulado) se procedio a crear un archivo con el nombre &P999990.TXT y se observo la creación satisfactoria de los archivos continuos hasta el archivo &P999999.TXT Aunque no se logró obtener el límite de capacidad de generación de nombres del sistema H-ARD (1millón de archivos) por cuestiones de tiempo de ejecución, la realización de esta prueba permitió corroborar que el sistema es capaz de crear hasta el nombre &P999999, resaltando su amplia capacidad de generación de archivos. Aún así, cabe anotar que las limitantes de este parámetro son: la capacidad de la unidad de almacenamiento y el formato del nombre utilizado por el sistema H-ARD, y que en caso 123 de habilitarse un teclado para el ingreso del nombre, la única limitante pasaría a ser la capacidad de almacenamiento de la memoria USB conectada. 4.6.2 TAMAÑO DE ARCHIVOS El objetivo de esta prueba es analizar la capacidad del sistema para almacenar archivos de gran tamaño, por lo cual se procede a guardar un archivo tan grande como la memoria del H-ARD lo permita. De acuerdo con la capacidad de memoria del sistema, se asignó un total de 10kbytes de datos de prueba. Como resultado se obtuvo que el sistema logró satisfactoriamente almacenar los 10kbytes de datos en la memoria, escritos como un único archivo con extensión .BIN, lo cual comparado con el tamaño de datos a almacenar por la aplicación (280bytes de acuerdo a lo mencionado en el apartado 3.3.5), es una característica que garantiza que los requerimientos de tamaño de archivos puedan ser cumplidos. 4.6.3 ESCRITURA EN DOS MEMORIAS CONECTADAS SIMULTÁNEAMENTE El sistema está diseñado para el almacenamiento de datos en hasta dos memorias USB conectadas simultáneamente (con posibilidad de expansión a cuatro). Por tanto para corroborar esta característica se escribieron 280bytes de datos en dos unidades de almacenamiento diferentes (la memoria Flash Drive 128MB y la memoria Kingston Data Traveler® 512MB), de manera secuencial, las cuales se encontraban conectadas a la vez, obteniéndose una respuesta de escritura exitosa en las dos memorias. 4.6.4 DETECCIÓN DE CONEXIÓN Y DESCONEXIÓN Cada vez que el sistema identifica la conexión y/o desconexión de un dispositivo USB, despliega un mensaje de la acción respectiva en la LCD. Adicionalmente, cuando una unidad de almacenamiento de la clase USB Mass Storage es identificada y configurada, el sistema despliega un mensaje de configuración exitosa. 124 Para verificar la capacidad del sistema en identificar la conexión y desconexión de dispositivos USB de almacenamiento, se procedió a conectar memorias USB en cada uno de los puertos donde el sistema desplegó correctamente los mensajes de conexión y desconexión. Así mismo, se verificó la configuración y el respectivo despliegue del mensaje, cuando es conectada una memoria USB soportada por el sistema. La figura 40.a, 40.b y 40.c muestran los respectivos mensajes de la LCD. 4.7 REQUERIMIENTOS Y RECOMENDACIONES DEL USB IMPLEMENTERS FORUM Para tener un punto de referencia acerca de la calidad y versatilidad del sistema HARD, se evaluaron los diferentes requerimientos y recomendaciones del USB Implementers Forum Inc. (USB-IF), para sistemas con Hosts USB embebidos [USB-IF1]. Estos requerimientos permiten optar por la certificación del logo USB* Figura 40. Mensajes de conexión, configuración y desconexión de un dispositivo USB a. b. c. a. Conexión de dispositivo USB c. Desconexión de dispositivo USB b. Configuración exitosa de memoria USB Fuente: Los Autores * La certificación del logo USB es un aval de calidad proporcionado por el USB Implementers Forum a aquellos dispositivos que cumplan con el estándar y pasen las pruebas de verificación de desempeño, de acuerdo a las 125 4.7.5 Requerimientos para Puertos Host Embebidos ¾ Pruebas eléctricas del Sistema Host: El EZ-Host está certificado con el logo USB OTG, por tanto cumple con los requerimientos exigidos por el USB-IF tanto a nivel eléctrico como a nivel de característica OTG, [CYPRESS4]. ¾ Lista de periféricos objetivo: Un Host Embebido debe especificar una Lista de periféricos objetivo (Tageted Peripheral List ó TPL) para indicar cuales dispositivos periféricos son soportados. La tabla 14 muestra la TPL con el formato de clases USB, del sistema H-ARD. ¾ Alimentación: El sistema es capaz de suministrar hasta 500mA de manera simultánea en cada puerto, soportando el valor máximo que puede consumir del bus cualquier dispositivo USB no autoalimentado, de acuerdo con [USB-IF5]. De esta manera se abarcan los dispositivos especificados en la TPL, cumpliendo con el requerimiento de alimentación de periféricos. ¾ Velocidad: El sistema H-ARD soporta dispositivos con velocidades de Full Speed únicamente. ¾ Tipos de Transferencias: El USB-IF determina que un Host USB embebido debe soportar al menos las transferencias de Control. Los otros tipos de transferencias (bulk, isócronas y de interrupción) son opcionales. El sistema H-ARD soporta las transferencias de Control y Bulk. ¾ Soporte de Hub: El USB-IF no exige soporte para HUB. En el caso del sistema H-ARD, no fue implementado soporte para HUB con el propósito de reducir la complejidad del sistema y los recursos necesarios. ¾ Interoperabilidad: El Host USB embebido debe demostrar interoperabilidad con los dispositivos de la TPL. El sistema H-ARD está en capacidad de interactuar con los dispositivos pertenecientes a la Clase Mass Storage y que cumplan con los requerimientos de la TPL del sistema (ver tabla 14). características del dispositivo. Este aval implica el derecho de utilización del logo oficial de USB. Más información en www.usb.org 126 Tabla 14. Lista de periféricos objetivo del sistema H-ARD Nombre de Descripción la Clase Mass Memorias Flash USB Storage y/o unidades de Código Código de de Clase Sub Clase 08h Protocolo Velocidades Soportadas 06h 50h Full Speed Velocidad almacenamiento. masivo Algunos Dispositivos Probados Fabricante Modelo Vendor ID Product ID Descripción Flash Drive OT_USB2.0 0x0EA0 0x2168 Memoria Flash Full Speed USB de 128MB de capacidad Kingston Data Traveler® 0x08EC 0x0016 Memoria Flash Full Speed USB de 512MB Sony 0x054C 0x0243 Memoria Flash Full Speed USB de 512MB SanDisk 0x0781 0x7200 Memoria USB de Full Speed 256Mb, reproductor de MP3 PNY 0x0D7D 0x1600 Memoria Flash Full Speed USB de 256MB ¾ Indicación al Usuario: Con el propósito de cumplir con el requerimiento de indicarle al usuario si el dispositivo periférico conectado es soportado, el sistema despliega mensajes textuales indicativos en la pantalla LCD. 4.7.6 REQUERIMIENTOS PARA HOST USB EMBEBIDOS CON MÚLTIPLES CONECTORES RECEPTORES TIPO A. El H-ARD posee dos puertos con conectores tipo A (con posibilidad de expansión a cuatro), característica que lo ubica en esta categoría de dispositivos. Aún así, el sistema 127 cumple con los requerimientos de certificación exigidos por el USB-IF para Host Embebidos con múltiples conectores receptores tipo A, de la siguiente forma: ¾ Cumple de los requerimientos para Host USB Embebidos, expuestos en el apartado anterior. ¾ Cada puerto está en capacidad de operar independiente de la actividad de los demás puertos, siempre y cuando la aplicación que se ejecute sobre el sistema H-ARD lo permita. ¾ El sistema es capaz de suministrar simultáneamente la corriente requerida en cada puerto (500mA en cada puerto que conlleva a un máximo de 1A en la configuración de dos puertos y 2A en la configuración de expansión). ¾ Todos los puertos soportan la misma velocidad (Full Speed). ¾ Todos los puertos soportan los mismos dispositivos, en concordancia con la TPL del sistema. 4.7.7 RESULTADOS DE LA EVALUACIÓN DEL H-ARD BAJO LOS REQUERIMIENTOS DEL USB-IF Después de evaluar el H-ARD bajo los requerimientos y recomendaciones del USB-IF, se puede concluir que el sistema cumple con las condiciones necesarias para solicitar ante la autoridad en materia de USB, el USB-IF, la certificación del logo USB, lo que resalta las características del sistema y reitera su calidad bajo los estándares para la implementación de sistemas Host USB embebidos. 128 CONCLUSIONES Y OBSERVACIONES ¾ Se diseñó e implementó el sistema de almacenamiento de datos en memorias Flash USB portátiles, H-ARD, basado en un Host USB embebido, el cual se ha propuesto para suplir la necesidad tanto del grupo de investigación CEMOS* como de los sistemas embebidos actuales, de medios de almacenamiento con mayor capacidad. El sistema tiene completa autonomía del PC; puede controlar de manera independiente hasta dos memorias portátiles Flash USB† conectadas simultáneamente y puede guardar archivos con un formato compatible con un sistema operativo común. Sus prestaciones permiten aprovechar las características de las memorias portátiles con tecnología Flash y con conectividad USB, en cuanto a facilidad para el transporte de datos, alta densidad de almacenamiento, flexibilidad de expansión o reemplazo y cómodo acceso desde un PC a los datos almacenados en la memoria. ¾ El Sistema desarrollado cuenta con las características de un Host USB embebido multipuerto. Posee dos puertos Host USB (con posibilidad de expansión a cuatro) los cuales permiten la conexión de dispositivos periféricos USB. ¾ Para el control general de dispositivos USB, se implementó un Driver de USB que permite llevar a cabo las diversas tareas de un Host, tales como la configuración y control de dispositivos USB, el manejo de peticiones USB (USB requests) y la transmisión de datos por el Bus. Adicionalmente, el Driver de USB desarrollado permite el manejo de transferencias de Control y el manejo de Transferencias Bulk, para el intercambio de datos. * † Escuela de Ingenierías Eléctrica, Electrónica y Telecomunicaciones de la Universidad Industrial de Santander Que cumplan con los requerimientos expuestos en el apartado 4.7 129 ¾ Para el control específico de dispositivos de almacenamiento, se implementó un Driver de clase que permite la interacción con dispositivos USB de la clase de almacenamiento masivo (MSC), que funcionen bajo el protocolo de clase Bulk Only Transport (BOT) y el juego de comandos SCSI para dispositivos de Acceso directo SBC. Por lo tanto, el sistema H-ARD está en capacidad de controlar dispositivos USB de almacenamiento (con las anteriores propiedades), sin la intervención de un PC; característica ideal para los sistemas embebidos portátiles. ¾ Dado que las memorias portátiles con tecnología Flash trabajan con el formato de archivos FAT32, se desarrolló un Driver para el manejo de archivos basado en el formato FAT32, el cual soporta dispositivos con sectores de longitud de 512bytes. Dicho Driver está en capacidad de escribir y leer sectores, escribir en clusters de datos, leer y escribir en la tabla FAT, buscar campos de nombre de archivos en el directorio raíz y crear archivos en este directorio. ¾ En la recopilación bibliográfica se analizó y concluyó que para el desarrollo de sistemas Host USB embebidos es necesario implementar un Controlador Host que facilite en hardware los medios para el control de dispositivos periféricos. Por tanto, se diseñó e implementó la tarjeta HC-USB basada en el controlador Host EZ-Host™ de Cypress, la cual se encarga de las tareas de la capa física y de protocolo del sistema USB, propias de un Host y permite el envío de transferencias y la administración del acceso al bus, entre otras características. Cabe resaltar que un Controlador Host, puede también ofrecer las herramientas para implementar un dispositivo periférico, como el caso del EZ-Host, sin embargo, un controlador de periférico (como el FT2232 de FTDI) no tiene soporte para Host USB. ¾ La tarjeta HC-USB fue desarrollada siguiendo los requerimientos generales para el desarrollo de un circuito impreso con tecnología de montaje superficial, así 130 como con las recomendaciones para la implementación de hardware con interfaz USB. Específicamente se logró mantener planos de tierra apreciables, los cuales protegen a la tarjeta de efectos negativos como los analizados en el apartado 2.2.7, dado que se manejan altas velocidades de transmisión. Además, la tarjeta se desarrolló con dispositivos de tecnología CMOS, de bajo consumo de potencia. ¾ Con el objetivo de interactuar con el controlador Host y de administrar sus funciones, se desarrolló un Driver que controla desde el DSP las funciones del EZ-Host. Este Driver permite también la creación de Transaction Descriptors a partir de las transacciones a llevar a cabo y tiene la capacidad de cargar varios Transaction Descriptors al mismo tiempo. Adicionalmente posee un control de errores del protocolo USB, complementario al control de errores del BIOS del EZHost. ¾ El hardware global del sistema H-ARD esta constituido por la tarjeta desarrollada por los ingenieros Juan Carlos Vargas y Cristihan García, [GARCIA-VARGAS] (proyecto relacionado con la investigación que enmarca este proyecto) y la tarjeta HC-USB desarrollada en este trabajo. La unión de estos dispositivos evidencia cómo se pueden aprovechar herramientas desarrolladas en trabajos anteriores a beneficio de nuevos proyectos; así mismo, el trabajo conjunto en la investigación [MIRANDA] permite argüir la validez de desarrollar investigaciones multidisciplinaras que permitan la integración de varios proyectos y la interacción de diferentes áreas de conocimiento. ¾ El sistema H-ARD cumple con los requerimientos y recomendaciones propuestas por la autoridad en materia de USB, el USB Implementers Forum (USB-IF), para la implementación de dispositivos Host USB embebidos, haciendo al sistema apto para solicitar la certificación de calidad del logo USB ante el USB-IF y a su vez la aprobación de conformidad con el estándar. 131 ¾ Se diseñó una arquitectura de software por módulos que ofrece flexibilidad en cuanto al reemplazo y modificación de las diferentes entidades de software. Complementario a ello, la programación del software del sistema estuvo orientada a la portabilidad e independencia de la plataforma de hardware y al mismo tiempo se hizo énfasis en el aprovechamiento de las herramientas de programación del lenguaje C para resolver criterios de diseño de software como velocidad de cómputo y tamaño de programa, entre otros. ¾ Durante las pruebas del sistema se observó que cuando en una transmisión ocurre el error Nak (el cual indica que los buffers de datos del dispositivo se encuentran llenos y no están en condiciones de recibir datos) es preciso esperar mínimo 10ms (10 frames de datos)* para volver a intentar la transmisión, tiempo significativo que se ve reflejado en retardos de transmisión de datos. Sin embargo, el tiempo de respuesta del dispositivo o memoria USB depende de las características de este (como velocidad de procesamiento y tamaño del buffer). Esta clase de error se resuelve a nivel de Driver de Controlador Host, contrario a errores como Stall los cuales deben ser resueltos por capas superiores al Driver de USB, dado que indican problemas fuera del protocolo USB. ¾ Con este trabajo, y tomando como base los avances presentados en trabajos anteriores relacionados con USB, es posible argumentar que se ha logrado un amplio conocimiento de la interfaz USB, de su funcionamiento, su arquitectura y sus herramientas; logro que permite el desarrollo de nuevas aplicaciones y proyectos con el uso de tecnologías vigentes como lo es USB, así como la adquisición de nuevas competencias y conceptos en materia de dispositivos USB (periféricos y Host Embebidos). * Este dato fue obtenido de acuerdo al promedio de mediciones tomadas para varias memorias USB 132 ¾ Para facilitar la lectura desde un PC de los archivos almacenados con el sistema H-ARD, se desarrolló la herramienta gráfica LECTORA, mediante el editor de interfaces gráficas Guide de Matlab7.0, la cual facilita la apertura de archivos con extensión .BIN desde una memoria USB y permite graficar los datos de las mediciones del espectro de impedancia eléctrica del tejido de Cerviz de una paciente, de acuerdo con lo estipulado en los requerimientos preliminares presentados en el apartado 2.1. ¾ Se utilizaron los programas para PC WinHex v12.85 y USB Monitor v2.37, los cuales son un buen complemento para desarrollar dispositivos que se comuniquen con memorias Flash USB, dado que permiten el análisis de los diferentes bloques lógicos de una unidad de almacenamiento, y facilitan el monitoreo de datos entre el PC y la memoria, para hacer ingeniería inversa, respectivamente. ¾ El sistema diseñado en el presente proyecto es el primer paso en el desarrollo de sistemas Host USB embebidos, y un avance en la búsqueda de la conexión, de manera independiente del PC, entre dispositivos con interfaz USB. Con lo anterior se vislumbra la posibilidad de desarrollar sistemas embebidos con mayores prestaciones gracias a los servicios que pueden proporcionar periféricos como teclados, impresoras y memorias USB, así como los dispositivos de aplicación específica en instrumentación, comunicaciones y otros tantos campos de la electrotecnología y bioingeniería. 133 NUEVAS PERSPECTIVAS ¾ Con base en los Drivers de USB y de Controlador Host implementados para el sistema H-ARD, se pueden desarrollar diferentes Drivers de Clase (por ejemplo para dispositivos de interfaz Humana e impresoras) para ampliar el rango de dispositivos USB soportados y aumentar las opciones de servicios al sistema embebido que se diseñe. Sin embargo, para ello es necesario complementar el Driver de USB con las transferencias Isócronas y de interrupción para cubrir todos los tipos de transferencias y todas las clases de dispositivos periféricos. ¾ El desarrollo de un Driver de clase HID (dispositivos de interfaz humana) permitiría adicionarle al sistema conectividad con teclados USB, de tal forma que se pueda ingresar los nombres de los archivos que se crean en la memoria portátil, complementado de esta forma el sistema de archivos FAT32 y la aplicación misma del sistema H-ARD. Por otra parte, varios dispositivos de aplicación específica basan su interfaz USB en el funcionamiento de esta clase de dispositivos (HID), lo que indica que el Driver de HID serviría también para soportar dispositivos de aplicación específica como tarjetas de adquisición de datos y demás. ¾ La tarjeta HC-USB fue diseñada con miras a aprovechar las herramientas y recursos que ofrece el EZ-Host. Por tanto, dicha tarjeta ofrece para futuras aplicaciones la posibilidad de expansión de dos a cuatro puertos Host USB (receptores tipo A), la posibilidad de trabajar en modo independiente (StandAlone) y la posibilidad de utilizar interfaces de conexión, con procesadores externos, de alta velocidad (HPI). Así mismo, cuenta con un puerto miniB que le permite trabajar como un periférico USB. Vale la pena resaltar que la adición en hardware de estas herramientas complementación en software. 134 requiere la respectiva adaptación y ¾ Dado que USB es una interfaz serial de alta velocidad, requiere de técnicas específicas para reducir el impacto de efectos electromagnéticos negativos en las señales que se transmiten. Las recomendaciones para la elaboración de PCB propuesta por [CYPRESS3], sugieren la utilización de placas de PCB de cuatro y más caras para obtener planos de tierra y de fuente dedicados. Aún cuando en este proyecto el diseño de PCB consiste en una tarjeta de dos caras con áreas apreciables de planos de tierra, se plantea la necesidad de incursionar con la tecnología de diseño y fabricación de PCB de cuatro caras, para cumplir con las recomendaciones de diseño de PCB para dispositivos con puertos USB, y a su vez lograr una reducción en el área total de la tarjeta. Este proceso de fabricación de PCB de cuatro caras permitiría también a la Escuela de Ingeniería Eléctrica, Electrónica y Telecomunicaciones de la Universidad Industrial de Santander estar a la vanguardia en los procesos tecnológicos mundiales de diseño de circuitos impresos. ¾ El presente trabajo permite vislumbrar la complejidad en software de los sistemas embebidos actuales. Por ello, nuevos lenguajes de programación y herramientas de modelamiento de software orientadas a objetos (como C++ y el reciente UML, respectivamente) están siendo necesarios para mejorar los procesos de desarrollo de software en un sistema embebido y reducir su complejidad de implementación [MARWEDEL]. ¾ Una excelente alternativa para integrar el proceso de almacenamiento de datos en memorias portátiles (desarrollado en el presente trabajo) con otros procesos dentro de un sistema embebido, es el desarrollo y/o la implementación de sistemas operativos en tiempo real (RTOS o Real Time Operating Systems), para controlar diferentes y complejos procesos de forma rápida y eficiente. Sin embargo, dado que la carga computacional es elevada, para ello se recomienda 135 la utilización de procesadores de más de 16bits (como por ejemplo tipo ARM de 32bits o incluso mayores). ¾ Gracias al puerto OTG del EZ-Host y al conector miniB incorporado en la tarjeta HC-USB, el sistema está en capacidad de ofrecer conectividad con dispositivos que utilicen la tecnología complementaria OTG, la cual es el siguiente paso a seguir, después del estudio y desarrollo de sistemas Host USB embebidos, en la tarea de explorar e incorporar nuevas tecnologías a los diseños de sistemas embebidos. 136 REFERENCIAS BIBLIOGRÁFICAS [ANDERSON] ANDERSON, Don. USB System Architecture. Menlo Park, California : ADDISON-WESLEY. 2001. 542p. ISBN: 0-201-46137-4 [ASCENCIO] ASCENCIO, Freddy. Diseño de Un Sistema de Adquisición de Datos por Bus Serial Universal (USB) y memoria SRAM externa. Bucaramanga, 2005. 140p. Trabajo de Grado (Ingeniería Electrónica). Universidad Industrial de Santander. Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones. [AXELSON]AXELSON, Jan. USB complete. 2ed. Madison : Lakeview Research, 2001. 514p. [BARR] BARR, Michael. Programming Embedded Systems: in C and C++. O’Reilly, 1999. 191p. ISBN 1-56592-354-5 [CATSOULIS] CATSOULIS, John. Designing Embedded Hardware. Sebastopol, CA : O’Reilly, 2003. 318p. ISBN 0-596-00362-5 [CONDE-SANTOS] CONDE, Sergio y SANTOS, Andrea. Diseño, Construcción e Implementación de un Sistema para la Medición de Variables Fisiológicas en Pruebas Autonómicas. Bucaramanga, 2005. 207p. Trabajo de Grado (Ingeniería Electrónica). Universidad Industrial de Santander. Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones. [CYPRESS1] CYPRESS SEMICONDUCTOR. OTG-Host BIOS User’s Manual EZ-Host. Version 1.1. San Jose, CA : CYPRESS, 2003. 172p. : il. [online]. Disponible en: www.cypress.com. 137 [CYPRESS2] ________. EZ-Host™, Programmable Embedded USB Host/Peripheral Controller : Data sheet. San Jose, CA : CYPRESS, 2003. 120p. : il. [online]. Disponible en: www.cypress.com. [CYPRESS3] ________. High-Speed USB PCB Layout Recommendations. San Jose, CA : CYPRESS, 2002. 4p. [online]. Disponible en: www.cypress.com. [CYPRESS4] ________. USB on-the-go (OTG) Basics. San Jose, CA : CYPRESS, 2002. 8p. [online]. Disponible en: www.cypress.com. [DOBIASH] DOBIASH, Jack. Fat32 Structure Information. Abril 14, 1999. [online]. Disponible en: home.teleport.com/~brainy/fat16.htm. [FAIRCHILD] FAIRCHILD SEMICONDUCTOR™. 74AC04-74ACT04 Hex Inverter : Data sheet. FAIRCHILD, 1999. 8p. : il. [online]. Disponible en www.fairchild.com. [GARCIA-VALLE] GARCIA, Ludwing D. y VALLE, Francisco C. Cálculo del Espectro de Impedancia Eléctrica de Cuello Uterino por Transformada Rápida de Fourier Implementando la Teoría de Muestreo por Desfase en un DSP MOTOROLA de la Familia 56800. Bucaramanga, 2006. 98p. Trabajo de Grado (ingeniería Electrónica). Universidad Industrial de Santander. Escuela de ingenierías Eléctrica, Electrónica y de Telecomunicaciones. [GARCIA-VARGAS] GARCIA, Cristihan y VARGAS, Juan. Diseño y Montaje de un Sistema de Adquisición de Señales de Voltaje para la Medida del Espectro de Impedancia Eléctrica en Tejido Humano. Bucaramanga, 2005. 119p. Trabajo de Grado (Ingeniería Electrónica). Universidad Industrial de Santander. Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones. 138 [HERNANDEZ-MANTILLA] HERNÁNDEZ, Nathalie y MANTILLA, Ivonne. Diseño e Implementación de una Tarjeta de Adquisición de Datos por bus USB. Bucaramanga, 2004. 131p. Trabajo de Grado (Ingeniería Electrónica). Universidad Industrial de Santander. Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones. [HITACHI] HITACHI. HD44780U (LCD-II) Dot Matrix Liquid Crystal Display Controller/Driver. ADE-207-272(Z) : Data sheet. Tokio : HITACHI, 1998. 60p. : il. [online]. Disponible en semiconductor.hitachi.com [INCITS1] INTERNATIONAL COMMITTEE ON INFORMATION TECHNOLOGY STANDARDS. SCSI Primary Commands – 4 (SPC-4) [online]. Revisión 1. Dallas: T10, 2005. 499p. il. Disponible en: www.t10.org/ftp/t10/drafts/spc4/spc4r06.pdf [INCITS2] INTERNATIONAL COMMITTEE ON INFORMATION TECHNOLOGY STANDARDS. SCSI Block Commands – 3 (SBC-3) [online]. Revisión 6. Rochester : T10, 2006. 145p. il. Disponible en: www.t10.org/ftp/t10/drafts/sbc3/sbc3r06.pdf [KAPLAN] KAPLAN, Francois. Embedded Flash Drivers: Standardizing NAND Flash for use in mobile handsets. M-Systems, 2005. 7p. [LINEAR-TECH1] LINEAR TECH. LT1129-3.3, 700mA Low Dropout Regulators with Micropower Quiescent Current and Shutdown : Data sheet. LINEAR TECH. 16p. : il. [online] Disponible en: www.linear.com. [LINEAR-TECH2] ________. LT1529-5, 3A Low Dropout Regulators with Micropower Quiescent Current and Shutdown : Data sheet. LINEAR TECH. 12p. : il. [online]. Disponible en: www.linear.com. [MARWEDEL] MARWEDEL, Peter. Embedded Systems Design. 259p. 139 Springer, 2006. [MICROSOFT1] MICROSOFT CORPORATION. Format. Version 1.02. FAT: General Overview of On-Disk Mayo 5 de 1999. 25p. [online]. Disponible en: www.microsoft.com. [MICROSOFT2] ________. FAT32 File System Specification. Version 1.03. Diciembre de 2000. 34p. [online]. Disponible en: www.microsoft.com. [MIRANDA] MIRANDA, David. Detección Precoz de Cáncer de Cuello Uterino Basada en Espectro de Impedancia Eléctrica. Bucaramanga, 2005. 129p. Trabajo de Investigación (Maestría en Ingeniería). Universidad Industrial de Santander. Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones. [MONROY-ZABALA] MONROY, Diego y ZABALA, Sergio. Repotenciación y Actualización de un Potenciostato Galvanostato Princeton Modelo 363 para el Laboratorio de Corrosión de la Escuela de Ingeniería Metalúrgica y Ciencia de Materiales. Bucaramanga, 2005. 167p. Trabajo de Grado (Ingeniería Electrónica). Universidad Industrial de Santander. Escuela de Ingenierías Eléctrica, Electrónica y de Telecomunicaciones. [ON-SEMICONDUCTOR] ON-SEMICONDUCTOR. MSQA6V1W5T2 Quad Array For ESD Protection : Data sheet. ON semiconductor, 2003. 4p. [online]. Disponible en: www.onsemi.com. [PHILIPS] PHILIPS. USB On The Go: a Tutorial. PHILIPS, 2002. 9p. [online]. Disponible en: www.semiconductors.philips.com [TEXAS1] TEXAS INSTRUMENTS. TPS2054B : Data sheet. Current-limited, Power-Distribution Switches, TEXAS : Dallas, 2006. www.ti.com. 140 35p. [online]. Disponible en: [TEXAS2] ________. Printed-Circuit-Board Layout for Improved Electromagnetic Compatibility. TEXAS : Dallas,1996. 14p. [online]. Disponible en: www.ti.com. [USB-IF1] USB IMPLEMENTERS FORUM. Requirements and Recommendations for USB Products with Embedded Host and/or Multiple Receptacles. Revisión 1.0. USB-IF, Julio 8 2004. 18p : il. [online]. Disponible: www.usb.org [USB-IF2] ________. Universal Serial Bus Mass Storage Class Bulk-Only Transport. Revisión 1.0. USB-IF, 1999. 22p : il. [online]. Disponible en www.usb.org [USB-IF3] ________. Universal Serial Bus Mass Storage Specification for Bootability. Revisión 1.0. USB-IF, Octubre de 2004. 19p : il. [online]. Disponible en: www.usb.org. [USB-IF4] ________. Universal Serial Bus Mass Storage Class Specification Overview. Versión 1.2. USB-IF, 2003. 7p : il. [online]. Disponible en: www.usb.org. [USB-IF5] ________. Universal Serial Bus Specifications : Version 2.0. USB-IF, Abril 27 de 2000. 650p : il. [online]. Disponible en: www.usb.org. [WIKIPEDIA1] WIKIPEDIA. Memorias Flash. [Enciclopedia en línea]. Disponible en: www.wikipedia.com [WIKIPEDIA2] ________. Ortografía del español. [Enciclopedia en línea]. Disponible en: www.wikipedia.com 141 ANEXOS ANEXO A. DESCRIPTORES DE LOS DISPOSITIVOS DE LA CLASE MSC Los descriptores de los periféricos USB son estructuras de datos que mantienen información relevante que el Host necesita para iniciar y controlar adecuadamente una comunicación con cada dispositivo USB. A continuación se listan algunos descriptores estándares que tienen los dispositivos USB de la clase de almacenamiento masivo (como las memorias Flash USB) y se menciona una pequeña descripción de los campos más relevantes para el Host. A.1 DESCRIPTOR DE DISPOSITIVO Todos los Periféricos USB tienen el Descriptor de Dispositivo (Device Descriptor), en el cual se presentan datos generales del periférico tales como el identificador del vendedor (Vendor ID) y el identificador de producto (Product ID) entre otros. Un campo importante del descriptor de dispositivo es el número de configuraciones que soporta el Periférico (refiérase al apartado 1.3.3 para ver la estructura lógica de un dispositivo). La figura A1 ilustra el descriptor de dispositivo de un periférico en general. A.2 DESCRIPTOR DE CONFIGURACIÓN Los descriptores de configuración contienen información sobre las características de alimentación del dispositivo, tales como si es autoalimentado o alimentado por el bus y el consumo de corriente que puede requerir del Host. Adicionalmente, este descriptor indica el número de interfaces que tiene el dispositivo. Los periféricos USB tienen mínimo un descriptor de configuración. La figura A2 ilustra el descriptor de configuración de un dispositivo de la clase de almacenamiento masivo. 142 Figura A1. Descriptor de Dispositivo. Fuente: [USB-IF2] Figura A2.Descriptor de configuración. Fuente: [USB-IF2] 143 A.3. DESCRIPTOR DE INTERFAZ Los dispositivos USB tienen al menos una interfaz por defecto y mínimo una interfaz por cada configuración [AXELSON]. Dentro de la información más importante que se puede extraer del descriptor de interfaz está el tipo de transferencias que soporta el periférico, la clase USB y la subclase a las cuales pertenece el dispositivo, y el protocolo de interfaz o de clase utilizado. Esta información la usa el Host para evaluar si puede o no controlar al periférico y para asignarle el Driver de clase apropiado. Para el caso de las memorias Flash USB, la clase es de Almacenamiento Masivo (Mass Storage Class), la subclase depende del juego de comandos utilizado (que por lo general es SCSI para dichas memorias) y el protocolo de clase es el BOT, tal como se muestra en la figura A3. Figura A3. Descriptor de Interfaz Bulk-Only. Fuente: [USB-IF2] 144 A.4 DESCRIPTOR DE ENDPOINT Contiene la información de los Endpoint que tiene el dispositivo periférico. Para los dispositivos de la clase MSC debe existir un Endpoint de entrada y uno de salida, ambos deben soportar las transferencias tipo Bulk. La figura A4 ilustra los diferentes campos que componen los Endpoint IN y OUT. Figura A4. Descriptores de Endpoint. a) Descriptor de Endpoint de Entrada. b) Descriptor de Endpoint de Salida. Fuente: [USB-IF2] 145 ANEXO B. BLOQUES DE COMANDOS DEL PROTOCOLO BOT El protocolo de transporte BOT (Bulk Only Transport) es el protocolo más utilizado por los dispositivos de la clase MSC para comunicarse con un Host USB. Este protocolo se lleva a cabo mediante transferencias Bulk donde se transmiten tres bloques o paquetes de datos: el bloque de cabecera que contiene las generalidades de la transferencia incluyendo el comando a ejecutar por el dispositivo; el bloque de datos a transmitir y el bloque de estado o acuse de la transmisión (véase apartado 1.5). La estructura del bloque de cabecera y de estado, se presentan a continuación. B.1 COMMAND BLOCK WRAPPER CBW El CBW es el paquete de datos donde se encapsulan las peticiones del juego de comandos que esté siendo usado por el periférico USB (ya sea SCSI u otro). Este comando lo envía el Host hacia el dispositivo de almacenamiento masivo para indicarle la acción respectiva a ejecutar. La figura B1 ilustra los campos de la estructura de información que se describen a continuación. dCBWSignature: Este campo indica que el paquete de datos corresponde a un CBW, gracias al identificador 43425355h. El valor se interpreta en formato Little Endian*. dCBWTag: Es una firma que envía el Host para asociar el CBW con el respectivo bloque de estado (CSW). dCBWDataTransferLength: Indica el tamaño de los datos a transmitir ya sea de entrada o de salida. * En el formato Little Endian, el byte menos significativo se almacena en la posición menos significativa de memoria. 146 Figura B1. Estructura CBW Fuente: [USB-IF2] bmCBWFlags: Es un campo de bits que contiene indicadores de características de la transferencia. Los campos son los siguientes: Bit Descripción 7 Dirección: indica la dirección de los datos 6 Obsoleto (el Host lo envía en cero) 5-0 Bits reservados(se transmiten en cero) bCBWLUN: Número de la unidad lógica a la cual se va a escribir en el dispositivo de almacenamiento. bCBWCBLength: Indica el tamaño del comando (SCSI) que se envía encapsulada en el CBW. CBWCB: se envía el comando que va a ser ejecutado. Este campo tiene una longitud máxima de 15 bytes pero puede ser menor y sujeto a lo especificado en el campo bCBWCBLength. En caso de no ser necesarios los 15 bytes se deben rellenar con ceros los bytes que no se usen. 147 Figura B2.Estructura CSW Fuente: [USB-IF2] B.2 COMMAND STATUS WRAPPER CSW El paquete de estado es creado por el dispositivo para informar los sucesos acerca de la transferencia de los datos. La estructura de este bloque se muestra en la figura B2. dCSWSignature: Es el identificador del paquete CSW 53425355h en formato Little Endian. dCSWtag: Contiene la misma firma del paquete CBW que inició la transmisión y permite asociar el CSW con el correspondiente CBW dCSWDataresidue: Indica el residuo de datos en la transmisión. Para datos de salida el dispositivo calcula la diferencia entre los datos esperados (datos del campo dCBWDataTransferLength y los procesados realmente. Para datos de entrada el dispositivo calcula la diferencia entre los datos requeridos definidos dCBWDataTransferLength y los datos enviados por el dispositivo. dCSWStatus: Indica el estado de la ejecución del comando enviado en el CBW y sirve como reporte de error de la transmisión. 148 ANEXO C. SISTEMA PARA ALMACENAMIENTO DE DATOS EN MEMORIAS FLASH USB PORTÁTILES, H-ARD, GUÍA DE USUARIO DE LA APLICACIÓN El H-ARD es un sistema para almacenamiento de datos basado en un HOST USB embebido, que puede soportar los dispositivos de memoria con interfaz USB, tales como las memorias Flash portátiles y las cámaras digitales. Adicionalmente, tal y como se explicó en el apartado 3.3.5, el sistema H-ARD esta acompañado por un software de aplicación, el cual permite al usuario interactuar con el dispositivo y permite acceder a los diferentes procesos que ofrece el sistema (como la escritura de archivos en memorias Flash USB). En esta guía se presenta una descripción del software de aplicación que la lleva a cabo la interfaz con el usuario. C.1. CONFIGURACIONES DE HARDWARE PARA EL SISTEMA H-ARD El sistema H-ARD esta constituido por la tarjeta DSP y la tarjeta HC-USB las cuales interactúan entre sí y se conectan por medio del puerto SPI (el conector J5 de la tarjeta HC-USB con el puerto J2 de la tarjeta de Adaptación TA1). Debido a las características de interacción entre los controladores, la tarjeta HC-USB debe ser configurada en modo de operación de coprocesador y habilitar la comunicación por el puerto SPI mediante el arreglo de switchs implementado en esta. En la tabla C.1 se describen los modos de operación de acuerdo a la configuración del DIP-SWITCH. Tabla C 1. Configuración del DIP-SWITCH para la tarjeta HC-USB DIP Modo de operación 000 Stand Alone 010 HSS 011 HPI 101 SPI 149 C.2. DESCRIPCIÓN GENERAL DEL SOFTWARE DE APLICACIÓN DEL SISTEMA HARD El sistema H-ARD cuenta con una pantalla LCD que le permite al usuario verificar los diferentes procesos y visualizar mensajes informativos. El sistema tiene dos botones pulsadores de decisión con los cuales el usuario puede seleccionar la tarea a ejecutar (refiérase al apartado 2.2.9, Interfaz de Hardware con el Usuario). A continuación se resumen los estados que se despliegan en la pantalla de interfaz con el usuario. C.2.1 Inicio del sistema El proceso de aplicación del sistema no se inicia mientras la tarjeta HC-USB no se encuentre conectada, por lo cual la primera tarea que se ejecuta es la verificación de conexión con dicha tarjeta. La figura C.1 ilustra el mensaje en caso de que la tarjeta HC-USB no este conectada. Figura C 1. Mensaje de tarjeta HC-USB desconectada TARJETA HC-USB DESCONECTADA ESPERANDO CONEXIÓN CANCELAR Fuente: los autores C.2.2 Pantalla principal El sistema H-ARD ofrece un estado principal desde el cual es posible ejecutar las tareas de aplicación (medición del espectro de impedancia) y de creación de archivos en una memoria conectada. En el estado principal se despliegan dos mensajes dependiendo de las tareas pendientes por realizar. Los mensajes son: ¾ Estado de Medición sin ejecutar: Se despliega el mensaje de Medición de Espectro para que se pueda realizar la simulación de la medición (ver apartado 150 3.3.5) y se deja una opción para que el usuario pueda ver los créditos de los autores del sistema. La figura C2 ilustra el estado de aplicación sin ejecutar. Figura C2.estado principal de medición sin ejecutar PRINCIPAL MEDICIÓN DE ESPECTRO CRÉDITOS Fuente: los autores ¾ Estado de datos para guardar: Una vez simulada la medición, el sistema HARD habilita la opción de guardar para crear un archivo en una memoria Flash USB con los datos previamente medidos. Si el usuario desea realizar una nueva medición sin guardar los datos, el sistema elimina automáticamente los datos que no se hayan guardado en una memoria USB. La figura C3 ilustra el estado principal con datos pendientes para ser guardados. Cuando el sistema crea el archivo, regresa al estado principal de aplicación sin ejecutar. Figura C3. Estado principal de medición ejecutada. PRINCIPAL MEDICIÓN DE ESPECTRO GUARDAR Fuente: los autores C.2.3 Proceso de creación de un archivo Es el proceso que se lleva a cabo cuando el usuario selecciona la opción <<GUARDAR>>. El sistema informa acerca de las memorias disponibles conectadas a la tarjeta HC-USB, desplegando un mensaje de advertencia en caso de no detectar ninguna memoria USB conectada. La figura C4 ilustra el mensaje de reporte de memorias USB conectadas. La figura C5 muestra la advertencia para cuando no hay memorias disponibles. 151 Figura C4. Mensaje de memorias disponibles MEMORIAS DISPONIBLES <A> <> Fuente: los autores Figura C5. Mensaje de memorias USB sin conectar. NO HAY MEMORIAS DISPONIBLES ESPERANDO CONEXIÓN CANCELAR Fuente: los autores Aprovechando una de las características más importantes de USB (Plug and Play), el sistema H-ARD detecta la conexión de una memoria a la tarjeta HC-USB y la configura automáticamente. El usuario puede seleccionar la unidad de almacenamiento que desee siempre y cuando este conectada, tal como muestra la figura C5. Figura C6. Mensaje de selección de memorias GUARDAR EN: <> <B> Fuente: los autores Una vez que el usuario seleccione la unidad de almacenamiento, el archivo será creado en dicha unidad y los datos serán eliminados del buffer temporal para volver al estado principal de medición sin ejecutar. Si ocurre un error en el proceso de creación del archivo, el sistema no elimina los datos con el fin de que el usuario pueda intentar nuevamente crear el archivo de datos Por otro lado cuando el sistema crea un archivo correctamente, despliega el nombre del archivo. 152 C.3. SOFTWARE ADICIONAL PARA PC, LECTOR DE ARCHIVOS Junto con el sistema H-ARD, se ofrece la herramienta de software para PC, LectorA con la cual se pueden leer los archivos creados en la memoria USB, por el sistema H-ARD. LectorA es una interfaz gráfica implementada con la herramienta Guide de MATLAB, la cual ofrece un entorno amigable para el usuario. La interfaz lee la cabecera del archivo y verifica si este fue creado con el sistema HARD. Una vez que el archivo es reconocido, la interfaz le permite ver al usuario las mediciones de forma independiente. El programa LectorA.m ejecuta la herramienta. Una descripción detallada de las características de la interfaz desarrollada se presenta en el apartado 3.5 del capitulo SOFTWARE. 153 ANEXO D. FORMULARIO PARA LA MEDICIÓN DE ESPECTRO DE IMPEDANCIA ELÉCTRICA EN CUELLO UTERINO En el formato, el campo NOMBRE DEL ARCHIVO se llena con el dato que el Sistema H-ARD despliega al finalizar el proceso de creación del archivo en la memoria USB. Formato tomado del texto [MIRANDA]. FORMULARIO PARA LA MEDICIÓN DE ESPECTRO DE IMPEDANCIA ELÉCTRICA EN CUELLO UTERINO Universidad Industrial de Santander 2004- 2005 DATOS DE LA PACIENTE Fecha: Nombre: Edad: Historia: Hora de la Cirugía: PARÁMETROS DEL EQUIPO DE MEDICIÓN Nombre del archivo: Ganancia: 1 Corriente 10 μA 2 4 20 μA 40 μA EVALUACIÓN CLÍNICA DE LA LESIÓN MEDICIONES # Hora Observaciones MÉDICO: INGENIERO: David Alejandro Miranda Mercado 154 8 ANEXO E. ESQUEMATICO Y LAYOUT DE LA TARJETA HC-USB En el presente anexo se presentan los diagramas, esquemático y Layout de la tarjeta HC-USB donde se puede ver la ubicación de los bloques funcionales analizados en el capitulo 2 de este texto. El layout de la tarjeta HC-USB fue diseñado en la herramienta de software para diseño de circuitos impresos EAGLE. Figura E1. Layout de la tarjeta HC-USB Fuente: Los Autores. 155 Figura E2. Esquemático de la Tarjeta HC-USB Fuente: Los Autores. 156 ANEXO F. DESCRIPCIÓN DE LAS FUNCIONES IMPLEMENTADAS EN EL SISTEMA H-ARD A continuación se describen las funciones de Software implementadas en el Sistema HARD donde se mencionan las características de cada una. F.1. LIBRERÍAS DSP56F805.h: Es la librería que ofrece la herramienta Codewarrior con los diferentes macros definidos para el control del DSP. ESTRGEN.h: En esta librería están declaradas todas las estructuras y macros que se usan en las diferentes funciones del sistema H-ARD. Se definen y declaran los macros para la capa de manejo de unidades de almacenamiento, para las capas de USB y para algunos registros del EZ-Host. ESTRGLOBALES.h: Define las estructuras globales del sistema. F.2. RUTINAS DE INICIO. SPI_config() Se encarga de la configuración del puerto SPI en el DSP, deshabilita los GPIO y habilita los pines para SPI. GPIO_config() Configura los GPIO del DSP que se usan en el control de la LCD, los Botones de decisión y la señal nSS de SPI de la tarjeta HC-USB. LCD_config() Ejecuta los comandos de configuración inicial de la LCD. EZHOST_config() Realiza la configuración general del Controlador Host de la Tarjeta HC-USB (Ez-Host) y configura el SIE1 como Host, ejecutando un Reset y actualizando la información de los registros del integrado. 157 F.3. FUNCIONES DE APLICACIÓN void main(void) Rutina principal del Software que ejecuta las rutinas de inicio y de aplicación (en este caso App()). void app() Ejecuta el proceso de aplicación en el cual se encuentran las tareas de interacción con el usuario, realiza la simulación de la medición del espectro de impedancia e invoca a las funciones necesarias para crear un archivo en una memoria USB. F.4 FUNCIONES API (APPLICATION PROGRAM INTERFACE) word API_escribir_mem(word data_buffer,word data_len) Función API que sirve como interfaz entre la aplicación y el sistema de almacenamiento H-ARD. La función se encarga de la administración de tareas para escribir un archivo en formato FAT32. data_buffer Dirección del buffer en donde se encuentran los datos a almacenar. data_len Longitud de los datos del archivo F.5. FUNCIONES DEL SISTEMA DE ARCHIVOS FAT32 dword FAT_write_data_file(word data_buffer,word file_length_in_bytes) Función de la capa de sistema de archivos; se encarga de buscar los cluster vacíos para escribir un archivo; retorna el primer cluster. data_buffer Dirección del buffer en donde se encuentran los datos. file_length_in_bytes Longitud de los datos del archivo expresada en bytes. word FAT_root_dir_search(word match_name) Función diseñada para buscar nombres y/o entradas libres en el directorio raíz, se apoya encadenando los cluster en la tabla de FAT. match_name bandera que indica si se deben buscar nombres repetidos. 158 word FAT_write_sector_in_fats(dword lba_fat) Esta función escribe en los sectores de FAT1 y FAT2. Se ubica en el sector de la FAT indicado por el lba_fat. word FAT_write_sector(word buffer_addr,dword lba) Esta función escribe en un sector de la unidad de almacenamiento. buffer_addr Buffer en donde se encuentran ubicados los datos en el EZ-Host dword lba LBA del sector donde se van a escribir los datos. word FAT_read_sector(dword lba) Esta función lee el sector de la unidad de almacenamiento indicado en lba. dword FAT_new_cluster_root_dir(dword last_cluster_root_dir) Función del sistema de archivos que se encarga de buscar un nuevo cluster para el directorio raíz; retorna el numero de cluster hallado. last_cluster_root_dir es el número del último cluster del directorio raíz. word FAT_find_empty_clusters(word cantidad_ini,dword *clusters) Función del sistema de archivos se encarga de buscar un cluster vació desde la tabla de FAT; retorna el numero de cluster hallado. dword FAT_next_cluster(dword cluster_actual) Función del Sistema de Archivos. Busca el siguiente campo de la FAT con el valor del número de cluster que apunta el campo actual de FAT; retorna el número del siguiente cluster word FAT_config() Función de inicio y configuración del Sistema de Archivos. Crea la estructura para identificar un dispositivo de almacenamiento. Encadena la estructura que tiene la información referente a USB con la de FAT. F.6. FUNCIONES DEL DRIVER DE CLASE USB MSC word SCSI_inquiry() Función del juego de comandos que ejecuta el comando Inquiry, el cual extrae las características generales de la unidad. word SCSI_read_capacity() Ejecuta el comando de READ_CAPACITY de SCSi. word SCSI_test_unit_ready(void) función que ejecuta el comando que verifica si la unidad está disponible para transferir datos. 159 word SCSI(word command,dword lba,word data_len_lbas,word buff_addr) Función de SCSI con la que se ejecutan los comandos de SCSI como escritura y lectura. word MSCDRV(word *SCSI_cmd_block,word data_len,word buffer_addr,byte data_dir) Función, Driver para MSC. Es la función encargada de crear los bloques para el protocolo BOT, con base en los comandos SCSI, y controlar el estado de las transferencias Bulk. word MSC_reset_recovery() Esta función hace un reset de MSC y recupera los EP IN y OUT del STALL F.7. FUNCIONES DEL DRIVER DE USB word USB_dev_config() Pertenece a la capa de DRIVER USB se encarga de la enumeración y la configuración de un dispositivo; actualiza la estructura del dispositivo USB y si pertenece a la clase MSC le concatena una estructura de volumen. word USBget_MSCmaxlun(word brequest_desctype,word desc_len) Función diseñada para ejecutar tanto la petición de unidades lógicas (Get_MAX_LUN) para el driver de MSC como lo requests de petición de UBS (GET-CONFIGURATION y GET DESCRIPTOR). word USBset_MSCreset(word brequest,word wvalue_index) Ejecuta un reset de MSC o requests de control como SET-ADDRESS. word USB_clear_feature(word windex). Borra el estado Halt de un Endpoint determinado. word USB_bulk_transfer(word buffer_addr,word data_len,word data_dir) Función que crea las tranferencias USB tipo Bulk. word USB_control_transfer(word data_dir,word data_len) Crea las transferencias tipo Control de USB. word HCD_tlist(byte dtoggle_ddir,word pid,word buffer_addr,word data_len) Función Driver del controlador Host. Encargada de la creación de los tlist para las transacciones de USB ya sea en Control o en Bulk. F.8. FUNCIONES DE INTERACCIÓN CON EL EZ-HOST 160 word write_bytes_buffer(word *DSP_data_ptr,word buff_addr,word data_len) Esta función escribe datos del DSP al EZHOST word read_bytes_buffer(word buff_addr,word *DSP_sink_ptr,word data_len) Esta función lee datos de EZHOST hacia el DSP. word exect_int(word *int_data,word int_len,word int_delay) Ejecuta una interrupción para el EZ-Host. word enviar_cmd_lcp () envía el bloque del comando LCP por medio SPI F.4. FUNCIONES GENERALES word AP_zeros_buffer(word data_buffer,word data_len) Esta función rellena ceros los datos para completar un sector de datos de 512bytes de longitud. de Sus parámetros son: data_buffer Es el origen del buffer donde están ubicados los datos data_len Es la longitud de los datos reales void retardo_base(unsigned long tiempo /*en us*/) Retardo cuya base es 1us void dec2ASCII(dword numero,word digitos,word *destino) Esta función convierte números decimales de n dígitos a ASCII y los guarda en una cadena de caracteres. numero Es el numero decimal que va a ser convertido. digitos indica la cantidad de digitos del numero. *destino Es un puntero donde quedará ubicado el valor en ASCII. dword ASCII2dec(word *numero,word digitos) Esta función convierte dígitos ASCII wchar a números decimales. numero Es el valor en ASCII (wchar). digitos numero decimal. void bchar2wchar(char *origen,word *destino) Función que acomoda dos caracteres de 8 bytes en una palabra de 16bytes la cadena de caracteres puede ser de cualquier longitud. 161