Tesis Registro de datos en tarjetas SD.pdf

Embed Size (px)

Citation preview

  • Universidad NacionalAutnoma de Mxico

    Facultad de Ingeniera

    Registro de datos en tarjetas dememoria SD CARD implementando lossistemas de archivos FAT16 y FAT32

    T E S I S

    QUE PARA OBTENER EL TTULO DE :

    INGENIERO ELCTRICO ELECTRNICO( REA : ELECTRNICA )

    PRESENTA :

    ANA ANGLICA HERNNDEZ LPEZ

    DIRECTOR DE TESIS :M.I. LAURO SANTIAGO CRUZ

    Mxico, D.F. 2009

  • Agradecimientos:

    A mi escuela, la Universidad Nacional Autnoma de Mxico.

    Al Instituto de Ingeniera de la UNAM, por las facilidades brin-dadas para el desarrollo de esta tesis.

    A mi director de tesis, por todo lo que me ha enseado.

    A la coordinacin de Ingeniera Ssmica del Instituto de In-geniera de la UNAM, por su inters en el tema y apoyo con losrecursos para desarrollar este proyecto.

    A mis compaeros del Laboratorio de Instrumentacin del Ins-tituto de Ingeniera de la UNAM, por todas las experiencias com-partidas.

  • iContenido

    Lista de figuras v

    Lista de tablas ix

    Prlogo xi

    Introduccin1.1. Consideraciones 3

    Generalidades2.1. Tecnologa de las tarjetas de memoria 5

    2.1.1. Tarjetas de memoria 62.2. Memorias Secure Digital 7

    2.2.1. Especificaciones simplificadas versin 2.00 92.2.2. Especificaciones de la memorias Secure Digital 9

    Prefijos 102.2.3. Modo serie de comunicacin de datos 12

    Protocolo 12Formato de los comandos 14Secuencia de inicio 14Inicializacin 15

    2.2.4. Deteccin de errores 20Ejemplo de clculo 21

    2.3. Sistema de archivos 222.3.1. Sistema de archivos FAT 23

    Conceptos bsicos 23Tipos de FAT 26Mapas de memoria 27

    2.3.2. Otras alternativas 30

  • Contenido

    ii

    2.4. Comunicaciones serie 312.4.1. Protocolo serie sncrono SPI 31

    Caractersticas del protocolo SPI 31Transferencia de datos 34

    2.4.2. Protocolo serie asncrono RS-232 342.5. Microcontrolador 36

    Diseo y Desarrollo3.1. Diseo del sistema 393.2. Desarrollo del sistema 42

    3.2.1. Componentes electrnicos 42Interfaz maestro--esclavo 43Interfaz de depuracin 44

    3.2.2. Comentarios sobre las memorias Secure Digital 44Velocidades de comunicacin 45

    3.2.3. Desarrollo del cdigo del microcontrolador 46Comunicacin con la SD CARD 46Consideraciones en la comunicacin 47Secuencia de inicio 48Secuencia de comandos de inicializacin 50Lectura y escritura de datos 61Formato de los bloques de datos 64Cdigo de deteccin de error 66Implementacin del sistema de archivos 69Formateo 70Primer sector lgico 72Determinacin del tipo de FAT 81Clculo de la posicin de cada regin 86Creacin de un archivo y asignacin de clusters 89

    3.2.4. Circuito del sistema 109

  • Contenido

    iii

    Pruebas4.1. Pruebas al sistema de registro de datos 115

    4.1.1. Prueba 1 : Error en la implementacin 1164.1.2. Prueba 2 : Archivo de 1000 bytes 118

    Uso del ambiente Windows 119Inspeccin de las regiones 123

    4.1.3. Prueba 3 : Archivo de 3102009 bytes 1354.1.4. Prueba 4 : Archivo de 12345678 bytes 141

    Resultados y Conclusiones 145

    ApndicesHojas de especificaciones 147Glosario de trminos 153

    Bibliografa 157

  • vFiguras

    CaptuloFig. 2.1. Interior de una tarjeta de memoria. . . . . . . . . . . . . . . . . . . . 6Fig. 2.2. Tarjetas de memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Fig. 2.3. Tamaos de las memorias SD CARD. . . . . . . . . . . . . . . . . . . 8Fig. 2.4. Memorias SD, SDHC y SDXC. . . . . . . . . . . . . . . . . . . . . . . . . 12Fig. 2.5. Estructura de los comandos. . . . . . . . . . . . . . . . . . . . . . . . . 14Fig. 2.6. Secuencia de inicio de las memorias SD CARD. . . . . . . . . . 15Fig. 2.7. Secuencia de entrada al modo SPI. . . . . . . . . . . . . . . . . . . . 16Fig. 2.8. Formato de la respuesta R1. . . . . . . . . . . . . . . . . . . . . . . . . 16Fig. 2.9. Compatibilidad Host--SD CARD. . . . . . . . . . . . . . . . . . . . . . 17Fig. 2.10. Formato de la respuesta R7. . . . . . . . . . . . . . . . . . . . . . . . . 17Fig. 2.11. Formato de la respuesta R3. . . . . . . . . . . . . . . . . . . . . . . . . 18Fig. 2.12. Algoritmo de inicializacin. . . . . . . . . . . . . . . . . . . . . . . . . . 19Fig. 2.13. Mensaje con checksum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Fig. 2.14. Ejemplo de clculo del CRC. . . . . . . . . . . . . . . . . . . . . . . . . 21Fig. 2.15. Sistema operativo y sistema de archivos. . . . . . . . . . . . . . 22Fig. 2.16. Ejemplo de alojamiento de dos archivos. . . . . . . . . . . . . . . 25Fig. 2.17. Mapas de memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Fig. 2.18. Estructura de una entrada del directorio. . . . . . . . . . . . . . 29Fig. 2.19. Reloj SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Fig. 2.20. Comunicacin SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Fig. 2.21. Esquema de la comunicacin RS-232. . . . . . . . . . . . . . . . . . 36Fig. 2.22. PIC18LF452. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    CaptuloFig. 3.1. Bloques del sistema de registro de datos. . . . . . . . . . . . . . 40Fig. 3.2. Interfaces del sistema de registro de datos. . . . . . . . . . . . . 42Fig. 3.3. Terminales de la memoria SD CARD. . . . . . . . . . . . . . . . . . 43

  • Figuras

    vi

    Fig. 3.4. Interfaz maestro--esclavo: PIC--SD CARD. . . . . . . . . . . . . . . 44Fig. 3.5. Interfaz de depuracin: PIC--PC. . . . . . . . . . . . . . . . . . . . . . 44Fig. 3.6. Diagrama de encendido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Fig. 3.7. Contenido del comando cero. . . . . . . . . . . . . . . . . . . . . . . . 50Fig. 3.8. Transacciones del comando cero. . . . . . . . . . . . . . . . . . . . . 51Fig. 3.9. Contenido del comando ocho. . . . . . . . . . . . . . . . . . . . . . . . 52Fig. 3.10. Respuesta al comando ocho. . . . . . . . . . . . . . . . . . . . . . . . . 53Fig. 3.11. Respuesta del comando 58. . . . . . . . . . . . . . . . . . . . . . . . . . 56Fig. 3.12. Respuesta del comando 55. . . . . . . . . . . . . . . . . . . . . . . . . . 56Fig. 3.13. Algoritmo de inicializacin (1 de 3). . . . . . . . . . . . . . . . . . 58Fig. 3.14. Algoritmo de inicializacin (2 de 3). . . . . . . . . . . . . . . . . . 59Fig. 3.15. Algoritmo de inicializacin (3 de 3). . . . . . . . . . . . . . . . . . 60Fig. 3.16. Operacin de lectura de un bloque de datos. . . . . . . . . . . 61Fig. 3.17. Error en la lectura del bloque de datos. . . . . . . . . . . . . . . 62Fig. 3.18. Token de error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Fig. 3.19. Byte de DRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Fig. 3.20. Operacin de escritura de datos. . . . . . . . . . . . . . . . . . . . . 63Fig. 3.21. Formatos de los bloques de memoria. . . . . . . . . . . . . . . . . 67Fig. 3.22. Formato de la respuesta R2. . . . . . . . . . . . . . . . . . . . . . . . . 67Fig. 3.23. Mensaje para el clculo del CRC7. . . . . . . . . . . . . . . . . . . . 68Fig. 3.24. Divisin para el clculo del CRC7. . . . . . . . . . . . . . . . . . . . 69Fig. 3.25. Formateo de una tarjeta SD desde el shell. . . . . . . . . . . . . 71Fig. 3.26. Formateo de una tarjeta SD desde el ambiente Windows. 72Fig. 3.27. Boot sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Fig. 3.28. Ejemplo de little endian en el boot sector. . . . . . . . . . . . . 74Fig. 3.29. Pantalla de inicio del WinHex. . . . . . . . . . . . . . . . . . . . . . . 79Fig. 3.30. Men de inicio del WinHex. . . . . . . . . . . . . . . . . . . . . . . . . 80Fig. 3.31. Boot sector en WinHex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Fig. 3.32. Plantilla del boot sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

  • Figuras

    vii

    Fig. 3.33. Terminal virtual RealTerm. . . . . . . . . . . . . . . . . . . . . . . . . . 86Fig. 3.34. Tipo de FAT en RealTerm. . . . . . . . . . . . . . . . . . . . . . . . . . . 87Fig. 3.35. Entrada del archivo en el directorio de una SDHC. . . . . . 96Fig. 3.36. Plantilla de la entrada cero del directorio. . . . . . . . . . . . . 97Fig. 3.37. Plantilla de la entrada uno del directorio. . . . . . . . . . . . . . 97Fig. 3.38. Primer sector escrito en la FAT para el archivo FILE1. . 106Fig. 3.39. ltimo sector escrito en la FAT para el archivo FILE1. . 107Fig. 3.40. Primeros sectores del contenido de FILE1. . . . . . . . . . . . 110Fig. 3.41. Espacio de memoria usado en el PIC. . . . . . . . . . . . . . . . . 110Fig. 3.42. Circuito del sistema de registro de datos. . . . . . . . . . . . . 112Fig. 3.43. Foto del sistema de registro de datos. . . . . . . . . . . . . . . . 113

    CaptuloFig. 4.1. Programacin incorrecta del sistema de archivos. . . . . . 117Fig. 4.2. Sistema de archivos RAW. . . . . . . . . . . . . . . . . . . . . . . . . . 117Fig. 4.3. Resultado en Windows de un error de escritura en

    la FAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Fig. 4.4. Formateo de dos tarjetas SD CARD. . . . . . . . . . . . . . . . . . 119Fig. 4.5. Especificacin del tamao del archivo en el cdigo. . . . 120Fig. 4.6. Unidades de memoria SD1G y SDHC_4G. . . . . . . . . . . . . . 121Fig. 4.7. Men de la memoria SD1G. . . . . . . . . . . . . . . . . . . . . . . . . 121Fig. 4.8. Propiedades de las memorias SD1G y SDHC_4G. . . . . . . 122Fig. 4.9. Archivo FILE1 en las memorias SD1G y SDHC_4G. . . . . 122Fig. 4.10. Men de FILE1 en la memoria SD1G. . . . . . . . . . . . . . . . . 123Fig. 4.11. Propiedades de FILE1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Fig. 4.12. Datos guardados en FILE1. . . . . . . . . . . . . . . . . . . . . . . . . 124Fig. 4.13. Contador de palabras en MS Word para FILE1. . . . . . . 125Fig. 4.14. Regin del directorio raz de la memoria SD1G. . . . . . . . 127Fig. 4.15. Regin del directorio de la memoria SDHC_4G. . . . . . . . 128Fig. 4.16. Regin FAT de la memoria SD1G. . . . . . . . . . . . . . . . . . . . 129

  • Figuras

    viii

    Fig. 4.17. Regin FAT de la memoria SDHC_4G. . . . . . . . . . . . . . . . 130Fig. 4.18. Regin de datos de la memoria SD1G. . . . . . . . . . . . . . . . 131Fig. 4.19. Regin de datos de la memoria SDHC_4G. . . . . . . . . . . . 132Fig. 4.20. ltimo sector del cluster 3 de la memoria SD1G. . . . . . . 133Fig. 4.21. ltimo sector del cluster 3 de la memoria SDHC_4G. . . 134Fig. 4.22. Primer sector de datos del archivo. . . . . . . . . . . . . . . . . . 136Fig. 4.23. ltimo sector de datos del archivo. . . . . . . . . . . . . . . . . . 138Fig. 4.24. Sector final del ltimo cluster del archivo. . . . . . . . . . . . 139Fig. 4.25. Entradas del archivo en la FAT. . . . . . . . . . . . . . . . . . . . . 140Fig. 4.26. Memoria SDHC_4G. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Fig. 4.27. Archivo FILE1 en la memoria SDHC_4G. . . . . . . . . . . . . . 143Fig. 4.28. Contador de palabras en MS Word para FILE1. . . . . . . 144

  • ix

    TablasCaptuloTabla 2.1. Base binaria vs. base decimal. . . . . . . . . . . . . . . . . . . . . . . 10Tabla 2.2. Prefijos binarios bajo la propuesta de la IEEE. . . . . . . . . 11Tabla 2.3. Tipos de memorias SD CARD. . . . . . . . . . . . . . . . . . . . . . . 12Tabla 2.4. Sistemas de archivos FAT. . . . . . . . . . . . . . . . . . . . . . . . . . 27Tabla 2.5. Caractersticas del sistema y del PIC18LF452. . . . . . . . . . 37

    CaptuloTabla 3.1. Terminales de la SD CARD en modo SPI. . . . . . . . . . . . . . 43Tabla 3.2. Definicin del voltaje suministrado. . . . . . . . . . . . . . . . . . 52Tabla 3.3. Registro OCR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Tabla 3.4. Bits de estatus en el byte DRT. . . . . . . . . . . . . . . . . . . . . . 64Tabla 3.5. Polinomios generadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Tabla 3.6. Algunos valores de CRC7. . . . . . . . . . . . . . . . . . . . . . . . . . . 69Tabla 3.7. Informacin del boot sector para FAT16. . . . . . . . . . . . . . 73Tabla 3.8. Informacin del boot sector para FAT32. . . . . . . . . . . . . . 74Tabla 3.9. Valores permitidos en la FAT. . . . . . . . . . . . . . . . . . . . . . 105

  • xi

    Prlogo

    Cualquier dispositivo electrnico que grabe informacin durante un pe-riodo de tiempo, para luego utilizarla, es considerado un colector de datos(datalogger). Esta definicin incluye a muchos sistemas de adquisicin dedatos que usan una computadora como medio para almacenar datos entiempo real. En la actualidad la mayora de los fabricantes de datalog-gers los consideran equipos autnomos, caracterstica que lleva implcitoel uso de memoria en el sitio para almacenar datos adquiridos por eldispositivo, para luego, exportarlos a una computadora. Los primerosdataloggers usaban como medio de registro de datos a la cinta magnticay al papel perforado. Los dataloggers estn cambiando ahora ms quenunca, incorporando nuevas tecnologas de almacenamiento y comunica-cin, la tecnologa actual permite el registro de datos en memorias deestado slido, algunos ejemplos: Static Random Access Memory (SRAM),Electrically Erasable Programmable Read Only Memory (EEPROM) yflash, adems, su uso hace posible reducir el tamao de estos equipos,cualidad que los hace an ms atractivos para aplicaciones que requierende traslados a localidades remotas.

    Usos tpicos de los dataloggers incluyen estudios de campo, monitoreode transportacin, estudios de calidad, investigacin y en general, dondese requiera registrar informacin de eventos que ocurran alrededor, sintener a alguien necesariamente presente.

    Las tarjetas de memoria flash, con gran popularidad en el mercadoactual, son verstiles y compactas, pueden ser integradas a equipos connecesidades de almacenamiento considerable, que requieran de portabili-dad y practicidad, son ideales en equipos de adquisicin de datos comolos dataloggers.

    En particular, en el rea de Ingeniera Sismolgica del Instituto deIngeniera de la Universidad Nacional Autnoma de Mxico, se cuentacon equipos de deteccin y adquisicin de eventos, llevados a campo parahacer registro de datos a travs de computadoras porttiles, con tarjetasde expansin de memoria Personal Computer Card (PC Card) o mdulosde memoria en circuitos integrados. Con la intencin de colaborar en laactualizacin de estos equipos, en el presente trabajo se desarrolla un sis-tema de registro de datos, que deber permitir el grabado de informacin

  • Prlogo

    xii

    en tarjetas de memoria flash Secure Digital (SD). Esta primera etapa nospermite conocer la tecnologa de registro de informacin en las memo-rias Secure Digital Card (SD CARD), utilizando para ello los sistemas dearchivos File Allocation Table (FAT), FAT16 y FAT32. De esta manera, lainformacin grabada en las memorias SD CARD podr transportarse y serleda por cualquier computadora compatible con el sistema de archivosFAT.

    El presente trabajo escrito est constitudo de seis captulos. En elcaptulo uno se presenta una breve introduccin, as como las considera-ciones tomadas para el desarrollo de este proyecto. El segundo captulocubre los conceptos y caractersticas de operacin de los elementos que lointegran. En el tercero y cuarto captulo se plantea la propuesta de solu-cin y su implementacin. El captulo 5 muestra pruebas al sistema, y sefinaliza este trabajo presentando las conclusiones en el ltimo captulo.

    A lo largo del texto se utilizan trminos que se definen inmediatamen-te en cuanto se mencionan, y si aplica, se proporciona una abreviacinpara cada uno de ellos. Un resumen de estos se encuentra en el glosariode trminos, dentro de los apndices.

  • 1Introduccin

    Ha sido una necesidad humana histrica preservar informacin a lo largodel tiempo. Para conseguirlo, se ha hecho uso de la tecnologa presenteen la poca.

    Un dispositivo electrnico capaz de retener informacin es un dis-positivo de almacenamiento de datos, le llamamos una memoria. En laactualidad no existe un dispositivo de almacenamiento universal, sinodistintos tipos de memorias con sus ventajas y desventajas correspon-dientes. Depende de la aplicacin particular la eleccin del dispositivoms conveniente.

    Las memorias pueden clasificarse de muchas formas: por la tecnologaque usan, por la capacidad que tienen, si son o no removibles, etctera.Si la memoria pierde su contenido en cuanto el sistema electrnico que laincluye se apaga, se le llama memoria voltil, de otro modo son memoriasno voltiles, estas ltimas no requieren de alimentacin de energa paramantener su contenido.

    En la clasificacin de memorias no voltiles se encuentran las memo-rias tipo flash, tecnologa dominante en aplicaciones que requieren canti-dades grandes de almacenamiento no voltil de estado slido, a un costorazonable. Esta tecnologa es la que se usa en las memory cards o tarje-tas de memoria, las aplicaciones que las utilizan incluyen computadoras

  • Introduccin

    2

    de escritorio, computadoras porttiles, telfonos celulares, cmaras di-gitales, organizadores personales, reproductores de msica, consolas devideojuegos, colectores de datos, etctera. Como vemos, las tarjetas dememoria flash han ganado popularidad en aplicaciones porttiles, su bajoconsumo de energa, tamao reducido, resistencia a cambios climticos,durabilidad, practicidad y bajo costo las hacen una opcin muy atrac-tiva para la electrnica de consumo actual. Algunas marcas de tarjetasde memoria flash que se encuentran comnmente son: MultiMedia Card(MMC), Secure Digital (SD CARD),Memory Stick (MS), Smart Media (SM)y Compact Flash (CF). Una de las ms populares y ampliamente usadaen dispositivos muy diversos es la SD CARD.

    Las tarjetas de memoria flash, as como los discos duros, las memoriasUSB, los discos compactos y dems dispositivos de almacenamiento, nosproporcionan el medio fsico donde se guarda la informacin. Requierende un equipo especializado que grabe en ellos datos que luego puedanconsultarse. La manera en que la informacin se graba en los dispositivosde almacenamiento depende de la tecnologa que utilicen; sin embargo,es comn a todos ellos la necesidad de organizar los datos que guardanpara encontrarlos y acceder a ellos cuando se necesite.

    La forma de poner orden a los datos es a travs de los sistemas dearchivos.

    Un sistema de archivos se puede pensar como una base de datos depropsito especfico que manipula, organiza y le da una estructura alos datos almacenados, para que posteriormente puedan ser ledos porequipos que conozcan las reglas con las que se guard la informacin.Entonces en el grabado de datos queda implcita la implementacin deun sistema de archivos.

    Actualmente se han desarrollado muchos sistemas de archivos. La ma-yora de los sistemas operativos utilizan su propio sistema de archivos ypermiten compatibilidad con otros, adems del propio. Algunos ejem-plos de sistemas de archivos pueden ser: Hierarchical File System Plus(HFS PLUS) en computadoras con sistema operativo Macintosh, SecondExtended File System (Ext2) en sistemas Linux, File Allocation Table(FAT) y New Technology File System (NTFS) en sistemas Windows. Ca-be comentar que el sistema operativo Windows es el ms usado en lascomputadoras y el sistema de archivos FAT el ms comn.

  • Consideraciones Introduccin

    3

    Este trabajo tiene por objetivo el diseo y la implementa-cin de un mdulo de almacenamiento de datos, cuyo medio deregistro es a travs de tarjetas de memoria SD, de forma tal quese puede dar lectura a stas para obtener la informacin gra-bada. La lectura de las tarjetas se hace de forma convencional,por medio de un lector externo para este tipo de memorias quese conecta a una computadora, o bien a travs de una compu-tadora con lector integrado. Para cualquier caso, los datos sonledos y se muestran disponibles al usuario.

    1.1. ConsideracionesEl proyecto comprende la comunicacin, el grabado y la recuperacinde los datos registrados en la memoria SD CARD. Para los fines de estetrabajo, el tipo de informacin grabada es irrelevante, as como la fuentede donde sta proviene.

    As, el proyecto desarrollado se enfoca en tres aspectos funcionales:

    1. El uso de memorias SD CARD y su tecnologa.

    2. El registro de informacin de inters en estas memorias.

    3. Recuperacin de la informacin registrada en ellas.

  • 5Generalidades

    En este captulo se presenta un panorama general de las memorias SDCARD, del sistema de archivos FAT y de las comunicaciones serie utiliza-das.

    El captulo concluye comentando brevemente sobre el microcontrola-dor empleado en este proyecto.

    2.1. Tecnologa de las tarjetas de memoriaLos medios de almacenamiento de informacin que usamos vienen en unavariedad de formas que sirven a distintos propsitos. En las computadoraspersonales o PCs, uno de los tipos de almacenamiento ms comunes sonlas memorias Read Only Memory (ROM), proveen un almacenamientono voltil y son usadas para guardar programas que se quieren tenerdisponibles todo el tiempo, como el Basic Input/Output System (BIOS)para iniciar el sistema. Mientras que en su concepcin inicial el contenidode la ROMno estaba destinado a cambiarse, actualmente existen diferentestipos de ROMy su contenido es modificable en distintos grados. Ejemplosde ROM son la Programmable Read Only Memory (PROM), ErasableProgrammable Read Only Memory (EPROM) y EEPROM.

    Las memorias EEPROMson el tipo ms flexible de memorias ROM, sonborradas y programadas elctricamente byte a byte a travs de software.

  • Generalidades Tecnologa de las tarjetas de memoria

    6

    Las memorias flash son un tipo especfico de EEPROM, que son borradasy programadas por bloques de bytes. Con costo significativamente menorque las EEPROM, las memorias flash se han vuelto la tecnologa domi-nante de estado slido en aplicaciones que requieren grandes cantidadesde almacenamiento no voltil. Adems, el manejo por bloques las proveede un rpido acceso al contenido, comparado con los tiempos utilizadospor las EEPROMs convencionales, y cuando son empacadas en tarjetasde memoria, se les dotada de gran resistencia.

    El tiempo de vida de las memorias FLASH est limitado por el desgasteprovocado a sus celdas de memoria en los procesos de escritura y borrado.Tpicamente, el tiempo de vida por cada bloque de bytes utlizado es decien mil ciclos de borrado.

    2.1.1. Tarjetas de memoria

    Los dispositivos de memoria de estado slido ms usados incluyen circui-tos integrados con memorias tipo flash, dispuestos en pequeas tarjetasremovibles. Se les llaman comnmente tarjetas de memoria flash, o tar-jetas de memoria.

    Adems del tipo flash, existen otros estndares de memorias que pue-den ser usados en las memory cards, por ejemplo: Non-Volatile RandomAccess Memory (NVRAM), y memorias voltiles como la SynchronousDynamic Random Access Memory (SDRAM) con batera de respaldo. Sinembargo, el uso de memoria tipo flash es el ms popular.

    Las tarjetas de memoria contienen varios circuitos integrados en suinterior, entre ellos est la propia memoria flash y un microcontrolador,como se muestra en la figura 2.1. Aunque no todas las tarjetas de memoriaen el mercado tienen un microcontrolador.

    Fig. 2.1. Interior de una tarjeta de memoria.

  • Memorias Secure Digital Generalidades

    7

    El microcontrolador se encarga de controlar las operaciones en el arreglode celdas de la memoria, y de la comunicacin con el host al que la tarjetase encuentra conectada. El host es el que procesa la informacin, de talforma que ste almacena, lee y escribe la informacin en la tarjeta.

    Los circuitos integrados se interconectan en un circuito impreso, que leda dureza y complejidad a la tarjeta. El circuito impreso esta rodeado poruna marco de metal y una cubierta de plstico que expone los contactoselctricos de la memory card.

    Distintas marcas de tarjetas de memoria se encuentran disponibles enel mercado, algunas de ellas se muestran en la figura 2.2.

    Fig. 2.2. Tarjetas de memoria.

    En las tarjetas de memoria las diferencias fsicas entre ellas son las msobvias, no as las diferencias en los estndares de comunicacin. Algu-nas se apegan a los estndares de la Personal Computer Memory CardInternational Association (PCMCIA), mientras que otras tienen estndarespropios.

    2.2. Memorias Secure DigitalLa tecnologa y el estndar de las tarjetas de memoria Secure Digital espropietaria, ha sido desarrollada por el grupo SD (Panasonic, SanDisk yToshiba), que comparten derechos de autora con la asociacin SD CARD(SD CARD Association).

  • Generalidades Memorias Secure Digital

    8

    Las especificaciones de las tarjetas SD nacieron del viejo estndardesarrollado para las memorias MMC. Las dimensiones fsicas o form fac-tor , interfaz elctrica y protocolo de comunicacin, son parte de lasespecificaciones de la SD CARD.

    Las principales diferencias entre las distintas tarjetas de memoria dis-ponibles en la actualidad son la complejidad, consumo de energa y di-mensiones.

    La interfaz elctrica de la SD es relativamente simple, as como suinterfaz fsica. Su consumo de energa no sobrepasa los 100[mA] cuandoest activa, y su tamao reducido aventaja a las de tecnologas que lecompiten. Tienen el potencial para dominar el mercado de las memoriasminiatura en unos aos.

    La figura 2.3 muestra una comparacin de los distintos tamaos delas memorias SD.

    Fig. 2.3. Tamaos de las memorias SD CARD.

  • Memorias Secure Digital Generalidades

    9

    2.2.1. Especificaciones simplificadas versin 2.00

    Para usar las tarjetas de memoria se requiere conocer las especificacionesde las mismas, y es necesario adquirir una licencia para acceder a lasespecificaciones completas de la SD CARD. A pesar de ello, es posible usarsu tecnologa a travs de la versin simplificada de estas especificaciones,la Physical Layer Simplified Specification Version 2.00, que no tienencosto y estn disponibles en el sitio oficial de la SD CARD.1

    Las especificaciones con licencia cubren la interfaz fsica y el protocolode comunicacion oficial de la SD CARD, basado en una interfaz de nueveterminales. Sin embargo, se puede tener acceso a las tarjetas a travsde un segundo tipo de comunicacin, al que hace referencia la versinsimplificada.

    Los dos modos de comunicacin son el SD BusMode (modo SD) y el SPIBus Mode (modo SPI). El primero es el protocolo de comunicacin propiode la tarjeta de memoria SD, utiliza nueve lneas para la comunicacin:cuatro para datos de forma paralela, una lnea de comandos, una lneapara el reloj y tres ms para energizar a la tarjeta. El modo serie, omodo SPI, es a travs del protocolo Serial Peripheral Interface. ste esun protocolo de comunicacin secundario, usa un extracto del protocolooficial de la SD CARD y una parte del total de comandos. Esta restriccinde comandos no es realmente importante, pues simplemente el modo SPIno los utiliza. As, una implementacin completamente funcional se puedelograr usando este modo, y es el que se utiliza en este proyecto.

    2.2.2. Especificaciones de la memorias Secure Digital

    Nos referiremos a la Physical Layer Simplified Specification Version 2.00,como las especificaciones utilizadas en este proyecto. stas dividen alas tarjetas de distintas formas, y para nuestro fin es de inters la clasifi-cacin por capacidad de almacenamiento, o simplemente por capacidad.Se dividen en dos tipos: SD estndar (SD) y SD High Capacity (SDHC).

    A partir de este momento y de manera general, a las tarjetas SecureDigital, sin distincin de tipo, las identificaremos como memorias SD

    www.sdcard.org1

  • Generalidades Memorias Secure Digital

    10

    CARD o simplemente SD CARD; a las memorias Secure Digital estn-dar las identificaremos como SD y a las memorias Secure Digital HighCapacity como SDHC.

    Antes de continuar con el tema, es conveniente hacer la aclaracinsobre las unidades que se utilizan para representar la cantidad de infor-macin almacenada.

    Prefijos Las computadoras guardan la informacin digital en potenciasde base dos, utilizando el sistema binario. Mientras que los humanos usa-mos la numeracin decimal, expresada en potencias de base diez. Vasela siguiente tabla.

    210 = 1 024 103 = 1 000220 = 1 048 576 106 = 1 000 000230 = 1 073 741 824 109 = 1 000 000 000

    Tabla 2.1. Base binaria vs. base decimal.

    Observando la similaridad entre ambos sistemas, por conveniencia seadoptaron las abreviaciones utilizadas en los nmeros decimales paraser aplicados a los nmeros binarios.

    El Institute of Electrical and Electronics Engineers (IEEE) ha propues-to para eliminar la confusin, una nueva convencin nombrando abrevia-ciones en los nmeros binarios. Bajo esta propuesta, la tercera y cuartaletra de los prefijos usados en los nmeros decimales, se cambian por bi.Por ejemplo el prefijo Mega se convierte en Mebi. As un Megabyte se-r 106 bytes, y un Mebibyte ser 220 bytes. La abreviacin ser 1[MiB]en vez de 1[MB] [1]. Vase la tabla 2.2.

    Sin embargo, las viejas costumbres persisten y no es comn encontraraplicada esta nomenclatura. Hecha la aclaracin, conservaremos en estetexto los prefijos: kB, para referirmos a 210 bytes; MB, para referirnos a220 bytes; GB, para referirnos a 230 bytes y TB para referirnos a 240 bytes.

    De acuerdo a las especificaciones, las memorias SD soportan capaci-dades hasta de 2[GB]. Las memorias SDHC soportan capacidades mayoresa 2[GB] y hasta 32[GB] [2].

  • Memorias Secure Digital Generalidades

    11

    DECIMAL

    Nombre Abreviacin Potencia Valor

    kilobyte kB 103 1 000Megabyte MB 106 1 000 000Gigabyte GB 109 1 000 000 000Terabyte TB 1012 1 000 000 000 000

    BINARIO

    Nombre Abreviacin Potencia Valor

    kibibyte kiB 210 1 024Mebibyte MiB 220 1 048 576Gibibyte GiB 230 1 073 741 824Tebibyte TiB 240 1 099 511 627 776

    Tabla 2.2. Prefijos binarios bajo la propuesta de la IEEE.

    En Abril del 2001, se dio a conocer la primera versin simplificadade las especificaciones de la SD CARD, siendo apta para tarjetas de me-moria con capacidades menores a 2[GB], las SD. En Septiembre del 2006,la segunda versin simplificada de las especificaciones estuvo disponible,cubriendo memorias con capacidades de hasta 32[GB], abarcando las me-morias SD y SDHC. En Abril del 2009, las ms recientes especificacionesse pusieron al alcance de los miembros con licencia; comprenden tarje-tas con capacidades mayores de 32[GB] y hasta 2[TB]. Es la siguientegeneracin de memorias SD CARD, las SD eXtreme Capacity (SDXC).2

    En la tabla 2.3 se muestran algunas caractersticas de las memoriasmencionadas, corresponden a las de la figura 2.4.

    Existen tambin los tamaos mini y micro: miniSD, miniSDHC, mi-croSD, microSDHC y microSDXC.

    Los tipos SD y SDHC mostrados en la figura 2.4 son los que se usaronen este proyecto.

    http://www.sdcard.org/developers/tech/sdxc/2

  • Generalidades Memorias Secure Digital

    12

    Tipos: SD SDHC SDXC

    Capacidad [GB] 2? 4 -- 32 32 -- 2000??

    Sistema de archivos FAT16 FAT32 exFATVoltaje de operacin [V] 2.7 -- 3.6Nmero de terminales 9Dimensiones [mm] 32 24 2.1Peso [g] 2

    Hasta 2 [GB].?

    Ms de 32 [GB] y hasta 2 [TB].??

    Tabla 2.3. Tipos de memorias SD CARD.

    Fig. 2.4. Memorias SD, SDHC y SDXC.

    2.2.3. Modo serie de comunicacin de datos

    El Serial Peripheral Interface (SPI) es un un protocolo serie sncrono,extremadamente popular para comunicar dispositivos perfricos con mi-crocontroladores. Su popularidad es la principal ventaja de la comunica-cin SPI, la mayora de los microcontroladores tienen implementado esteprotocolo y prcticamente con cualquiera de ellos se puede establecercomunicacin con las tarjetas de memoria. La desventaja del modo SPIradica en el desempeo respecto al modo SD, que es una comunicacinparalela.

    Protocolo El protocolo de comunicacin tiene una estructura comandorespuesta. Todos los comandos son iniciados y enviados por el maestro, elmicrocontrolador (host), al esclavo, que es la tarjeta. La tarjeta contestalos comandos siempre con una respuesta.

  • Memorias Secure Digital Generalidades

    13

    Todos los bytes transmitidos por el host y por la tarjeta inician conel envo de su byte ms significativo.

    Las memorias SD CARD manejan 89 comandos. De stos, los coman-dos de lectura y escritura involucran transferencia de datos. Los datosse transmiten y reciben va tokens. Un token es un byte con un valorespecial, y se utilizan cinco de ellos; tres de estos tokens tienen valoresfijos y el valor de los dos restantes depende del estado de la transferenciade datos.

    La tarjeta enva un token por cada bloque de datos escrito exitosa-mente en ella. En la escritura y lectura de un solo bloque de datos, ascomo en la lectura de mltiples bloques, un token encabeza a los bytesde informacin. Si la operacin de lectura falla, la tarjeta enva un tokende error. Y en la escritura de mltiples bloques, se involucran tokens deinicio y fin que encapsulan a los bytes de datos.

    La respuesta de la tarjeta no es inmediata. Una vez que recibe uncomando se debe que esperar a que emita una respuesta. Transmitidala respuesta y dependiendo del comando, la tarjeta enva datos o unacondicin de error.

    Existen siete tipos de respuesta: R1, R1b, R2, R3, R4, R5 y R7, todascon cero como bit de inicio, pero cada una con un formato particular.Las respuestas R4 y R5 son reservadas.

    Si la tarjeta no tiene informacin que enviar al host, entrar en unestado inactivo o idle de unos, es decir, entrar en un estado de esperamanteniendo su terminal de salida de datos en alto. De la misma forma,el host se encontrar en estado idle cada vez que le enve a la tarjeta slounos.

    Los bloques de datos tienen una longitud fija. Como el host tienesiempre conocimiento previo del nmero de bytes que espera recibir encada transaccin, la respuesta de la tarjeta no incluye la longitud de losdatos enviados. El estado idle en la tarjeta no puede ocurrir hasta quelos datos hayan sido enviados, as estos se transmiten sin alteracin.

    Toda la informacin enviada por el bus se alnea por bloques de ochobits, de acuerdo a los lmites marcados por las transacciones de la comu-nicacin SPI.

    Todas las transacciones entre el host y la tarjeta estn protegidas porun cdigo de deteccin de error, que es un bloque de bytes adjuntado al

  • Generalidades Memorias Secure Digital

    14

    final de la informacin enviada, el Cyclic Redundancy Code (CRC). Latarjeta considera dos algoritmos de CRC, el CRC7 y el CRC16 [2]. El CRCes opcional en el modo SPI y est deshabilitado por default.

    Formato de los comandos Todos los comandos se forman por bloquesde seis bytes, como muestra la figura 2.5.

    Fig. 2.5. Estructura de los comandos.

    El ndice o nmero del comando se especifica del bit 0 al bit 5 del byte6, el bit 6 y 7 son los bits de transmisin y de inicio respectivamente,y tienen un valor fijo. Los siguientes cuatro bytes forman el argumentodel comando, si es que lo requiere; el byte 5 corresponde al byte mssignificativo del argumento, y el byte 2 al menos significativo. Del bit 7al bit 1 del ltimo byte se escribe el CRC7 sobre los bytes 6 al 2, y elltimo bit de este byte es el bit de fin.

    Existen dos tipos de comandos: los estndar y los de aplicacin es-pecfica. Los comandos estndar se identifican por un nmero del 0 al63. Algunos de ellos son de uso exclusivo para el modo SD y otros sonreservados. Los comandos de aplicacin especfica son 25 y no llevan unanumeracin continua.

    Respecto al host, la nica diferencia entre los comandos estndar ylos de aplicacin especfica es la forma en que los enva a la tarjeta. Loscomandos de aplicacin especfica van siempre precedidos del comandoestndard 55, que le informa a la tarjeta que el comando, a continuacinde l, no es estndar, si no, de aplicacin especfica. En contraste, loscomandos estndar se envan tal cual, sin ser ser precedidos por algnotro comando.

    Secuencia de inicio Sin importar el modo, SD o SPI, antes de quecualquier comunicacin se intente con la memoria SD CARD, es necesario

  • Memorias Secure Digital Generalidades

    15

    seguir una secuencia de inicio previa a la secuencia de inicializacin: seenergiza la SD CARD, se da un retardo de inicializacin y se procede a lasecuencia de inicializacin. Ver la figura 2.6.

    Se energizaSD CARD

    Retardo deinicializacin

    Secuencia deinicializacin

    Fig. 2.6. Secuencia de inicio de las memorias SD CARD.

    Para entrar al modo SPI (ver figura 2.7) se energiza la tarjeta y a conti-nuacin le sigue un retardo de inicializacin, que consiste en el envo de74 pulsos de reloj, tiempo que le permite a la tarjeta iniciar sus regis-tros internos. La secuencia de inicializacin o secuencia de comandos deinicializacin, comienza con el envo del comando cero.

    Inicializacin El host debe dar un reset a la tarjeta envindole elcomando cero. Esto reinicia a la tarjeta y la instruye para entrar al modoSPI; el CRC en el modo SPI se ignora, pero este primer comando debetener un valor vlido de CRC, pues el modo de inicio es por default el SD,y, en este estado, la tarjeta todava no ha entrado al modo SPI.

    La tarjeta contesta el comando cero con la respuesta tipo R1, ver figura2.8. En general, la respuesta R1 la enva la tarjeta despus de la recepcinde cada comando, con excepcin del comando 13. La respuesta R1 es unbyte que indica la presencia de errores, los que se sealan con 1 en el bitque corresponde al error marcado. A esta altura de la inicializacin, R1debe tener solamente encendido el bit que corresponde al estado idle.Este bit en uno significa que la tarjeta ha entrado al estado idle, entoncesel reset ha sido efectivo, y la SD CARD est en modo SPI.

  • Generalidades Memorias Secure Digital

    16

    CMD 0CRC VLIDO

    MODO SPI

    Se energizaSD CARD

    74 pulsosde reloj

    Fig. 2.7. Secuencia de entrada al modo SPI.

    Fig. 2.8. Formato de la respuesta R1.

    A continuacin el host enva el comando ocho. Este comando tienedos funciones:

    Verifica que la tarjeta pueda operar con el voltaje del host. Habilita la expansin de comandos y respuestas.

  • Memorias Secure Digital Generalidades

    17

    El objetivo del comando es verificar la condicin de la interfaz con latarjeta de memoria, est definido para inicializar a las tarjetas SD CARDconformes con la versin 2.00 de las especificaciones. A travs de estecomando el host pueden accesar a las memorias SDHC. Otros fallan alinicializarlas, como se ve en la figura 2.9. Es por lo tanto obligatorio parael host, conforme con la versin 2.00, el envo del comando ocho.

    Fig. 2.9. Compatibilidad Host--SD CARD.

    La tarjeta analiza el argumento del comando y le verifica al host la validezde la condicin de operacin a travs de la respuesta tipo R7, de cincobytes.

    En la parte superior de la figura 2.10 se indica el orden de los 40bits que forman la respuesta. La nomenclatura bX,BY se debe leer comoel bit X del Byte Y; por ejemplo, b4,B2 ser el bit 4 del Byte 2 de larespuesta R7.

    Fig. 2.10. Formato de la respuesta R7.

  • Generalidades Memorias Secure Digital

    18

    La secuencia contina con el comando 58, su envo no es obligatorio. Estdiseado para que el host tenga una manera de identificar a las tarjetasque no verifican su rango de voltaje.

    La respuesta de la tarjeta al comando 58 es de cinco bytes y es tipoR3. Se muestra en la figura 2.11.

    Fig. 2.11. Formato de la respuesta R3.

    Si la tarjeta no verifica el rango de voltaje del host, el proceso de inicia-lizacin deber detenerse y la tarjeta no podr usarse.

    A continuacin se enva el comando de aplicacin especfica 41. Estecomando activa el proceso de inicializacin de la tarjeta; la respuesta estipo R1. La tarjeta usa el bit de estado idle de la respuesta para informaral host si la inicializacin ha sido completada: si el bit cambia su valor a0 el proceso de inicializacin se ha completado; si se mantiene en 1, latarjeta sigue inicializndose.

    El comando 41 de aplicacin especfica deber enviarlo el host repe-tidamente a la tarjeta, hasta que el bit de estado idle de la respuesta R1sea 0.

    Completada la secuencia de comandos de inicializacin, el host verificala respuesta del comando 58, comando que enva para finalizar el proceso.

    En el diagrama de flujo de la figura 2.12 se resume la inicializacinde la SD CARD.

    El diagrama es una simplificacin del algoritmo de inicializacin. Sehan obviado varias consideraciones que se retomarn en el captulo si-guiente.

  • Memorias Secure Digital Generalidades

    19

    CMD 0CRC VLIDO

    MODO SPI

    CMD 8

    CMD 58

    CMD 55

    ACMD 41

    idle?s

    no

    CMD 58

    Se energizaSD CARD

    74 pulsosde reloj

    Fig. 2.12. Algoritmo de inicializacin.

  • Generalidades Memorias Secure Digital

    20

    2.2.4. Deteccin de erroresLas tcnicas de deteccin de error proporcionan al receptor un medio paradeterminar si el mensaje que recibi del transmisor se ha corrompido,generalmente por efecto de ruido en el canal de comunicacin.

    La idea tras las tcnicas de deteccin de error es la siguiente: el trans-misor construye un valor (llamado checksum) que es una funcin delmensaje, lo adjunta al final de ste, y lo enva al receptor. El receptorusa la misma funcin para calcular el checksum del mensaje recibido ylo compara con el checksum adjuntado, para ver si el mensaje se recibicorrectamente.

    El trmino checksum se usaba para describir los primeros algoritmos,basados en sumas. El nombre se ha adoptado, y toma ahora un significadoms amplio, abarcando algoritmos ms sofisticados como los del CRC.

    La figura 2.13 muestra el ejemplo de un mensaje con checksum.

    Fig. 2.13. Mensaje con checksum.

    El CRC protege contra errores de transmisin en el bus a los comandos,respuestas y a las transferencias de datos entre el host y la SD CARD.

    La idea bsica de los algoritmos CRC es tratar al mensaje como ungran nmero binario, dividirlo entre otro nmero binario fijo, y hacer queel residuo de la divisin sea el checksum. Una vez recibido el mensaje, elreceptor calcula la misma divisin y compara el residuo obtenido con elchecksum.

    Los algoritmos CRC utilizan polinomios; esto significa simplementeque el divisor, el dividendo (mensaje), el cociente y el residuo (check-sum), se ven como polinomios con coeficientes binarios. Por ejemplo, elpolinomio que corresponde al nmero binario 10111, es: 1x4+0x3+1 x2 + 1 x1 + 1 x0 o simplemente x4 + x2 + x1 + x0. En general sedice que estos algoritmos operan usando aritmtica de polinomios, quees la aritmtica binaria, sin acarreos.

    Para calcular la divisin se necesita un dividendo (que est dado porel mensaje) y un divisor (llamado polinomio generador o polinomial)que es el parmetro principal de cada algoritmo CRC.

  • Memorias Secure Digital Generalidades

    21

    Las memorias SD CARD implementan dos algoritmos de CRC: el CRC7y el CRC16. El CRC7 se genera para cada comando enviado y el CRC16para cada bloque de datos transferido. Las especificaciones proporcionanlos polinomios generadores para cada uno de estos algoritmos.

    Ejemplo de clculo El algoritmo del CRC es simplemente el clculo deuna divisin operada con aritmtica binaria sin acarreos. El nico trucoes que el dividendo se completa o se le agregan tantos ceros como laposicin del 1 ms significativo del divisor. Se muestra a continuacinun ejemplo.

    Mensaje original : 1101011011Polinomio generador : 10011Mensaje despus de agregar ceros : 11010110110000

    El 1 ms significativo del polinomio generador (divisor) es el bit 4, esdecir, el 1 est en la posicin cuatro; se agregan entonces cuatro ceros almensaje original, formando el dividendo. La divisin es como se muestraen la figura 2.14.

    Fig. 2.14. Ejemplo de clculo del CRC.

  • Generalidades Sistema de archivos

    22

    2.3. Sistema de archivosUn sistema de archivos se refiere a las estructuras que se utilizan paraorganizar datos dentro de una unidad de almacenamiento; es un mtodopara almacenar y organizar archivos y su contenido.

    Un archivo es una coleccin de bytes almacenados en grupo con unnombre para identificarlo, puede contener cualquier tipo de informacin:imagenes, texto, una pelcula, etctera. Lo significativo de un archivo lodetermina su contenido y el programa que se utiliza en l.

    En una PC el sistema operativo utiliza el sistema de archivos paraalmacenar y recuperar informacin en una unidad cuando se requiere;en otras palabras, el sistema de archivos sirve como interfaz entre elsistema operativo y la unidad de almacenamiento. Por ejemplo, cuandouna aplicacin como MS Word pide leer un archivo que est en el discoduro, el sistema operativo (Windows) le pide al sistema de archivos (FAT)que abra el archivo. Ver la figura 2.15.

    Fig. 2.15. Sistema operativo y sistema de archivos.

    El sistema de archivos sabe donde se guard el archivo, encuentra elespacio de disco donde est almacenado y entrega los datos al sistemaoperativo.

    Todo sistema operativo tiene su sistema de archivos que abstrae yadministra la informacin guardada en una unidad o dispositivo de al-macenamiento. Las caractersticas particulares del sistema de archivosdependen del sistema operativo.

  • Sistema de archivos Generalidades

    23

    La informacin guardada en una unidad de almacenamiento puedeser o no accesada a travs de un sistema de archivos, pero si se quiereformalizar la lectura de su contenido con una computadora debe utilizarseuno.

    La computadora da formato o formatea una unidad o dispositivode almacenamiento para organizarlo y prepararlo para recibir datos. Alformatearlo se dice que recibe un sistema de archivos.

    El formateo se puede comparar con empezar una biblioteca; antes depoder consultar los libros y tener acceso a ellos, se instalan primero lasrepisas sobre las que se colocan los libros y el sistema de catlogos. Hechoesto, la biblioteca est lista para recibir los libros. De forma similar, alformatear un dispositivo de almacenamiento, se instalan las estructurasdel sistema de archivos que le permiten al dispositivo ser usado paraalmacenar datos, quedando listo para recibir informacin.

    2.3.1. Sistema de archivos FAT

    Existen distintos sistemas de archivos y cada uno utiliza mtodos dife-rentes para organizar la informacin. Se estima que el 90% de las compu-tadoras utiliza el sistema de archivos FAT, siendo el ms popular. Parauna mejor comprensin del sistema FAT es necesario definir algunos delos trminos que ste emplea.

    Conceptos bsicos Para lograr un uso eficiente y un buen desempeodel dispositivo de almacenamiento, el sistema de archivos FAT divide elespacio de almacenamiento en pedazos discretos llamados clusters.

    Un cluster es un bloque continuo de espacio de almacenamiento queagrupa sectores; los sectores en un cluster son continuos.

    Un sector es la unidad ms pequea en la que se puede dividir elespacio de almacenamiento, su tamao es de 512 bytes.

    El tamao de un cluster lo determina el sistema de archivos y dependedel espacio de almacenamiento. Volmenes grandes de almacenamientodeterminan tamaos de cluster mayores.

    El tamao de un cluster se expresa generalmente en trminos de lacantidad de sectores que contiene, por ejemplo: 4 sectorescluster (2048 bytes), 64

  • Generalidades Sistema de archivos

    24

    sectorescluster (32 768 bytes), 128

    sectorescluster (65 536 bytes). Una vez determinado

    el tamao de cluster, ste queda fijo.Se le llama alojamiento (allocation) al proceso en el que los archivos

    son asignados a los clusters.Todo archivo debe ser alojado en un nmero entero de clusters. El

    cluster es la unidad ms pequea de espacio que se le puede asignar a unarchivo; por esta razn, a los clusters se les llaman tambin unidades dealojamiento (allocation units) o unidades de asignacin.

    Supongamos que tenemos un disco que utiliza clusters de 8192 bytes.Un archivo de 8000 bytes usar un cluster para alojarse, mientras queun archivo de 9000 bytes utilizar dos clusters, es decir, se le asignarn16 384 bytes de espacio en el disco. sta es la razn por la que el ta-mao de cluster es importante, los tamaos grandes resultan en mayorespacio de almacenamiento desperdiciado, pues es menos probable quelos archivos llenen completamente un nmero entero de clusters. Los ar-chivos quedan entonces representados por clusters dentro del dispositivode almacenamiento.

    El sistema operativo determina donde se encuentran los clusters queforman a cada archivo guardado en el volumen de almacenamiento, atravs del directorio y de la tabla de asignacin, llamada File AllocationTable (FAT), del sistema de archivos. El sistema de archivos FAT tomasu nombre de esta tabla.

    El directorio es una regin dentro del dispositivo de almacenamien-to en la que se registran caractersticas que identifican a cada archivoguardado, como su nombre, extensin, tamao, cluster de inicio.

    En la FAT se guarda informacin sobre los clusters que se asignan acada archivo; es decir, la tabla guarda informacin sobre qu partes delespacio de almacenamiento del dispositivo contienen a qu archivos.

    El sistema operativo determina con la informacin del directorio elprimer cluster de cada archivo y recurre a la FAT para conocer los siguien-tes clusters que lo forman. Los clusters se identifican por un nmero, esenmero le da al cluster una entrada en la FAT.

    Cada cluster de cada archivo tiene una entrada en la FAT que describecomo se arma ese archivo, la entrada del cluster se refiere a la posicinque ocupa ese cluster dentro de la FAT. El valor de la entrada es elcontenido de esa posicin dentro de la tabla, que es el nmero de cluster

  • Sistema de archivos Generalidades

    25

    del siguiente cluster usado por el archivo, es decir, el valor de la entradaindica el nmero de cluster siguiente del archivo. Esta informacin la usael sistema operativo para encadenar clusters y formar archivos.

    En la figura 2.16 se muestra la asignacin de clusters a dos archivos,MiDoc1.doc de cuatro clusters y Doc.txt de un slo cluster.

    Fig. 2.16. Ejemplo de alojamiento de dos archivos.

    En el ejemplo los archivos no estn formados por clusters consecutivospero la asigancin podra cambiarse para que la secuencia de clusterslo fuera. Como lo indica la figura, el nmero del primer cluster de cadaarchivo se obtiene del directorio.

  • Generalidades Sistema de archivos

    26

    Tipos de FAT El tamao de la FAT limita la cantidad de clusters queun dispositivo de almacenamiento puede tener. Existen tres versiones deesta tabla y con ellas se definen los tres sistemas de archivos de la familiaFAT:

    FAT12Es el tipo de FAT ms antiguo. La longitud del valor deentrada (tamao de la entrada) en la tabla es de 12 bits,es decir, utiliza 12 bits para representar los nmeros decluster. Un volumen formateado usando el sistema dearchivos FAT12 puede tener y por lo tanto direccionar,un mximo de 4086 clusters. El sistema de archivos re-serva diez clusters adicionales para uso propio. El FAT12es apropiado para dispositivos que permiten volumenespequeos de almacenamiento (menores a 16[MB]).

    FAT16Es el FAT usado por la mayora de los sistemas querecientemente se han vuelto antiguos. El tamao de laentrada en la tabla es de 16 bits, es decir, se representacada nmero de cluster por 16 bits. Un volumen que usaFAT16 soporta un mximo de 65526 clusters. El sistemade archivos reserva diez clusters adicionales para usopropio. El FAT16 se usa en dispositivos con necesidadesmayores de almacenamiento que abarcan el rango de16[MB] a 2[GB].

    FAT32Es el tipo ms reciente de la familia FAT. Es compatiblecon las versiones ms recientes de Windows. Este sis-tema de archivos utiliza nmeros de cluster de 28 bits(no de 32), porque 4 de los 32 bits son reservados. ElFAT32 puede, en teora, manejar volumenes de ms de268 millones de clusters.

    En la tabla 2.4 se hace un resumen de las caractersticas principalesde la familia de archivos FAT.

  • Sistema de archivos Generalidades

    27

    Atributo FAT12 FAT16 FAT32

    Almacenamiento Muy pequeo Moderado GrandeTamao de entrada 12 bits 16 bits 28 bitsMx. nm. clusters 4086 65526 268435456Tamao de cluster 0.5 [kB] -- 4 [kB] 2 [kB] -- 32 [kB] 4 [kB] -- 32 [kB]Mx. almacenamiento 16[MB] 2[GB] 2[TB]

    Tabla 2.4. Sistemas de archivos FAT.

    El remplazo del FAT e incompatible con este sistema de archivos es elexFAT.

    exFATEl sistema de archivos exFAT (Extended File AllocationTable) lo introdujo Microsoft a finales del 2006. Estdirigido especialmente a dispositivos de almacenamien-to que usan tecnologa flash y se pretende reemplace elsistema de archivos FAT que actualmente se usa en estosdispositivos. El volumen de almacenamiento mximo esde 512[TB]. Por el momento no se han hecho disponibleslas especificaciones oficiales y por lo mismo la mayorade los equipos electrnicos no lo soportan, aunque estopodra cambiar con la llegada de las tarjetas SDXC.

    Las tarjetas de memoria SD CARD, utilizadas en el desarrollo de estetrabajo, soportan los sistemas de archivos FAT16 y FAT32. Estos sistemasde archivos son los que se implementan.

    En adelante, en el texto se har referencia general a ambos, comosistema de archivos FAT, o simplemente FAT3. Los nombres explcitosFAT16 y FAT32 se utilizarn cuando se hable en especfico de ellos.

    Mapas de memoria El volumen de almacenamiento de un dispositivoformateado con el sistema de archivos FAT se compone por cuatro regionesbsicas:

    No deber haber confusin entre el FAT y la FAT. El primero se refiere al sistema de3archivos FAT, mientras que el segundo a la tabla de asignacin del sistema de archivosFAT.

  • Generalidades Sistema de archivos

    28

    R0 : Regin reservadaR1 : Regin FATR2 : Regin del directorio raz (no existe para FAT32)R3 : Regin de datos y directorio

    El primer sector de la SD CARD es el Master Boot Record (MBR),llamado tambin registro de arranque maestro. El MBR contiene infor-macin sobre las diferentes divisiones lgicas de la tarjeta, las particiones.

    Las memorias SD CARD tienen una particin activa, es decir, todo elespacio de almacenamiento de la tarjeta est dentro de una sola particin.Cualquier direccin es relativa a esta particin.

    La tarjeta tiene entonces dos inicios o dos ceros: el CERO de latarjeta, que inicia en el MBR, y el cero lgico, que empieza con elinicio de la particin, que es el inicio del sistema de archivos.

    En la figura 2.17 se esquematiza la estructura de la tarjeta de memoriabajo los sistemas de archivos FAT16 y FAT32.

    Fig. 2.17. Mapas de memoria.

  • Sistema de archivos Generalidades

    29

    El boot sector, o sector de arranque, es el primer sector de la par-ticin y contiene informacin bsica sobre el sistema de archivos. Estainformacin la proporciona el sistema operativo cuando se formatea latarjeta.

    La regin FAT es el mapa de la tarjeta, indica como estn distribu-dos los clusters en la regin de datos. Por lo general hay dos copias de laFAT en esta regin, para proveer redundancia en caso de corrupcin deuna de ellas.

    El directorio raz slo aplica para el sistema de archivos FAT16,esta regin sigue a la regin FAT. En el sistema de archivos FAT32 eldirectorio no tiene una zona especial, si no que es una cadena de clusterscomo cualquier archivo y se puede colocar en cualquier lugar dentro dela regin de datos.

    El directorio guarda informacin de los datos que almacenamos en latarjeta; los datos son archivos y subdirectorios que el usuario crea cuandosalva su trabajo. La informacin de estos datos se guarda en records oen entradas en el directorio. Ver la figura 2.18.

    Fig. 2.18. Estructura de una entrada del directorio.

    Cada sector del directorio contiene 16 entradas de 32 bytes cada una.Esto aplica para ambos sistemas FAT16 y FAT32.

    En trminos simples, el directorio sirve para conocer el primer nmerode cluster del archivo, esto es, el directorio nos dice donde empieza elarchivo.

  • Generalidades Sistema de archivos

    30

    Las regiones R0, R1 y R2 forman el rea del sistema. Como se ve, elsistema de archivos reserva un espacio de la particin para guardar datosadministrativos del sistema. Es por esto que cuando se formatea a la SDCARD, y en general, a cualquier dispositivo de almacenamiento con estesistema de archivos, el espacio disponible para guardar nuestros datos noes el total de la capacidad de almacenamiento del dispositivo.

    La regin de datos es el espacio de la memoria disponible al usuario,y es el resto del espacio de la particin. En ella se almacenan los archivosy tambin (para el caso del FAT32) el directorio.

    2.3.2. Otras alternativas

    Por sus caractersticas particulares, las memorias flash van acompaadasde un controlador que realiza funciones de deteccin de errores y wearlevelling4, o de un sistema de archivos especfico para esta tecnologa,que provee, adicional a estas funciones, un uso adecuado de la tecnologaflash.

    En la prctica muchos sistemas que integran memory cards tienencontroladores que llevan a cabo las funciones mencionadas, e implemen-tan sistemas de archivos convencionales, como el sistema de archivosFAT.

    Los sistemas de archivos convencionales fueron desarollados para usar-los en unidades de almacenamiento antes del estado slido, como en losdiscos duros. Estos sistemas convencionales, al ser implementados en lasnuevas tecnologas, como en las tarjetas de memoria, emulan una unidadde disco, y por lo mismo, no explotan convenientemente las caractersti-cas de la tecnologa flash; sin embargo, permiten compatibilidad universalcon cualquier computadora, y proporcionan una opcin de bajo costo pa-ra administrar el contenido almacenado en la memoria.

    Las Flash Translation Layers (FTL) son drivers que junto con el sis-tema operativo emulan, a partir de una memoria flash, una unidad dedisco comn, y la proveen de wear levelling; los sectores del dispositivo

    Se le llama as a las tcnicas que prolongan el tiempo de vida til de varios tipos de4memorias, como las memorias flash, ordenando la informacin contenida para lograrun desgaste homogneo en toda la memoria.

  • Comunicaciones serie Generalidades

    31

    emulado se almacenan en localidades que varan y una Translation Layerse usa para seguir la pista de la posicin actual de cada sector.

    Los sistemas de archivos flash (Flash File Systems) estn especial-mente diseados para almacenar archivos en dispositivos que utilicenmemorias flash. El exFAT es un ejemplo de este tipo de sistemas de ar-chivos.

    2.4. Comunicaciones serieEn el proyecto se utilizan dos tipos de comunicacin serie. Una principaly otra de apoyo. La principal se aplica con la memoria SD CARD, y la co-municacin es a travs del protocolo SPI. Esta comunicacin es suficientepara satisfacer el objetivo del proyecto.

    La comunicacin de apoyo se realiza con la computadora y se usacomo una va de epuracin para el sistema desarrollado. Se realiza atravs del protocolo RS-232 y se describe brevemente en la seccin 2.4.2.

    2.4.1. Protocolo serie sncrono SPI

    La comunicacin SPI se utiliza para mover datos de forma simple y rpidade un dispositivo a otro. El protocolo permite que un dispositivo maestroinicie comunicacin con un dispositivo esclavo y que haya intercambiode datos entre ellos.

    El SPI comnmente est implementado en la mayora de los microcon-troladores como un mdulo de hardware, como en el microcontroladorutilizado en este proyecto.

    Las caractersticas principales de la comunicacin SPI y cmo la llevaa cabo el microcontrolador, se mencionan a continuacin.

    Caractersticas del protocolo SPI

    La interfaz SPI usa cuatro seales para intercambiar datos de formaserie con otro dispositivo.

    Serial Data In (SDI). Esta lnea lleva los datos de entrada al dipo-sitivo.

  • Generalidades Comunicaciones serie

    32

    Serial Data Out (SDO). Esta lnea lleva los datos de salida deldispositivo.

    Serial Clock (SCK). Es la seal de reloj del protocolo de comuni-cacin. Controla el envo y la lectura de los datos y es generadopor el maestro.

    Slave Select (SS). Cuando esta lnea se pone en bajo (0) la seales activa y el esclavo atiende al reloj y a las seales de datos. Estalnea controla la conexin y desconexin del esclavo.

    Es un protocolo sncrono. Los datos se envan por el dispositivo maestro junto con la seal

    de reloj, SCK. Este ltimo lo proporciona el maestro para proveersincronizacin (coordinacin en tiempo).

    La seal de reloj controla cundo los datos cambian y cundo stosson vlidos para leer.

    La frecuencia del reloj puede variar sin corromper los datos. Larazn de cambio de los datos variar conforme a los cambios enlos pulsos del reloj.

    Es un protocolo maestro--esclavo. El maestro controla la seal de reloj. No existe transferencia de datos a menos que la seal de reloj est

    presente.

    El esclavo no pueden manipular la seal de reloj. La configuracindel dispositivo determina como responde ste cuando recibe elreloj.

    Es un protocolo de intercambio de datos. Los intercambios se controlan por la lnea de reloj. Los datos siempre se intercambian entre el maestro y el esclavo.

    En la comunicacin SPI ningn dispositivo es slo un transmisoro slo un receptor. Cada uno tiene dos lneas de datos: una paraentrada (SDI) y otra para salida (SDO).

  • Comunicaciones serie Generalidades

    33

    Mientras el maestro enva datos al esclavo, al mismo tiempo recibede ste datos de entrada. De la misma forma, mientras el esclavoenva datos al maestro, recibe de ste datos de entrada.

    Los datos de entrada deben ser ledos por el dispositivo antesde intentar una nueva transmisin. Si no se leen sern reescritospor los nuevos datos de entrada recibidos, y el mdulo de SPI sedeshabilitar como consecuencia. Por ello siempre se deben leerlos datos de entrada despus de cada transferencia, an cuandostos no se utilicen.

    Por regla general, la seal de control SS debe usarse siempre. Estaseal le indica al esclavo que el maestro desea iniciar un intercam-bio de datos con l.

    La transmisin de datos se configura a travs del modo SPI quecontrola el momento en el que se transmiten los datos.

    Los datos se envan en cada flanco de subida o bajada de la sealSCK segn el modo SPI, mientras que en el flanco opuesto al con-figurado se leen. Si el valor de los datos cambia, lo hace con losflancos de subida o bajada de la transmisin; esta es la forma enla que los datos se sincronizan con la seal de reloj. Por ejemplo,en la figura 2.19 el valor de los datos cambia en cada flanco debajada y la lectura se hace en cada flanco de subida de la sealSCK.

    Fig. 2.19. Reloj SPI.

  • Generalidades Comunicaciones serie

    34

    Transferencia de datos

    En la comunicacin SPI se crea un lazo de datos entre el maestroy el esclavo. Los datos que entran y salen del maestro los llevan laslneas SDI y SDO de este dispositivo respectivamente. De forma similarocurre para el dispositivo esclavo.

    La seal de reloj es generada por el maestro y con su envo inicia lacomunicacin SPI, previa activacin del esclavo a travs de la lnea SS.El esclavo espera estas seales y las usa cuando procesa los datos dela comunicacin.

    Por cada pulso de reloj un bit es enviado y cada bloque de datos es deocho bits. El maestro transmite un bloque de datos al esclavo, los queviajan de la terminal SDO del maestro a la terminal SDI del esclavo. Almismo tiempo, el esclavo manda un bloque de datos al maestro, de laterminal SDO del esclavo a la terminal SDI del maestro. Cuando termi-na la transferencia los boques de datos respectivos se habrn enviadoy ambos dispositivos debern leer el byte que recibieron de la trans-ferencia. El microcontrolador lo har a travs del registro SSPBUF. Elproceso se repite tantas veces como bytes se transmitan durante lacomunicacin.

    La lnea SS es una terminal cualquiera de un puerto del microcontro-lador (maestro) y debe ser controlada por el firmware implementadoen ste. Cuando se termina la transferencia de datos esta lnea se poneen alto (1) y la comunicacin SPI termina.

    La figura 2.20 esquematiza la comunicacin SPI.

    2.4.2. Protocolo serie asncrono RS-232

    Comunicar de forma serie implica el envo y recepcin de pulsos digitalesa una velocidad de transmisin establecida entre los dispositivos que secomunican.

    En la comunicacin RS-232 el transmisor enva los datos a travs depulsos, a una razn acordada previamente con el receptor. El receptorpor su parte atiende estos pulsos a la misma razn. No existe un relojcomn entre los dispositivos, en vez de esto, cada uno tiene su propio

  • Comunicaciones serie Generalidades

    35

    Fig. 2.20. Comunicacin SPI.

    reloj, y acuerdan una razn para la variacin de los datos, para la cualajustan sus relojes.

    Los dipositivos se conectan por tres lneas:

    Tierra comn (GND). Ambos comparten el punto de referencia paramedir los cambios de tensin.

    Transmisin (TX). El transmisor en turno enva los datos al receptora travs de esta lnea.

    Recepcin (RX). El receptor en turno recibe los datos del transmisora travs de esta lnea.

    Comnmente los datos se envan en grupos de ocho bits. La razn,o tasa de transmisin de datos, se expresa en bits por segundo (bps).Por ejemplo, a una tasa de 38400[bps], el receptor leer continuamente latensin en la lnea en la que el transmisor le enva datos, pero slo cada1

    38400 de segundo interpretar el voltaje de la lnea como un nuevo bit.El protocolo agrega a los bits de datos un bit de inicio, bits de fin y

    un bit de paridad. Estos se pueden configurar.En el ejemplo mencionado, de los 38400 bits enviados slo una parte

    de ellos correspondern a los bits de datos, el resto son usados por losbits de inicio, fin y paridad.

  • Generalidades Microcontrolador

    36

    Cabe comentar que el protocolo RS-232 utiliza lgica invertida y nive-les de tensin que pueden ser mayores a los usados por los microcontro-ladores, 3[V] a 12[V] para el 1 y +3[V] a +12[V] para el 0. Debido alo anterior, y en su caso, la implementacin de la comunicacin RS-232 secompleta con un transceptor, necesario para la inversin y elevacin delvoltaje entre los dispositivos a comunicarse mediante este protocolo. Losdispositivos involucrados en la comunicacin son el microcontrolador yla computadora, a travs de su puerto serie, como lo muestra la figura2.21.

    Fig. 2.21. Esquema de la comunicacin RS-232.

    2.5. MicrocontroladorUn microcontrolador es el ncleo del sistema de registro de datos. Lascaractersticas de ste atienden a las necesidades que requiere el sistema;en primer lugar, a las especificaciones bsicas de la tarjeta de memoriaSD CARD, y en segundo, a la implementacin del sistema de archivos.

    Se estudiaron las caractersticas del sistema de registro de datos yse determin que prcticamente cualquier microcontrolador de propsitogeneral sirve para los fines del proyecto.

  • Microcontrolador Generalidades

    37

    El sistema de registro de datos se desarroll en el Laboratorio de Ins-trumentacin del Instituto de Ingeniera de la UNAM. El laboratorio cuen-ta con la infraestructura necesaria para desarrollar sistemas empleandomicrocontroladores de dos de fabricantes, Atmel y Microchip.

    Se revisaron caractersticas de los microcontroladores de ambos fabri-cantes y para la seleccin se tomaron en cuenta dos criterios, la docu-mentacin que dispone el fabricante y el costo del componente.

    En la poca de desarrollo del sistema de registro de datos se podansolicitar muestras de muchos de los microcontroladores de Microchip, losPICs. Estas muestras se utilizaron para familiarizarse con esta lnea demicrocontroladores y la decisin para el microcontrolador del sistema sehizo ms clara.

    Fig. 2.22. PIC18LF452.

    El resultado de esta experiencia y la til docu-mentacin facilitada por Microchip determinla seleccin del microcontrolador a un PIC yespecficamente al PIC18LF452.

    Durante el estudio de los PICSs se encon-tr conveniente escribir el cdigo del micro-controlador en lenguaje C, y para ello se uti-liz la versin estudiantil del compilador queproporciona Microchip para la familia PIC18.

    As, el ncleo del sistema de registro de datos es el microcontroladorPIC18LF452 y su firmware se program usando el lenguaje de programa-cin C.

    En la tabla 2.5 se indican las caractersticas del microcontroladorseleccionado respecto a las especificaciones del sistema.

    ESPECIFICACIN SISTEMA PIC18LF452

    Voltaje de alimentacin [V] 2.7 -- 3.6 2.0 -- 5.5Comunicacin serie:

    SPI Modo SPI Mdulo MSSPRS-232 Mdulo USART

    Memoria de programa [kB] 15 32Memoria dato [kB] 1.2 1.5

    Tabla 2.5. Caractersticas del sistema y del PIC18LF452.

  • Generalidades Microcontrolador

    38

    En este captulo se ha mostrado un panorama general de los conceptosy elementos necesarios para el desarrollo del proyecto. En el siguientecaptulo se presenta de manera formal el desarrollo y la implementacindel sistema de registro de datos.

  • 39

    Diseo

    yDesarrollo

    Este captulo se divide en dos partes. En la primera parte se plantea eldiseo del sistema de registro de datos y en la segunda su desarrollo.El desarrollo del sistema profundiza lo indicado en la parte de diseo yexpresa consideraciones a tomar en cuenta para la implementacin de launidad de registro. Se detalla lo que se considera ms importante.

    3.1. Diseo del sistemaEl sistema de registro de datos est formado por un mdulo de almace-namiento y por una unidad de depuracin. Ver figura 3.1.

    El mdulo de almacenamiento comprende una unidad de control y unamemoria SD CARD. La unidad de depuracin est conectada al mdulo dealmacenamiento y se utiliza como medio para desplegar bytes de inters,y con ello identificar y corregir errores en el sistema.

    El sistema de registro de datos graba informacin en las tarjetas dememoria de forma tal que una computadora puede identificarlas a travsde un lector de memorias SD CARD. As, el usuario accede al contenidode la tarjeta a travs de la computadora.

    Antes de que la tarjeta de memoria pueda ser utilizada en el sistemade registro, necesita estar formateada con el sistema de archivos FAT;las memorias SD CARD vienen de fbrica formateadas con este sistema

  • Diseo y Desarrollo Diseo del sistema

    40

    Fig. 3.1. Bloques del sistema de registro de datos.

    de archivos, sin embargo, el formato se lo puede dar cualquier PC quesoporte el sistema de archivos FAT.

    Como se vio en el captulo anterior, la comunicacin con la memoriaSD CARD es va SPI a travs de un host. El host es la unidad de controldel sistema de registro.

    Antes de iniciar el grabado de datos es obligatorio inicializar la tarjetade memoria, luego, el envo y recepcin de bytes de informacin puedetomar lugar. Este intercambio de bytes es el resultado de la comunicacinentre el host y la tarjeta de memoria. De estos bytes, los nicos sobre losque el host tiene control son sobre los que enva, pues la tarjeta entregabytes con un formato esperado pero con un valor desconocido. Se debeentonces analizar los bytes enviados por la SD CARD para conocer laforma en que responde a los comandos.

    En trminos simples, implementar los sistemas de archivos FAT consis-te en leer de la tarjeta, y escribir en ella, bytes especficos en localidadesespecficas que se determinan a partir de las especificaciones de Micro-soft. Los procesos de lectura, clculo y escritura de estos bytes en la SDCARD los lleva a cabo el host del sistema de registro.

    Los sistemas de archivos FAT se implementan en las tarjetas de me-moria para que el usuario pueda ver su contenido cuando las conecta auna computadora. La implementacin consiste en leer de la tarjeta bytesespeciales que se encuentran en campos especficos, operarlos y del resul-tado se determina la estructura interna que le corresponde a cada tarjeta,

  • Diseo del sistema Diseo y Desarrollo

    41

    de acuerdo con el sistema de archivos con el que fue formateada. A cadatarjeta de memoria se le puede implementar un solo sistema de archivos,es decir, se le implementa el sistema de archivos FAT16 o el sistema dearchivos FAT32.

    Con la informacin que proporciona los bytes especiales, se imple-mentan, tambin a travs del host, las reglas de las especificaciones paralos sistemas de archivos FAT16 y FAT32. Esta informacin se traslada alas memorias SD CARD, con lo que se puede registrar en ellas datos quecumplen las normas de Microsoft para estos sistemas de archivos.

    El sistema de registro de datos establece dos interfaces de comunica-cin:

    El mdulo de almacenamiento determina una interfaz entre el host yla memoria SD CARD. Como la comunicacin entre ellos se lleva a cabova SPI, a esta interfaz le llamamos interfaz maestro--esclavo.

    La interfaz maestro--esclavo tiene dos funciones principales: comuni-carse con la SD CARD para almacenar en ella datos e implementar elsistema de archivos adecuado para cada tarjeta que se conecta al siste-ma. Ambas funciones requieren del anlisis de los bytes intercambiadosentre el host y la tarjeta de memoria, y para ello, el sistema de registro dedatos provee una va para desplegar estos bytes en la pantalla de una PC,a travs de una interfaz que se comunica de forma serie. A esta interfazle llamamos interfaz de depuracin.

    La interfaz de depuracin la conforma el mdulo de almacenamiento yla unidad de depuracin. La unidad de depuracin participa activamentecon el host del sistema para que todo byte solicitado dentro de l, tengasalida a la computadora (unidad de depuracin), lo que permite analizarlos movimientos entre el host y la SD CARD.

    La figura 3.2 muestra las interfaces del sistema de registro de datos,dentro de la lnea punteada est el mdulo de almacenamiento (interfazmaestro--esclavo). La interfaz de depuracin comunica este mdulo conla PC.

    El host lo conforma el microcontrolador PIC18LF452, que controla to-dos los procesos del sistema y es el ncleo de ste; al microcontroladorle llamaremos tambin PIC. El bloque SD CARD identifica a la tarjeta dememoria. El sistema soporta una sola tarjeta a la vez y puede ser unamemoria SD o SDHC.

  • Diseo y Desarrollo Desarrollo del sistema

    42

    Fig. 3.2. Interfaces del sistema de registro de datos.

    Como se observa en la figura 3.2, en la interfaz de depuracin lacomunicacin con la computadora es en un solo sentido. El host es el queenva bytes de inters a la PC para que se muestren en el monitor a travsde una terminal virtual.

    3.2. Desarrollo del sistemaLa actividad del sistema de registro de datos es controlada a travs delfirmware almacenado en el microcontrolador, que acta sobre los circuitoselectrnicos conectados al l y cuya conexin depende del protocolo decomunicacin utilizado.

    Dentro del sistema de registro de datos se tienen dos interfaces y cadauna utiliza un protocolo de comunicacin. En la interfaz maestro--esclavoel microcontrolador se comunica con la SD CARD va SPI e implementa elregistro de datos en la SD CARD de la forma deseada. En la interfaz dedepuracin el microcontrolador se comunica con la computadora a travsdel protocolo serie RS-232 para que la computadora despliegue en unaterminal virtual los bytes que recibe del microcontrolador.

    As, cada interfaz del sistema determina una conexin elctrica entreel microcontrolador y los circuitos electrnicos conectados a l.

    3.2.1. Componentes electrnicosEl hardware del sistema de registro de datos, atendiendo a las interfacesque lo conforman, la interfaz maestro--esclavo y la interfaz de depuracin,presenta las siguientes caractersticas:

  • Desarrollo del sistema Diseo y Desarrollo

    43

    Interfaz maestro--esclavo En la comunicacin SPI el microcontrola-dor es el maestro y la SD CARD el esclavo.

    El microcontrolador establece comunicacin con la tarjeta de memoriaa travs su mdulo interno de hardware que implementa el protocolo SPI(mdulo MSSP) y dedica cuatro terminales elctricas para este fin: SDI,SCK, SDO y SS.

    La tarjeta de memoria se comunica con el microcontrolador a travsde sus terminales elctricas para la comunicacin SPI. Estas terminalesse muestran en la figura 3.3 y en la tabla 3.1 se indica, para el modo SPI,la seal que le corresponde a cada terminal de la figura 3.3 junto con unabreve descripcin.

    Fig. 3.3. Terminales de la memoria SD CARD.

    Terminal Modo SPI Descripcin

    1 SS Recibe seal de control2 SDI Recibe seal de datos3 GND 0[V]4 V+ 2.7 3.6 [V]5 SCK Recibe reloj SPI6 GND 0[V]7 SDO Enva seal de datos8 sin uso 9 sin uso

    Tabla 3.1. Terminales de la SD CARD en modo SPI.

    La conexin de la interfaz maestro--esclavo se muestra en la figura 3.4.

  • Diseo y Desarrollo Desarrollo del sistema

    44

    Fig. 3.4. Interfaz maestro--esclavo: PIC--SD CARD.

    Interfaz de depuracin La conexin de los elementos en la comuni-cacin RS-232 se muestra en la figura 3.5.

    Fig. 3.5. Interfaz de depuracin: PIC--PC.

    El microcontrolador establece comunicacin con el puerto serie de lacomputadora a travs de su mdulo interno de hardware (mdulo USART)y dedica las terminales TX y RX para este fin. El transceptor es el MAX3222 y conecta al microcontrolador con el puerto serie de la PC como lomuestra la figura 3.5.

    3.2.2. Comentarios sobre las memorias Secure Digital

    Histricamente las memorias SD CARD tienen su antecedente en las tar-jetas MMC. Antes de la versin 2.00 de las especificaciones, las memoriasSD CARD no eran sustancialmente distintas a las tarjetas multimedia eincluso un lector de memorias MMC poda leer tambin las memorias SD.

  • Desarrollo del sistema Diseo y Desarrollo

    45

    Por razones de compatibilidad con las tarjetas multimedia, se reco-mendaba que durante la inicializacin de las memorias SD la frecuenciadel reloj SPI se mantuviera por debajo de 400[kHz].5

    Con la introduccin de las SDHC en la versin 2.00 de las especi-ficaciones, en el proceso de inicializacin de las memorias SD CARD seidentifican slo las tarjetas de memoria Secure Digital, con lo que se haceuna distincin clara entre stas y cualquier otro tipo de memoria. As, larecomendacin de los 400[kHz] ha quedado obsoleta pues desde la versin2.00 no es posible la compatibilidad con las tarjetas multimedia.

    Las especificaciones de la SD CARD no establecen en el modo SPIuna frecuencia de reloj recomendada para la comunicacin con el host,sin embargo, en la secuencia de inicio se impone una restriccin en lafrecuencia del reloj SPI, como se ver ms adelante.

    Velocidades de comunicacin El microcontrolador utiliza un osci-lador basado en un cristal de cuarzo para generar la base de tiempo desu operacin interna. Los mdulos del microcontrolador dedicados a lacomunicacin serie utilizan tambin dicha base de tiempo para ajustarsu velocidad de comunicacin. Entonces, el valor del cristal debe ser talque permita generar las velocidades requeridas por las comunicacionesSPI y RS-232.

    El desarrollo del sistema de registro de datos inici con el desarrolloindependiente de cada interfaz del sistema; se implement la comunica-cin serie para cada interfaz, se simul por software su comportamientoy se arm un circuito de prueba para cada interfaz.

    Los mdulos MSSP y USART del PIC preescalan a travs del firmwarela frecuencia de oscilacin del sistema, que es generada por el cristal decuarzo conectado al microcontrolador. As se ajusta la velocidad en lacomunicacin SPI y RS-232.

    Utilizando la informacin brindada en las especificaciones del PIC, secalcul y comprob un valor de cristal para el que el porcentaje de erroren la comunicacin RS-232 fuera cero. Como la idea final era que ambasinterfaces compartieran un mismo circuito, este cristal se seleccion comoel del sistema.

    MAXIM APPLICATION NOTE 3969, pg. 2.5APPLICATION NOTE: Secure Digital Card Interface for the MSP430, pg. 6.

  • Diseo y Desarrollo Desarrollo del sistema

    46

    El cristal del sistema es de 7.3728[MHz]. Se prescala por firmware paragenerar el reloj SPI y la tasa de transmisin de datos para la interfaz dedepuracin, que es de 38400[bps].

    3.2.3. Desarrollo del cdigo del microcontrolador

    Como se vio en la seccin 3.2.1, el hardware del sistema de registro dedatos es simple. El peso del proyecto est en el cdigo que se programa enel microcontrolador, el firmware, como se ver a lo largo de esta seccin.

    El firmware interacta con el hardware del sistema para llevar a caboel registro de datos de la forma deseada. Para lograr este objetivo, elcdigo se estructur en dos partes principales: la comunicacin con la SDCARD y la implementacin del sistema de archivos.

    La comunicacin con la SD CARD queda implcita en todos los procesosque el microcontrolador lleva a cabo con la tarjeta de memoria, y porello, en el firmware se programaron libreras propias para implementarlas reglas del protocolo para la operacin de la SD CARD.

    De la misma forma se dedicaron funciones y libreras propias paraimplementar los sistema de archivos, que programaron las reglas de Mi-crosoft para los sistemas FAT16 y FAT32; la implementacin de los sistemasde archivos consume la mayor parte del cdigo del microcontrolador, conun poco ms del 80% del total del cdigo.

    Todo el programa fue escrito en lenguaje C. Se utiliz la edicin es-tudiantil del compilador MPLAB C18, v3.12 y el ambiente de desarrolloMPLAB IDE v8.00.

    Comunicacin con la SD CARD

    Para que los procesos de lectura y escritura, y en general, para que cual-quier operacin de inters pueda tener lugar en la SD CARD, es indispen-sable inicializar la tarjeta. Luego de una inicializacin exitosa se puedeiniciar inmediatamente cualquier operacin con ella a travs de sus co-mandos.

    La inicializacin deja lista a la SD CARD para que atienda las rdenesdel host y comprende dos secuencias previas al envo del primer comando

  • Desarrollo del sistema Diseo y Desarrollo

    47

    de inters; un comando de inters puede ser por ejemplo la escritura deun bloque de bytes en la tarjeta de memoria.

    La inicializacin o proceso de inicializacin lo forman la secuencia deinicio y la secuencia de comandos de inicializacin. En la secuencia deinicio se enciende la tarjeta y se espera a que inicie sus registros inter-nos; con esto la tarjeta se prepara para responder a los comandos de lasecuencia de comandos de inicializacin. En la secuencia de comandos deinicializacin el host enva un grupo de comandos siguiendo el algoritmoestablecido por las especificaciones, con lo que se saca a la tarjeta delestado idle; terminada la secuencia, la SD CARD queda lista para atenderlos intereses del host.

    Consideraciones en la comunicacin Para llevar a cabo el inter-cambio de informacin entre el microcontrolador y la SD CARD se to-maron en cuenta consideraciones al implementar la comunicacin. Estasconsideraciones se indican a continuacin.

    El argumento de cada comando depende del nmero del comando.Algunos comandos, como el cero, especifican su argumento como bitsde relleno. Otros comandos indican en su argumento bits reservados.Las especificaciones recomiendan que los bits de relleno y los bitsreservados se escriban como cero, an cuando su valor es ignoradopor la tarjeta de memoria. El sistema de registro de datos se apegaa sta recomendacin e implementa como ceros este tipo de bits paralos comandos que los requieren.

    Conforme al protocolo SPI, las transacciones son atendidas por latarjeta siempre que el microcontrolador active la terminal de control,SS=0. As, previo al envo de cada comando la terminal SS se mandaa bajo. Por conveniencia, esta lnea se mantiene activa desde el iniciodel primer comando y hasta que termina de ejecutarse el cdigo delmicrocontrolador.

    Inmediatamente despus del envo de cada comando, el microcon-trolador espera respuesta de la SD CARD. Para que sta pueda sertransmitida por la tarjeta, el microcontrolador debe mantener la se-al de reloj activa hasta recibir la respuesta, y para ello, su terminalde salida de datos la mantiene en alto, de acuerdo a la convencinusada en las especificaciones para indicar el estado idle.

  • Diseo y Desarrollo Desarrollo del sistema

    48

    Secuencia de inicio Para encender la SD CARD se debe tomar encuenta el procedimiento presentado en la figura 3.6, en ella se distinguendos tiempos importantes: el de encendido y el de rampa.

    Fig. 3.6. Diagrama de encendido.

    Las especificaciones definen el tiempo de encendido como el tiempo enque la tensin de alimentacin se eleva de 0[V] a V+min y depende delos parmetros de la aplicacin, a saber: de la longitud del bus, de lascaractersticas de la fuente de alimentacin y del nmero de tarjetas quese conectan. El tiempo de rampa se define como el tiempo en que lapolarizacin alcanza el voltaje de operacin de la tarjeta, y es el tiempoque la tarjeta debe esperar para recibir el primer comando.

    Las especificaciones de la SD CARD son claras en indicar que los tiem-pos de encendido y de rampa no debern ser sobrespasados si la tarjetapretende utilizarse.

    De acuerdo con las especificaciones, el host debe energizar a la tarje-ta para que el voltaje V+min se alcance dentro de los primeros 250[ms]

  • Desarrollo del sistema Diseo y Desarrollo

    49

    (tiempo de encendido) y a continuacin debe enviarle al menos 74 pul-sos de reloj, manteniendo SS=1, durante el tiempo de rampa (retardo deinicializacin). La duracin mxima del retardo de inicializacion es de1[ms]. Ver figura 3.6.

    El microcontrolador enciende la SD CARD a travs de un transistorque funciona como interruptor; con esto se comprob empricamente quese cumple la especificacin para el tiempo de encendido de la tarjeta.Inmediatamente despus de encender el transistor se envan los pulsos dereloj para el retardo de inicializacin.

    En la comunicacin SPI el envo de pulsos de reloj implica envo dedatos por el canal, los que se transmiten por bytes; entonces los pulsos delreloj SPI se envan en mltiplos de ocho. El microcontrolador enviar 80pulsos de reloj a la tarjeta de memoria sin exceder 1[ms], para cumplircon el retardo de inicializacin y para estar conforme con los lmitesmarcados por las transacciones en la comunicacin SPI.

    La frecuencia de oscilacin del sistema, FOSC, se prescala por 64 paragenerar la frecuencia del reloj SPI, FSCK.

    FSCK = FOSC64 =7.372864 [MHz] = 115.2[kHz]

    La duracin de cada pulso se determina calculando el periodo de la sealde reloj SPI,

    TSCK = 1FSCK =1

    115.2 [ms] = 8.68[s]as, la duracin de cada pulso SPI es 8.68[s] y la duracin del total depulsos enviados es

    8.68[ spulso ] 80[pulsos] = 694.4[s] < 1[ms]con lo que se satisface la condicin para el retardo de inicializacin.

    La nica restriccin en la velocidad de comunicacin entre el micro-controlador y la SD CARD la impone la secuencia de inicio en el retardode inicializacin. Por conveniencia, la frecuencia del reloj SPI para el re-tardo de inicializacin se mantiene durante la secuencia de comandos deinicializacin, y su valor se aumenta terminado el proceso de inicializa-cin.

    La frecuencia del reloj SPI se ajusta a 115.2[kHz] para cumplir con lacondicin del retardo de inicializacin. La frecuencia del reloj se aumentaa 1.8432[MHz] terminada la inicializacin y se mantiene para el resto dela comunicacin.

  • Diseo y Desarrollo Desarrollo del sistema

    50

    Secuencia de comandos de inicializacin Terminada la secuenciade inicio, la tarjeta despierta en estado idle en modo SD. Para entraral modo SPI se le da un reset con el comando cero.

    Todo el argumento del comando cero son bits de relleno (bits encero), y el CRC debe ser vlido. El valor del CRC para este comando seproporciona en las hojas de especificaciones de las memorias SD CARD.

    La figura 3.7 muestra como se compone el comando.

    Fig. 3.7. Contenido del comando cero.

    Expresado en forma hexadecimal,

    0x40 0x00 0x00 0x00 0x00 0x95

    y el comando se enva byte a byte empezando por el byte 6. Ver figura3.8(a).

    Enviado el comando, el microcontrolador espera por la respuesta enestado idle, manteniendo su terminal de salida de datos en alto (0xFF).Mientras la tarjeta no responda se mantendr tambin en idle, como seve en la figura 3.8(b).

    Cabe comentar que cada comando tiene asociado un tipo de respuesta,y su valor deber analizarse para conocer el estado de la comunicacin,como lo muestra la figura 3.8(c) para el comando cero.

    El comando cero tiene asociada la respuesta tipo R1. Si el reset hasido aceptado por la tarjeta, el valor de la respuesta es 0x01 como se veen la figura 3.8(d), y