You are on page 1of 4

Librera FAT/Driver SD

Laboratorio de Microprocesadores

Versin 0.0.1
2010

Librera FAT/Driver SD
Introduccin
Las tarjetas SD son uno de los dispositivos de almacenamiento masivo de
estado slido ms populares de hoy.
Para comprender su funcionamiento, se recomienda (en realidad, es
obligatorio) leer la documentacin provista; como mnimo absoluto el primero
de los siguientes:




Funcionamiento de la tarjeta SD-MMC.pdf: Introduccin.


MultiMedia Card Specifications.pdf: Especificacin MMC.
SecureDigtal Card Specifications.pdf: Especificacin SD.

Supongamos que Ud. est desarrollando un producto que debe almacenar/leer


una gran cantidad de datos no voltiles, digamos 1GB. Adems, ha elegido
utilizar una tarjeta SD porque:





El econmica y fcil de conseguir.


Es suficientemente rpida para su aplicacin.
Es extrable, lo que permite que el usuario quite la tarjeta de su producto
para conectarla en su PC/laptop.
Su controlador interno maneja el wear-leveling (investigar!), por lo que
es posible utilizar un sistema de archivos ultra-popular como FAT
(investigar!).

Sera espectacular que Ud. pudiera escribir su aplicacin en el microcontrolador


usando las funciones de <stdio> para leer o escribir en el medio de
almacenamiento. (Por qu sera tan espectacular?). As, por ejemplo, se usara
FILE *f = fopen(/archivo1.txt, w);
fputs (Esto se graba en un archivo de la tarjeta SD, f);
fclose (f);
para grabar algn dato en la tarjeta; Ud. podra desarrollar su aplicacin con
extrema comodidad, y sin considerar lo que sucede en las capas de software
inferiores. Para que esto pueda suceder, alguien con tiempo y ganas debera
implementar:




Funciones de acceso al medio fsico (tarjeta SD)


Funciones de acceso al sistema de archivos (FAT)
Funciones de manejo de streams (stdio)

Por suerte, hay mucha gente con tiempo y ganas, y estos tres tems ya estn
resueltos, aunque no es fcil conseguir estas libreras para HCS12. Hay muchas

Librera FAT/Driver SD
Laboratorio de Microprocesadores

Versin 0.0.1
2010

libreras FAT open source para otros microcontroladores; se seleccion FatFS


por ser altamente configurable, fcilmente portable, y pensada para micros
embebidos con bajos recursos. La buena noticia es que el desarrollador de la
librera tuvo las siguientes geniales ideas:
1. Escribir todo el cdigo en C.
2. Escribir el cdigo con portabilidad en mente.
3. Escribir la capa de sistema de archivos FAT de modo de hacerla
independiente del medio fsico. As, esta librera puede usarse para
acceder a tarjetas SD, discos rgidos, pen drives, etc.
El punto (1) implica que no debera haber problemas en compilar el cdigo para
HCS12.
El punto (2) implica que la librera est estructurada de modo que las partes de
cdigo a portar (o sea, las partes que dependen de la arquitectura) estn
aisladas e identificadas.
El punto (3) implica que la librera FAT requerir de un driver de dispositivo
fsico, capaz de manejar sectores de datos raw desde y hacia el medio de
almacenamiento.

Librera FAT
Visite el sitio http://elm-chan.org/fsw/ff/00index_e.html para comprender el
funcionamiento de la librera. Aqu se da una introduccin.

Por supuesto, Ud. deber escribir la capa Application.

Librera FAT/Driver SD
Laboratorio de Microprocesadores

Versin 0.0.1
2010

Consideraciones para portar la librera.


En la pgina del creador de la librera se presentan las consideraciones
necesarias para portar la librera (http://elm-chan.org/fsw/ff/en/appnote.html).
Se resumen aqu:



Tamao de enteros: Se deber modificar el archivo integer.h (si se


requiriera) para definir el tamao de los tipos de datos utilizados.
Funciones de I/O:
Funcin
disk_initialize
disk_status
disk_read
disk_ioctl (GET_SECTOR_COUNT)
disk_ioctl (GET_SECTOR_SIZE)

Detalle
Inicializa la SD
Devuelve el status de la SD
Lee un sector de la SD
Devuelve el nmero de sectores
Devuelve el tamao de un sector

Conexionado
Se usar el mdulo SPI0 del MC9S12DP256B, en concreto los pines MISO
(pin 93), MOSI (pin 94) y SCK (pin 95). El pin Slave Select ser el bit 7 del
PORTJ (pin 98). El pin MISO se conectar directo a la SD, debido a que, si
tenemos suerte, VOH (mn) de la SD ser mayor a VIH (mn) del micro.
LAS SALIDAS DEL DP256 SON CMOS 5V. LAS ENTRADAS DE LA SD SON
3.3V LVCMOS, NO TOLERANTES A 5V. NUNCA CONECTAR LA SALIDA
DEL MICRO DIRECTO A LA SD (salvo que Ud. no tenga problema en
quemarla y reponerla). Para adaptar niveles de cada una de las 3 seales de
salida, se utilizar el siguiente circuito, que debern armar en placa
multiperforada, y probar antes de conectar a la SD:
R1
330
MOSI_5V

MOSI_3.3V

R2
680

Librera FAT/Driver SD
Laboratorio de Microprocesadores

Versin 0.0.1
2010

Ejemplo
Se port la librera FatFS y el Driver de SD para HCS12. Debido a las
limitaciones de memoria, se compil FatFS en modo Read-Only; por ende
tampoco se defini la funcin get_fattime de RTC (ver http://elmchan.org/fsw/ff/en/appnote.html).

You might also like