Obsługa kart pamięciowych SD, cz 2


K U R S
Obsługa kart pamięciowych
SD, część 2
Podczas rozpoczynania przez ste- Flashowe karty
rownik wymiany informacji z kartą
pamięciowe są
szczególna rolę odgrywają jej reje-
od dawna chętnie
stry. Można je podzielić umownie
używane nawet w apli-
na 2 grupy:
" pierwsza z nich to rejestry OCR,
kacjach amatorskich do
CID, CSD i SCR zawierające in-
trwałego zapisywania da-
formacje o karcie. Zapisanych
nych. Do tej pory największą
w nich jest szereg istotnych in-
formacji. Najważniejsze z nich, popularnością cieszyła się do
to napięcie zasilania karty, mak-
tego karta typu MMC, jednak jej
symalna częstotliwość pracy ma-
nowocześniejsza następczyni  karta
gistrali, pojemność karty i pojem-
SD szybko zdobywa sobie należne jej
ność sektora danych.
" druga grupa to rejestry statu- zainteresowanie. W tej części skupiamy
sowe Card Status i SD Status.
się na opisie specyficznych rejestrów
Rejestry statusowe zawierają in-
kart SD.
formacje o bieżącym stanie prze-
syłania danych.
32 bitowy rejestr OCR (Opera-
ting Conditions Register) zawiera wartość rejestru OCR jest przesyła- Rejestr CID (Card Identification
zakodowaną informację o zakresie na jako odpowiedz R3 po wysłaniu  tab. 3) o długości 16 bajtów za-
napięcia zasilającego, przy którym komendy CMD58. wiera unikatowy numer identyfi-
mogą być zapisywane i odczytywa- Strukturę rejestru OCR pokazano kacyjny karty zapisany w procesie
ne dane z obszaru pamięci Flash. na rys. 9. Wyzerowany najstarszy produkcyjnym i nie można zmienić
Tym napięciem powinna być kar- bit Busy informuje, że procedury jego zawartości.
ta zasilana po wysłaniu komendy wykonywane po włączeniu zasila- Rejestr CSD (Card Specific Data)
CMD1 (Voltage Recognition Proce- nia jeszcze się nie skończyły. Wy- o długości 16 bajtów (128 bitów)
dure). Zawartość rejestru OCR jest zerowanie bitu z pola 4& 23 ozna- zawiera informacje o konfiguracji
przesyłana jako odpowiedz R3 na cza, że wskazywany przez ten bit karty niezbędne do określenia głów-
komendę ACMD41 w trakcie inicja- zakres napięć nie jest dopuszczalny nie czasu dostępu, pojemności kar-
lizacji karty pracującej z magistralą w czasie zapisywania i odczytywania ty, długości bloku i sektora danych
SDBus. W trybie magistrali SPI za- danych. oraz programowej protekcji zapisu.
Większość bitów rejestru można tyl-
Tab. 3. Struktura rejestru CID
ko odczytywać, ale są takie, które
Długość Położenie można zapisywać. Rejestr CSD jest
Nazwa pola Typ Komentarz Wartość
w bitach w CID
odczytywany komendą SEND_CSD,
ID producenta jest
a zapisywany komendą PROGRAM_
Manufacturer ID Na przykład
Binarny 8 [127:120] przyznawane przez
CSD. Zawartość tego rejestru jest
MID SanDisc 0x03
SD Card Assoc.
zależna od typu karty, poniżej opi-
OEM/Application ID Kod ascii SD
ASCII 16 [119:104] Identyfikacja aplikacji szemy wybrane pola tego rejestru:
OID 0x53,0x44
" Pole CSD_STRUCTURE określa
Product name Na przykład
ASCII 40 [103:64] 5znaków ASCII
wersję CSD. Wartość 0 oznacza
PNM SD128
wersję V1.0 struktury CSD. Pozo-
Wartość 0x62
Product Revision Dwie liczby w kodzie
stałe wartości są zarezerwowane.
BCD 8 [63:56] oznacza wersję
(PRW) BCD
6.2 " Pole TAAC definiuje asynchro-
niczny (niezależny od częstotli-
Serial Number
Binarny 32 [55:24] 32 bitowa liczba Numer seryjny
(PSN)
wości zegara SCLK) czas dostę-
Zarezerwowany 4 [23:20] pu do danych zdefiniowany jako
opóznienie pomiędzy momentem
Manufacture Date Code Data produkcji rr:mm
BCD 12 [19:8] 0x14=04.2001
(MDT) liczona od 2000 r.
wysłania ostatniego bitu komen-
CRC7 checksum dy odczytu danych a momentem
binarny 7 [7:1] Suma kontrola
(CRC)
pojawienia się na magistrali
Nieużywane  zawsze
pierwszego bitu odczytywanych
1 [0:0]
1
danych.
Elektronika Praktyczna 1/2008
95
K U R S
stałe wartości są zarezerwowa-
ne. Wartość pola READ_BL_LEN
jest zawsze równa wartości pola
WRITE_BL_LEN określającej mak-
symalną długość bloku przy za-
pisywaniu danych.
" Pole WRITE_BL_LEN o długości
4 bitów określa maksymalną
długość bloku w bajtach przy za-
pisywaniu danych i jest wylicza-
OCR Napięcie zasilania
na z zależności 2^WRITE_BL_
Bit Vdd 10 2,2 2,3 18 3,0 3,1
LEN. Maksymalna długość bloku
może mieć wartość z zakresu
0 3 zarezerwowany 11 2,3 2,4 19 3,1 3,2
512...2048 bajtów, a to oznacza,
4 1,6 1,7 12 2,4 2,5 20 3,2 3,3
że WRITE_BL_LEN może mieć
5 1,7 1,8 13 2,5 2,6 21 3,3 3,4
minimalną wartość równą 9 (bo
6 1,8 1,9 14 2,6 2,7 22 3,4 3,5
2^9=512) i maksymalną wartość
11 (bo 2^11=2048). Pozosta-
7 1,9 2,0 15 2,7 2,8 23 3,5 3,6
łe wartości są zarezerwowane.
8 2,0 2,1 16 2,8 2,9 24 30 zarezerwowany
Wartość pola WRITE_BL_LEN
9 2,1 2,2 17 2,9 3,0 31 bit zajętości
jest zawsze równa wartości pola
READ_BL_LEN określającej mak-
Rys. 9. Budowa rejestru OCR symalną długość bloku przy od-
czytywaniu danych.
Tab. 4. Klasy opisane w polu CCC
do czasu określonego przez pole " Pole READ_BL_PARTIAL dla kart
Bit CCC Obsługiwana klasa komend TAAC trzeb dodać czas trwania SD ma zawsze wartość 1, a to
500 cykli zegara SCLK. oznacza, że przy odczytywa-
0 Klasa 0
" Pole TRAN_SPEED definiuje mak- niu danych można odczytywać
1 Klasa 1
symalną prędkość transferu da- bloki o długości od 1 bajta do
& & & & ..
nych. Podobnie jak w polu TAAC długości określonej przez READ_
11 Klasa 11
na bitach 0& 2 zakodowany jest BL_LEN. Gdyby READ_LEN_PAR-
wykładnik prędkości, a na bi- TIAL był wyzerowany, to mini-
Tab. 5. Sposób wyliczania wartości
tach 3& 6 podstawa. TRAN_ malna długość bloku przy od-
MULT
SPEED=0x2A oznacza maksymal- czytywaniu musiałaby być rów-
C_SIZE_MULT MULT=2^(SIZE_MULT+2) ną prędkość 2*10 Mb/s. na READ_BL_LEN.
" Pole CCC o długości 12 bitów Jeżeli pole WRITE_BL_PARTIAL
0 2^2=4
określa klasy komend obsługiwa- dla kart SD ma wartość 1, to ozna-
1 2^3=8
nych przez kartę. Klasa jest ob- cza, że przy odczytywaniu danych
2 2^4=16
sługiwana, jeżeli odpowiadający można zapisywać bloki od długoś-
3 2^5=32
mu bit ma stan wysoki (tab. 4). ci 1 bajta do długości określonej
4 2^6=64
" W polu READ_BL_LEN o długości przez WRITE_BL_LEN. Dla kart SD
5 2^7=128
4 bitów jest zapisana maksymal- WRITE_LEN_PARTIAL jest wyzero-
6 2^8=256
na długość bloku w bajtach przy wany i minimalna długość bloku
7 2^9=512
odczytywaniu danych wylicza- przy odczytywaniu musi być równa
na z zależności 2^READ_BL_ READ_BL_LEN.
" Pole NSAC definiuje dodatkowy
Tab. 7. Uzupełniające informacje o konfiguracji karty
czas dostępu do danych, który
SCR Structure SCR_STRUCTURE 4 R [63:60] V1.0 0
jest związany z częstotliwością
sygnału zegarowego SCLK. Bi- SD Card-Spec Version SD_SPEC 4 R [59:56] V1.01 0
narną wartość zapisaną na 8 bi- data_status_after_erases DATA_STAT_AFTER_ERASE 1 R [55:55] 0 0
tach pola trzeba pomnożyć przez
Prot 2, Spec
SD Security Support SD+SECURIRY 3 R [54:52] 2
100. Jeżeli w polu NSAC jest V1.01
zapisana binarnie wartość 5, to
DAT Bus widths supported SD_BUS_WIDTHS 4 R [51:48] 1 & 4 5
Reserved - 16 R [47:32] 0 0
Tab. 6. Informacje o formacie danych
Reserved for manufacturer
- 32 R [31:0] 0 0
przechowywanych na karcie
usage
FILE_
FILE_FOR-
FORMAT_ Format plików
Tab. 8. Pole SD_BUS_WIDTHS
LEN. Maksymalna długość bloku
MAT
GRP
może mieć wartość z zakresu SD_BUS_WIDTHS Szerokość magistrali
0 0 HDD z tablicą partycji
512& 2048 bajtów, a to ozna-
Bit 0 1 bitowa (DAT0)
0 1 DOS FAT z boot sector
cza, że READ_BL_LEN może
Bit 1 Zarezerwowany
0 2 Universal File Format
mieć minimalną wartość rów-
Bit 2 4 bitowa (DAT0& 3)
0 3 Inny/nieznany
ną 9 (2^9=512) i maksymalną
Bit 3 Zarezerwowany
1 0& 3 Zarezerwowany wartość 11 (2^11=2048). Pozo-
Elektronika Praktyczna 1/2008
96
K U R S
" Pole WRITE_BLK_MISALIGN ty. Długość bloku fizycznego jest oznacza, że taki zapis nie jest
określa czy możliwy jest za- określona w polu WRITE_BL_ możliwy.
pis przez jedną komendę bloku LEN. Dla kart SD WRITE_BLK_ " Pole READ_BLK_MISALIGN okre-
dłuższego niż fizyczny blok kar- MISALIGN jezt wyzerowany, a to śla czy możliwe jest odczyta-
Tab. 9. Rejestr statusowy Card Status
Bit Identyfikator Typ Wartość Opis
0=no error
31 OUT_OF_RANGE ERX Argument komendy był większy niż dopuszczalna wartość dla tej karty
1=error
0=no error Adres nie jest zgodny z wielkością bloku danych użytych w tej komen-
30 ADDRESS_ERROR ER
1=error dzie
0=no error
29 BLOCK_LEN_ERROR ER Długość bloku danych jest nieprawidłowo ustawiona dla tej karty
1=error
0=no error
28 ERASE_SEQ_ERROR ER Wystąpił błąd w sekwencji kasowania
1=error
0=no error Nieprawidłowo ustawiona sekcja zapisu bloku danych w operacji kaso-
27 ERASE_PARAM ERX
1=error wania
0=not protect
26 WP_VIOLATION ERX Próba zapisania danych, kiedy ustawiona jest opcja WRITE PROTECT
1=protect
0=card unlocked
25 CARD_IS_LOCKED SX Karta jest zablokowana przez host
1=card locked
0=no error
24 LOCK_UNLOCK_FAILED ERX Wykryty błąd sekwencji lub hasła blokowania/odblokowania karty
1=error
0=no error
23 COM_CRC_ERROR ER Błąd CRC
1=error
0=no error
22 ILLEGAL_COMMAND ER Nieprawidłowa komenda w bieżącym stanie karty
1=error
0=success Wewnętrzny ECC karty został wprowadzony, ale nie był w stanie skory-
21 CARD_ECC_FAILED ERX
1=failure gować danych
0=no error
20 CC_ERROR ERX Błąd wewnętrznego mikrokontrolera karty
1=terror
0=no error
19 ERROR ERX Nieznany błąd główny wystąpił w czasie wykonywania operacji
1=terror
18 Zarezerwowany
17 Zarezerwowany
Jedno z możliwych zdarzeń:
0=no error Rejestr CID został już zapisany, ale nie może być nadpisany
16 CID/CSD OVERWRITE ERX
1=terror lub
Sekcja  tylko do odczytu rejestru CSD nie pasuje do karty
0=not protected Wykasowana została tylko przestrzeń partycji adresów, bo jest ustawio-
15 WP_ERASE_SKIP SX
1=protected na protekcja zapisu
0=enabled
14 CARD_ECC_DISABLE SX Komenda została wykonana bez wewnętrznego ECC
1=disabled
0=cleared
12 ERASE_RESET SR Sekwencja kasowania została przerwana przed wykonaniem
1=set
0 idle
1=ready
2=ident
3=stby
Stan karty po odebraniu komendy. Jeżeli wykonanie komendy zmienia
4=tran
12:9 CURRENT_STATE SX stan karty, to zmian stanu będzie widziana przez host jako odpowiedz
5=data
po następnej komendzie
6=rcv
7=prg
8=dis
9..15 rezerwa
0=not ready
8 READY_FOR_DATA SX Sygnalizuje, ze bufor danych jest pusty
1=ready
7:6 Zarezerwowane
0=disabled Karta spodziewa się komendy aplikacji ACMD lub komenda została
5 APP_CMD SR
1=enabled zinterpretowana jako ACMD
4 Zarezerwowany
0=no error
3 AKE_SEQ_ERROR ER Błąd sekwencji autoryzacji
1=terror
2 zarezerwowany dla komend aplikacji
1,0 zarezerwowany dla testów produkcyjnych
E  bit błędu (error bit); S  bit statusu (status bit); R  wykryte i ustawiane do potwierdzenia bieżącej komendy; X  wykryte i ustawiane w czasie
bieżącej komendy
Elektronika Praktyczna 1/2008
97
K U R S
Tab. 10. Rejestr SD Card Status
czy jest kopią (bit ustawiony).
Bit Identyfikator Typ Wartość Opis Raz ustawionego bitu COPY nie
można już wyzerować.
00=1bit domyślnie
Długość magistrali danych
511: 01=rezerwa
" Ustawiony bit PERM_WRITE_
DAT_BUS_WIDTH SR w trybie SDBus zdefiniowana
510 10=4 bity
PROTECT sygnalizuje, że jest
komendą SET_BUS_WIDTH
11=rezerwa
możliwe tylko odczytywanie da-
0=bez trybu ochrony
509 SECURED_MODE SR Tryb ochrony karty SD nych z pamięci. Zabronione jest
1= tryb ochrony
kasowanie i zapisywanie danych.
508:
zarezerwowane
Bit PERM_WRITE_PROTECT jest
496
bitem OTP, raz ustawionego nie
00xx pamięć karty SD
da się już skasować.
definiowana fizycznym
495:
SD_CARD_TYPE SR interfejsem V1.01 Typ karty " B i t T M P _ W R I T E _ P R O T E C T
480
0000=SD RD/RW
umożliwia czasowe zablokowanie
0001=SD ROM
możliwości zapisywania i kasowa-
Rozmiar chronionej pamięci
nia danych. Spełnia taką samą
Rozmiar chronionej pamięci
wyliczany według zależności:
479: w jednostkach określonych funkcję jak PERM_WRITE_PRO-
SIZE OF_PROTECTED_AREA SR SIZE_OF_PROTECTED_
448 przez MULT*BLOCK_LEN
TECT, ale po ustawieniu można
AREA*MULT*
(patrz rejestr CSD)
go wyzerować.
BLOCK_LEN
" Pola FILE_FORMAT_GRP i FILE
347:
zarezerwowany
312 FORMAT zawierają informacje
311: Zarezerwowany przez o formacie plików zapisywanych
0 producenta
na karcie (tab. 6).
S  bit statusu (status bit); R  wykryte i ustawiane do potwierdzenia bieżącej komendy
W kolejnym rejestrze  SCR
 są zapisane uzupełniające infor-
