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ęść 2Obsługa kart pamięci Flash, część 7Obsługa kart pamięci Flash, część 4Obsługa kart pamięci Flash, część 3Obsługa kart pamięci Flash, część 6Obsługa kart pamięci Flash, część 5Obsługa kart pamięci Flash, część 1Mikrokontrolery STM32 Obsługa kart SD i FatFsInstrukcja obsługi (PL) Lada Niva cz 1Digital Image Recovery do odzyskiwania danych z kart pamięci fotograficznychInstrukcja obsługi (PL) Lada Niva cz 2Darmowe odzyskiwanie utraconych zdjęć z kart pamięci (i nie tylko)Tworzenie archiwów instalacyjnych cz 2 Obsługa IEXPRESS EXEcosinus utk7 pamieci masowe optyczne cz 2więcej podobnych podstron