nie przez jedną komendę bloku we jest kasowanie bloku danych macje dotyczące konfiguracji karty
dłuższego niż fizyczny blok kar- o długości określonej w WRITE_ (tab. 7).
ty. Długość bloku fizycznego jest BL_LEN. " Pole SCR_STRUCTURE jest po-
określona w polu READ_BL_LEN. " Pole SECTOR_SIZE o długości 7 wieleniem pola CSD_STRUCTU-
Dla kart SD WRITE_BLK_MI- bitów określa zakodowaną dłu- RE rejestru CSD.
SALIGN jezt wyzerowany, a to gość kasowanego sektora w jed- " Pole SD_SPEC określa wersję
oznacza, że taki odczyt nie jest nostkach określo- w a r s t w y fi z y c z n e j
możliwy. nych w polu WRI- karty SD. Dla kart
" Pole C_SIZE jest jednym ze TE_BL_LEN. Dla SD dopuszczalna jest
składników używanych do wyli- SECTOR_SIZE=0 wartość zerowa ozna-
czania pojemności pamięci karty. kasowany jest blok czająca wersję V1.0
Oprócz C_SIZE pojemność jest o długości WRITE_ lub V1.01.
wyliczana z wartości pól READ_ BL_LEN, a dla SEC- " Pole DATA_STAT_
BL_LEN i C_SIZE_MULT według TOR_SIZE=0x7F AFTER_ERASE okre-
zależności: j e s t k a s o w a n y śla wartość wpisywa-
pojemność pamięci= BLOCKNR*BLOCK_LEN
b l o k o d ł u g o ś c i ną do komórek pa-
gdzie: 128WRITE_BL_EN. mięci po skasowaniu.
BLOCKNR=(Z_SIZE+1)*MULT
" Pole WP_GRP_SIZE Dla karty SD jest to
MULT=2C_SIZE_MULT+2*(C_SIZE_MULT<8)
BLOCK_LEN=2READ_BL_LEN*(READ_BL_EN<12) o długości 7 bitów zero.
Zależność pomiędzy C_SIZE_ określa grupę sek- " W polu SD_SECU-
MULT i MULT pokazano w tab. 5. torów z protekcją RITY zapisana jest
" Pola VDD_R_CURR_MIN i VDD_ zapisu o długości informacja o wersji
W_CURR_MIN zawieraja zako- określonej w SEC- zaimplementowanego
dowany na 3 bitach minimalny T O R _ S I Z E . D l a algorytmu ochrony.
prąd przy zapisywaniu i odczy- WP_GRP_SIZE=0 chroniona jest Wartość zerowa oznacza brak al-
tywaniu danych. grupa o długości SECTOR_SIZE, gorytmu ochrony, wartość 1 to
" Pola VDD_R_CURR_MAX i VDD_ a dla WP_GRP_SIZE =0x7F wersja V1.0, wartość 2 to wersja
W_CURR_MAX zawierają zakodo- jest chroniona grupa o długości V2.0.
wany na 3 bitach maksymalny 128SECTOR_SIZE. Odblokowanie " Ostatnie pole  SD_BUS_WID-
prąd przy zapisywaniu i odczy- funkcji protekcji zapisu grupy THS  opisuje dostępną szero-
tywaniu danych. sektorów jest możliwe po usta- kość magistrali SDBus (tab. 8).
" Pole ERASE_BLK_EN definiu- wieniu bitu pola WP_GRP_ENA- Rejestr statusowy Card Status
je możliwość kasowania bloku BLE. (tab. 9) ma długość 32 bitów i jego
danych o długości określonej " Pole R2W definiuje ile razy czas struktura jest identyczna z rejestrem
polem WRITE_BL_LEN. Jeżeli zapisywania danych jest dłuższy statusu karty MMC. Rejestr SD_Sta-
ERASE_BLK_LEN jest wyzerowa- od czasu dostępu przy odczyty- tus (tab. 10) ma długość 512 bitów
ny, to możliwe jest kasowanie waniu. i zawiera specyficzne rozszerzone in-
porcji danych o długości sektora " Bit COPY określa czy zapisana formacje dotyczące tylko kart SD.
określonej w polu SECTOR_SIZE. zawartość w pamięci Flash jest Tomasz Jabłoński, EP
Jeżeli ma wartość 1, to możli- oryginalna (bit wyzerowany), tomasz.jablonski@ep.com.pl
Elektronika Praktyczna 1/2008
98


Wyszukiwarka

Podobne podstrony:
Obsługa kart pamięci Flash, część 2
Obsługa kart pamięci Flash, część 7
Obsługa kart pamięci Flash, część 4
Obsługa kart pamięci Flash, część 3
Obsługa kart pamięci Flash, część 6
Obsługa kart pamięci Flash, część 5
Obsługa kart pamięci Flash, część 1
Mikrokontrolery STM32 Obsługa kart SD i FatFs
Instrukcja obsługi (PL) Lada Niva cz 1
Digital Image Recovery do odzyskiwania danych z kart pamięci fotograficznych
Instrukcja obsługi (PL) Lada Niva cz 2
Darmowe odzyskiwanie utraconych zdjęć z kart pamięci (i nie tylko)
Tworzenie archiwów instalacyjnych cz 2 Obsługa IEXPRESS EXE
cosinus utk7 pamieci masowe optyczne cz 2

więcej podobnych podstron